Loco Translate - Version 2.5.6

Version Description

  • Added loco_api_provider_source filter
  • Fixed bug loading user preferences saved in older version
  • Refactored file finder to avoid recursive function calls
  • Fixed bug displaying two forms for zero plural languages
  • Added Lecto AI to translation API providers
  • Bumped WordPress version to 5.8.3
Download this release

Release Info

Developer timwhitlock
Plugin Icon 128x128 Loco Translate
Version 2.5.6
Comparing to
See all releases

Code changes from version 2.5.5 to 2.5.6

languages/loco-translate.pot CHANGED
@@ -1,9 +1,9 @@
1
  #, fuzzy
2
  msgid ""
3
  msgstr ""
4
- "Project-Id-Version: Loco Translate 2.5.5\n"
5
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/loco-translate/\n"
6
- "POT-Creation-Date: 2021-10-18 12:11+0000\n"
7
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
8
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
9
  "Language-Team: \n"
@@ -13,7 +13,7 @@ msgstr ""
13
  "Content-Type: text/plain; charset=UTF-8\n"
14
  "Content-Transfer-Encoding: 8bit\n"
15
  "X-Generator: Loco https://localise.biz/\n"
16
- "X-Loco-Version: 2.5.5; wp-5.8.1\n"
17
  "X-Domain: loco-translate"
18
 
19
  #: src/fs/FileWriter.php:214
@@ -538,9 +538,9 @@ msgstr ""
538
  msgid "Disallow"
539
  msgstr ""
540
 
541
- #: src/data/Settings.php:178 src/admin/file/EditController.php:161
542
  #: src/admin/bundle/LocaleController.php:130 tpl/admin/config/settings.php:234
543
- #: tpl/admin/config/apis.php:128 tpl/admin/config/prefs.php:45
544
  #: tpl/admin/common/inc-fsconn.php:16 tpl/admin/common/inc-fsconn.php:41
545
  #: tpl/admin/errors/no-backups.php:22
546
  msgid "Documentation"
@@ -596,13 +596,13 @@ msgid "%s translation"
596
  msgstr ""
597
 
598
  #. button for adding a new string when manually editing a POT file
599
- #: src/admin/file/EditController.php:187
600
  msgctxt "Editor"
601
  msgid "Add"
602
  msgstr ""
603
 
604
  #. Button that opens window for auto-translating
605
- #: src/admin/file/EditController.php:198
606
  msgctxt "Editor"
607
  msgid "Auto"
608
  msgstr ""
@@ -626,7 +626,7 @@ msgid "Context not loaded"
626
  msgstr ""
627
 
628
  #. Button for downloading a PO, MO or POT file
629
- #: src/admin/file/EditController.php:200
630
  msgctxt "Editor"
631
  msgid "Download"
632
  msgstr ""
@@ -638,19 +638,19 @@ msgid "Plural"
638
  msgstr ""
639
 
640
  #. button for removing a string when manually editing a POT file
641
- #: src/admin/file/EditController.php:189
642
  msgctxt "Editor"
643
  msgid "Remove"
644
  msgstr ""
645
 
646
  #. Button that reloads current screen
647
- #: src/admin/file/EditController.php:196
648
  msgctxt "Editor"
649
  msgid "Revert"
650
  msgstr ""
651
 
652
  #. Button that saves translations to disk
653
- #: src/admin/file/EditController.php:192
654
  msgctxt "Editor"
655
  msgid "Save"
656
  msgstr ""
@@ -680,13 +680,13 @@ msgid "Suggest translation"
680
  msgstr ""
681
 
682
  #. Button that runs in-editor sync/operation
683
- #: src/admin/file/EditController.php:194
684
  msgctxt "Editor"
685
  msgid "Sync"
686
  msgstr ""
687
 
688
  #. Button that toggles between "code" and regular text editing modes
689
- #: src/admin/file/EditController.php:206
690
  msgctxt "Editor"
691
  msgid "Toggle code view"
692
  msgstr ""
@@ -697,7 +697,7 @@ msgid "Toggle Fuzzy"
697
  msgstr ""
698
 
699
  #. Button that toggles invisible characters
700
- #: src/admin/file/EditController.php:204
701
  msgctxt "Editor"
702
  msgid "Toggle invisibles"
703
  msgstr ""
@@ -912,7 +912,7 @@ msgid ""
912
  msgstr ""
913
 
914
  #. Placeholder text for text filter above editor
915
- #: src/admin/file/EditController.php:202
916
  msgid "Filter translations"
917
  msgstr ""
918
 
@@ -967,7 +967,7 @@ msgstr ""
967
  msgid "Grant access to roles"
968
  msgstr ""
969
 
970
- #: src/ajax/ApisController.php:26 src/admin/file/EditController.php:190
971
  msgid "Help"
972
  msgstr ""
973
 
@@ -1003,7 +1003,7 @@ msgstr ""
1003
  msgid "Import config from XML"
1004
  msgstr ""
1005
 
1006
- #: tpl/admin/config/apis.php:118
1007
  msgid "Important"
1008
  msgstr ""
1009
 
@@ -1152,7 +1152,7 @@ msgstr ""
1152
  msgid "Loco Translate %s"
1153
  msgstr ""
1154
 
1155
- #: src/data/Settings.php:177
1156
  msgid "Loco Translate 2.5 adds supports for JSON language pack generation."
1157
  msgstr ""
1158
 
@@ -1552,7 +1552,7 @@ msgstr ""
1552
  msgid "Save credentials in session"
1553
  msgstr ""
1554
 
1555
- #: tpl/admin/config/settings.php:233 tpl/admin/config/apis.php:127
1556
  #: tpl/admin/config/prefs.php:44
1557
  msgid "Save settings"
1558
  msgstr ""
@@ -1589,7 +1589,7 @@ msgstr ""
1589
  msgid "See FAQ"
1590
  msgstr ""
1591
 
1592
- #: tpl/admin/config/apis.php:121
1593
  msgid "See full disclaimer"
1594
  msgstr ""
1595
 
@@ -1609,7 +1609,7 @@ msgid "Sets"
1609
  msgstr ""
1610
 
1611
  #: src/mvc/AdminRouter.php:67 src/mvc/AdminRouter.php:72
1612
- #: tpl/ajax/modal-apis-empty.php:15 src/admin/file/EditController.php:160
1613
  #: tpl/admin/common/inc-fsconn.php:18 tpl/admin/common/inc-fsconn.php:43
1614
  #: tpl/admin/errors/no-backups.php:24
1615
  msgid "Settings"
@@ -1791,7 +1791,7 @@ msgid ""
1791
  "extract strings directly from source code."
1792
  msgstr ""
1793
 
1794
- #: tpl/admin/config/apis.php:120
1795
  msgid ""
1796
  "Third party services are subject to their own terms of use and may incur "
1797
  "costs from the provider"
@@ -1874,7 +1874,7 @@ msgid "This information is for developers to find problems in the bundle setup"
1874
  msgstr ""
1875
 
1876
  #. Warning when POT file is opened in the file editor. It can be disabled in settings.
1877
- #: src/admin/file/EditController.php:159
1878
  msgid ""
1879
  "This is NOT a translation file. Manual editing of source strings is not "
1880
  "recommended."
@@ -1953,12 +1953,12 @@ msgid "Translation progress %s%%"
1953
  msgstr ""
1954
 
1955
  #. Where %s is the name of the invalid POT file
1956
- #: src/ajax/SyncController.php:72 src/admin/file/EditController.php:121
1957
  #, php-format
1958
  msgid "Translation template is invalid (%s)"
1959
  msgstr ""
1960
 
1961
- #: src/admin/file/EditController.php:116
1962
  #, php-format
1963
  msgid "Translations don't match template. Run sync to update from %s"
1964
  msgstr ""
1
  #, fuzzy
2
  msgid ""
3
  msgstr ""
4
+ "Project-Id-Version: Loco Translate 2.5.6\n"
5
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/loco-translate/\n"
6
+ "POT-Creation-Date: 2022-01-14 17:03+0000\n"
7
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
8
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
9
  "Language-Team: \n"
13
  "Content-Type: text/plain; charset=UTF-8\n"
14
  "Content-Transfer-Encoding: 8bit\n"
15
  "X-Generator: Loco https://localise.biz/\n"
16
+ "X-Loco-Version: 2.5.6; wp-5.8.3\n"
17
  "X-Domain: loco-translate"
18
 
19
  #: src/fs/FileWriter.php:214
538
  msgid "Disallow"
539
  msgstr ""
540
 
541
+ #: src/data/Settings.php:180 src/admin/file/EditController.php:166
542
  #: src/admin/bundle/LocaleController.php:130 tpl/admin/config/settings.php:234
543
+ #: tpl/admin/config/apis.php:149 tpl/admin/config/prefs.php:45
544
  #: tpl/admin/common/inc-fsconn.php:16 tpl/admin/common/inc-fsconn.php:41
545
  #: tpl/admin/errors/no-backups.php:22
546
  msgid "Documentation"
596
  msgstr ""
597
 
598
  #. button for adding a new string when manually editing a POT file
599
+ #: src/admin/file/EditController.php:192
600
  msgctxt "Editor"
601
  msgid "Add"
602
  msgstr ""
603
 
604
  #. Button that opens window for auto-translating
605
+ #: src/admin/file/EditController.php:203
606
  msgctxt "Editor"
607
  msgid "Auto"
608
  msgstr ""
626
  msgstr ""
627
 
628
  #. Button for downloading a PO, MO or POT file
629
+ #: src/admin/file/EditController.php:205
630
  msgctxt "Editor"
631
  msgid "Download"
632
  msgstr ""
638
  msgstr ""
639
 
640
  #. button for removing a string when manually editing a POT file
641
+ #: src/admin/file/EditController.php:194
642
  msgctxt "Editor"
643
  msgid "Remove"
644
  msgstr ""
645
 
646
  #. Button that reloads current screen
647
+ #: src/admin/file/EditController.php:201
648
  msgctxt "Editor"
649
  msgid "Revert"
650
  msgstr ""
651
 
652
  #. Button that saves translations to disk
653
+ #: src/admin/file/EditController.php:197
654
  msgctxt "Editor"
655
  msgid "Save"
656
  msgstr ""
680
  msgstr ""
681
 
682
  #. Button that runs in-editor sync/operation
683
+ #: src/admin/file/EditController.php:199
684
  msgctxt "Editor"
685
  msgid "Sync"
686
  msgstr ""
687
 
688
  #. Button that toggles between "code" and regular text editing modes
689
+ #: src/admin/file/EditController.php:211
690
  msgctxt "Editor"
691
  msgid "Toggle code view"
692
  msgstr ""
697
  msgstr ""
698
 
699
  #. Button that toggles invisible characters
700
+ #: src/admin/file/EditController.php:209
701
  msgctxt "Editor"
702
  msgid "Toggle invisibles"
703
  msgstr ""
912
  msgstr ""
913
 
914
  #. Placeholder text for text filter above editor
915
+ #: src/admin/file/EditController.php:207
916
  msgid "Filter translations"
917
  msgstr ""
918
 
967
  msgid "Grant access to roles"
968
  msgstr ""
969
 
970
+ #: src/ajax/ApisController.php:26 src/admin/file/EditController.php:195
971
  msgid "Help"
972
  msgstr ""
973
 
1003
  msgid "Import config from XML"
1004
  msgstr ""
1005
 
1006
+ #: tpl/admin/config/apis.php:139
1007
  msgid "Important"
1008
  msgstr ""
1009
 
1152
  msgid "Loco Translate %s"
1153
  msgstr ""
1154
 
1155
+ #: src/data/Settings.php:179
1156
  msgid "Loco Translate 2.5 adds supports for JSON language pack generation."
1157
  msgstr ""
1158
 
1552
  msgid "Save credentials in session"
1553
  msgstr ""
1554
 
1555
+ #: tpl/admin/config/settings.php:233 tpl/admin/config/apis.php:148
1556
  #: tpl/admin/config/prefs.php:44
1557
  msgid "Save settings"
1558
  msgstr ""
1589
  msgid "See FAQ"
1590
  msgstr ""
1591
 
1592
+ #: tpl/admin/config/apis.php:142
1593
  msgid "See full disclaimer"
1594
  msgstr ""
1595
 
1609
  msgstr ""
1610
 
1611
  #: src/mvc/AdminRouter.php:67 src/mvc/AdminRouter.php:72
1612
+ #: tpl/ajax/modal-apis-empty.php:15 src/admin/file/EditController.php:165
1613
  #: tpl/admin/common/inc-fsconn.php:18 tpl/admin/common/inc-fsconn.php:43
1614
  #: tpl/admin/errors/no-backups.php:24
1615
  msgid "Settings"
1791
  "extract strings directly from source code."
1792
  msgstr ""
1793
 
1794
+ #: tpl/admin/config/apis.php:141
1795
  msgid ""
1796
  "Third party services are subject to their own terms of use and may incur "
1797
  "costs from the provider"
1874
  msgstr ""
1875
 
1876
  #. Warning when POT file is opened in the file editor. It can be disabled in settings.
1877
+ #: src/admin/file/EditController.php:164
1878
  msgid ""
1879
  "This is NOT a translation file. Manual editing of source strings is not "
1880
  "recommended."
1953
  msgstr ""
1954
 
1955
  #. Where %s is the name of the invalid POT file
1956
+ #: src/ajax/SyncController.php:72 src/admin/file/EditController.php:122
1957
  #, php-format
1958
  msgid "Translation template is invalid (%s)"
1959
  msgstr ""
1960
 
1961
+ #: src/admin/file/EditController.php:117
1962
  #, php-format
1963
  msgid "Translations don't match template. Run sync to update from %s"
1964
  msgstr ""
lib/compiled/gettext.php CHANGED
@@ -15,8 +15,8 @@ class LocoPoParser extends LocoGettextParser implements Iterator { private $lin
15
  class LocoMoParser extends LocoGettextParser { private $bin; private $be; private $n; private $o; private $t; private $v; public function __construct( $bin ){ $this->bin = $bin; } public function getAt( $idx ){ $offset = $this->targetOffset(); $offset += ( $idx * 8 ); $len = $this->integerAt( $offset ); $idx = $this->integerAt( $offset + 4 ); $txt = $this->bytes( $idx, $len ); if( false === strpos( $txt, "\0") ){ return $txt; } return explode( "\0", $txt ); } public function parse( $limit = -1 ){ $i = -1; $r = array(); $sourceOffset = $this->sourceOffset(); $targetOffset = $this->targetOffset(); $soffset = $sourceOffset; $toffset = $targetOffset; while( $soffset < $targetOffset ){ $len = $this->integerAt( $soffset ); $idx = $this->integerAt( $soffset + 4 ); $src = $this->bytes( $idx, $len ); $eot = strpos( $src, "\x04" ); if( false === $eot ){ $context = null; } else { $context = $this->str( substr($src, 0, $eot ) ); $src = substr( $src, $eot+1 ); } $sources = explode( "\0", $src, 2 ); $len = $this->integerAt( $toffset ); $idx = $this->integerAt( $toffset + 4 ); $targets = explode( "\0", $this->bytes( $idx, $len ) ); if( -1 === $i && '' === $sources[0] && is_null($context) ){ $this->setHeader( LocoPoHeaders::fromMsgstr($targets[0]) ); } if( ++$i === $limit ){ break; } $r[$i] = array( 'source' => $this->str( $sources[0] ), 'target' => $this->str( $targets[0] ), 'context' => $context, ); if( isset($sources[1]) ){ $p = count($r) - 1; $nforms = max( 2, count($targets) ); for( $i = 1; $i < $nforms; $i++ ){ $r[] = array( 'source' => isset($sources[$i]) ? $this->str( $sources[$i] ) : sprintf('%s (plural %u)',$r[$p]['source'],$i), 'target' => isset($targets[$i]) ? $this->str( $targets[$i] ) : '', 'parent' => $p, 'plural' => $i, ); } } $soffset += 8; $toffset += 8; } return $r; } public function isBigendian(){ if( is_null($this->be) ){ $str = $this->words( 0, 1 ); if( "\xDE\x12\x04\x95" === $str ){ $this->be = false; } else if( "\x95\x04\x12\xDE" === $str ){ $this->be = true; } else { throw new Loco_error_ParseException('Invalid MO format'); } } return $this->be; } public function version(){ if( is_null($this->v) ){ $this->v = $this->integerWord(1); } return $this->v; } public function count(){ if( is_null($this->n) ){ $this->n = $this->integerWord(2); } return $this->n; } public function sourceOffset(){ if( is_null($this->o) ){ $this->o = $this->integerWord(3); } return $this->o; } public function targetOffset(){ if( is_null($this->t) ){ $this->t = $this->integerWord(4); } return $this->t; } public function getHashTable(){ $s = $this->integerWord(5); $h = $this->integerWord(6); return $this->bytes( $h, $s * 4 ); } private function bytes( $offset, $length ){ $s = substr( $this->bin, $offset, $length ); if( strlen($s) !== $length ){ throw new Loco_error_ParseException('Failed to read '.$length.' bytes at ['.$offset.']' ); } return $s; } private function words( $offset, $length ){ return $this->bytes( $offset * 4, $length * 4 ); } private function integerWord( $offset ){ return $this->integerAt( $offset * 4 ); } private function integerAt( $offset ){ $str = $this->bytes( $offset, 4 ); $fmt = $this->isBigendian() ? 'N' : 'V'; $arr = unpack( $fmt, $str ); if( ! isset($arr[1]) || ! is_int($arr[1]) ){ throw new Loco_error_ParseException('Failed to read integer at byte '.$offset); } return $arr[1]; } }
16
  abstract class LocoPo { public static function pair( $key, $text, $width = 79, $eol = "\n", $esc = '\\n' ){ if( '' === $text ){ return $key.' ""'; } $text = addcslashes( $text, "\t\x0B\x0C\x07\x08\\\"" ); if( $esc ) { $text = preg_replace('/(?:\\r\\n?|\\n)/', $esc.$eol, $text, -1, $nbr ); } else { $eol = "\n"; $text = preg_replace_callback('/(?:\\r\\n?|\\n)/',array(__CLASS__,'replace_br'), $text, -1, $nbr ); } if( $nbr ){ } else if( $width && $width < mb_strlen($text,'UTF-8') + strlen($key) + 3 ){ } else { return $key.' "'.$text.'"'; } $lines = array( $key.' "' ); if( $width ){ $width -= 2; $a = '/^.{0,'.($width-1).'}[-– \\.,:;\\?!\\)\\]\\}\\>]/u'; $b = '/^[^-– \\.,:;\\?!\\)\\]\\}\\>]+/u'; foreach( explode($eol,$text) as $unwrapped ){ $length = mb_strlen( $unwrapped, 'UTF-8' ); while( $length > $width ){ if( preg_match( $a, $unwrapped, $r ) ){ $line = $r[0]; } else if( preg_match( $b, $unwrapped, $r ) ){ $line = $r[0]; } else { throw new Exception('Wrapping error'); } $lines[] = $line; $trunc = mb_strlen($line,'UTF-8'); $length -= $trunc; $unwrapped = (string) substr( $unwrapped, strlen($line) ); if( ( '' === $unwrapped && 0 !== $length ) || ( 0 === $length && '' !== $unwrapped ) ){ throw new Exception('Truncation error'); } } if( 0 !== $length ){ $lines[] = $unwrapped; } } } else { foreach( explode($eol,$text) as $unwrapped ){ $lines[] = $unwrapped; } } return implode('"'.$eol.'"',$lines).'"'; } private static function replace_br( array $r ){ return addcslashes($r[0],"\r\n")."\n"; } public static function refs( $text, $width = 76, $eol = "\n" ){ $text = preg_replace('/\\s+/u', ' ', $text ); if( $width ){ $text = wordwrap( $text, $width, $eol.'#: ', false ); } return '#: '.$text; } public static function prefix( $text, $prefix, $eol = "\n" ){ return $prefix . implode($eol.$prefix, self::split($text) ); } public static function split( $text ){ $lines = preg_split('/\\R/u', $text ); if( false === $lines ){ if( false === preg_match('//u',$text) ){ $text = mb_convert_encoding( $text, 'UTF-8', 'cp1252' ); } $lines = preg_split('/\\r?\\n+/', $text ); } return $lines; } public static function trim( $text ){ $lines = array(); $deferred = null; foreach( explode("\n",$text) as $line ){ if( '' === $line ){ continue; } if( preg_match('/^msg[a-z]+(?:\\[\\d+])? ""/',$line) ){ $deferred = $line; continue; } if( $deferred && '"' === $line[0] ){ $lines[] = $deferred; $deferred = null; } $lines[] = $line; } return implode("\n",$lines); } }
17
  class LocoPoIndex extends ArrayIterator { public function compare( LocoPoMessage $a, LocoPoMessage $b ){ $h = $a->getHash(); if( ! isset($this[$h]) ){ return 1; } $j = $b->getHash(); if( ! isset($this[$j]) ){ return -1; } return $this[$h] > $this[$j] ? 1 : -1; } }
18
- class LocoPoMessage extends ArrayObject { public function __construct( array $r ){ $r['key'] = $r['source']; parent::__construct($r); } public function __get( $prop ){ return $this->offsetExists($prop) ? $this->offsetGet($prop) : null; } private function _getFlags(){ $flags = array(); $plurals = $this->__get('plurals'); if( 4 === $this->__get('flag') ){ $flags[] = 'fuzzy'; } else if( $plurals ){ foreach( $plurals as $child ){ if( 4 === $child->__get('flag') ){ $flags[] = 'fuzzy'; break; } } } if( $f = $this->__get('format') ){ $flags[] = $f.'-format'; } else if( isset($plurals[0]) && ( $f = $plurals[0]->format ) ){ $flags[] = $f.'-format'; } return $flags; } public function getHash(){ $hash = $this->getKey(); if( $this->offsetExists('plurals') ){ foreach( $this->offsetGet('plurals') as $p ){ $hash .= "\0".$p->getHash(); break; } } return $hash; } public function getKey(){ $msgid = (string) $this['source']; $msgctxt = (string) $this->__get('context'); if( '' !== $msgctxt ){ if( '' === $msgid ){ $msgid = '('.$msgctxt.')'; } $msgid = $msgctxt."\4".$msgid; } return $msgid; } public function exportSerial(){ $a = array( $this['target'] ); if( $this->offsetExists('plurals') ){ $plurals = $this->offsetGet('plurals'); if( is_array($plurals) ){ foreach( $plurals as $i => $p ){ $a[] = $p['target']; } } } return $a; } public function __toString(){ return $this->render( 79, 76 ); } public function render( $width, $ref_width ){ $s = array(); try { if( $text = $this->__get('comment') ) { $s[] = LocoPo::prefix( $text, '# '); } if( $text = $this->__get('notes') ) { $s[] = LocoPo::prefix( $text, '#. '); } if( $text = $this->__get('refs') ){ $s[] = LocoPo::refs( $text, $ref_width ); } if( $texts = $this->_getFlags() ){ $s[] = '#, '.implode(', ',$texts); } $prev = $this->__get('prev'); if( is_array($prev) && $prev ){ foreach( new LocoPoIterator($prev) as $p ){ $text = $p->render( max(0,$width-3), 0 ); $s[] = LocoPo::prefix( LocoPo::trim($text),'#| '); break; } } $text = $this->__get('context'); if( is_string($text) && '' !== $text ){ $s[] = LocoPo::pair('msgctxt', $text, $width ); } $s[] = LocoPo::pair( 'msgid', $this['source'], $width ); $target = $this['target']; $plurals = $this->__get('plurals'); if( is_array($plurals) ){ if( $plurals ){ foreach( $plurals as $i => $p ){ if( 0 === $i ){ $s[] = LocoPo::pair('msgid_plural', $p['source'], $width ); $s[] = LocoPo::pair('msgstr[0]', $target, $width ); } $s[] = LocoPo::pair('msgstr['.(++$i).']', $p['target'], $width ); } } else if( isset($this['plural_key']) ){ $s[] = LocoPo::pair('msgid_plural', $this['plural_key'], $width ); $s[] = LocoPo::pair('msgstr[0]', $target, $width ); } else { trigger_error('Missing plural_key in zero plural export'); $s[] = LocoPo::pair('msgstr', $target, $width ); } } else { $s[] = LocoPo::pair('msgstr', $target, $width ); } } catch( Exception $e ){ trigger_error( $e->getMessage(), E_USER_WARNING ); } return implode("\n",$s)."\n"; } public function merge( LocoPoMessage $def, $translate = false ){ if( $def->getHash() !== $this->getHash() ){ $prev = array( 'source' => '', 'target' => '' ); $prev = $this->diff('source',$def,$prev); $prev = $this->diff('context',$def,$prev); $this['flag'] = 4; $this['prev'] = array( $prev ); $defPlural = $def->getPlural(0); $ourPlural = $this->getPlural(0); if( $defPlural && $ourPlural ) { $ourPlural->merge($defPlural); if( $ourPlural->offsetExists('prev') ) { $this['prev'][] = $ourPlural->prev[0]+array('parent'=>0,'plural'=>1); $ourPlural->offsetUnset('prev'); } } else if( $defPlural ){ $this['plurals'] = array( clone $defPlural ); } else if( $ourPlural ){ $this['prev'][] = $ourPlural->exportBasic() + array('parent'=>0,'plural'=>1); $this->offsetUnset('plurals'); } } foreach( array('notes','refs') as $f ){ if( $def->offsetExists($f) ){ $this->offsetSet($f,$def->offsetGet($f)); } else if( $this->offsetExists($f) ){ $this->offsetUnset($f); } } if( $translate && '' === $this['target'] && '' !== $def['target'] ){ $this['target'] = $def['target']; if( $def->offsetExists('comment') ) { $this['comment'] = $def['comment']; } if( $this->offsetExists('plurals') ){ foreach( $this['plurals'] as $i => $ourPlural ){ if( '' === $ourPlural['target'] ){ $defPlural = $def->getPlural($i); if( $defPlural ){ $ourPlural['target'] = $defPlural['target']; } } } } } } private function diff( $key, LocoPoMessage $def, array $prev ){ $old = $this->__get($key); $new = $def->__get($key); if( $new !== $old ){ $this->offsetSet($key,$new); if( is_string($old) && '' !== $old ){ $prev[$key] = $old; } } return $prev; } private function getPlural( $i ){ if( $this->offsetExists('plurals') ){ $plurals = $this->offsetGet('plurals'); if( is_array($plurals) && array_key_exists($i,$plurals) ){ return $plurals[$i]; } } return null; } private function exportBasic(){ return array( 'source' => $this['source'], 'context' => $this->context, 'target' => '', ); } public function export(){ $a = $this->getArrayCopy(); unset($a['key']); if( array_key_exists('plurals',$a) ){ foreach( $a['plurals'] as $i => $p ){ if( $p instanceof ArrayObject ){ $a['plurals'][$i] = $p->getArrayCopy(); } } } return $a; } public function countForms(){ $len = 1; if( $this->offsetExists('plurals') ){ $plurals = $this->offsetGet('plurals'); $len += count($plurals); } return $len; } public function strip(){ $this['target'] = ''; $plurals = $this->plurals; if( is_array($plurals) ){ foreach( $plurals as $p ){ $p->strip(); } } return $this; } public function translated(){ $n = 0; if( '' !== (string) $this['target'] ){ $n++; } if( $this->offsetExists('plurals') ){ foreach( $this->offsetGet('plurals') as $plural ) { if( '' !== (string) $plural['target']) { $n++; } } } return $n; } }
19
- class LocoPoIterator implements Iterator, Countable { private $po; private $headers = null; private $i; private $t; private $j; private $z = 0; private $w = 79; public function __construct( $po ){ if( is_array($po) ){ $this->po = $po; } else if( $po instanceof Traversable ){ $this->po = iterator_to_array($po,false); } else { throw new InvalidArgumentException('PO data must be array or iterator'); } $this->t = count($po); if( 0 === $this->t ){ throw new InvalidArgumentException('Empty PO data'); } $h = $po[0]; if( '' !== $h['source'] || ( isset($h['context']) && '' !== $h['context'] ) || ( isset($po[1]['parent']) && 0 === $po[1]['parent'] ) ){ $this->z = -1; } } public function push( LocoPoMessage $p ){ $raw = $p->export(); $plurals = $p->plurals; unset($raw['plurals']); $i = count($this->po); $this->po[$i] = $raw; $this->t++; if( is_array($plurals) ) { $j = 0; foreach( $plurals as $p ) { $raw = $p->export(); $raw['parent'] = $i; $raw['plural'] = ++$j; $this->po[] = $raw; $this->t++; } } } public function concat( LocoPoIterator $more ){ foreach( $more as $message ){ $this->push($message); } return $this; } public function __clone(){ if( $this->headers ){ $this->headers = new LocoPoHeaders( $this->headers->getArrayCopy() ); } } public function count(){ return $this->t - ( $this->z + 1 ); } public function wrap( $width ){ $width = (int) $width; if( $width > 0 ){ $this->w = max( 15, $width ); } else { $this->w = 0; } return $this; } public function rewind(){ $this->i = $this->z; $this->j = -1; $this->next(); } public function key(){ return $this->j; } public function valid(){ return is_int($this->i); } public function next(){ $i = $this->i; while( ++$i < $this->t ){ if( array_key_exists('parent',$this->po[$i]) ){ continue; } $this->j++; $this->i = $i; return; } $this->i = null; $this->j = null; } public function current(){ $i = $this->i; $po = $this->po; $parent = new LocoPoMessage( $po[$i] ); $plurals = array(); $nonseq = $parent->offsetExists('child'); $j = $nonseq ? $parent['child'] : $i+1; while( isset($po[$j]['parent']) && $i === $po[$j]['parent'] ){ $plurals[] = new LocoPoMessage($po[$j++]); } if( $plurals ){ $parent['plurals'] = $plurals; } return $parent; } public function getArrayCopy(){ $po = $this->po; if( 0 === $this->z ){ $po[0]['target'] = (string) $this->getHeaders(); } return $po; } public function clear(){ if( 0 === $this->z ){ $this->po = array( $this->po[0] ); $this->t = 1; } else { $this->po = array(); $this->t = 0; } } public function getHeaders(){ if( is_null($this->headers) ){ $header = $this->po[0]; if( 0 === $this->z ){ $this->headers = LocoPoHeaders::fromMsgstr( $header['target'] ); } else { $this->headers = new LocoPoHeaders; } } return $this->headers; } public function setHeaders( LocoPoHeaders $head ){ $this->headers = $head; if( 0 === $this->z ){ $this->po[0]['target'] = null; } return $this; } public function initPo(){ if( 0 === $this->z ){ unset( $this->po[0]['flag'] ); } return $this; } public function initPot(){ if( 0 === $this->z ){ $this->po[0]['flag'] = 4; } return $this; } public function strip(){ $po = $this->po; $i = count($po); $z = $this->z; while( --$i > $z ){ $po[$i]['target'] = ''; } $this->po = $po; return $this; } public function __toString(){ try { return $this->render(); } catch( Exception $e ){ trigger_error( $e->getMessage(), E_USER_WARNING ); return ''; } } public function render( $sorter = null ){ $width = $this->w; $ref_width = max( 0, $width - 3 ); $h = $this->exportHeader(); $msg = new LocoPoMessage( $h ); $s = $msg->render( $width, $ref_width ); if( $sorter ){ if( ! is_callable($sorter) ){ throw new InvalidArgumentException('Bad callback'); } $msgs = array(); foreach( $this as $msg ){ $msgs[] = $msg; } usort( $msgs, $sorter ); } else { $msgs = $this; } foreach( $msgs as $msg ){ $s .= "\n".$msg->render( $width, $ref_width ); } return $s; } public function exportJed(){ $head = $this->getHeaders(); $a = array( '' => array( 'domain' => $head['domain'], 'lang' => $head['language'], 'plural-forms' => $head['plural-forms'], ) ); foreach( $this as $message ){ if( $message->translated() ){ $a[ $message->getKey() ] = $message->exportSerial(); } } return $a; } private function exportHeader(){ if( 0 === $this->z ){ $h = $this->po[0]; } else { $h = array( 'source' => '', 'target' => '' ); } if( $this->headers ){ $h['target'] = (string) $this->headers; } return $h; } public function exportRefs( $grep = '' ){ $a = array(); if( '' === $grep ) { $grep = '/(\\S+):\\d+/'; } else { $grep = '/(\\S*'.$grep.'):\\d+/'; } $self = get_class($this); $base = array( $this->exportHeader() ); foreach( $this as $message ){ if( preg_match_all( $grep, (string) $message->refs, $r ) ){ foreach( $r[1] as $ref ) { if( array_key_exists($ref,$a) ){ $po = $a[$ref]; } else { $po = new $self($base); $a[$ref] = $po; } $po->push($message); } } } return $a; } public function splitRefs( array $map = null ){ $a = array(); $self = get_class($this); $base = array( $this->exportHeader() ); if( is_array($map) ){ $grep = implode('|',array_keys($map)); } else { $grep = '[a-z]+'; } foreach( $this as $message ){ $refs = ltrim( (string) $message->refs ); if( '' !== $refs ){ if( preg_match_all('/\\S+\\.('.$grep.'):\\d+/', $refs, $r, PREG_SET_ORDER ) ){ $tmp = array(); foreach( $r as $rr ) { list( $ref, $ext ) = $rr; $tmp[$ext][$ref] = true; } foreach( $tmp as $ext => $refs ){ if( is_array($map) ){ $ext = $map[$ext]; } if( array_key_exists($ext,$a) ){ $po = $a[$ext]; } else { $po = new $self($base); $a[$ext] = $po; } $message = clone $message; $message['refs'] = implode(' ',array_keys($refs) ); $po->push($message); } } } } return $a; } public function getHashes(){ $a = array(); foreach( $this as $msg ){ $a[] = $msg->getHash(); } sort( $a, SORT_STRING ); return $a; } public function equalSource( LocoPoIterator $that ){ $a = $this->getHashes(); $b = $that->getHashes(); if( count($a) !== count($b) ){ return false; } foreach( $a as $i => $hash ){ if( $hash !== $b[$i] ){ return false; } } return true; } public function equal( LocoPoIterator $that ){ if( $this->t !== $that->t ){ return false; } $i = $this->z; $fields = array( 'source', 'context', 'notes', 'refs', 'target', 'comment', 'flag', 'parent', 'plural' ); while( ++$i < $this->t ){ $a = $this->po[$i]; $b = $that->po[$i]; foreach( $fields as $f ){ $af = isset($a[$f]) ? $a[$f] : ''; $bf = isset($b[$f]) ? $b[$f] : ''; if( $af !== $bf ){ return false; } } } return true; } public function sort( $func = null ){ $order = array(); foreach( $this as $msg ){ $order[] = $msg; } if( is_null($func) ){ $func = array( __CLASS__, 'compare' ); } else if( ! is_callable($func) ){ throw new InvalidArgumentException('Bad callback'); } usort( $order, $func ); $this->clear(); foreach( $order as $p ){ $this->push($p); } return $this; } public static function compare( LocoPoMessage $a, LocoPoMessage $b ){ $h = $a->getHash(); $j = $b->getHash(); $n = strcasecmp( $h, $j ); if( 0 === $n ){ $n = strcmp( $h, $j ); if( 0 === $n ){ return 0; } } return $n > 0 ? 1 : -1; } public function createSorter(){ $index = array(); foreach( $this as $i => $msg ){ $index[ $msg->getHash() ] = $i; } $obj = new LocoPoIndex( $index ); return array( $obj, 'compare' ); } }
20
  class LocoMoTable { private $size = 0; private $bin = ''; private $map; public function __construct( $data = null ){ if( is_array($data) ){ $this->compile( $data ); } else if( $data ){ $this->parse( $data ); } } public function count(){ if( ! isset($this->size) ){ if( $this->bin ){ $this->size = (int) ( strlen( $this->bin ) / 4 ); } else if( is_array($this->map) ){ $this->size = count($this->map); } else { return 0; } if( ! self::is_prime($this->size) || $this->size < 3 ){ throw new Exception('Size expected to be prime number above 2, got '.$this->size); } } return $this->size; } public function bytes(){ return $this->count() * 4; } public function __toString(){ return $this->bin; } public function export(){ if( ! is_array($this->map) ){ $this->parse( $this->bin ); } return $this->map; } private function reset( $length ){ $this->size = max( 3, self::next_prime ( $length * 4 / 3 ) ); $this->bin = null; $this->map = array(); return $this->size; } public function compile( array $msgids ){ $hash_tab_size = $this->reset( count($msgids) ); $packed = array_fill( 0, $hash_tab_size, "\0\0\0\0" ); $j = 0; foreach( $msgids as $msgid ){ $hash_val = self::hashpjw( $msgid ); $idx = $hash_val % $hash_tab_size; if( array_key_exists($idx, $this->map) ){ $incr = 1 + ( $hash_val % ( $hash_tab_size - 2 ) ); do { $idx += $incr; if( $hash_val === $idx ){ throw new Exception('Unable to find empty slot in hash table'); } $idx %= $hash_tab_size; } while( array_key_exists($idx, $this->map ) ); } $this->map[$idx] = $j; $packed[$idx] = pack('V', ++$j ); } return $this->bin = implode('',$packed); } public function lookup( $msgid, array $msgids ){ $hash_val = self::hashpjw( $msgid ); $idx = $hash_val % $this->size; $incr = 1 + ( $hash_val % ( $this->size - 2 ) ); while( true ){ if( ! array_key_exists($idx, $this->map) ){ break; } $j = $this->map[$idx]; if( isset($msgids[$j]) && $msgid === $msgids[$j] ){ return $j; } $idx += $incr; if( $idx === $hash_val ){ break; } $idx %= $this->size; } return -1; } public function parse( $bin ){ $this->bin = (string) $bin; $this->size = null; $hash_tab_size = $this->count(); $this->map = array(); $idx = -1; $byte = 0; while( ++$idx < $hash_tab_size ){ $word = substr( $this->bin, $byte, 4 ); if( "\0\0\0\0" !== $word ){ list(,$j) = unpack('V', $word ); $this->map[$idx] = $j - 1; } $byte += 4; } return $this->map; } public static function hashpjw( $str ){ $i = -1; $hval = 0; $len = strlen($str); while( ++$i < $len ){ $ord = ord( substr($str,$i,1) ); $hval = ( $hval << 4 ) + $ord; $g = $hval & 0xf0000000; if( $g !== 0 ){ $hval ^= $g >> 24; $hval ^= $g; } } return $hval; } private static function next_prime( $seed ){ $seed |= 1; while ( ! self::is_prime($seed) ){ $seed += 2; } return $seed; } private static function is_prime( $num ) { if ($num === 1 ){ return false; } if( $num === 2 ){ return true; } if( $num % 2 == 0 ) { return false; } for( $i = 3; $i <= ceil(sqrt($num)); $i = $i + 2) { if($num % $i == 0 ){ return false; } } return true; } }
21
  class LocoMo { private $bin; private $msgs; private $head; private $hash; private $use_fuzzy = false; private $cs; public function __construct( Iterator $export, LocoPoHeaders $head = null ){ if( $head ){ $this->head = $head; } else { $this->head = new LocoPoHeaders; $this->setHeader('Project-Id-Version','Loco'); } $this->msgs = $export; $this->bin = ''; } public function setCharset( $cs ){ $cs = $this->head->setCharset($cs); $this->cs = 'UTF-8' === $cs ? null : $cs; } public function enableHash(){ return $this->hash = new LocoMoTable; } public function useFuzzy(){ $this->use_fuzzy = true; } public function setHeader( $key, $val ){ $this->head->add($key, $val); return $this; } private function str( $s ){ $s = (string) $s; if( $cs = $this->cs ){ $s = mb_convert_encoding($s,$cs,array('UTF-8')); } return $s; } public function compile(){ $table = array(''); $sources = array(''); $targets = array( (string) $this->head ); $fuzzy_flag = 4; $skip_fuzzy = ! $this->use_fuzzy; foreach( $this->msgs as $r ){ if( $skip_fuzzy && isset($r['flag']) && $fuzzy_flag === $r['flag'] ){ continue; } $msgid = $this->str( $r['key'] ); if( isset($r['context']) ){ $msgctxt = $this->str( $r['context'] ); if( '' !== $msgctxt ){ if( '' === $msgid ){ $msgid = '('.$msgctxt.')'; } $msgid = $msgctxt."\x04".$msgid; } } if( '' === $msgid ){ continue; } $msgstr = $this->str( $r['target'] ); if( '' === $msgstr ){ continue; } $table[] = $msgid; if( isset($r['plurals']) ){ foreach( $r['plurals'] as $i => $p ){ if( $i === 0 ){ $msgid .= "\0".$p['key']; } $msgstr .= "\0".$p['target']; } } $sources[] = $msgid; $targets[] = $msgstr; } asort( $sources, SORT_STRING ); $this->bin = "\xDE\x12\x04\x95\x00\x00\x00\x00"; $n = count($sources); $this->writeInteger( $n ); $offset = 28; $this->writeInteger( $offset ); $offset += $n * 8; $this->writeInteger( $offset ); if( $this->hash ){ sort( $table, SORT_STRING ); $this->hash->compile( $table ); $s = $this->hash->count(); } else { $s = 0; } $this->writeInteger( $s ); $offset += $n * 8; $this->writeInteger( $offset ); if( $s ){ $offset += $s * 4; } $source = ''; foreach( $sources as $i => $str ){ $source .= $str."\0"; $this->writeInteger( $strlen = strlen($str) ); $this->writeInteger( $offset ); $offset += $strlen + 1; } $target = ''; foreach( array_keys($sources) as $i ){ $str = $targets[$i]; $target .= $str."\0"; $this->writeInteger( $strlen = strlen($str) ); $this->writeInteger( $offset ); $offset += $strlen + 1; } if( $this->hash ){ $this->bin .= $this->hash->__toString(); } $this->bin .= $source; $this->bin .= $target; return $this->bin; } private function writeInteger( $num ){ $this->bin .= pack( 'V', $num ); return $this; } }
22
  interface LocoTokensInterface extends Iterator { public function advance(); public function ignore( array $a ); }
15
  class LocoMoParser extends LocoGettextParser { private $bin; private $be; private $n; private $o; private $t; private $v; public function __construct( $bin ){ $this->bin = $bin; } public function getAt( $idx ){ $offset = $this->targetOffset(); $offset += ( $idx * 8 ); $len = $this->integerAt( $offset ); $idx = $this->integerAt( $offset + 4 ); $txt = $this->bytes( $idx, $len ); if( false === strpos( $txt, "\0") ){ return $txt; } return explode( "\0", $txt ); } public function parse( $limit = -1 ){ $i = -1; $r = array(); $sourceOffset = $this->sourceOffset(); $targetOffset = $this->targetOffset(); $soffset = $sourceOffset; $toffset = $targetOffset; while( $soffset < $targetOffset ){ $len = $this->integerAt( $soffset ); $idx = $this->integerAt( $soffset + 4 ); $src = $this->bytes( $idx, $len ); $eot = strpos( $src, "\x04" ); if( false === $eot ){ $context = null; } else { $context = $this->str( substr($src, 0, $eot ) ); $src = substr( $src, $eot+1 ); } $sources = explode( "\0", $src, 2 ); $len = $this->integerAt( $toffset ); $idx = $this->integerAt( $toffset + 4 ); $targets = explode( "\0", $this->bytes( $idx, $len ) ); if( -1 === $i && '' === $sources[0] && is_null($context) ){ $this->setHeader( LocoPoHeaders::fromMsgstr($targets[0]) ); } if( ++$i === $limit ){ break; } $r[$i] = array( 'source' => $this->str( $sources[0] ), 'target' => $this->str( $targets[0] ), 'context' => $context, ); if( isset($sources[1]) ){ $p = count($r) - 1; $nforms = max( 2, count($targets) ); for( $i = 1; $i < $nforms; $i++ ){ $r[] = array( 'source' => isset($sources[$i]) ? $this->str( $sources[$i] ) : sprintf('%s (plural %u)',$r[$p]['source'],$i), 'target' => isset($targets[$i]) ? $this->str( $targets[$i] ) : '', 'parent' => $p, 'plural' => $i, ); } } $soffset += 8; $toffset += 8; } return $r; } public function isBigendian(){ if( is_null($this->be) ){ $str = $this->words( 0, 1 ); if( "\xDE\x12\x04\x95" === $str ){ $this->be = false; } else if( "\x95\x04\x12\xDE" === $str ){ $this->be = true; } else { throw new Loco_error_ParseException('Invalid MO format'); } } return $this->be; } public function version(){ if( is_null($this->v) ){ $this->v = $this->integerWord(1); } return $this->v; } public function count(){ if( is_null($this->n) ){ $this->n = $this->integerWord(2); } return $this->n; } public function sourceOffset(){ if( is_null($this->o) ){ $this->o = $this->integerWord(3); } return $this->o; } public function targetOffset(){ if( is_null($this->t) ){ $this->t = $this->integerWord(4); } return $this->t; } public function getHashTable(){ $s = $this->integerWord(5); $h = $this->integerWord(6); return $this->bytes( $h, $s * 4 ); } private function bytes( $offset, $length ){ $s = substr( $this->bin, $offset, $length ); if( strlen($s) !== $length ){ throw new Loco_error_ParseException('Failed to read '.$length.' bytes at ['.$offset.']' ); } return $s; } private function words( $offset, $length ){ return $this->bytes( $offset * 4, $length * 4 ); } private function integerWord( $offset ){ return $this->integerAt( $offset * 4 ); } private function integerAt( $offset ){ $str = $this->bytes( $offset, 4 ); $fmt = $this->isBigendian() ? 'N' : 'V'; $arr = unpack( $fmt, $str ); if( ! isset($arr[1]) || ! is_int($arr[1]) ){ throw new Loco_error_ParseException('Failed to read integer at byte '.$offset); } return $arr[1]; } }
16
  abstract class LocoPo { public static function pair( $key, $text, $width = 79, $eol = "\n", $esc = '\\n' ){ if( '' === $text ){ return $key.' ""'; } $text = addcslashes( $text, "\t\x0B\x0C\x07\x08\\\"" ); if( $esc ) { $text = preg_replace('/(?:\\r\\n?|\\n)/', $esc.$eol, $text, -1, $nbr ); } else { $eol = "\n"; $text = preg_replace_callback('/(?:\\r\\n?|\\n)/',array(__CLASS__,'replace_br'), $text, -1, $nbr ); } if( $nbr ){ } else if( $width && $width < mb_strlen($text,'UTF-8') + strlen($key) + 3 ){ } else { return $key.' "'.$text.'"'; } $lines = array( $key.' "' ); if( $width ){ $width -= 2; $a = '/^.{0,'.($width-1).'}[-– \\.,:;\\?!\\)\\]\\}\\>]/u'; $b = '/^[^-– \\.,:;\\?!\\)\\]\\}\\>]+/u'; foreach( explode($eol,$text) as $unwrapped ){ $length = mb_strlen( $unwrapped, 'UTF-8' ); while( $length > $width ){ if( preg_match( $a, $unwrapped, $r ) ){ $line = $r[0]; } else if( preg_match( $b, $unwrapped, $r ) ){ $line = $r[0]; } else { throw new Exception('Wrapping error'); } $lines[] = $line; $trunc = mb_strlen($line,'UTF-8'); $length -= $trunc; $unwrapped = (string) substr( $unwrapped, strlen($line) ); if( ( '' === $unwrapped && 0 !== $length ) || ( 0 === $length && '' !== $unwrapped ) ){ throw new Exception('Truncation error'); } } if( 0 !== $length ){ $lines[] = $unwrapped; } } } else { foreach( explode($eol,$text) as $unwrapped ){ $lines[] = $unwrapped; } } return implode('"'.$eol.'"',$lines).'"'; } private static function replace_br( array $r ){ return addcslashes($r[0],"\r\n")."\n"; } public static function refs( $text, $width = 76, $eol = "\n" ){ $text = preg_replace('/\\s+/u', ' ', $text ); if( $width ){ $text = wordwrap( $text, $width, $eol.'#: ', false ); } return '#: '.$text; } public static function prefix( $text, $prefix, $eol = "\n" ){ return $prefix . implode($eol.$prefix, self::split($text) ); } public static function split( $text ){ $lines = preg_split('/\\R/u', $text ); if( false === $lines ){ if( false === preg_match('//u',$text) ){ $text = mb_convert_encoding( $text, 'UTF-8', 'cp1252' ); } $lines = preg_split('/\\r?\\n+/', $text ); } return $lines; } public static function trim( $text ){ $lines = array(); $deferred = null; foreach( explode("\n",$text) as $line ){ if( '' === $line ){ continue; } if( preg_match('/^msg[a-z]+(?:\\[\\d+])? ""/',$line) ){ $deferred = $line; continue; } if( $deferred && '"' === $line[0] ){ $lines[] = $deferred; $deferred = null; } $lines[] = $line; } return implode("\n",$lines); } }
17
  class LocoPoIndex extends ArrayIterator { public function compare( LocoPoMessage $a, LocoPoMessage $b ){ $h = $a->getHash(); if( ! isset($this[$h]) ){ return 1; } $j = $b->getHash(); if( ! isset($this[$j]) ){ return -1; } return $this[$h] > $this[$j] ? 1 : -1; } }
18
+ class LocoPoMessage extends ArrayObject { public function __construct( array $r ){ $r['key'] = $r['source']; parent::__construct($r); } public function __get( $prop ){ return $this->offsetExists($prop) ? $this->offsetGet($prop) : null; } private function _getFlags(){ $flags = array(); $plurals = $this->__get('plurals'); if( 4 === $this->__get('flag') ){ $flags[] = 'fuzzy'; } else if( $plurals ){ foreach( $plurals as $child ){ if( 4 === $child->__get('flag') ){ $flags[] = 'fuzzy'; break; } } } if( $f = $this->__get('format') ){ $flags[] = $f.'-format'; } else if( isset($plurals[0]) && ( $f = $plurals[0]->format ) ){ $flags[] = $f.'-format'; } return $flags; } public function getHash(){ $hash = $this->getKey(); if( $this->offsetExists('plurals') ){ foreach( $this->offsetGet('plurals') as $p ){ $hash .= "\0".$p->getHash(); break; } } return $hash; } public function getKey(){ $msgid = (string) $this['source']; $msgctxt = (string) $this->__get('context'); if( '' !== $msgctxt ){ if( '' === $msgid ){ $msgid = '('.$msgctxt.')'; } $msgid = $msgctxt."\4".$msgid; } return $msgid; } public function exportSerial(){ $a = array( $this['target'] ); if( $this->offsetExists('plurals') ){ $plurals = $this->offsetGet('plurals'); if( is_array($plurals) ){ foreach( $plurals as $i => $p ){ $a[] = $p['target']; } } } return $a; } public function __toString(){ return $this->render( 79, 76 ); } public function render( $width, $ref_width, $max_forms = 0 ){ $s = array(); try { if( $text = $this->__get('comment') ) { $s[] = LocoPo::prefix( $text, '# '); } if( $text = $this->__get('notes') ) { $s[] = LocoPo::prefix( $text, '#. '); } if( $text = $this->__get('refs') ){ $s[] = LocoPo::refs( $text, $ref_width ); } if( $texts = $this->_getFlags() ){ $s[] = '#, '.implode(', ',$texts); } $prev = $this->__get('prev'); if( is_array($prev) && $prev ){ foreach( new LocoPoIterator($prev) as $p ){ $text = $p->render( max(0,$width-3), 0 ); $s[] = LocoPo::prefix( LocoPo::trim($text),'#| '); break; } } $text = $this->__get('context'); if( is_string($text) && '' !== $text ){ $s[] = LocoPo::pair('msgctxt', $text, $width ); } $s[] = LocoPo::pair( 'msgid', $this['source'], $width ); $target = $this['target']; $plurals = $this->__get('plurals'); if( is_array($plurals) ){ if( array_key_exists(0,$plurals) ){ $p = $plurals[0]; $s[] = LocoPo::pair('msgid_plural', $p['source'], $width ); $s[] = LocoPo::pair('msgstr[0]', $target, $width ); $i = 0; while( array_key_exists($i,$plurals) ){ $p = $plurals[$i]; if( ++$i === $max_forms ){ break; } $s[] = LocoPo::pair('msgstr['.$i.']', $p['target'], $width ); } } else if( isset($this['plural_key']) ){ $s[] = LocoPo::pair('msgid_plural', $this['plural_key'], $width ); $s[] = LocoPo::pair('msgstr[0]', $target, $width ); } else { trigger_error('Missing plural_key in zero plural export'); $s[] = LocoPo::pair('msgstr', $target, $width ); } } else { $s[] = LocoPo::pair('msgstr', $target, $width ); } } catch( Exception $e ){ trigger_error( $e->getMessage(), E_USER_WARNING ); } return implode("\n",$s)."\n"; } public function merge( LocoPoMessage $def, $translate = false ){ if( $def->getHash() !== $this->getHash() ){ $prev = array( 'source' => '', 'target' => '' ); $prev = $this->diff('source',$def,$prev); $prev = $this->diff('context',$def,$prev); $this['flag'] = 4; $this['prev'] = array( $prev ); $defPlural = $def->getPlural(0); $ourPlural = $this->getPlural(0); if( $defPlural && $ourPlural ) { $ourPlural->merge($defPlural); if( $ourPlural->offsetExists('prev') ) { $this['prev'][] = $ourPlural->prev[0]+array('parent'=>0,'plural'=>1); $ourPlural->offsetUnset('prev'); } } else if( $defPlural ){ $this['plurals'] = array( clone $defPlural ); } else if( $ourPlural ){ $this['prev'][] = $ourPlural->exportBasic() + array('parent'=>0,'plural'=>1); $this->offsetUnset('plurals'); } } foreach( array('notes','refs') as $f ){ if( $def->offsetExists($f) ){ $this->offsetSet($f,$def->offsetGet($f)); } else if( $this->offsetExists($f) ){ $this->offsetUnset($f); } } if( $translate && '' === $this['target'] && '' !== $def['target'] ){ $this['target'] = $def['target']; if( $def->offsetExists('comment') ) { $this['comment'] = $def['comment']; } if( $this->offsetExists('plurals') ){ foreach( $this['plurals'] as $i => $ourPlural ){ if( '' === $ourPlural['target'] ){ $defPlural = $def->getPlural($i); if( $defPlural ){ $ourPlural['target'] = $defPlural['target']; } } } } } } private function diff( $key, LocoPoMessage $def, array $prev ){ $old = $this->__get($key); $new = $def->__get($key); if( $new !== $old ){ $this->offsetSet($key,$new); if( is_string($old) && '' !== $old ){ $prev[$key] = $old; } } return $prev; } private function getPlural( $i ){ if( $this->offsetExists('plurals') ){ $plurals = $this->offsetGet('plurals'); if( is_array($plurals) && array_key_exists($i,$plurals) ){ return $plurals[$i]; } } return null; } private function exportBasic(){ return array( 'source' => $this['source'], 'context' => $this->context, 'target' => '', ); } public function export(){ $a = $this->getArrayCopy(); unset($a['key']); if( array_key_exists('plurals',$a) ){ foreach( $a['plurals'] as $i => $p ){ if( $p instanceof ArrayObject ){ $a['plurals'][$i] = $p->getArrayCopy(); } } } return $a; } public function countForms(){ $len = 1; if( $this->offsetExists('plurals') ){ $plurals = $this->offsetGet('plurals'); $len += count($plurals); } return $len; } public function strip(){ $this['target'] = ''; $plurals = $this->plurals; if( is_array($plurals) ){ foreach( $plurals as $p ){ $p->strip(); } } return $this; } public function translated(){ $n = 0; if( '' !== (string) $this['target'] ){ $n++; } if( $this->offsetExists('plurals') ){ foreach( $this->offsetGet('plurals') as $plural ) { if( '' !== (string) $plural['target']) { $n++; } } } return $n; } }
19
+ class LocoPoIterator implements Iterator, Countable { private $po; private $headers = null; private $i; private $t; private $j; private $z = 0; private $w = 79; public function __construct( $po ){ if( is_array($po) ){ $this->po = $po; } else if( $po instanceof Traversable ){ $this->po = iterator_to_array($po,false); } else { throw new InvalidArgumentException('PO data must be array or iterator'); } $this->t = count($po); if( 0 === $this->t ){ throw new InvalidArgumentException('Empty PO data'); } $h = $po[0]; if( '' !== $h['source'] || ( isset($h['context']) && '' !== $h['context'] ) || ( isset($po[1]['parent']) && 0 === $po[1]['parent'] ) ){ $this->z = -1; } } public function push( LocoPoMessage $p ){ $raw = $p->export(); $plurals = $p->plurals; unset($raw['plurals']); $i = count($this->po); $this->po[$i] = $raw; $this->t++; if( is_array($plurals) ) { $j = 0; foreach( $plurals as $p ) { $raw = $p->export(); $raw['parent'] = $i; $raw['plural'] = ++$j; $this->po[] = $raw; $this->t++; } } } public function concat( LocoPoIterator $more ){ foreach( $more as $message ){ $this->push($message); } return $this; } public function __clone(){ if( $this->headers ){ $this->headers = new LocoPoHeaders( $this->headers->getArrayCopy() ); } } public function count(){ return $this->t - ( $this->z + 1 ); } public function wrap( $width ){ $width = (int) $width; if( $width > 0 ){ $this->w = max( 15, $width ); } else { $this->w = 0; } return $this; } public function rewind(){ $this->i = $this->z; $this->j = -1; $this->next(); } public function key(){ return $this->j; } public function valid(){ return is_int($this->i); } public function next(){ $i = $this->i; while( ++$i < $this->t ){ if( array_key_exists('parent',$this->po[$i]) ){ continue; } $this->j++; $this->i = $i; return; } $this->i = null; $this->j = null; } public function current(){ $i = $this->i; $po = $this->po; $parent = new LocoPoMessage( $po[$i] ); $plurals = array(); $nonseq = $parent->offsetExists('child'); $j = $nonseq ? $parent['child'] : $i+1; while( isset($po[$j]['parent']) && $i === $po[$j]['parent'] ){ $plurals[] = new LocoPoMessage($po[$j++]); } if( $plurals ){ $parent['plurals'] = $plurals; } return $parent; } public function getArrayCopy(){ $po = $this->po; if( 0 === $this->z ){ $po[0]['target'] = (string) $this->getHeaders(); } return $po; } public function clear(){ if( 0 === $this->z ){ $this->po = array( $this->po[0] ); $this->t = 1; } else { $this->po = array(); $this->t = 0; } } public function getHeaders(){ if( is_null($this->headers) ){ $header = $this->po[0]; if( 0 === $this->z ){ $this->headers = LocoPoHeaders::fromMsgstr( $header['target'] ); } else { $this->headers = new LocoPoHeaders; } } return $this->headers; } public function setHeaders( LocoPoHeaders $head ){ $this->headers = $head; if( 0 === $this->z ){ $this->po[0]['target'] = null; } return $this; } public function initPo(){ if( 0 === $this->z ){ unset( $this->po[0]['flag'] ); } return $this; } public function initPot(){ if( 0 === $this->z ){ $this->po[0]['flag'] = 4; } return $this; } public function strip(){ $po = $this->po; $i = count($po); $z = $this->z; while( --$i > $z ){ $po[$i]['target'] = ''; } $this->po = $po; return $this; } public function __toString(){ try { return $this->render(); } catch( Exception $e ){ trigger_error( $e->getMessage(), E_USER_WARNING ); return ''; } } public function render( $sorter = null ){ $width = $this->w; $ref_width = max( 0, $width - 3 ); $h = $this->exportHeader(); $msg = new LocoPoMessage( $h ); $s = $msg->render( $width, $ref_width ); if( $sorter ){ if( ! is_callable($sorter) ){ throw new InvalidArgumentException('Bad callback'); } $msgs = array(); foreach( $this as $msg ){ $msgs[] = $msg; } usort( $msgs, $sorter ); } else { $msgs = $this; } $h = $this->getHeaders()->offsetGet('Plural-Forms'); if( is_string($h) && preg_match('/nplurals\\s*=\\s*(\\d)/',$h,$r) ){ $max_pl = (int) $r[1]; } else { $max_pl = 0; } foreach( $msgs as $msg ){ $s .= "\n".$msg->render( $width, $ref_width, $max_pl ); } return $s; } public function exportJed(){ $head = $this->getHeaders(); $a = array( '' => array( 'domain' => $head['domain'], 'lang' => $head['language'], 'plural-forms' => $head['plural-forms'], ) ); foreach( $this as $message ){ if( $message->translated() ){ $a[ $message->getKey() ] = $message->exportSerial(); } } return $a; } private function exportHeader(){ if( 0 === $this->z ){ $h = $this->po[0]; } else { $h = array( 'source' => '', 'target' => '' ); } if( $this->headers ){ $h['target'] = (string) $this->headers; } return $h; } public function exportRefs( $grep = '' ){ $a = array(); if( '' === $grep ) { $grep = '/(\\S+):\\d+/'; } else { $grep = '/(\\S*'.$grep.'):\\d+/'; } $self = get_class($this); $base = array( $this->exportHeader() ); foreach( $this as $message ){ if( preg_match_all( $grep, (string) $message->refs, $r ) ){ foreach( $r[1] as $ref ) { if( array_key_exists($ref,$a) ){ $po = $a[$ref]; } else { $po = new $self($base); $a[$ref] = $po; } $po->push($message); } } } return $a; } public function splitRefs( array $map = null ){ $a = array(); $self = get_class($this); $base = array( $this->exportHeader() ); if( is_array($map) ){ $grep = implode('|',array_keys($map)); } else { $grep = '[a-z]+'; } foreach( $this as $message ){ $refs = ltrim( (string) $message->refs ); if( '' !== $refs ){ if( preg_match_all('/\\S+\\.('.$grep.'):\\d+/', $refs, $r, PREG_SET_ORDER ) ){ $tmp = array(); foreach( $r as $rr ) { list( $ref, $ext ) = $rr; $tmp[$ext][$ref] = true; } foreach( $tmp as $ext => $refs ){ if( is_array($map) ){ $ext = $map[$ext]; } if( array_key_exists($ext,$a) ){ $po = $a[$ext]; } else { $po = new $self($base); $a[$ext] = $po; } $message = clone $message; $message['refs'] = implode(' ',array_keys($refs) ); $po->push($message); } } } } return $a; } public function getHashes(){ $a = array(); foreach( $this as $msg ){ $a[] = $msg->getHash(); } sort( $a, SORT_STRING ); return $a; } public function equalSource( LocoPoIterator $that ){ $a = $this->getHashes(); $b = $that->getHashes(); if( count($a) !== count($b) ){ return false; } foreach( $a as $i => $hash ){ if( $hash !== $b[$i] ){ return false; } } return true; } public function equal( LocoPoIterator $that ){ if( $this->t !== $that->t ){ return false; } $i = $this->z; $fields = array( 'source', 'context', 'notes', 'refs', 'target', 'comment', 'flag', 'parent', 'plural' ); while( ++$i < $this->t ){ $a = $this->po[$i]; $b = $that->po[$i]; foreach( $fields as $f ){ $af = isset($a[$f]) ? $a[$f] : ''; $bf = isset($b[$f]) ? $b[$f] : ''; if( $af !== $bf ){ return false; } } } return true; } public function sort( $func = null ){ $order = array(); foreach( $this as $msg ){ $order[] = $msg; } if( is_null($func) ){ $func = array( __CLASS__, 'compare' ); } else if( ! is_callable($func) ){ throw new InvalidArgumentException('Bad callback'); } usort( $order, $func ); $this->clear(); foreach( $order as $p ){ $this->push($p); } return $this; } public static function compare( LocoPoMessage $a, LocoPoMessage $b ){ $h = $a->getHash(); $j = $b->getHash(); $n = strcasecmp( $h, $j ); if( 0 === $n ){ $n = strcmp( $h, $j ); if( 0 === $n ){ return 0; } } return $n > 0 ? 1 : -1; } public function createSorter(){ $index = array(); foreach( $this as $i => $msg ){ $index[ $msg->getHash() ] = $i; } $obj = new LocoPoIndex( $index ); return array( $obj, 'compare' ); } }
20
  class LocoMoTable { private $size = 0; private $bin = ''; private $map; public function __construct( $data = null ){ if( is_array($data) ){ $this->compile( $data ); } else if( $data ){ $this->parse( $data ); } } public function count(){ if( ! isset($this->size) ){ if( $this->bin ){ $this->size = (int) ( strlen( $this->bin ) / 4 ); } else if( is_array($this->map) ){ $this->size = count($this->map); } else { return 0; } if( ! self::is_prime($this->size) || $this->size < 3 ){ throw new Exception('Size expected to be prime number above 2, got '.$this->size); } } return $this->size; } public function bytes(){ return $this->count() * 4; } public function __toString(){ return $this->bin; } public function export(){ if( ! is_array($this->map) ){ $this->parse( $this->bin ); } return $this->map; } private function reset( $length ){ $this->size = max( 3, self::next_prime ( $length * 4 / 3 ) ); $this->bin = null; $this->map = array(); return $this->size; } public function compile( array $msgids ){ $hash_tab_size = $this->reset( count($msgids) ); $packed = array_fill( 0, $hash_tab_size, "\0\0\0\0" ); $j = 0; foreach( $msgids as $msgid ){ $hash_val = self::hashpjw( $msgid ); $idx = $hash_val % $hash_tab_size; if( array_key_exists($idx, $this->map) ){ $incr = 1 + ( $hash_val % ( $hash_tab_size - 2 ) ); do { $idx += $incr; if( $hash_val === $idx ){ throw new Exception('Unable to find empty slot in hash table'); } $idx %= $hash_tab_size; } while( array_key_exists($idx, $this->map ) ); } $this->map[$idx] = $j; $packed[$idx] = pack('V', ++$j ); } return $this->bin = implode('',$packed); } public function lookup( $msgid, array $msgids ){ $hash_val = self::hashpjw( $msgid ); $idx = $hash_val % $this->size; $incr = 1 + ( $hash_val % ( $this->size - 2 ) ); while( true ){ if( ! array_key_exists($idx, $this->map) ){ break; } $j = $this->map[$idx]; if( isset($msgids[$j]) && $msgid === $msgids[$j] ){ return $j; } $idx += $incr; if( $idx === $hash_val ){ break; } $idx %= $this->size; } return -1; } public function parse( $bin ){ $this->bin = (string) $bin; $this->size = null; $hash_tab_size = $this->count(); $this->map = array(); $idx = -1; $byte = 0; while( ++$idx < $hash_tab_size ){ $word = substr( $this->bin, $byte, 4 ); if( "\0\0\0\0" !== $word ){ list(,$j) = unpack('V', $word ); $this->map[$idx] = $j - 1; } $byte += 4; } return $this->map; } public static function hashpjw( $str ){ $i = -1; $hval = 0; $len = strlen($str); while( ++$i < $len ){ $ord = ord( substr($str,$i,1) ); $hval = ( $hval << 4 ) + $ord; $g = $hval & 0xf0000000; if( $g !== 0 ){ $hval ^= $g >> 24; $hval ^= $g; } } return $hval; } private static function next_prime( $seed ){ $seed |= 1; while ( ! self::is_prime($seed) ){ $seed += 2; } return $seed; } private static function is_prime( $num ) { if ($num === 1 ){ return false; } if( $num === 2 ){ return true; } if( $num % 2 == 0 ) { return false; } for( $i = 3; $i <= ceil(sqrt($num)); $i = $i + 2) { if($num % $i == 0 ){ return false; } } return true; } }
21
  class LocoMo { private $bin; private $msgs; private $head; private $hash; private $use_fuzzy = false; private $cs; public function __construct( Iterator $export, LocoPoHeaders $head = null ){ if( $head ){ $this->head = $head; } else { $this->head = new LocoPoHeaders; $this->setHeader('Project-Id-Version','Loco'); } $this->msgs = $export; $this->bin = ''; } public function setCharset( $cs ){ $cs = $this->head->setCharset($cs); $this->cs = 'UTF-8' === $cs ? null : $cs; } public function enableHash(){ return $this->hash = new LocoMoTable; } public function useFuzzy(){ $this->use_fuzzy = true; } public function setHeader( $key, $val ){ $this->head->add($key, $val); return $this; } private function str( $s ){ $s = (string) $s; if( $cs = $this->cs ){ $s = mb_convert_encoding($s,$cs,array('UTF-8')); } return $s; } public function compile(){ $table = array(''); $sources = array(''); $targets = array( (string) $this->head ); $fuzzy_flag = 4; $skip_fuzzy = ! $this->use_fuzzy; foreach( $this->msgs as $r ){ if( $skip_fuzzy && isset($r['flag']) && $fuzzy_flag === $r['flag'] ){ continue; } $msgid = $this->str( $r['key'] ); if( isset($r['context']) ){ $msgctxt = $this->str( $r['context'] ); if( '' !== $msgctxt ){ if( '' === $msgid ){ $msgid = '('.$msgctxt.')'; } $msgid = $msgctxt."\x04".$msgid; } } if( '' === $msgid ){ continue; } $msgstr = $this->str( $r['target'] ); if( '' === $msgstr ){ continue; } $table[] = $msgid; if( isset($r['plurals']) ){ foreach( $r['plurals'] as $i => $p ){ if( $i === 0 ){ $msgid .= "\0".$p['key']; } $msgstr .= "\0".$p['target']; } } $sources[] = $msgid; $targets[] = $msgstr; } asort( $sources, SORT_STRING ); $this->bin = "\xDE\x12\x04\x95\x00\x00\x00\x00"; $n = count($sources); $this->writeInteger( $n ); $offset = 28; $this->writeInteger( $offset ); $offset += $n * 8; $this->writeInteger( $offset ); if( $this->hash ){ sort( $table, SORT_STRING ); $this->hash->compile( $table ); $s = $this->hash->count(); } else { $s = 0; } $this->writeInteger( $s ); $offset += $n * 8; $this->writeInteger( $offset ); if( $s ){ $offset += $s * 4; } $source = ''; foreach( $sources as $i => $str ){ $source .= $str."\0"; $this->writeInteger( $strlen = strlen($str) ); $this->writeInteger( $offset ); $offset += $strlen + 1; } $target = ''; foreach( array_keys($sources) as $i ){ $str = $targets[$i]; $target .= $str."\0"; $this->writeInteger( $strlen = strlen($str) ); $this->writeInteger( $offset ); $offset += $strlen + 1; } if( $this->hash ){ $this->bin .= $this->hash->__toString(); } $this->bin .= $source; $this->bin .= $target; return $this->bin; } private function writeInteger( $num ){ $this->bin .= pack( 'V', $num ); return $this; } }
22
  interface LocoTokensInterface extends Iterator { public function advance(); public function ignore( array $a ); }
lib/data/locales.php CHANGED
@@ -2,4 +2,4 @@
2
  /**
3
  * Compiled data. Do not edit.
4
  */
5
- return array('af'=>array(0=>'Afrikaans',1=>'Afrikaans'),'ar'=>array(0=>'Arabic',1=>'العربية'),'ary'=>array(0=>'Moroccan Arabic',1=>'العربية المغربية'),'as'=>array(0=>'Assamese',1=>'অসমীয়া'),'azb'=>array(0=>'South Azerbaijani',1=>'گؤنئی آذربایجان'),'az'=>array(0=>'Azerbaijani',1=>'Azərbaycan dili'),'bel'=>array(0=>'Belarusian',1=>'Беларуская мова'),'bg_BG'=>array(0=>'Bulgarian',1=>'Български'),'bn_BD'=>array(0=>'Bengali (Bangladesh)',1=>'বাংলা'),'bo'=>array(0=>'Tibetan',1=>'བོད་ཡིག'),'bs_BA'=>array(0=>'Bosnian',1=>'Bosanski'),'ca'=>array(0=>'Catalan',1=>'Català'),'ceb'=>array(0=>'Cebuano',1=>'Cebuano'),'cs_CZ'=>array(0=>'Czech',1=>'Čeština'),'cy'=>array(0=>'Welsh',1=>'Cymraeg'),'da_DK'=>array(0=>'Danish',1=>'Dansk'),'de_CH_informal'=>array(0=>'German (Switzerland, Informal)',1=>'Deutsch (Schweiz, Du)'),'de_DE'=>array(0=>'German',1=>'Deutsch'),'de_AT'=>array(0=>'German (Austria)',1=>'Deutsch (Österreich)'),'de_CH'=>array(0=>'German (Switzerland)',1=>'Deutsch (Schweiz)'),'de_DE_formal'=>array(0=>'German (Formal)',1=>'Deutsch (Sie)'),'dsb'=>array(0=>'Lower Sorbian',1=>'Dolnoserbšćina'),'dzo'=>array(0=>'Dzongkha',1=>'རྫོང་ཁ'),'el'=>array(0=>'Greek',1=>'Ελληνικά'),'en_AU'=>array(0=>'English (Australia)',1=>'English (Australia)'),'en_GB'=>array(0=>'English (UK)',1=>'English (UK)'),'en_NZ'=>array(0=>'English (New Zealand)',1=>'English (New Zealand)'),'en_ZA'=>array(0=>'English (South Africa)',1=>'English (South Africa)'),'en_CA'=>array(0=>'English (Canada)',1=>'English (Canada)'),'eo'=>array(0=>'Esperanto',1=>'Esperanto'),'es_PE'=>array(0=>'Spanish (Peru)',1=>'Español de Perú'),'es_CR'=>array(0=>'Spanish (Costa Rica)',1=>'Español de Costa Rica'),'es_MX'=>array(0=>'Spanish (Mexico)',1=>'Español de México'),'es_AR'=>array(0=>'Spanish (Argentina)',1=>'Español de Argentina'),'es_VE'=>array(0=>'Spanish (Venezuela)',1=>'Español de Venezuela'),'es_EC'=>array(0=>'Spanish (Ecuador)',1=>'Español de Ecuador'),'es_CO'=>array(0=>'Spanish (Colombia)',1=>'Español de Colombia'),'es_CL'=>array(0=>'Spanish (Chile)',1=>'Español de Chile'),'es_UY'=>array(0=>'Spanish (Uruguay)',1=>'Español de Uruguay'),'es_PR'=>array(0=>'Spanish (Puerto Rico)',1=>'Español de Puerto Rico'),'es_GT'=>array(0=>'Spanish (Guatemala)',1=>'Español de Guatemala'),'es_DO'=>array(0=>'Spanish (Dominican Republic)',1=>'Español de República Dominicana'),'es_ES'=>array(0=>'Spanish (Spain)',1=>'Español'),'et'=>array(0=>'Estonian',1=>'Eesti'),'eu'=>array(0=>'Basque',1=>'Euskara'),'fa_IR'=>array(0=>'Persian',1=>'فارسی'),'fa_AF'=>array(0=>'Persian (Afghanistan)',1=>'(فارسی (افغانستان'),'fi'=>array(0=>'Finnish',1=>'Suomi'),'fr_FR'=>array(0=>'French (France)',1=>'Français'),'fr_CA'=>array(0=>'French (Canada)',1=>'Français du Canada'),'fr_BE'=>array(0=>'French (Belgium)',1=>'Français de Belgique'),'fur'=>array(0=>'Friulian',1=>'Friulian'),'gd'=>array(0=>'Scottish Gaelic',1=>'Gàidhlig'),'gl_ES'=>array(0=>'Galician',1=>'Galego'),'gu'=>array(0=>'Gujarati',1=>'ગુજરાતી'),'haz'=>array(0=>'Hazaragi',1=>'هزاره گی'),'he_IL'=>array(0=>'Hebrew',1=>'עִבְרִית'),'hi_IN'=>array(0=>'Hindi',1=>'हिन्दी'),'hr'=>array(0=>'Croatian',1=>'Hrvatski'),'hsb'=>array(0=>'Upper Sorbian',1=>'Hornjoserbšćina'),'hu_HU'=>array(0=>'Hungarian',1=>'Magyar'),'hy'=>array(0=>'Armenian',1=>'Հայերեն'),'id_ID'=>array(0=>'Indonesian',1=>'Bahasa Indonesia'),'is_IS'=>array(0=>'Icelandic',1=>'Íslenska'),'it_IT'=>array(0=>'Italian',1=>'Italiano'),'ja'=>array(0=>'Japanese',1=>'日本語'),'jv_ID'=>array(0=>'Javanese',1=>'Basa Jawa'),'ka_GE'=>array(0=>'Georgian',1=>'ქართული'),'kab'=>array(0=>'Kabyle',1=>'Taqbaylit'),'kk'=>array(0=>'Kazakh',1=>'Қазақ тілі'),'km'=>array(0=>'Khmer',1=>'ភាសាខ្មែរ'),'kn'=>array(0=>'Kannada',1=>'ಕನ್ನಡ'),'ko_KR'=>array(0=>'Korean',1=>'한국어'),'ckb'=>array(0=>'Kurdish (Sorani)',1=>'كوردی‎'),'lo'=>array(0=>'Lao',1=>'ພາສາລາວ'),'lt_LT'=>array(0=>'Lithuanian',1=>'Lietuvių kalba'),'lv'=>array(0=>'Latvian',1=>'Latviešu valoda'),'mk_MK'=>array(0=>'Macedonian',1=>'Македонски јазик'),'ml_IN'=>array(0=>'Malayalam',1=>'മലയാളം'),'mn'=>array(0=>'Mongolian',1=>'Монгол'),'mr'=>array(0=>'Marathi',1=>'मराठी'),'ms_MY'=>array(0=>'Malay',1=>'Bahasa Melayu'),'my_MM'=>array(0=>'Myanmar (Burmese)',1=>'ဗမာစာ'),'nb_NO'=>array(0=>'Norwegian (Bokmål)',1=>'Norsk bokmål'),'ne_NP'=>array(0=>'Nepali',1=>'नेपाली'),'nl_NL_formal'=>array(0=>'Dutch (Formal)',1=>'Nederlands (Formeel)'),'nl_BE'=>array(0=>'Dutch (Belgium)',1=>'Nederlands (België)'),'nl_NL'=>array(0=>'Dutch',1=>'Nederlands'),'nn_NO'=>array(0=>'Norwegian (Nynorsk)',1=>'Norsk nynorsk'),'oci'=>array(0=>'Occitan',1=>'Occitan'),'pa_IN'=>array(0=>'Punjabi',1=>'ਪੰਜਾਬੀ'),'pl_PL'=>array(0=>'Polish',1=>'Polski'),'ps'=>array(0=>'Pashto',1=>'پښتو'),'pt_PT_ao90'=>array(0=>'Portuguese (Portugal, AO90)',1=>'Português (AO90)'),'pt_BR'=>array(0=>'Portuguese (Brazil)',1=>'Português do Brasil'),'pt_PT'=>array(0=>'Portuguese (Portugal)',1=>'Português'),'pt_AO'=>array(0=>'Portuguese (Angola)',1=>'Português de Angola'),'rhg'=>array(0=>'Rohingya',1=>'Ruáinga'),'ro_RO'=>array(0=>'Romanian',1=>'Română'),'ru_RU'=>array(0=>'Russian',1=>'Русский'),'sah'=>array(0=>'Sakha',1=>'Сахалыы'),'snd'=>array(0=>'Sindhi',1=>'سنڌي'),'si_LK'=>array(0=>'Sinhala',1=>'සිංහල'),'sk_SK'=>array(0=>'Slovak',1=>'Slovenčina'),'skr'=>array(0=>'Saraiki',1=>'سرائیکی'),'sl_SI'=>array(0=>'Slovenian',1=>'Slovenščina'),'sq'=>array(0=>'Albanian',1=>'Shqip'),'sr_RS'=>array(0=>'Serbian',1=>'Српски језик'),'sv_SE'=>array(0=>'Swedish',1=>'Svenska'),'sw'=>array(0=>'Swahili',1=>'Kiswahili'),'szl'=>array(0=>'Silesian',1=>'Ślōnskŏ gŏdka'),'ta_IN'=>array(0=>'Tamil',1=>'தமிழ்'),'ta_LK'=>array(0=>'Tamil (Sri Lanka)',1=>'தமிழ்'),'te'=>array(0=>'Telugu',1=>'తెలుగు'),'th'=>array(0=>'Thai',1=>'ไทย'),'tl'=>array(0=>'Tagalog',1=>'Tagalog'),'tr_TR'=>array(0=>'Turkish',1=>'Türkçe'),'tt_RU'=>array(0=>'Tatar',1=>'Татар теле'),'tah'=>array(0=>'Tahitian',1=>'Reo Tahiti'),'ug_CN'=>array(0=>'Uighur',1=>'ئۇيغۇرچە'),'uk'=>array(0=>'Ukrainian',1=>'Українська'),'ur'=>array(0=>'Urdu',1=>'اردو'),'uz_UZ'=>array(0=>'Uzbek',1=>'O‘zbekcha'),'vi'=>array(0=>'Vietnamese',1=>'Tiếng Việt'),'zh_CN'=>array(0=>'Chinese (China)',1=>'简体中文'),'zh_HK'=>array(0=>'Chinese (Hong Kong)',1=>'香港中文版 '),'zh_TW'=>array(0=>'Chinese (Taiwan)',1=>'繁體中文'));
2
  /**
3
  * Compiled data. Do not edit.
4
  */
5
+ return array('af'=>array(0=>'Afrikaans',1=>'Afrikaans'),'ar'=>array(0=>'Arabic',1=>'العربية'),'ary'=>array(0=>'Moroccan Arabic',1=>'العربية المغربية'),'as'=>array(0=>'Assamese',1=>'অসমীয়া'),'azb'=>array(0=>'South Azerbaijani',1=>'گؤنئی آذربایجان'),'az'=>array(0=>'Azerbaijani',1=>'Azərbaycan dili'),'bel'=>array(0=>'Belarusian',1=>'Беларуская мова'),'bg_BG'=>array(0=>'Bulgarian',1=>'Български'),'bn_BD'=>array(0=>'Bengali (Bangladesh)',1=>'বাংলা'),'bo'=>array(0=>'Tibetan',1=>'བོད་ཡིག'),'bs_BA'=>array(0=>'Bosnian',1=>'Bosanski'),'ca'=>array(0=>'Catalan',1=>'Català'),'ceb'=>array(0=>'Cebuano',1=>'Cebuano'),'cs_CZ'=>array(0=>'Czech',1=>'Čeština'),'cy'=>array(0=>'Welsh',1=>'Cymraeg'),'da_DK'=>array(0=>'Danish',1=>'Dansk'),'de_CH'=>array(0=>'German (Switzerland)',1=>'Deutsch (Schweiz)'),'de_DE'=>array(0=>'German',1=>'Deutsch'),'de_DE_formal'=>array(0=>'German (Formal)',1=>'Deutsch (Sie)'),'de_CH_informal'=>array(0=>'German (Switzerland, Informal)',1=>'Deutsch (Schweiz, Du)'),'de_AT'=>array(0=>'German (Austria)',1=>'Deutsch (Österreich)'),'dsb'=>array(0=>'Lower Sorbian',1=>'Dolnoserbšćina'),'dzo'=>array(0=>'Dzongkha',1=>'རྫོང་ཁ'),'el'=>array(0=>'Greek',1=>'Ελληνικά'),'en_CA'=>array(0=>'English (Canada)',1=>'English (Canada)'),'en_GB'=>array(0=>'English (UK)',1=>'English (UK)'),'en_NZ'=>array(0=>'English (New Zealand)',1=>'English (New Zealand)'),'en_AU'=>array(0=>'English (Australia)',1=>'English (Australia)'),'en_ZA'=>array(0=>'English (South Africa)',1=>'English (South Africa)'),'eo'=>array(0=>'Esperanto',1=>'Esperanto'),'es_CO'=>array(0=>'Spanish (Colombia)',1=>'Español de Colombia'),'es_MX'=>array(0=>'Spanish (Mexico)',1=>'Español de México'),'es_VE'=>array(0=>'Spanish (Venezuela)',1=>'Español de Venezuela'),'es_ES'=>array(0=>'Spanish (Spain)',1=>'Español'),'es_PE'=>array(0=>'Spanish (Peru)',1=>'Español de Perú'),'es_EC'=>array(0=>'Spanish (Ecuador)',1=>'Español de Ecuador'),'es_DO'=>array(0=>'Spanish (Dominican Republic)',1=>'Español de República Dominicana'),'es_CL'=>array(0=>'Spanish (Chile)',1=>'Español de Chile'),'es_UY'=>array(0=>'Spanish (Uruguay)',1=>'Español de Uruguay'),'es_PR'=>array(0=>'Spanish (Puerto Rico)',1=>'Español de Puerto Rico'),'es_GT'=>array(0=>'Spanish (Guatemala)',1=>'Español de Guatemala'),'es_AR'=>array(0=>'Spanish (Argentina)',1=>'Español de Argentina'),'es_CR'=>array(0=>'Spanish (Costa Rica)',1=>'Español de Costa Rica'),'et'=>array(0=>'Estonian',1=>'Eesti'),'eu'=>array(0=>'Basque',1=>'Euskara'),'fa_AF'=>array(0=>'Persian (Afghanistan)',1=>'(فارسی (افغانستان'),'fa_IR'=>array(0=>'Persian',1=>'فارسی'),'fi'=>array(0=>'Finnish',1=>'Suomi'),'fr_CA'=>array(0=>'French (Canada)',1=>'Français du Canada'),'fr_FR'=>array(0=>'French (France)',1=>'Français'),'fr_BE'=>array(0=>'French (Belgium)',1=>'Français de Belgique'),'fur'=>array(0=>'Friulian',1=>'Friulian'),'gd'=>array(0=>'Scottish Gaelic',1=>'Gàidhlig'),'gl_ES'=>array(0=>'Galician',1=>'Galego'),'gu'=>array(0=>'Gujarati',1=>'ગુજરાતી'),'haz'=>array(0=>'Hazaragi',1=>'هزاره گی'),'he_IL'=>array(0=>'Hebrew',1=>'עִבְרִית'),'hi_IN'=>array(0=>'Hindi',1=>'हिन्दी'),'hr'=>array(0=>'Croatian',1=>'Hrvatski'),'hsb'=>array(0=>'Upper Sorbian',1=>'Hornjoserbšćina'),'hu_HU'=>array(0=>'Hungarian',1=>'Magyar'),'hy'=>array(0=>'Armenian',1=>'Հայերեն'),'id_ID'=>array(0=>'Indonesian',1=>'Bahasa Indonesia'),'is_IS'=>array(0=>'Icelandic',1=>'Íslenska'),'it_IT'=>array(0=>'Italian',1=>'Italiano'),'ja'=>array(0=>'Japanese',1=>'日本語'),'jv_ID'=>array(0=>'Javanese',1=>'Basa Jawa'),'ka_GE'=>array(0=>'Georgian',1=>'ქართული'),'kab'=>array(0=>'Kabyle',1=>'Taqbaylit'),'kk'=>array(0=>'Kazakh',1=>'Қазақ тілі'),'km'=>array(0=>'Khmer',1=>'ភាសាខ្មែរ'),'kn'=>array(0=>'Kannada',1=>'ಕನ್ನಡ'),'ko_KR'=>array(0=>'Korean',1=>'한국어'),'ckb'=>array(0=>'Kurdish (Sorani)',1=>'كوردی‎'),'lo'=>array(0=>'Lao',1=>'ພາສາລາວ'),'lt_LT'=>array(0=>'Lithuanian',1=>'Lietuvių kalba'),'lv'=>array(0=>'Latvian',1=>'Latviešu valoda'),'mk_MK'=>array(0=>'Macedonian',1=>'Македонски јазик'),'ml_IN'=>array(0=>'Malayalam',1=>'മലയാളം'),'mn'=>array(0=>'Mongolian',1=>'Монгол'),'mr'=>array(0=>'Marathi',1=>'मराठी'),'ms_MY'=>array(0=>'Malay',1=>'Bahasa Melayu'),'my_MM'=>array(0=>'Myanmar (Burmese)',1=>'ဗမာစာ'),'nb_NO'=>array(0=>'Norwegian (Bokmål)',1=>'Norsk bokmål'),'ne_NP'=>array(0=>'Nepali',1=>'नेपाली'),'nl_NL_formal'=>array(0=>'Dutch (Formal)',1=>'Nederlands (Formeel)'),'nl_BE'=>array(0=>'Dutch (Belgium)',1=>'Nederlands (België)'),'nl_NL'=>array(0=>'Dutch',1=>'Nederlands'),'nn_NO'=>array(0=>'Norwegian (Nynorsk)',1=>'Norsk nynorsk'),'oci'=>array(0=>'Occitan',1=>'Occitan'),'pa_IN'=>array(0=>'Punjabi',1=>'ਪੰਜਾਬੀ'),'pl_PL'=>array(0=>'Polish',1=>'Polski'),'ps'=>array(0=>'Pashto',1=>'پښتو'),'pt_PT_ao90'=>array(0=>'Portuguese (Portugal, AO90)',1=>'Português (AO90)'),'pt_PT'=>array(0=>'Portuguese (Portugal)',1=>'Português'),'pt_BR'=>array(0=>'Portuguese (Brazil)',1=>'Português do Brasil'),'pt_AO'=>array(0=>'Portuguese (Angola)',1=>'Português de Angola'),'rhg'=>array(0=>'Rohingya',1=>'Ruáinga'),'ro_RO'=>array(0=>'Romanian',1=>'Română'),'ru_RU'=>array(0=>'Russian',1=>'Русский'),'sah'=>array(0=>'Sakha',1=>'Сахалыы'),'snd'=>array(0=>'Sindhi',1=>'سنڌي'),'si_LK'=>array(0=>'Sinhala',1=>'සිංහල'),'sk_SK'=>array(0=>'Slovak',1=>'Slovenčina'),'skr'=>array(0=>'Saraiki',1=>'سرائیکی'),'sl_SI'=>array(0=>'Slovenian',1=>'Slovenščina'),'sq'=>array(0=>'Albanian',1=>'Shqip'),'sr_RS'=>array(0=>'Serbian',1=>'Српски језик'),'sv_SE'=>array(0=>'Swedish',1=>'Svenska'),'sw'=>array(0=>'Swahili',1=>'Kiswahili'),'szl'=>array(0=>'Silesian',1=>'Ślōnskŏ gŏdka'),'ta_IN'=>array(0=>'Tamil',1=>'தமிழ்'),'ta_LK'=>array(0=>'Tamil (Sri Lanka)',1=>'தமிழ்'),'te'=>array(0=>'Telugu',1=>'తెలుగు'),'th'=>array(0=>'Thai',1=>'ไทย'),'tl'=>array(0=>'Tagalog',1=>'Tagalog'),'tr_TR'=>array(0=>'Turkish',1=>'Türkçe'),'tt_RU'=>array(0=>'Tatar',1=>'Татар теле'),'tah'=>array(0=>'Tahitian',1=>'Reo Tahiti'),'ug_CN'=>array(0=>'Uighur',1=>'ئۇيغۇرچە'),'uk'=>array(0=>'Ukrainian',1=>'Українська'),'ur'=>array(0=>'Urdu',1=>'اردو'),'uz_UZ'=>array(0=>'Uzbek',1=>'O‘zbekcha'),'vi'=>array(0=>'Vietnamese',1=>'Tiếng Việt'),'zh_CN'=>array(0=>'Chinese (China)',1=>'简体中文'),'zh_TW'=>array(0=>'Chinese (Taiwan)',1=>'繁體中文'),'zh_HK'=>array(0=>'Chinese (Hong Kong)',1=>'香港中文版 '));
loco.php CHANGED
@@ -4,7 +4,7 @@ Plugin Name: Loco Translate
4
  Plugin URI: https://wordpress.org/plugins/loco-translate/
5
  Description: Translate themes and plugins directly in WordPress
6
  Author: Tim Whitlock
7
- Version: 2.5.5
8
  Requires at least: 4.1
9
  Tested up to: 5.8.1
10
  Requires PHP: 5.2.4
@@ -33,7 +33,7 @@ function loco_plugin_file(){
33
  * @return string
34
  */
35
  function loco_plugin_version(){
36
- return '2.5.5';
37
  }
38
 
39
 
4
  Plugin URI: https://wordpress.org/plugins/loco-translate/
5
  Description: Translate themes and plugins directly in WordPress
6
  Author: Tim Whitlock
7
+ Version: 2.5.6
8
  Requires at least: 4.1
9
  Tested up to: 5.8.1
10
  Requires PHP: 5.2.4
33
  * @return string
34
  */
35
  function loco_plugin_version(){
36
+ return '2.5.6';
37
  }
38
 
39
 
pub/css/admin.css CHANGED
@@ -1 +1 @@
1
- ._ajax_loader_f2{background-image:url(../img/ajax-loader-f2.gif?v=2.5.5);background-repeat:no-repeat;min-height:16px}._ajax_loader_f2x4{background:transparent url(../img/ajax-loader-f2-x4.gif?v=2.5.5) 0 0 no-repeat;min-height:75px}._ajax_loader_cc{background-image:url(../img/ajax-loader-cc.gif?v=2.5.5);background-repeat:no-repeat;min-height:16px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1),only screen and (min-device-pixel-ratio: 2),only screen and (min-resolution: 192dpi),only screen and (min-resolution: 2dppx){._ajax_loader_f2{background-image:url(../img/ajax-loader-f2-x2.gif?v=2.5.5);background-size:16px}._ajax_loader_cc{background-image:url(../img/ajax-loader-cc-x2.gif?v=2.5.5);background-size:16px}}._green_glow_inner{-webkit-box-shadow:inset 0 0 10px 0 #3db63d;-moz-box-shadow:inset 0 0 10px 0 #3db63d;box-shadow:inset 0 0 10px 0 #3db63d}._green_glow_outer{-webkit-box-shadow:0 0 .5em 0 #3db63d;-moz-box-shadow:0 0 .5em 0 #3db63d;box-shadow:0 0 .5em 0 #3db63d}.loco-font,#loco-admin.wrap .wp-list-table th.loco-sort.loco-asc:after,#loco-admin.wrap .wp-list-table th.loco-sort.loco-desc:after,#loco-admin.wrap .icon,#loco-admin.wrap .has-icon:before{font-family:"loco";speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@font-face{font-family:"loco";src:url("../font/loco.eot?v=2.5.5");src:url("../font/loco.eot?v=2.5.5?#iefix") format("embedded-opentype"),url("../font/loco.woff?v=2.5.5") format("woff"),url("../font/loco.ttf?v=2.5.5") format("truetype"),url("../font/loco.svg?v=2.5.5#loco") format("svg");font-weight:normal;font-style:normal}.tipsy{font-size:11px;position:absolute;padding:5px;z-index:500001;opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.tipsy.in{opacity:1}.tipsy-inner{background-color:#000;color:#fff;white-space:nowrap;padding:6px 8px;line-height:1.3em;text-align:center;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;-webkit-font-smoothing:subpixel-antialiased}.tipsy-arrow{position:absolute;width:0;height:0;line-height:0;border:5px dashed #000}.tipsy-n .tipsy-arrow{top:0px;left:50%;margin-left:-5px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.tipsy-nw .tipsy-arrow{top:0;left:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.tipsy-ne .tipsy-arrow{top:0;right:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.tipsy-s .tipsy-arrow{bottom:0;left:50%;margin-left:-5px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.tipsy-sw .tipsy-arrow{bottom:0;left:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.tipsy-se .tipsy-arrow{bottom:0;right:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.tipsy-e .tipsy-arrow{right:0;top:50%;margin-top:-5px;border-left-style:solid;border-right:none;border-top-color:transparent;border-bottom-color:transparent}.tipsy-w .tipsy-arrow{left:0;top:50%;margin-top:-5px;border-right-style:solid;border-left:none;border-top-color:transparent;border-bottom-color:transparent}#loco-admin.wrap .selector li,#loco-admin.wrap .selector .handle,#loco-admin.wrap .selectoradd a,#loco-admin.wrap .selectorsep:before,#loco-admin.wrap .selectorsep span{padding:.3em .75em}#loco-admin.wrap .selector{text-align:left;display:inline-block;white-space:nowrap}#loco-admin.wrap .selectoradd a,#loco-admin.wrap .selector .handle{cursor:default;display:block;position:relative;border-top:solid 1px #fff;border-right:solid 1px #ddd;border-bottom:solid 1px #ddd;border-left:solid 1px #fff;color:#666;height:1.3em;overflow:hidden;white-space:normal}#loco-admin.wrap .selectorsep{display:inline-block;border:solid 1px transparent}#loco-admin.wrap .selectorsep:before{display:block;position:relative;color:#999;height:1.3em;overflow:hidden}#loco-admin.wrap .selectorsep>*{display:block;line-height:1em;color:#666;height:1.3em;overflow:hidden}#loco-admin.wrap .selector .handle{outline:none;white-space:nowrap;padding-right:2.3em;max-width:250px;text-overflow:ellipsis}#loco-admin.wrap .selector .handle .prefix{padding-right:.6ex}#loco-admin.wrap .selector .handle:after{font-family:loco;font-size:1.3em;color:#ccc;display:block;position:absolute;top:.25em;right:.6em;content:"▼"}#loco-admin.wrap .selector .handle:focus:after,#loco-admin.wrap .selector .handle:hover:after{color:#666}#loco-admin.wrap .selector.no-caret .handle{padding-right:.75em}#loco-admin.wrap .selector.no-caret .handle:after{display:none}#loco-admin.wrap .selector.no-title .handle{padding-left:.5em;padding-right:.5em}#loco-admin.wrap .selector.no-title .handle .label{display:none}#loco-admin.wrap .selector.no-title .handle .icon{margin-right:0px}#loco-admin.wrap .selector.dummy .handle{border-color:transparent}#loco-admin.wrap .selector.dummy .handle:after{display:none}#loco-admin.wrap .selectoradd{position:relative}#loco-admin.wrap .selectoradd>*{display:block;float:left;clear:none}#loco-admin.wrap .selectoradd>a.has-icon{width:1.3em}#loco-admin.wrap .selectoradd>a.has-icon:before{color:#999;display:inline;padding-left:0;padding-right:0;line-height:1.4em}#loco-admin.wrap .selectoradd>a.has-icon:hover:after{color:#2e892e}#loco-admin.wrap .selectorsep{display:inline-block}#loco-admin.wrap .selectorsep span{color:#666;height:1.3em}#loco-admin.wrap .selector ul{padding:0}#loco-admin.wrap .selector ul,#loco-admin.wrap .selector li{display:block;position:relative;cursor:default;margin:0}#loco-admin.wrap .selector ul{z-index:5;position:absolute;left:0;top:0;background:#f5f5f5;box-shadow:0 10px 5px rgba(0,0,0,.2);border:solid 1px #ccc;overflow:auto}#loco-admin.wrap .selector.up ul{margin-top:0}#loco-admin.wrap .selector.multi li input{display:none}#loco-admin.wrap .selector.multi li.checked{background:#e5e5e5}#loco-admin.wrap .selector li.active{background:#e5e5e5 !important}#loco-admin.wrap .selector li.over{background:#ccc !important;color:#fff;text-shadow:1px 1px #aaa}#loco-admin.wrap .selector li.over .label{color:#fff}#loco-admin.wrap .selector .label{font:inherit;color:inherit}#loco-admin.wrap .selector .icon{display:inline-block;min-width:1.2em;text-align:center;font-size:14px}#loco-admin.wrap .selector .icon.no-icon{display:none}#loco-admin.wrap .selector .icon:before{color:#666}#loco-admin.wrap .selector .avtr{width:18px;height:18px;background-size:18px;background-repeat:no-repeat}#loco-admin.wrap .selector .label{line-height:1}#loco-admin.wrap .selector .icon,#loco-admin.wrap .selector .icon-16{vertical-align:bottom}#loco-admin.wrap .selector .icon,#loco-admin.wrap .selector .lang,#loco-admin.wrap .selector .icon-16{margin-right:5px}#loco-admin.wrap .selector .region,#loco-admin.wrap .selector .variant-wales,#loco-admin.wrap .selector .region-gb.lang-cy,#loco-admin.wrap .selector .variant-scotland,#loco-admin.wrap .selector .region-gb.lang-gd,#loco-admin.wrap .selector .variant-valencia,#loco-admin.wrap .selector .region-es.variant-valencia,#loco-admin.wrap .selector .lang-ca,#loco-admin.wrap .selector .region-es.lang-ca,#loco-admin.wrap .selector .lang-eo,#loco-admin.wrap .selector .lang-eu{margin-left:2px;margin-right:7px}#loco-admin.wrap .selector.ticked .icon.no-icon{font-size:12px;display:inline-block}#loco-admin.wrap .selector.ticked .active .icon.no-icon:before{content:"✓"}#loco-admin.wrap .selectoradd a:hover,#loco-admin.wrap .selector a.handle:focus,#loco-admin.wrap .selector a.handle:hover{color:#000;border-color:#999}#loco-admin.wrap .selector.active .handle{border-color:#999;background-color:#eee;color:#999}#loco-admin.wrap .selector.active .handle:after{color:#999;content:"▲"}#loco-admin.wrap .selector.disabled{cursor:default;cursor:no-drop;cursor:not-allowed}#loco-admin.wrap .selector.disabled .handle{pointer-events:none;border-top:solid 1px #fff;border-right:solid 1px #ddd;border-bottom:solid 1px #ddd;border-left:solid 1px #fff;color:#999;padding-right:1em}#loco-admin.wrap .selector.disabled .handle:after{display:none}#loco-admin.wrap .selector.disabled .handle span.icon{color:#999 !important}#loco-admin.wrap .selector li.disabled,#loco-admin.wrap .selector li.disabled.over{color:#aaa;text-shadow:1px 1px #fff;pointer-events:none}#loco-admin.wrap .selector li.disabled *{cursor:text}#loco-admin.wrap .selector li.disabled .icon:before{color:#aaa}#loco-admin.wrap .selector li.disabled .flag,#loco-admin.wrap .selector li.disabled .icon-16{opacity:.4}#loco-admin.wrap .selector.lefty ul{left:auto;right:0}#loco-admin.wrap .selector.lefty ul .icon,#loco-admin.wrap .selector.lefty ul .icon-32{display:block;float:right;clear:none}#loco-admin.wrap .selector.lefty ul .label{padding-right:32px;padding-left:0}#loco-admin.wrap .selector ul>form{margin:0;display:block}#loco-admin.wrap .selector ul>form input{margin:0;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0}#loco-admin.wrap .selector ul>form input:focus{-webkit-box-shadow:inset 0 0 5px 0 #3db63d;-moz-box-shadow:inset 0 0 5px 0 #3db63d;box-shadow:inset 0 0 5px 0 #3db63d}#loco-admin.wrap .selector ul>form input.error{border-color:#c00;-webkit-box-shadow:inset 0 0 5px 0 rgba(153,0,0,.5);-moz-box-shadow:inset 0 0 5px 0 rgba(153,0,0,.5);box-shadow:inset 0 0 5px 0 rgba(153,0,0,.5)}#loco-admin.wrap .selector ul>form a.clear{margin:0;border:none}#loco-admin.wrap .selector ul>form ::placeholder{color:gray;font-size:16px;font-family:"loco";text-align:right;display:block}#loco-admin.wrap .selector ul>form ::-webkit-input-placeholder{color:gray;font-size:16px;font-family:"loco";text-align:right;display:block}#loco-admin.wrap .selector ul>form :-moz-placeholder{color:gray;font-size:16px;font-family:"loco";text-align:right;display:block;opacity:1}#loco-admin.wrap .selector ul>form ::-moz-placeholder{color:gray;font-size:16px;font-family:"loco";text-align:right;display:block;opacity:1}#loco-admin.wrap .selector ul>form :-ms-input-placeholder{color:gray;font-size:16px;font-family:"loco";text-align:right;display:block}#loco-admin.wrap .selector ul>form .ielt10 .placeheld{color:gray;font-size:16px;font-family:"loco";text-align:right;display:block}#loco-admin.wrap div.auto-comp-wrap{width:100%}#loco-admin.wrap div.auto-comp-wrap input{display:inline-block}#loco-admin.wrap div.auto-comp-wrap.loading input{background:transparent url(../img/ajax-loader.gif?v=2.5.5) right 2px no-repeat}#loco-admin.wrap div.auto-comp-drop{color:#333;background:#fff;border-top:none;position:absolute;width:auto;top:0;left:0;z-index:99;-webkit-box-shadow:0 5px 5px rgba(0,0,0,.4);-moz-box-shadow:0 5px 5px rgba(0,0,0,.4);box-shadow:0 5px 5px rgba(0,0,0,.4)}#loco-admin.wrap div.auto-comp-result{padding:5px 10px;cursor:pointer;background:#f0f0f0;border-top:solid 1px #fff;border-bottom:solid 1px #ddd;white-space:nowrap}#loco-admin.wrap div.auto-comp-result:first-child{border-top:solid 1px #ddd}#loco-admin.wrap div.auto-comp-result>*{display:inline-block;vertical-align:middle;line-height:normal}#loco-admin.wrap div.auto-comp-result .icon:before{padding-right:5px}#loco-admin.wrap div.auto-comp-result:hover{background:#a8a8a8;color:#fff;border-top-color:#a8a8a8;border-bottom-color:#999}#loco-admin.wrap div.auto-comp-result.selected{background:#666 !important;color:#fff;border-top-color:#666;border-bottom-color:#666}#loco-admin.wrap div.auto-comp-result .lang,#loco-admin.wrap div.auto-comp-result .region,#loco-admin.wrap div.auto-comp-result .variant-wales,#loco-admin.wrap div.auto-comp-result .region-gb.lang-cy,#loco-admin.wrap div.auto-comp-result .variant-scotland,#loco-admin.wrap div.auto-comp-result .region-gb.lang-gd,#loco-admin.wrap div.auto-comp-result .variant-valencia,#loco-admin.wrap div.auto-comp-result .region-es.variant-valencia,#loco-admin.wrap div.auto-comp-result .lang-ca,#loco-admin.wrap div.auto-comp-result .region-es.lang-ca,#loco-admin.wrap div.auto-comp-result .lang-eo,#loco-admin.wrap div.auto-comp-result .lang-eu,#loco-admin.wrap div.auto-comp-result .avtr{margin-right:5px}#loco-admin.wrap div.auto-comp-wrap.error a.icon.clear:before{color:#c00;opacity:1}#loco-admin.wrap div.auto-comp-wrap.error input[type=text]{border-color:#c00;color:#c00}#loco-admin.wrap div.auto-comp-wrap.error input[type=text]:focus{-webkit-box-shadow:0 0 .5em 0 rgba(153,0,0,.5);-moz-box-shadow:0 0 .5em 0 rgba(153,0,0,.5);box-shadow:0 0 .5em 0 rgba(153,0,0,.5)}#loco-admin.wrap ._ajax_loader_f2{background-image:url(../img/ajax-loader-f2.gif?v=2.5.5);background-repeat:no-repeat;min-height:16px}#loco-admin.wrap ._ajax_loader_f2x4{background:transparent url(../img/ajax-loader-f2-x4.gif?v=2.5.5) 0 0 no-repeat;min-height:75px}#loco-admin.wrap ._ajax_loader_cc{background-image:url(../img/ajax-loader-cc.gif?v=2.5.5);background-repeat:no-repeat;min-height:16px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1),only screen and (min-device-pixel-ratio: 2),only screen and (min-resolution: 192dpi),only screen and (min-resolution: 2dppx){#loco-admin.wrap ._ajax_loader_f2{background-image:url(../img/ajax-loader-f2-x2.gif?v=2.5.5);background-size:16px}#loco-admin.wrap ._ajax_loader_cc{background-image:url(../img/ajax-loader-cc-x2.gif?v=2.5.5);background-size:16px}}#loco-admin.wrap ._green_glow_inner{-webkit-box-shadow:inset 0 0 10px 0 #3db63d;-moz-box-shadow:inset 0 0 10px 0 #3db63d;box-shadow:inset 0 0 10px 0 #3db63d}#loco-admin.wrap ._green_glow_outer{-webkit-box-shadow:0 0 .5em 0 #3db63d;-moz-box-shadow:0 0 .5em 0 #3db63d;box-shadow:0 0 .5em 0 #3db63d}#loco-admin.wrap .loco-font,#loco-admin.wrap .wp-list-table th.loco-sort.loco-asc:after,#loco-admin.wrap .wp-list-table th.loco-sort.loco-desc:after,#loco-admin.wrap .icon,#loco-admin.wrap .has-icon:before{font-family:"loco";speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#loco-admin.wrap .has-icon:before{display:inline-block;padding-right:.3em}#loco-admin.wrap a.icon-help{cursor:help}#loco-admin.wrap a.icon-help span{display:none}#loco-admin.wrap .icon-notag:before{content:""}#loco-admin.wrap .icon-magnify:before{content:"🔍"}#loco-admin.wrap .icon-python:before{content:"🐍"}#loco-admin.wrap .icon-unicode:before{content:"u"}#loco-admin.wrap .icon-json:before{content:"{"}#loco-admin.wrap .icon-bullist:before{content:""}#loco-admin.wrap .icon-numlist:before{content:""}#loco-admin.wrap .icon-indent:before{content:""}#loco-admin.wrap .icon-outdent:before{content:""}#loco-admin.wrap .icon-link:before{content:""}#loco-admin.wrap .icon-unlink:before{content:""}#loco-admin.wrap .icon-bold:before{content:"B"}#loco-admin.wrap .icon-italic:before{content:"I"}#loco-admin.wrap .icon-translate:before{content:""}#loco-admin.wrap .icon-proj:before{content:""}#loco-admin.wrap .icon-plural:before{content:"᛬"}#loco-admin.wrap .icon-max:before,#loco-admin.wrap .icon-full-screen:before{content:""}#loco-admin.wrap .icon-min:before{content:""}#loco-admin.wrap .icon-sort:before{content:""}#loco-admin.wrap .icon-ok:before,#loco-admin.wrap .notice-success>.has-icon:before,#loco-admin.wrap .notice-success p>strong.has-icon:before{content:"✓"}#loco-admin.wrap .icon-ok-empty:before{content:"🗌"}#loco-admin.wrap .icon-checkbox-checked:before,#loco-admin.wrap .selector.multi li.checked .icon-checkbox:before{content:"☑"}#loco-admin.wrap .icon-checkbox-unchecked:before{content:"☐"}#loco-admin.wrap .icon-checkbox-partial:before{content:"☉"}#loco-admin.wrap .icon-radio-checked:before{content:"⚫"}#loco-admin.wrap .icon-radio-unchecked:before{content:"⚪"}#loco-admin.wrap .icon-ext:before{content:"⬈"}#loco-admin.wrap .icon-share:before{content:""}#loco-admin.wrap .icon-star:before{content:""}#loco-admin.wrap .icon-user:before{content:""}#loco-admin.wrap .icon-remove:before,#loco-admin.wrap a.icon.close:before{content:"×"}#loco-admin.wrap .icon-cog:before{content:""}#loco-admin.wrap .icon-trash:before{content:""}#loco-admin.wrap .icon-time:before,#loco-admin.wrap .icon-history:before{content:""}#loco-admin.wrap .icon-download:before{content:""}#loco-admin.wrap .icon-revert:before{content:""}#loco-admin.wrap .icon-sync:before{content:""}#loco-admin.wrap .icon-lock:before,#loco-admin.wrap .notice-locked>.has-icon:before,#loco-admin.wrap .notice-locked p>strong.has-icon:before{content:""}#loco-admin.wrap .icon-flag:before{content:""}#loco-admin.wrap .icon-tag:before{content:""}#loco-admin.wrap .icon-tags:before{content:""}#loco-admin.wrap .icon-print:before{content:""}#loco-admin.wrap .icon-camera:before{content:""}#loco-admin.wrap .icon-pencil:before{content:""}#loco-admin.wrap .icon-add:before{content:""}#loco-admin.wrap .icon-del:before{content:""}#loco-admin.wrap .icon-clear:before,#loco-admin.wrap a.icon.clear:before{content:""}#loco-admin.wrap .icon-ok-sign:before{content:"✔"}#loco-admin.wrap .icon-help:before{content:"?"}#loco-admin.wrap .icon-info:before,#loco-admin.wrap .notice-info>.has-icon:before,#loco-admin.wrap .notice-info p>strong.has-icon:before{content:"ℹ"}#loco-admin.wrap .icon-cancel:before{content:""}#loco-admin.wrap .icon-warn:before,#loco-admin.wrap .notice-error>.has-icon:before,#loco-admin.wrap .notice-error p>strong.has-icon:before,#loco-admin.wrap .notice-warning>.has-icon:before,#loco-admin.wrap .notice-warning p>strong.has-icon:before{content:""}#loco-admin.wrap .icon-comment:before{content:""}#loco-admin.wrap .icon-bar-chart:before{content:""}#loco-admin.wrap .icon-key:before{content:""}#loco-admin.wrap .icon-cogs:before{content:""}#loco-admin.wrap .icon-comments:before{content:""}#loco-admin.wrap .icon-signout:before{content:""}#loco-admin.wrap .icon-signin:before{content:""}#loco-admin.wrap .icon-upload:before{content:""}#loco-admin.wrap .icon-twitter:before{content:"🐦"}#loco-admin.wrap .icon-facebook:before{content:""}#loco-admin.wrap .icon-github:before{content:""}#loco-admin.wrap .icon-feed:before{content:""}#loco-admin.wrap .icon-globe:before{content:""}#loco-admin.wrap .icon-wrench:before,#loco-admin.wrap .notice-debug>.has-icon:before,#loco-admin.wrap .notice-debug p>strong.has-icon:before{content:""}#loco-admin.wrap .icon-group:before{content:""}#loco-admin.wrap .icon-cloud:before{content:""}#loco-admin.wrap .icon-copy:before{content:""}#loco-admin.wrap .icon-save:before{content:""}#loco-admin.wrap .icon-menu:before{content:""}#loco-admin.wrap .icon-table:before{content:""}#loco-admin.wrap .icon-caret-down:before{content:"▼"}#loco-admin.wrap .icon-caret-up:before{content:"▲"}#loco-admin.wrap .icon-caret-right:before{content:"▶"}#loco-admin.wrap .icon-mail:before{content:""}#loco-admin.wrap .icon-cloud-upload:before{content:""}#loco-admin.wrap .icon-file:before{content:""}#loco-admin.wrap .icon-circle-white:before{content:"⚬"}#loco-admin.wrap .icon-circle-black:before{content:"●"}#loco-admin.wrap .icon-eraser:before{content:""}#loco-admin.wrap .icon-unlock:before{content:""}#loco-admin.wrap .icon-apple:before{content:""}#loco-admin.wrap .icon-android:before{content:""}#loco-admin.wrap .icon-robot:before{content:"🤖"}#loco-admin.wrap .icon-back:before{content:"⬅"}#loco-admin.wrap .icon-next:before{content:"➔"}#loco-admin.wrap .icon-arrow-up:before{content:""}#loco-admin.wrap .icon-ccard:before{content:""}#loco-admin.wrap .icon-caret-left:before{content:"◀"}#loco-admin.wrap .icon-pro:before{content:"⚡"}#loco-admin.wrap .icon-bell:before{content:""}#loco-admin.wrap .icon-code:before{content:""}#loco-admin.wrap .icon-privacy:before{content:"🛡"}#loco-admin.wrap .icon-hellip:before{content:"…"}#loco-admin.wrap .icon-vellip:before{content:"⁞"}#loco-admin.wrap .icon-collapse:before{content:""}#loco-admin.wrap .icon-expand:before{content:""}#loco-admin.wrap .icon-wordpress:before{content:""}#loco-admin.wrap .icon-database:before{content:""}#loco-admin.wrap .icon-restore:before{content:""}#loco-admin.wrap .icon-pilcrow:before{content:"¶"}#loco-admin.wrap .icon-status.is-translated:before,#loco-admin.wrap .is-translated>header>.icon-status:before{color:#2e892e;content:"✓";text-align:center}#loco-admin.wrap .icon-status.is-untranslated:before,#loco-admin.wrap .is-untranslated>header>.icon-status:before{color:#aaa;content:"×";text-align:center;font-size:1.1em}#loco-admin.wrap .icon-status.is-flagged:before,#loco-admin.wrap .is-flagged>header>.icon-status:before{color:#bd2c00;content:"";text-align:center}#loco-admin.wrap .icon-status.is-translated.is-blank:before,#loco-admin.wrap .icon-status.is-translated.is-inherit:before,#loco-admin.wrap .is-translated.is-blank>header>.icon-status:before,#loco-admin.wrap .is-translated.is-inherit>header>.icon-status:before{content:"🗌"}#loco-admin.wrap .icon-status.is-fuzzy:before,#loco-admin.wrap .is-fuzzy>header>.icon-status:before{color:#666;content:""}#loco-admin.wrap .lang,#loco-admin.wrap .region,#loco-admin.wrap .variant-wales,#loco-admin.wrap .region-gb.lang-cy,#loco-admin.wrap .variant-scotland,#loco-admin.wrap .region-gb.lang-gd,#loco-admin.wrap .variant-valencia,#loco-admin.wrap .region-es.variant-valencia,#loco-admin.wrap .lang-ca,#loco-admin.wrap .region-es.lang-ca,#loco-admin.wrap .lang-eo,#loco-admin.wrap .lang-eu{color:#fff;background:#2e892e;display:inline-block;text-transform:uppercase;overflow:hidden;font-family:Verdana,Arial,sans-serif;font-size:9px;font-weight:normal;font-style:normal;line-height:12px;text-align:center;white-space:normal;text-shadow:none}#loco-admin.wrap .lang{width:20px;height:12px;line-height:12px;vertical-align:middle}#loco-admin.wrap .lang:before{content:attr(lang);vertical-align:baseline}#loco-admin.wrap .no-lang{width:18px;height:10px;border:solid 1px #2e892e;background:transparent}#loco-admin.wrap .lang-el{background-color:#1d48a3}#loco-admin.wrap .lang-el:before{content:"Ελ"}#loco-admin.wrap .region,#loco-admin.wrap .variant-wales,#loco-admin.wrap .region-gb.lang-cy,#loco-admin.wrap .variant-scotland,#loco-admin.wrap .region-gb.lang-gd,#loco-admin.wrap .variant-valencia,#loco-admin.wrap .region-es.variant-valencia,#loco-admin.wrap .lang-ca,#loco-admin.wrap .region-es.lang-ca,#loco-admin.wrap .lang-eo,#loco-admin.wrap .lang-eu{width:16px;height:12px;margin:0 2px;background-image:url(../img/flags.png?v=2.5.5);background-repeat:no-repeat;background-color:transparent}#loco-admin.wrap .region:before,#loco-admin.wrap .variant-wales:before,#loco-admin.wrap .region-gb.lang-cy:before,#loco-admin.wrap .variant-scotland:before,#loco-admin.wrap .region-gb.lang-gd:before,#loco-admin.wrap .variant-valencia:before,#loco-admin.wrap .region-es.variant-valencia:before,#loco-admin.wrap .lang-ca:before,#loco-admin.wrap .region-es.lang-ca:before,#loco-admin.wrap .lang-eo:before,#loco-admin.wrap .lang-eu:before{visibility:hidden}#loco-admin.wrap .lang-zh{background-color:#b90000}#loco-admin.wrap .lang-zh.script-hans:before{content:"中国"}#loco-admin.wrap .lang-zh.script-hant:before{content:"中國"}#loco-admin.wrap .__{background-position:0 0}#loco-admin.wrap .lang-eo{background-position:0 -12px}#loco-admin.wrap .lang-eu{background-position:0 -24px}#loco-admin.wrap .lang-ca,#loco-admin.wrap .region-es.lang-ca{background-position:0 -36px}#loco-admin.wrap .region-tg{background-position:0 -48px}#loco-admin.wrap .region-me{background-position:0 -60px}#loco-admin.wrap .region-la{background-position:0 -73px}#loco-admin.wrap .region-mr{background-position:0 -85px}#loco-admin.wrap .region-ni{background-position:0 -97px}#loco-admin.wrap .region-lv{background-position:0 -109px}#loco-admin.wrap .region-om{background-position:0 -121px}#loco-admin.wrap .region-af{background-position:0 -133px}#loco-admin.wrap .region-cy{background-position:0 -145px}#loco-admin.wrap .region-bj{background-position:0 -157px}#loco-admin.wrap .region-aq{background-position:0 -169px}#loco-admin.wrap .region-cn{background-position:0 -186px}#loco-admin.wrap .region-co{background-position:0 -198px}#loco-admin.wrap .region-cx{background-position:0 -210px}#loco-admin.wrap .region-ag{background-position:0 -222px}#loco-admin.wrap .region-ms{background-position:0 -234px}#loco-admin.wrap .region-md{background-position:0 -246px}#loco-admin.wrap .region-zm{background-position:0 -258px}#loco-admin.wrap .region-vn{background-position:0 -270px}#loco-admin.wrap .region-tf{background-position:0 -282px}#loco-admin.wrap .region-td{background-position:0 -294px}#loco-admin.wrap .region-yt{background-position:0 -306px}#loco-admin.wrap .region-lb{background-position:0 -318px}#loco-admin.wrap .region-mf{background-position:0 -330px}#loco-admin.wrap .region-lu{background-position:0 -347px}#loco-admin.wrap .region-mq{background-position:0 -359px}#loco-admin.wrap .region-cz{background-position:0 -371px}#loco-admin.wrap .region-ae{background-position:0 -383px}#loco-admin.wrap .region-cm{background-position:0 -395px}#loco-admin.wrap .region-bi{background-position:0 -407px}#loco-admin.wrap .region-ar{background-position:0 -419px}#loco-admin.wrap .region-as{background-position:0 -431px}#loco-admin.wrap .region-bh{background-position:0 -443px}#loco-admin.wrap .region-cl{background-position:0 -455px}#loco-admin.wrap .region-ad{background-position:0 -467px}#loco-admin.wrap .region-mp{background-position:0 -479px}#loco-admin.wrap .region-lt{background-position:0 -491px}#loco-admin.wrap .region-mg{background-position:0 -503px}#loco-admin.wrap .region-lc{background-position:0 -515px}#loco-admin.wrap .region-tr{background-position:0 -527px}#loco-admin.wrap .region-ua{background-position:0 -539px}#loco-admin.wrap .region-tv{background-position:0 -551px}#loco-admin.wrap .region-vi{background-position:0 -563px}#loco-admin.wrap .region-mt{background-position:0 -575px}#loco-admin.wrap .region-no{background-position:0 -587px}#loco-admin.wrap .region-mc{background-position:0 -599px}#loco-admin.wrap .region-ch{background-position:0 -611px}#loco-admin.wrap .region-bl{background-position:0 -623px}#loco-admin.wrap .region-aw{background-position:0 -640px}#loco-admin.wrap .region-bz{background-position:0 -652px}#loco-admin.wrap .region-bm{background-position:0 -664px}#loco-admin.wrap .region-ci{background-position:0 -676px}#loco-admin.wrap .region-mu{background-position:0 -688px}#loco-admin.wrap .region-us{background-position:0 -700px}#loco-admin.wrap .region-tw{background-position:0 -712px}#loco-admin.wrap .region-ye{background-position:0 -724px}#loco-admin.wrap .region-mw{background-position:0 -736px}#loco-admin.wrap .region-nl{background-position:0 -748px}#loco-admin.wrap .region-ls{background-position:0 -760px}#loco-admin.wrap .region-bo{background-position:0 -772px}#loco-admin.wrap .region-at{background-position:0 -784px}#loco-admin.wrap .region-ck{background-position:0 -796px}#loco-admin.wrap .region-by{background-position:0 -808px}#loco-admin.wrap .region-au{background-position:0 -820px}#loco-admin.wrap .region-bn{background-position:0 -832px}#loco-admin.wrap .region-ma{background-position:0 -844px}#loco-admin.wrap .region-nz{background-position:0 -856px}#loco-admin.wrap .region-lr{background-position:0 -868px}#loco-admin.wrap .region-mv{background-position:0 -880px}#loco-admin.wrap .region-tc{background-position:0 -892px}#loco-admin.wrap .region-ug{background-position:0 -904px}#loco-admin.wrap .region-tt{background-position:0 -916px}#loco-admin.wrap .region-pl{background-position:0 -928px}#loco-admin.wrap .region-rs{background-position:0 -940px}#loco-admin.wrap .region-in{background-position:0 -952px}#loco-admin.wrap .region-ge{background-position:0 -964px}#loco-admin.wrap .region-gr{background-position:0 -976px}#loco-admin.wrap .region-gs{background-position:0 -988px}#loco-admin.wrap .region-gd{background-position:0 -1000px}#loco-admin.wrap .region-io{background-position:0 -1012px}#loco-admin.wrap .region-hk{background-position:0 -1024px}#loco-admin.wrap .region-kp{background-position:0 -1036px}#loco-admin.wrap .region-kg{background-position:0 -1048px}#loco-admin.wrap .region-pm{background-position:0 -1060px}#loco-admin.wrap .region-sv{background-position:0 -1072px}#loco-admin.wrap .region-re{background-position:0 -1084px}#loco-admin.wrap .region-sa{background-position:0 -1096px}#loco-admin.wrap .region-sc{background-position:0 -1108px}#loco-admin.wrap .region-st{background-position:0 -1120px}#loco-admin.wrap .region-ke{background-position:0 -1132px}#loco-admin.wrap .region-im{background-position:0 -1144px}#loco-admin.wrap .region-kr{background-position:0 -1161px}#loco-admin.wrap .region-gf{background-position:0 -1173px}#loco-admin.wrap .region-dj{background-position:0 -1185px}#loco-admin.wrap .region-gq{background-position:0 -1197px}#loco-admin.wrap .region-gp{background-position:0 -1209px}#loco-admin.wrap .region-dk{background-position:0 -1221px}#loco-admin.wrap .region-gg{background-position:0 -1233px}#loco-admin.wrap .region-il{background-position:0 -1250px}#loco-admin.wrap .region-pn{background-position:0 -1262px}#loco-admin.wrap .region-sb{background-position:0 -1274px}#loco-admin.wrap .region-py{background-position:0 -1286px}#loco-admin.wrap .region-ru{background-position:0 -1298px}#loco-admin.wrap .region-kw{background-position:0 -1310px}#loco-admin.wrap .region-do{background-position:0 -1322px}#loco-admin.wrap .region-gt{background-position:0 -1334px}#loco-admin.wrap .region-gb{background-position:0 -1346px}#loco-admin.wrap .region-gu{background-position:0 -1358px}#loco-admin.wrap .region-je{background-position:0 -1370px}#loco-admin.wrap .region-hm{background-position:0 -1387px}#loco-admin.wrap .region-sg{background-position:0 -1399px}#loco-admin.wrap .region-pk{background-position:0 -1411px}#loco-admin.wrap .region-sr{background-position:0 -1423px}#loco-admin.wrap .region-se{background-position:0 -1435px}#loco-admin.wrap .region-jp{background-position:0 -1447px}#loco-admin.wrap .region-gw{background-position:0 -1459px}#loco-admin.wrap .region-eh{background-position:0 -1471px}#loco-admin.wrap .region-dz{background-position:0 -1483px}#loco-admin.wrap .region-ga{background-position:0 -1495px}#loco-admin.wrap .region-fr{background-position:0 -1507px}#loco-admin.wrap .region-dm{background-position:0 -1519px}#loco-admin.wrap .region-hn{background-position:0 -1531px}#loco-admin.wrap .region-sd{background-position:0 -1543px}#loco-admin.wrap .region-rw{background-position:0 -1555px}#loco-admin.wrap .region-ph{background-position:0 -1567px}#loco-admin.wrap .region-ss{background-position:0 -1579px}#loco-admin.wrap .region-qa{background-position:0 -1596px}#loco-admin.wrap .region-pe{background-position:0 -1608px}#loco-admin.wrap .region-pr{background-position:0 -1620px}#loco-admin.wrap .region-si{background-position:0 -1632px}#loco-admin.wrap .region-ht{background-position:0 -1644px}#loco-admin.wrap .region-es{background-position:0 -1656px}#loco-admin.wrap .region-gl{background-position:0 -1668px}#loco-admin.wrap .region-gm{background-position:0 -1680px}#loco-admin.wrap .region-er{background-position:0 -1692px}#loco-admin.wrap .region-fi{background-position:0 -1704px}#loco-admin.wrap .region-ee{background-position:0 -1716px}#loco-admin.wrap .region-kn{background-position:0 -1728px}#loco-admin.wrap .region-hu{background-position:0 -1740px}#loco-admin.wrap .region-iq{background-position:0 -1752px}#loco-admin.wrap .region-ky{background-position:0 -1764px}#loco-admin.wrap .region-sh{background-position:0 -1776px}#loco-admin.wrap .region-ps{background-position:0 -1788px}#loco-admin.wrap .region-pf{background-position:0 -1800px}#loco-admin.wrap .region-sj{background-position:0 -1812px}#loco-admin.wrap .region-id{background-position:0 -1824px}#loco-admin.wrap .region-is{background-position:0 -1836px}#loco-admin.wrap .region-eg{background-position:0 -1848px}#loco-admin.wrap .region-fk{background-position:0 -1860px}#loco-admin.wrap .region-fj{background-position:0 -1872px}#loco-admin.wrap .region-gn{background-position:0 -1884px}#loco-admin.wrap .region-gy{background-position:0 -1896px}#loco-admin.wrap .region-ir{background-position:0 -1908px}#loco-admin.wrap .region-km{background-position:0 -1920px}#loco-admin.wrap .region-ie{background-position:0 -1932px}#loco-admin.wrap .region-kz{background-position:0 -1944px}#loco-admin.wrap .region-ro{background-position:0 -1956px}#loco-admin.wrap .region-sk{background-position:0 -1968px}#loco-admin.wrap .region-pg{background-position:0 -1980px}#loco-admin.wrap .region-pt{background-position:0 -1992px}#loco-admin.wrap .region-so{background-position:0 -2004px}#loco-admin.wrap .region-sx{background-position:0 -2016px}#loco-admin.wrap .region-hr{background-position:0 -2033px}#loco-admin.wrap .region-ki{background-position:0 -2045px}#loco-admin.wrap .region-jm{background-position:0 -2057px}#loco-admin.wrap .region-ec{background-position:0 -2069px}#loco-admin.wrap .region-et{background-position:0 -2081px}#loco-admin.wrap .region-fo{background-position:0 -2093px}#loco-admin.wrap .region-kh{background-position:0 -2105px}#loco-admin.wrap .region-sy{background-position:0 -2117px}#loco-admin.wrap .region-sn{background-position:0 -2129px}#loco-admin.wrap .region-pw{background-position:0 -2141px}#loco-admin.wrap .region-sl{background-position:0 -2153px}#loco-admin.wrap .region-fm{background-position:0 -2165px}#loco-admin.wrap .region-gi{background-position:0 -2177px}#loco-admin.wrap .region-de{background-position:0 -2189px}#loco-admin.wrap .region-gh{background-position:0 -2201px}#loco-admin.wrap .region-jo{background-position:0 -2213px}#loco-admin.wrap .region-it{background-position:0 -2225px}#loco-admin.wrap .region-pa{background-position:0 -2237px}#loco-admin.wrap .region-sz{background-position:0 -2249px}#loco-admin.wrap .region-sm{background-position:0 -2261px}#loco-admin.wrap .region-tn{background-position:0 -2273px}#loco-admin.wrap .region-ml{background-position:0 -2285px}#loco-admin.wrap .region-cg{background-position:0 -2297px}#loco-admin.wrap .region-ax{background-position:0 -2309px}#loco-admin.wrap .region-ao{background-position:0 -2321px}#loco-admin.wrap .region-bt{background-position:0 -2333px}#loco-admin.wrap .region-an{background-position:0 -2345px}#loco-admin.wrap .region-bb{background-position:0 -2357px}#loco-admin.wrap .region-cf{background-position:0 -2369px}#loco-admin.wrap .region-mm{background-position:0 -2381px}#loco-admin.wrap .region-li{background-position:0 -2393px}#loco-admin.wrap .region-na{background-position:0 -2405px}#loco-admin.wrap .region-mz{background-position:0 -2417px}#loco-admin.wrap .region-to{background-position:0 -2429px}#loco-admin.wrap .region-vg{background-position:0 -2441px}#loco-admin.wrap .region-ve{background-position:0 -2453px}#loco-admin.wrap .region-tz{background-position:0 -2465px}#loco-admin.wrap .region-tm{background-position:0 -2477px}#loco-admin.wrap .region-mx{background-position:0 -2489px}#loco-admin.wrap .region-nc{background-position:0 -2501px}#loco-admin.wrap .region-mo{background-position:0 -2513px}#loco-admin.wrap .region-lk{background-position:0 -2525px}#loco-admin.wrap .region-cd{background-position:0 -2537px}#loco-admin.wrap .region-al{background-position:0 -2549px}#loco-admin.wrap .region-bw{background-position:0 -2561px}#loco-admin.wrap .region-cs{background-position:0 -2573px}#loco-admin.wrap .region-cr{background-position:0 -2585px}#loco-admin.wrap .region-bv{background-position:0 -2597px}#loco-admin.wrap .region-am{background-position:0 -2609px}#loco-admin.wrap .region-az{background-position:0 -2621px}#loco-admin.wrap .region-ba{background-position:0 -2633px}#loco-admin.wrap .region-mn{background-position:0 -2645px}#loco-admin.wrap .region-nu{background-position:0 -2657px}#loco-admin.wrap .region-my{background-position:0 -2669px}#loco-admin.wrap .region-tl{background-position:0 -2681px}#loco-admin.wrap .region-ws{background-position:0 -2693px}#loco-admin.wrap .region-th{background-position:0 -2705px}#loco-admin.wrap .region-nf{background-position:0 -2717px}#loco-admin.wrap .region-ly{background-position:0 -2729px}#loco-admin.wrap .region-ai{background-position:0 -2741px}#loco-admin.wrap .region-br{background-position:0 -2753px}#loco-admin.wrap .region-cv{background-position:0 -2765px}#loco-admin.wrap .region-be{background-position:0 -2777px}#loco-admin.wrap .region-ca{background-position:0 -2789px}#loco-admin.wrap .region-bd{background-position:0 -2801px}#loco-admin.wrap .region-cw{background-position:0 -2813px}#loco-admin.wrap .region-bs{background-position:0 -2830px}#loco-admin.wrap .region-ng{background-position:0 -2842px}#loco-admin.wrap .region-mk{background-position:0 -2854px}#loco-admin.wrap .region-np{background-position:0 -2866px}#loco-admin.wrap .region-va{background-position:0 -2878px}#loco-admin.wrap .region-uz{background-position:0 -2890px}#loco-admin.wrap .region-um{background-position:0 -2902px}#loco-admin.wrap .region-tk{background-position:0 -2914px}#loco-admin.wrap .region-vc{background-position:0 -2926px}#loco-admin.wrap .region-zw{background-position:0 -2938px}#loco-admin.wrap .region-nr{background-position:0 -2950px}#loco-admin.wrap .region-ne{background-position:0 -2962px}#loco-admin.wrap .region-cu{background-position:0 -2974px}#loco-admin.wrap .region-bq{background-position:0 -2986px}#loco-admin.wrap .region-bf{background-position:0 -2998px}#loco-admin.wrap .region-bg{background-position:0 -3010px}#loco-admin.wrap .region-cc{background-position:0 -3022px}#loco-admin.wrap .region-mh{background-position:0 -3034px}#loco-admin.wrap .region-za{background-position:0 -3046px}#loco-admin.wrap .region-uy{background-position:0 -3058px}#loco-admin.wrap .region-wf{background-position:0 -3070px}#loco-admin.wrap .region-vu{background-position:0 -3082px}#loco-admin.wrap .region-tj{background-position:0 -3094px}#loco-admin.wrap .variant-scotland,#loco-admin.wrap .region-gb.lang-gd{background-position:0 -3106px}#loco-admin.wrap .variant-valencia,#loco-admin.wrap .region-es.variant-valencia{background-position:0 -3118px}#loco-admin.wrap .variant-wales,#loco-admin.wrap .region-gb.lang-cy{background-position:0 -3130px}#loco-admin.wrap .x-eu{background-position:0 -3142px}#loco-admin.wrap span.lang code{display:none}#loco-admin.wrap .icon-notag:before{content:""}#loco-admin.wrap .icon-magnify:before{content:"🔍"}#loco-admin.wrap .icon-python:before{content:"🐍"}#loco-admin.wrap .icon-unicode:before{content:"u"}#loco-admin.wrap .icon-json:before{content:"{"}#loco-admin.wrap .icon-bullist:before{content:""}#loco-admin.wrap .icon-numlist:before{content:""}#loco-admin.wrap .icon-indent:before{content:""}#loco-admin.wrap .icon-outdent:before{content:""}#loco-admin.wrap .icon-link:before{content:""}#loco-admin.wrap .icon-unlink:before{content:""}#loco-admin.wrap .icon-bold:before{content:"B"}#loco-admin.wrap .icon-italic:before{content:"I"}#loco-admin.wrap .icon-translate:before{content:""}#loco-admin.wrap .icon-proj:before{content:""}#loco-admin.wrap .icon-plural:before{content:"᛬"}#loco-admin.wrap .icon-max:before,#loco-admin.wrap .icon-full-screen:before{content:""}#loco-admin.wrap .icon-min:before{content:""}#loco-admin.wrap .icon-sort:before{content:""}#loco-admin.wrap .icon-ok:before,#loco-admin.wrap .notice-success>.has-icon:before,#loco-admin.wrap .notice-success p>strong.has-icon:before{content:"✓"}#loco-admin.wrap .icon-ok-empty:before{content:"🗌"}#loco-admin.wrap .icon-checkbox-checked:before,#loco-admin.wrap .selector.multi li.checked .icon-checkbox:before{content:"☑"}#loco-admin.wrap .icon-checkbox-unchecked:before{content:"☐"}#loco-admin.wrap .icon-checkbox-partial:before{content:"☉"}#loco-admin.wrap .icon-radio-checked:before{content:"⚫"}#loco-admin.wrap .icon-radio-unchecked:before{content:"⚪"}#loco-admin.wrap .icon-ext:before{content:"⬈"}#loco-admin.wrap .icon-share:before{content:""}#loco-admin.wrap .icon-star:before{content:""}#loco-admin.wrap .icon-user:before{content:""}#loco-admin.wrap .icon-remove:before,#loco-admin.wrap a.icon.close:before{content:"×"}#loco-admin.wrap .icon-cog:before{content:""}#loco-admin.wrap .icon-trash:before{content:""}#loco-admin.wrap .icon-time:before,#loco-admin.wrap .icon-history:before{content:""}#loco-admin.wrap .icon-download:before{content:""}#loco-admin.wrap .icon-revert:before{content:""}#loco-admin.wrap .icon-sync:before{content:""}#loco-admin.wrap .icon-lock:before,#loco-admin.wrap .notice-locked>.has-icon:before,#loco-admin.wrap .notice-locked p>strong.has-icon:before{content:""}#loco-admin.wrap .icon-flag:before{content:""}#loco-admin.wrap .icon-tag:before{content:""}#loco-admin.wrap .icon-tags:before{content:""}#loco-admin.wrap .icon-print:before{content:""}#loco-admin.wrap .icon-camera:before{content:""}#loco-admin.wrap .icon-pencil:before{content:""}#loco-admin.wrap .icon-add:before{content:""}#loco-admin.wrap .icon-del:before{content:""}#loco-admin.wrap .icon-clear:before,#loco-admin.wrap a.icon.clear:before{content:""}#loco-admin.wrap .icon-ok-sign:before{content:"✔"}#loco-admin.wrap .icon-help:before{content:"?"}#loco-admin.wrap .icon-info:before,#loco-admin.wrap .notice-info>.has-icon:before,#loco-admin.wrap .notice-info p>strong.has-icon:before{content:"ℹ"}#loco-admin.wrap .icon-cancel:before{content:""}#loco-admin.wrap .icon-warn:before,#loco-admin.wrap .notice-error>.has-icon:before,#loco-admin.wrap .notice-error p>strong.has-icon:before,#loco-admin.wrap .notice-warning>.has-icon:before,#loco-admin.wrap .notice-warning p>strong.has-icon:before{content:""}#loco-admin.wrap .icon-comment:before{content:""}#loco-admin.wrap .icon-bar-chart:before{content:""}#loco-admin.wrap .icon-key:before{content:""}#loco-admin.wrap .icon-cogs:before{content:""}#loco-admin.wrap .icon-comments:before{content:""}#loco-admin.wrap .icon-signout:before{content:""}#loco-admin.wrap .icon-signin:before{content:""}#loco-admin.wrap .icon-upload:before{content:""}#loco-admin.wrap .icon-twitter:before{content:"🐦"}#loco-admin.wrap .icon-facebook:before{content:""}#loco-admin.wrap .icon-github:before{content:""}#loco-admin.wrap .icon-feed:before{content:""}#loco-admin.wrap .icon-globe:before{content:""}#loco-admin.wrap .icon-wrench:before,#loco-admin.wrap .notice-debug>.has-icon:before,#loco-admin.wrap .notice-debug p>strong.has-icon:before{content:""}#loco-admin.wrap .icon-group:before{content:""}#loco-admin.wrap .icon-cloud:before{content:""}#loco-admin.wrap .icon-copy:before{content:""}#loco-admin.wrap .icon-save:before{content:""}#loco-admin.wrap .icon-menu:before{content:""}#loco-admin.wrap .icon-table:before{content:""}#loco-admin.wrap .icon-caret-down:before{content:"▼"}#loco-admin.wrap .icon-caret-up:before{content:"▲"}#loco-admin.wrap .icon-caret-right:before{content:"▶"}#loco-admin.wrap .icon-mail:before{content:""}#loco-admin.wrap .icon-cloud-upload:before{content:""}#loco-admin.wrap .icon-file:before{content:""}#loco-admin.wrap .icon-circle-white:before{content:"⚬"}#loco-admin.wrap .icon-circle-black:before{content:"●"}#loco-admin.wrap .icon-eraser:before{content:""}#loco-admin.wrap .icon-unlock:before{content:""}#loco-admin.wrap .icon-apple:before{content:""}#loco-admin.wrap .icon-android:before{content:""}#loco-admin.wrap .icon-robot:before{content:"🤖"}#loco-admin.wrap .icon-back:before{content:"⬅"}#loco-admin.wrap .icon-next:before{content:"➔"}#loco-admin.wrap .icon-arrow-up:before{content:""}#loco-admin.wrap .icon-ccard:before{content:""}#loco-admin.wrap .icon-caret-left:before{content:"◀"}#loco-admin.wrap .icon-pro:before{content:"⚡"}#loco-admin.wrap .icon-bell:before{content:""}#loco-admin.wrap .icon-code:before{content:""}#loco-admin.wrap .icon-privacy:before{content:"🛡"}#loco-admin.wrap .icon-hellip:before{content:"…"}#loco-admin.wrap .icon-vellip:before{content:"⁞"}#loco-admin.wrap .icon-collapse:before{content:""}#loco-admin.wrap .icon-expand:before{content:""}#loco-admin.wrap .icon-wordpress:before{content:""}#loco-admin.wrap .icon-database:before{content:""}#loco-admin.wrap .icon-restore:before{content:""}#loco-admin.wrap .icon-pilcrow:before{content:"¶"}#loco-admin.wrap .icon,#loco-admin.wrap .has-icon:before,#loco-admin.wrap .has-dashicon:before{speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#loco-admin.wrap .icon,#loco-admin.wrap .has-icon:before{font-family:"loco"}#loco-admin.wrap .has-dashicon:before{font-family:"dashicons";font-size:1.4em}#loco-admin.wrap .has-icon:before,#loco-admin.wrap .has-dashicon:before,#loco-admin.wrap .has-icon>span{display:inline-block;vertical-align:middle}#loco-admin.wrap .only-icon{text-align:center}#loco-admin.wrap .only-icon:before{text-align:center;padding:0}#loco-admin.wrap .only-icon span{display:none}#loco-admin.wrap a,#loco-admin.wrap .wp-core-ui .button-link{text-decoration:none}#loco-admin.wrap h3:hover>a.loco-anchor{color:#ccc}#loco-admin.wrap h3:hover>a.loco-anchor:before{content:"¶"}#loco-admin.wrap .has-lang>span{display:inline-block;vertical-align:middle}#loco-admin.wrap a.has-lang:hover>span:last-child{text-decoration:underline}#loco-admin.wrap h1 ul,#loco-admin.wrap h1 li{margin:0;padding:0}#loco-admin.wrap h1 li{display:inline-block}#loco-admin.wrap h1 li:after{content:"/";color:#999;text-shadow:none;display:inline-block}#loco-admin.wrap h1 li:last-child:after{content:""}#loco-admin.wrap h1 li:last-child a{color:inherit;pointer-events:none;cursor:auto}#loco-admin.wrap h2 span{color:#999;font-weight:normal}#loco-admin.wrap h2 .loco-meta,#loco-admin.wrap h3 .loco-meta{color:inherit;font-size:14px;font-weight:normal;vertical-align:middle}#loco-admin.wrap .wp-list-table td:first-child .icon{width:16px;display:inline-block;text-align:center}#loco-admin.wrap .wp-list-table td{white-space:nowrap}#loco-admin.wrap .wp-list-table td>a,#loco-admin.wrap .wp-list-table td>time{display:inline-block;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-o-text-overflow:ellipsis;-ms-text-overflow:ellipsis}#loco-admin.wrap .wp-list-table th.loco-sort{cursor:pointer}#loco-admin.wrap .wp-list-table th.loco-sort:hover{color:#000}#loco-admin.wrap .wp-list-table th.loco-sort.loco-asc:after,#loco-admin.wrap .wp-list-table th.loco-sort.loco-desc:after{padding:0 0 0 4px;color:#999}#loco-admin.wrap .wp-list-table th.loco-sort.loco-desc:after{content:"▼"}#loco-admin.wrap .wp-list-table th.loco-sort.loco-asc:after{content:"▲"}#loco-admin.wrap .wp-list-table td.has-row-actions{overflow:visible}#loco-admin.wrap form.loco-filter{display:block;margin-bottom:5px}#loco-admin.wrap form.loco-filter .icon-filter{color:#999}#loco-admin.wrap nav.above-list-table{margin-bottom:1em}#loco-admin.wrap nav.above-list-table a{display:inline-block;margin-right:1em}#loco-admin.wrap .wp-core-ui button.inverted,#loco-admin.wrap .wp-core-ui button.inverted:hover,#loco-admin.wrap .po-fuzzy button.icon-cloud{background:-moz-linear-gradient(top, #cccccc 0%, #e0e0e0 30%, #fefefe 100%);background:-webkit-linear-gradient(top, #cccccc 0%, #e0e0e0 30%, #fefefe 100%);background:linear-gradient(to bottom, #cccccc 0%, #e0e0e0 30%, #fefefe 100%);-webkit-box-shadow:0 1px 0 #fff;-moz-box-shadow:0 1px 0 #fff;box-shadow:0 1px 0 #fff;border-color:gray}#loco-admin.wrap .wp-core-ui button:active,#loco-admin.wrap .wp-core-ui button.inverted:active{border-color:#5b9dd9}#loco-admin.wrap .loco-clearable{display:inline-block;vertical-align:middle;position:relative}#loco-admin.wrap .loco-clearable a.clear,#loco-admin.wrap .auto-comp-wrap a.clear{top:0;right:0;outline:none;margin:0;border:solid 1px transparent;padding:5px 5px;position:absolute;font-size:1em;line-height:normal}#loco-admin.wrap .loco-clearable a.clear:before,#loco-admin.wrap .auto-comp-wrap a.clear:before{vertical-align:middle;padding:0;color:#999}#loco-admin.wrap .loco-clearable a.clear:hover:before,#loco-admin.wrap .auto-comp-wrap a.clear:hover:before{color:#333}#loco-admin.wrap .loco-clearable a.clear span,#loco-admin.wrap .auto-comp-wrap a.clear span{display:none}#loco-admin.wrap .loco-clearable ::-ms-clear,#loco-admin.wrap .auto-comp-wrap ::-ms-clear{display:none}#loco-admin.wrap div.progress{color:#000;background:transparent !important}#loco-admin.wrap div.progress *{height:100%;overflow:hidden;white-space:nowrap}#loco-admin.wrap div.progress .t{background-color:#ddd;border:1px solid #ccc}#loco-admin.wrap div.progress .t .bar{float:left;clear:none;background-color:#3db63d}#loco-admin.wrap div.progress .t .bar.f{background-color:#bd2c00}#loco-admin.wrap div.progress .l{display:block}#loco-admin.wrap td div.progress .t{border:none}#loco-admin.wrap td div.progress .l{display:none}#loco-admin.wrap code.path{color:#333;margin:0;padding:0;display:inline;background:transparent}#loco-admin.wrap .loco-danger{color:#d54e21}#loco-admin.wrap .notice,#loco-admin.wrap .panel{background:#fff;position:relative;margin:1em 0;padding:1px 12px}#loco-admin.wrap .notice-generic{border-color:#ddd}#loco-admin.wrap .notice-success>.has-icon,#loco-admin.wrap .notice-success p>strong.has-icon{color:#000}#loco-admin.wrap .notice-warning{border-color:orange}#loco-admin.wrap .notice-error{border-color:#dc3232}#loco-admin.wrap .notice-debug{border-color:#00a0d2}#loco-admin.wrap .notice-danger{border-color:#dc3232}#loco-admin.wrap .notice-locked{border-color:orange}#loco-admin.wrap .notice>.has-icon:before,#loco-admin.wrap .notice p>strong.has-icon:before{padding-right:6px}#loco-admin.wrap .notice>p>a.button.has-icon:before{width:1.2em}#loco-admin.wrap .notice>p>em{color:#d54e21;font-style:normal}#loco-admin.wrap .notice>p>em a{color:inherit}#loco-admin.wrap .notice>p a:hover,#loco-admin.wrap .notice>nav a:hover{text-decoration:underline}#loco-admin.wrap .notice>p a.button,#loco-admin.wrap .notice>nav a.button{text-decoration:inherit}#loco-admin.wrap .notice.has-nav{display:flex;flex-direction:row}#loco-admin.wrap .notice.has-nav p,#loco-admin.wrap .notice.has-nav nav{line-height:22px;flex-grow:1}#loco-admin.wrap .notice.has-nav nav{text-align:right;padding:2px;margin:.5em 0}#loco-admin.wrap .notice.has-nav.is-dismissible{padding-right:38px}#loco-admin.wrap .notice.has-nav a{white-space:nowrap}#loco-admin.wrap .notice.has-nav nav>span{color:#666}#loco-admin.wrap .notice>h3>span{display:inline-block;vertical-align:middle}#loco-admin.wrap ul.problems li{font-style:italic}#loco-admin.wrap label{position:relative}#loco-admin.wrap label.for-disabled,#loco-admin.wrap label.for-disabled>input{cursor:default !important}#loco-admin.wrap input.regular-text,#loco-admin.wrap textarea.regular-text{width:25em}#loco-admin.wrap .button-link{padding:0 10px 1px}#loco-admin.wrap .button-danger{background:#ba0000;border-color:#900 #600 #600;-webkit-box-shadow:0 1px 0 #600;-moz-box-shadow:0 1px 0 #600;box-shadow:0 1px 0 #600;color:#fff;text-shadow:0 -1px 1px #600,1px 0 1px #600,0 1px 1px #600,-1px 0 1px #600}#loco-admin.wrap .button-success{background:#00b500;border-color:#090 #2e892e #2e892e;-webkit-box-shadow:0 1px 0 #2e892e;-moz-box-shadow:0 1px 0 #2e892e;box-shadow:0 1px 0 #2e892e;color:#fff;text-shadow:0 -1px 1px #2e892e,1px 0 1px #2e892e,0 1px 1px #2e892e,-1px 0 1px #2e892e}#loco-admin.wrap .button-success:hover{background:#3db63d}#loco-admin.wrap .button-danger[disabled],#loco-admin.wrap .button-success[disabled]{text-shadow:none !important}#loco-admin.wrap form button.loco-loading.button-large{padding-left:0}#loco-admin.wrap form button.loco-loading.button-large:before{width:16px;height:16px;margin:0 4px;content:" ";font-size:16px;line-height:1;display:inline-block;vertical-align:sub}#loco-admin.wrap ::placeholder{color:#ccc}#loco-admin.wrap ::-webkit-input-placeholder{color:#ccc}#loco-admin.wrap :-moz-placeholder{color:#ccc;opacity:1}#loco-admin.wrap ::-moz-placeholder{color:#ccc;opacity:1}#loco-admin.wrap :-ms-input-placeholder{color:#ccc}#loco-admin.wrap .ielt10 .placeheld{color:#ccc}#loco-admin.wrap a.has-raquo:after{content:" »"}#loco-admin.wrap a.has-laquo:before{content:"« "}#loco-admin.wrap span.inline-spinner{display:inline-block;min-width:16px;min-height:16px;background:transparent url(../img/spin-modal.gif?v=2.5.5) 0 0 no-repeat}.js #wpbody-content>.notice{display:none}.js #wpbody-content>.notice.inline{display:block}.js #loco-admin.wrap .jshide,.no-js #loco-admin.wrap .jsonly{display:none !important}#loco-admin.wrap .invis{visibility:hidden}.form-table tr td{vertical-align:top}.form-table tr.compact td{padding-top:0}.form-table tr th a.icon-help{display:none}.loco-modal{min-width:50%;min-height:100px}.loco-modal-wide{min-width:90% !important}.loco-modal-no-close .ui-dialog-titlebar-close{display:none}.loco-modal .ui-dialog-titlebar-close{overflow:hidden}.loco-modal.request-filesystem-credentials-dialog{top:15% !important;max-height:85% !important}.loco-modal.request-filesystem-credentials-dialog>.ui-dialog-content{background:inherit}.loco-modal.request-filesystem-credentials-dialog .ftp-password>label>em:last-child{display:none}.ui-dialog-content>div.loco-loading{height:100%;background:transparent url(../img/spin-modal.gif?v=2.5.5) center 20px no-repeat}#loco-po-ref ol li{color:#aaa;margin:0;white-space:pre;padding:0 0 0 1em;font:normal 12px/17px Consolas,Monaco,monospace;background:transparent;border-left:1px solid #eee}#loco-po-ref ol li code{margin:0;padding:0;display:inline;background:inherit}#loco-po-ref ol li.highlighted{color:#666;background-color:#f8eec7}#loco-po-ref ol li.highlighted code.T_CONSTANT_ENCAPSED_STRING{color:#c931c7}#loco-credit>*{vertical-align:middle}#loco-credit>a{display:inline-block;position:relative;overflow:hidden;background:transparent url(../img/logo-foot.gif?v=2.5.5) 0 0 no-repeat;height:30px;width:100px;text-indent:200px;-webkit-transition-duration:0s;transition-duration:0s}#loco-credit>a:hover{background-position:0 -35px}#loco-content{position:relative}#footer-upgrade span:before{color:#ccc;content:" | ";display:inline;padding-left:.5em;padding-right:.5em}#footer-upgrade span:first-child:before{content:"";display:none}.loco-clearfix:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}dl.debug dt{font-weight:bold}dl.debug dt,dl.debug dd{white-space:pre}.wrap #loco-editor .is-table .wg-tr:nth-child(even){background-color:rgba(0,115,170,.05)}.wrap #loco-editor .wg-split-x>nav.wg-tabs>a.active,.wrap #loco-editor .is-table .wg-cols>div>div.selected{background-color:#0073aa;foo:#0073aa}.wrap #loco-editor .is-editable>.wg-content>textarea:focus,.wrap #loco-editor .is-editable>.wg-content.has-focus .ace_scroller,.wrap #loco-editor .is-editable>.wg-content.has-focus .mce-content-body{border-color:#5b9dd9;-webkit-box-shadow:inset 0 0 .6em rgba(30,140,190,.8);-moz-box-shadow:inset 0 0 .6em rgba(30,140,190,.8);box-shadow:inset 0 0 .6em rgba(30,140,190,.8)}.wp-core-ui .button-primary.loco-loading[disabled]{color:#66c6e4 !important;background:#008ec2 !important;border-color:#008ec2 !important}.wp-core-ui .button-primary.loco-loading[disabled]:before{background:transparent url(../img/skins/fresh/spin-primary-button.gif?v=2.5.5) 0 0 no-repeat !important}
1
+ ._ajax_loader_f2{background-image:url(../img/ajax-loader-f2.gif?v=2.5.6);background-repeat:no-repeat;min-height:16px}._ajax_loader_f2x4{background:transparent url(../img/ajax-loader-f2-x4.gif?v=2.5.6) 0 0 no-repeat;min-height:75px}._ajax_loader_cc{background-image:url(../img/ajax-loader-cc.gif?v=2.5.6);background-repeat:no-repeat;min-height:16px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1),only screen and (min-device-pixel-ratio: 2),only screen and (min-resolution: 192dpi),only screen and (min-resolution: 2dppx){._ajax_loader_f2{background-image:url(../img/ajax-loader-f2-x2.gif?v=2.5.6);background-size:16px}._ajax_loader_cc{background-image:url(../img/ajax-loader-cc-x2.gif?v=2.5.6);background-size:16px}}._green_glow_inner{-webkit-box-shadow:inset 0 0 10px 0 #3db63d;-moz-box-shadow:inset 0 0 10px 0 #3db63d;box-shadow:inset 0 0 10px 0 #3db63d}._green_glow_outer{-webkit-box-shadow:0 0 .5em 0 #3db63d;-moz-box-shadow:0 0 .5em 0 #3db63d;box-shadow:0 0 .5em 0 #3db63d}.loco-font,#loco-admin.wrap .wp-list-table th.loco-sort.loco-asc:after,#loco-admin.wrap .wp-list-table th.loco-sort.loco-desc:after,#loco-admin.wrap .icon,#loco-admin.wrap .has-icon:before{font-family:"loco";speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@font-face{font-family:"loco";src:url("../font/loco.eot?v=2.5.6");src:url("../font/loco.eot?v=2.5.6?#iefix") format("embedded-opentype"),url("../font/loco.woff?v=2.5.6") format("woff"),url("../font/loco.ttf?v=2.5.6") format("truetype"),url("../font/loco.svg?v=2.5.6#loco") format("svg");font-weight:normal;font-style:normal}.tipsy{font-size:11px;position:absolute;padding:5px;z-index:500001;opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.tipsy.in{opacity:1}.tipsy-inner{background-color:#000;color:#fff;white-space:nowrap;padding:6px 8px;line-height:1.3em;text-align:center;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;-webkit-font-smoothing:subpixel-antialiased}.tipsy-arrow{position:absolute;width:0;height:0;line-height:0;border:5px dashed #000}.tipsy-n .tipsy-arrow{top:0px;left:50%;margin-left:-5px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.tipsy-nw .tipsy-arrow{top:0;left:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.tipsy-ne .tipsy-arrow{top:0;right:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.tipsy-s .tipsy-arrow{bottom:0;left:50%;margin-left:-5px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.tipsy-sw .tipsy-arrow{bottom:0;left:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.tipsy-se .tipsy-arrow{bottom:0;right:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.tipsy-e .tipsy-arrow{right:0;top:50%;margin-top:-5px;border-left-style:solid;border-right:none;border-top-color:transparent;border-bottom-color:transparent}.tipsy-w .tipsy-arrow{left:0;top:50%;margin-top:-5px;border-right-style:solid;border-left:none;border-top-color:transparent;border-bottom-color:transparent}#loco-admin.wrap .selector li,#loco-admin.wrap .selector .handle,#loco-admin.wrap .selectoradd a,#loco-admin.wrap .selectorsep:before,#loco-admin.wrap .selectorsep span{padding:.3em .75em}#loco-admin.wrap .selector{text-align:left;display:inline-block;white-space:nowrap}#loco-admin.wrap .selectoradd a,#loco-admin.wrap .selector .handle{cursor:default;display:block;position:relative;border-top:solid 1px #fff;border-right:solid 1px #ddd;border-bottom:solid 1px #ddd;border-left:solid 1px #fff;color:#666;height:1.3em;overflow:hidden;white-space:normal}#loco-admin.wrap .selectorsep{display:inline-block;border:solid 1px transparent}#loco-admin.wrap .selectorsep:before{display:block;position:relative;color:#999;height:1.3em;overflow:hidden}#loco-admin.wrap .selectorsep>*{display:block;line-height:1em;color:#666;height:1.3em;overflow:hidden}#loco-admin.wrap .selector .handle{outline:none;white-space:nowrap;padding-right:2.3em;max-width:250px;text-overflow:ellipsis}#loco-admin.wrap .selector .handle .prefix{padding-right:.6ex}#loco-admin.wrap .selector .handle:after{font-family:loco;font-size:1.3em;color:#ccc;display:block;position:absolute;top:.25em;right:.6em;content:"▼"}#loco-admin.wrap .selector .handle:focus:after,#loco-admin.wrap .selector .handle:hover:after{color:#666}#loco-admin.wrap .selector.no-caret .handle{padding-right:.75em}#loco-admin.wrap .selector.no-caret .handle:after{display:none}#loco-admin.wrap .selector.no-title .handle{padding-left:.5em;padding-right:.5em}#loco-admin.wrap .selector.no-title .handle .label{display:none}#loco-admin.wrap .selector.no-title .handle .icon{margin-right:0px}#loco-admin.wrap .selector.dummy .handle{border-color:transparent}#loco-admin.wrap .selector.dummy .handle:after{display:none}#loco-admin.wrap .selectoradd{position:relative}#loco-admin.wrap .selectoradd>*{display:block;float:left;clear:none}#loco-admin.wrap .selectoradd>a.has-icon{width:1.3em}#loco-admin.wrap .selectoradd>a.has-icon:before{color:#999;display:inline;padding-left:0;padding-right:0;line-height:1.4em}#loco-admin.wrap .selectoradd>a.has-icon:hover:after{color:#2e892e}#loco-admin.wrap .selectorsep{display:inline-block}#loco-admin.wrap .selectorsep span{color:#666;height:1.3em}#loco-admin.wrap .selector ul{padding:0}#loco-admin.wrap .selector ul,#loco-admin.wrap .selector li{display:block;position:relative;cursor:default;margin:0}#loco-admin.wrap .selector ul{z-index:5;position:absolute;left:0;top:0;background:#f5f5f5;box-shadow:0 10px 5px rgba(0,0,0,.2);border:solid 1px #ccc;overflow:auto}#loco-admin.wrap .selector.up ul{margin-top:0}#loco-admin.wrap .selector.multi li input{display:none}#loco-admin.wrap .selector.multi li.checked{background:#e5e5e5}#loco-admin.wrap .selector li.active{background:#e5e5e5 !important}#loco-admin.wrap .selector li.over{background:#ccc !important;color:#fff;text-shadow:1px 1px #aaa}#loco-admin.wrap .selector li.over .label{color:#fff}#loco-admin.wrap .selector .label{font:inherit;color:inherit}#loco-admin.wrap .selector .icon{display:inline-block;min-width:1.2em;text-align:center;font-size:14px}#loco-admin.wrap .selector .icon.no-icon{display:none}#loco-admin.wrap .selector .icon:before{color:#666}#loco-admin.wrap .selector .avtr{width:18px;height:18px;background-size:18px;background-repeat:no-repeat}#loco-admin.wrap .selector .label{line-height:1}#loco-admin.wrap .selector .icon,#loco-admin.wrap .selector .icon-16{vertical-align:bottom}#loco-admin.wrap .selector .icon,#loco-admin.wrap .selector .lang,#loco-admin.wrap .selector .icon-16{margin-right:5px}#loco-admin.wrap .selector .region,#loco-admin.wrap .selector .variant-wales,#loco-admin.wrap .selector .region-gb.lang-cy,#loco-admin.wrap .selector .variant-scotland,#loco-admin.wrap .selector .region-gb.lang-gd,#loco-admin.wrap .selector .variant-valencia,#loco-admin.wrap .selector .region-es.variant-valencia,#loco-admin.wrap .selector .lang-ca,#loco-admin.wrap .selector .region-es.lang-ca,#loco-admin.wrap .selector .lang-eo,#loco-admin.wrap .selector .lang-eu{margin-left:2px;margin-right:7px}#loco-admin.wrap .selector.ticked .icon.no-icon{font-size:12px;display:inline-block}#loco-admin.wrap .selector.ticked .active .icon.no-icon:before{content:"✓"}#loco-admin.wrap .selectoradd a:hover,#loco-admin.wrap .selector a.handle:focus,#loco-admin.wrap .selector a.handle:hover{color:#000;border-color:#999}#loco-admin.wrap .selector.active .handle{border-color:#999;background-color:#eee;color:#999}#loco-admin.wrap .selector.active .handle:after{color:#999;content:"▲"}#loco-admin.wrap .selector.disabled{cursor:default;cursor:no-drop;cursor:not-allowed}#loco-admin.wrap .selector.disabled .handle{pointer-events:none;border-top:solid 1px #fff;border-right:solid 1px #ddd;border-bottom:solid 1px #ddd;border-left:solid 1px #fff;color:#999;padding-right:1em}#loco-admin.wrap .selector.disabled .handle:after{display:none}#loco-admin.wrap .selector.disabled .handle span.icon{color:#999 !important}#loco-admin.wrap .selector li.disabled,#loco-admin.wrap .selector li.disabled.over{color:#aaa;text-shadow:1px 1px #fff;pointer-events:none}#loco-admin.wrap .selector li.disabled *{cursor:text}#loco-admin.wrap .selector li.disabled .icon:before{color:#aaa}#loco-admin.wrap .selector li.disabled .flag,#loco-admin.wrap .selector li.disabled .icon-16{opacity:.4}#loco-admin.wrap .selector.lefty ul{left:auto;right:0}#loco-admin.wrap .selector.lefty ul .icon,#loco-admin.wrap .selector.lefty ul .icon-32{display:block;float:right;clear:none}#loco-admin.wrap .selector.lefty ul .label{padding-right:32px;padding-left:0}#loco-admin.wrap .selector ul>form{margin:0;display:block}#loco-admin.wrap .selector ul>form input{margin:0;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0}#loco-admin.wrap .selector ul>form input:focus{-webkit-box-shadow:inset 0 0 5px 0 #3db63d;-moz-box-shadow:inset 0 0 5px 0 #3db63d;box-shadow:inset 0 0 5px 0 #3db63d}#loco-admin.wrap .selector ul>form input.error{border-color:#c00;-webkit-box-shadow:inset 0 0 5px 0 rgba(153,0,0,.5);-moz-box-shadow:inset 0 0 5px 0 rgba(153,0,0,.5);box-shadow:inset 0 0 5px 0 rgba(153,0,0,.5)}#loco-admin.wrap .selector ul>form a.clear{margin:0;border:none}#loco-admin.wrap .selector ul>form ::placeholder{color:gray;font-size:16px;font-family:"loco";text-align:right;display:block}#loco-admin.wrap .selector ul>form ::-webkit-input-placeholder{color:gray;font-size:16px;font-family:"loco";text-align:right;display:block}#loco-admin.wrap .selector ul>form :-moz-placeholder{color:gray;font-size:16px;font-family:"loco";text-align:right;display:block;opacity:1}#loco-admin.wrap .selector ul>form ::-moz-placeholder{color:gray;font-size:16px;font-family:"loco";text-align:right;display:block;opacity:1}#loco-admin.wrap .selector ul>form :-ms-input-placeholder{color:gray;font-size:16px;font-family:"loco";text-align:right;display:block}#loco-admin.wrap .selector ul>form .ielt10 .placeheld{color:gray;font-size:16px;font-family:"loco";text-align:right;display:block}#loco-admin.wrap div.auto-comp-wrap{width:100%}#loco-admin.wrap div.auto-comp-wrap input{display:inline-block}#loco-admin.wrap div.auto-comp-wrap.loading input{background:transparent url(../img/ajax-loader.gif?v=2.5.6) right 2px no-repeat}#loco-admin.wrap div.auto-comp-drop{color:#333;background:#fff;border-top:none;position:absolute;width:auto;top:0;left:0;z-index:99;-webkit-box-shadow:0 5px 5px rgba(0,0,0,.4);-moz-box-shadow:0 5px 5px rgba(0,0,0,.4);box-shadow:0 5px 5px rgba(0,0,0,.4)}#loco-admin.wrap div.auto-comp-result{padding:5px 10px;cursor:pointer;background:#f0f0f0;border-top:solid 1px #fff;border-bottom:solid 1px #ddd;white-space:nowrap}#loco-admin.wrap div.auto-comp-result:first-child{border-top:solid 1px #ddd}#loco-admin.wrap div.auto-comp-result>*{display:inline-block;vertical-align:middle;line-height:normal}#loco-admin.wrap div.auto-comp-result .icon:before{padding-right:5px}#loco-admin.wrap div.auto-comp-result:hover{background:#a8a8a8;color:#fff;border-top-color:#a8a8a8;border-bottom-color:#999}#loco-admin.wrap div.auto-comp-result.selected{background:#666 !important;color:#fff;border-top-color:#666;border-bottom-color:#666}#loco-admin.wrap div.auto-comp-result .lang,#loco-admin.wrap div.auto-comp-result .region,#loco-admin.wrap div.auto-comp-result .variant-wales,#loco-admin.wrap div.auto-comp-result .region-gb.lang-cy,#loco-admin.wrap div.auto-comp-result .variant-scotland,#loco-admin.wrap div.auto-comp-result .region-gb.lang-gd,#loco-admin.wrap div.auto-comp-result .variant-valencia,#loco-admin.wrap div.auto-comp-result .region-es.variant-valencia,#loco-admin.wrap div.auto-comp-result .lang-ca,#loco-admin.wrap div.auto-comp-result .region-es.lang-ca,#loco-admin.wrap div.auto-comp-result .lang-eo,#loco-admin.wrap div.auto-comp-result .lang-eu,#loco-admin.wrap div.auto-comp-result .avtr{margin-right:5px}#loco-admin.wrap div.auto-comp-wrap.error a.icon.clear:before{color:#c00;opacity:1}#loco-admin.wrap div.auto-comp-wrap.error input[type=text]{border-color:#c00;color:#c00}#loco-admin.wrap div.auto-comp-wrap.error input[type=text]:focus{-webkit-box-shadow:0 0 .5em 0 rgba(153,0,0,.5);-moz-box-shadow:0 0 .5em 0 rgba(153,0,0,.5);box-shadow:0 0 .5em 0 rgba(153,0,0,.5)}#loco-admin.wrap ._ajax_loader_f2{background-image:url(../img/ajax-loader-f2.gif?v=2.5.6);background-repeat:no-repeat;min-height:16px}#loco-admin.wrap ._ajax_loader_f2x4{background:transparent url(../img/ajax-loader-f2-x4.gif?v=2.5.6) 0 0 no-repeat;min-height:75px}#loco-admin.wrap ._ajax_loader_cc{background-image:url(../img/ajax-loader-cc.gif?v=2.5.6);background-repeat:no-repeat;min-height:16px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1),only screen and (min-device-pixel-ratio: 2),only screen and (min-resolution: 192dpi),only screen and (min-resolution: 2dppx){#loco-admin.wrap ._ajax_loader_f2{background-image:url(../img/ajax-loader-f2-x2.gif?v=2.5.6);background-size:16px}#loco-admin.wrap ._ajax_loader_cc{background-image:url(../img/ajax-loader-cc-x2.gif?v=2.5.6);background-size:16px}}#loco-admin.wrap ._green_glow_inner{-webkit-box-shadow:inset 0 0 10px 0 #3db63d;-moz-box-shadow:inset 0 0 10px 0 #3db63d;box-shadow:inset 0 0 10px 0 #3db63d}#loco-admin.wrap ._green_glow_outer{-webkit-box-shadow:0 0 .5em 0 #3db63d;-moz-box-shadow:0 0 .5em 0 #3db63d;box-shadow:0 0 .5em 0 #3db63d}#loco-admin.wrap .loco-font,#loco-admin.wrap .wp-list-table th.loco-sort.loco-asc:after,#loco-admin.wrap .wp-list-table th.loco-sort.loco-desc:after,#loco-admin.wrap .icon,#loco-admin.wrap .has-icon:before{font-family:"loco";speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#loco-admin.wrap .has-icon:before{display:inline-block;padding-right:.3em}#loco-admin.wrap a.icon-help{cursor:help}#loco-admin.wrap a.icon-help span{display:none}#loco-admin.wrap .icon-notag:before{content:""}#loco-admin.wrap .icon-magnify:before{content:"🔍"}#loco-admin.wrap .icon-python:before{content:"🐍"}#loco-admin.wrap .icon-unicode:before{content:"u"}#loco-admin.wrap .icon-json:before{content:"{"}#loco-admin.wrap .icon-bullist:before{content:""}#loco-admin.wrap .icon-numlist:before{content:""}#loco-admin.wrap .icon-indent:before{content:""}#loco-admin.wrap .icon-outdent:before{content:""}#loco-admin.wrap .icon-link:before{content:""}#loco-admin.wrap .icon-unlink:before{content:""}#loco-admin.wrap .icon-bold:before{content:"B"}#loco-admin.wrap .icon-italic:before{content:"I"}#loco-admin.wrap .icon-translate:before{content:""}#loco-admin.wrap .icon-proj:before{content:""}#loco-admin.wrap .icon-plural:before{content:"᛬"}#loco-admin.wrap .icon-max:before,#loco-admin.wrap .icon-full-screen:before{content:""}#loco-admin.wrap .icon-min:before{content:""}#loco-admin.wrap .icon-sort:before{content:""}#loco-admin.wrap .icon-ok:before,#loco-admin.wrap .notice-success>.has-icon:before,#loco-admin.wrap .notice-success p>strong.has-icon:before{content:"✓"}#loco-admin.wrap .icon-ok-empty:before{content:"🗌"}#loco-admin.wrap .icon-checkbox-checked:before,#loco-admin.wrap .selector.multi li.checked .icon-checkbox:before{content:"☑"}#loco-admin.wrap .icon-checkbox-unchecked:before{content:"☐"}#loco-admin.wrap .icon-checkbox-partial:before{content:"☉"}#loco-admin.wrap .icon-radio-checked:before{content:"⚫"}#loco-admin.wrap .icon-radio-unchecked:before{content:"⚪"}#loco-admin.wrap .icon-ext:before{content:"⬈"}#loco-admin.wrap .icon-share:before{content:""}#loco-admin.wrap .icon-star:before{content:""}#loco-admin.wrap .icon-user:before{content:""}#loco-admin.wrap .icon-remove:before,#loco-admin.wrap a.icon.close:before{content:"×"}#loco-admin.wrap .icon-cog:before{content:""}#loco-admin.wrap .icon-trash:before{content:""}#loco-admin.wrap .icon-time:before,#loco-admin.wrap .icon-history:before{content:""}#loco-admin.wrap .icon-download:before{content:""}#loco-admin.wrap .icon-revert:before{content:""}#loco-admin.wrap .icon-sync:before{content:""}#loco-admin.wrap .icon-lock:before,#loco-admin.wrap .notice-locked>.has-icon:before,#loco-admin.wrap .notice-locked p>strong.has-icon:before{content:""}#loco-admin.wrap .icon-flag:before{content:""}#loco-admin.wrap .icon-tag:before{content:""}#loco-admin.wrap .icon-tags:before{content:""}#loco-admin.wrap .icon-print:before{content:""}#loco-admin.wrap .icon-camera:before{content:""}#loco-admin.wrap .icon-pencil:before{content:""}#loco-admin.wrap .icon-add:before{content:""}#loco-admin.wrap .icon-del:before{content:""}#loco-admin.wrap .icon-clear:before,#loco-admin.wrap a.icon.clear:before{content:""}#loco-admin.wrap .icon-ok-sign:before{content:"✔"}#loco-admin.wrap .icon-help:before{content:"?"}#loco-admin.wrap .icon-info:before,#loco-admin.wrap .notice-info>.has-icon:before,#loco-admin.wrap .notice-info p>strong.has-icon:before{content:"ℹ"}#loco-admin.wrap .icon-cancel:before{content:""}#loco-admin.wrap .icon-warn:before,#loco-admin.wrap .notice-error>.has-icon:before,#loco-admin.wrap .notice-error p>strong.has-icon:before,#loco-admin.wrap .notice-warning>.has-icon:before,#loco-admin.wrap .notice-warning p>strong.has-icon:before{content:""}#loco-admin.wrap .icon-comment:before{content:""}#loco-admin.wrap .icon-bar-chart:before{content:""}#loco-admin.wrap .icon-key:before{content:""}#loco-admin.wrap .icon-cogs:before{content:""}#loco-admin.wrap .icon-comments:before{content:""}#loco-admin.wrap .icon-signout:before{content:""}#loco-admin.wrap .icon-signin:before{content:""}#loco-admin.wrap .icon-upload:before{content:""}#loco-admin.wrap .icon-twitter:before{content:"🐦"}#loco-admin.wrap .icon-facebook:before{content:""}#loco-admin.wrap .icon-github:before{content:""}#loco-admin.wrap .icon-feed:before{content:""}#loco-admin.wrap .icon-globe:before{content:""}#loco-admin.wrap .icon-wrench:before,#loco-admin.wrap .notice-debug>.has-icon:before,#loco-admin.wrap .notice-debug p>strong.has-icon:before{content:""}#loco-admin.wrap .icon-group:before{content:""}#loco-admin.wrap .icon-cloud:before{content:""}#loco-admin.wrap .icon-copy:before{content:""}#loco-admin.wrap .icon-save:before{content:""}#loco-admin.wrap .icon-menu:before{content:""}#loco-admin.wrap .icon-table:before{content:""}#loco-admin.wrap .icon-caret-down:before{content:"▼"}#loco-admin.wrap .icon-caret-up:before{content:"▲"}#loco-admin.wrap .icon-caret-right:before{content:"▶"}#loco-admin.wrap .icon-mail:before{content:""}#loco-admin.wrap .icon-cloud-upload:before{content:""}#loco-admin.wrap .icon-file:before{content:""}#loco-admin.wrap .icon-circle-white:before{content:"⚬"}#loco-admin.wrap .icon-circle-black:before{content:"●"}#loco-admin.wrap .icon-eraser:before{content:""}#loco-admin.wrap .icon-unlock:before{content:""}#loco-admin.wrap .icon-apple:before{content:""}#loco-admin.wrap .icon-android:before{content:""}#loco-admin.wrap .icon-robot:before{content:"🤖"}#loco-admin.wrap .icon-back:before{content:"⬅"}#loco-admin.wrap .icon-next:before{content:"➔"}#loco-admin.wrap .icon-arrow-up:before{content:""}#loco-admin.wrap .icon-calendar:before{content:""}#loco-admin.wrap .icon-ccard:before{content:""}#loco-admin.wrap .icon-caret-left:before{content:"◀"}#loco-admin.wrap .icon-pro:before{content:"⚡"}#loco-admin.wrap .icon-bell:before{content:""}#loco-admin.wrap .icon-code:before{content:""}#loco-admin.wrap .icon-privacy:before{content:"🛡"}#loco-admin.wrap .icon-hellip:before{content:"…"}#loco-admin.wrap .icon-vellip:before{content:"⁞"}#loco-admin.wrap .icon-collapse:before{content:""}#loco-admin.wrap .icon-expand:before{content:""}#loco-admin.wrap .icon-wordpress:before{content:""}#loco-admin.wrap .icon-database:before{content:""}#loco-admin.wrap .icon-restore:before{content:""}#loco-admin.wrap .icon-pilcrow:before{content:"¶"}#loco-admin.wrap .icon-status.is-translated:before,#loco-admin.wrap .is-translated>header>.icon-status:before{color:#2e892e;content:"✓";text-align:center}#loco-admin.wrap .icon-status.is-untranslated:before,#loco-admin.wrap .is-untranslated>header>.icon-status:before{color:#aaa;content:"×";text-align:center;font-size:1.1em}#loco-admin.wrap .icon-status.is-flagged:before,#loco-admin.wrap .is-flagged>header>.icon-status:before{color:#bd2c00;content:"";text-align:center}#loco-admin.wrap .icon-status.is-translated.is-blank:before,#loco-admin.wrap .icon-status.is-translated.is-inherit:before,#loco-admin.wrap .is-translated.is-blank>header>.icon-status:before,#loco-admin.wrap .is-translated.is-inherit>header>.icon-status:before{content:"🗌"}#loco-admin.wrap .icon-status.is-fuzzy:before,#loco-admin.wrap .is-fuzzy>header>.icon-status:before{color:#666;content:""}#loco-admin.wrap .lang,#loco-admin.wrap .region,#loco-admin.wrap .variant-wales,#loco-admin.wrap .region-gb.lang-cy,#loco-admin.wrap .variant-scotland,#loco-admin.wrap .region-gb.lang-gd,#loco-admin.wrap .variant-valencia,#loco-admin.wrap .region-es.variant-valencia,#loco-admin.wrap .lang-ca,#loco-admin.wrap .region-es.lang-ca,#loco-admin.wrap .lang-eo,#loco-admin.wrap .lang-eu{color:#fff;background:#2e892e;display:inline-block;text-transform:uppercase;overflow:hidden;font-family:Verdana,Arial,sans-serif;font-size:9px;font-weight:normal;font-style:normal;line-height:12px;text-align:center;white-space:normal;text-shadow:none}#loco-admin.wrap .lang{width:20px;height:12px;line-height:12px;vertical-align:middle}#loco-admin.wrap .lang:before{content:attr(lang);vertical-align:baseline}#loco-admin.wrap .no-lang{width:18px;height:10px;border:solid 1px #2e892e;background:transparent}#loco-admin.wrap .lang-el{background-color:#1d48a3}#loco-admin.wrap .lang-el:before{content:"Ελ"}#loco-admin.wrap .region,#loco-admin.wrap .variant-wales,#loco-admin.wrap .region-gb.lang-cy,#loco-admin.wrap .variant-scotland,#loco-admin.wrap .region-gb.lang-gd,#loco-admin.wrap .variant-valencia,#loco-admin.wrap .region-es.variant-valencia,#loco-admin.wrap .lang-ca,#loco-admin.wrap .region-es.lang-ca,#loco-admin.wrap .lang-eo,#loco-admin.wrap .lang-eu{width:16px;height:12px;margin:0 2px;background-image:url(../img/flags.png?v=2.5.6);background-repeat:no-repeat;background-color:transparent}#loco-admin.wrap .region:before,#loco-admin.wrap .variant-wales:before,#loco-admin.wrap .region-gb.lang-cy:before,#loco-admin.wrap .variant-scotland:before,#loco-admin.wrap .region-gb.lang-gd:before,#loco-admin.wrap .variant-valencia:before,#loco-admin.wrap .region-es.variant-valencia:before,#loco-admin.wrap .lang-ca:before,#loco-admin.wrap .region-es.lang-ca:before,#loco-admin.wrap .lang-eo:before,#loco-admin.wrap .lang-eu:before{visibility:hidden}#loco-admin.wrap .lang-zh{background-color:#b90000}#loco-admin.wrap .lang-zh.script-hans:before{content:"中国"}#loco-admin.wrap .lang-zh.script-hant:before{content:"中國"}#loco-admin.wrap .__{background-position:0 0}#loco-admin.wrap .lang-eo{background-position:0 -12px}#loco-admin.wrap .lang-eu{background-position:0 -24px}#loco-admin.wrap .lang-ca,#loco-admin.wrap .region-es.lang-ca{background-position:0 -36px}#loco-admin.wrap .region-tg{background-position:0 -48px}#loco-admin.wrap .region-me{background-position:0 -60px}#loco-admin.wrap .region-la{background-position:0 -73px}#loco-admin.wrap .region-mr{background-position:0 -85px}#loco-admin.wrap .region-ni{background-position:0 -97px}#loco-admin.wrap .region-lv{background-position:0 -109px}#loco-admin.wrap .region-om{background-position:0 -121px}#loco-admin.wrap .region-af{background-position:0 -133px}#loco-admin.wrap .region-cy{background-position:0 -145px}#loco-admin.wrap .region-bj{background-position:0 -157px}#loco-admin.wrap .region-aq{background-position:0 -169px}#loco-admin.wrap .region-cn{background-position:0 -186px}#loco-admin.wrap .region-co{background-position:0 -198px}#loco-admin.wrap .region-cx{background-position:0 -210px}#loco-admin.wrap .region-ag{background-position:0 -222px}#loco-admin.wrap .region-ms{background-position:0 -234px}#loco-admin.wrap .region-md{background-position:0 -246px}#loco-admin.wrap .region-zm{background-position:0 -258px}#loco-admin.wrap .region-vn{background-position:0 -270px}#loco-admin.wrap .region-tf{background-position:0 -282px}#loco-admin.wrap .region-td{background-position:0 -294px}#loco-admin.wrap .region-yt{background-position:0 -306px}#loco-admin.wrap .region-lb{background-position:0 -318px}#loco-admin.wrap .region-mf{background-position:0 -330px}#loco-admin.wrap .region-lu{background-position:0 -347px}#loco-admin.wrap .region-mq{background-position:0 -359px}#loco-admin.wrap .region-cz{background-position:0 -371px}#loco-admin.wrap .region-ae{background-position:0 -383px}#loco-admin.wrap .region-cm{background-position:0 -395px}#loco-admin.wrap .region-bi{background-position:0 -407px}#loco-admin.wrap .region-ar{background-position:0 -419px}#loco-admin.wrap .region-as{background-position:0 -431px}#loco-admin.wrap .region-bh{background-position:0 -443px}#loco-admin.wrap .region-cl{background-position:0 -455px}#loco-admin.wrap .region-ad{background-position:0 -467px}#loco-admin.wrap .region-mp{background-position:0 -479px}#loco-admin.wrap .region-lt{background-position:0 -491px}#loco-admin.wrap .region-mg{background-position:0 -503px}#loco-admin.wrap .region-lc{background-position:0 -515px}#loco-admin.wrap .region-tr{background-position:0 -527px}#loco-admin.wrap .region-ua{background-position:0 -539px}#loco-admin.wrap .region-tv{background-position:0 -551px}#loco-admin.wrap .region-vi{background-position:0 -563px}#loco-admin.wrap .region-mt{background-position:0 -575px}#loco-admin.wrap .region-no{background-position:0 -587px}#loco-admin.wrap .region-mc{background-position:0 -599px}#loco-admin.wrap .region-ch{background-position:0 -611px}#loco-admin.wrap .region-bl{background-position:0 -623px}#loco-admin.wrap .region-aw{background-position:0 -640px}#loco-admin.wrap .region-bz{background-position:0 -652px}#loco-admin.wrap .region-bm{background-position:0 -664px}#loco-admin.wrap .region-ci{background-position:0 -676px}#loco-admin.wrap .region-mu{background-position:0 -688px}#loco-admin.wrap .region-us{background-position:0 -700px}#loco-admin.wrap .region-tw{background-position:0 -712px}#loco-admin.wrap .region-ye{background-position:0 -724px}#loco-admin.wrap .region-mw{background-position:0 -736px}#loco-admin.wrap .region-nl{background-position:0 -748px}#loco-admin.wrap .region-ls{background-position:0 -760px}#loco-admin.wrap .region-bo{background-position:0 -772px}#loco-admin.wrap .region-at{background-position:0 -784px}#loco-admin.wrap .region-ck{background-position:0 -796px}#loco-admin.wrap .region-by{background-position:0 -808px}#loco-admin.wrap .region-au{background-position:0 -820px}#loco-admin.wrap .region-bn{background-position:0 -832px}#loco-admin.wrap .region-ma{background-position:0 -844px}#loco-admin.wrap .region-nz{background-position:0 -856px}#loco-admin.wrap .region-lr{background-position:0 -868px}#loco-admin.wrap .region-mv{background-position:0 -880px}#loco-admin.wrap .region-tc{background-position:0 -892px}#loco-admin.wrap .region-ug{background-position:0 -904px}#loco-admin.wrap .region-tt{background-position:0 -916px}#loco-admin.wrap .region-pl{background-position:0 -928px}#loco-admin.wrap .region-rs{background-position:0 -940px}#loco-admin.wrap .region-in{background-position:0 -952px}#loco-admin.wrap .region-ge{background-position:0 -964px}#loco-admin.wrap .region-gr{background-position:0 -976px}#loco-admin.wrap .region-gs{background-position:0 -988px}#loco-admin.wrap .region-gd{background-position:0 -1000px}#loco-admin.wrap .region-io{background-position:0 -1012px}#loco-admin.wrap .region-hk{background-position:0 -1024px}#loco-admin.wrap .region-kp{background-position:0 -1036px}#loco-admin.wrap .region-kg{background-position:0 -1048px}#loco-admin.wrap .region-pm{background-position:0 -1060px}#loco-admin.wrap .region-sv{background-position:0 -1072px}#loco-admin.wrap .region-re{background-position:0 -1084px}#loco-admin.wrap .region-sa{background-position:0 -1096px}#loco-admin.wrap .region-sc{background-position:0 -1108px}#loco-admin.wrap .region-st{background-position:0 -1120px}#loco-admin.wrap .region-ke{background-position:0 -1132px}#loco-admin.wrap .region-im{background-position:0 -1144px}#loco-admin.wrap .region-kr{background-position:0 -1161px}#loco-admin.wrap .region-gf{background-position:0 -1173px}#loco-admin.wrap .region-dj{background-position:0 -1185px}#loco-admin.wrap .region-gq{background-position:0 -1197px}#loco-admin.wrap .region-gp{background-position:0 -1209px}#loco-admin.wrap .region-dk{background-position:0 -1221px}#loco-admin.wrap .region-gg{background-position:0 -1233px}#loco-admin.wrap .region-il{background-position:0 -1250px}#loco-admin.wrap .region-pn{background-position:0 -1262px}#loco-admin.wrap .region-sb{background-position:0 -1274px}#loco-admin.wrap .region-py{background-position:0 -1286px}#loco-admin.wrap .region-ru{background-position:0 -1298px}#loco-admin.wrap .region-kw{background-position:0 -1310px}#loco-admin.wrap .region-do{background-position:0 -1322px}#loco-admin.wrap .region-gt{background-position:0 -1334px}#loco-admin.wrap .region-gb{background-position:0 -1346px}#loco-admin.wrap .region-gu{background-position:0 -1358px}#loco-admin.wrap .region-je{background-position:0 -1370px}#loco-admin.wrap .region-hm{background-position:0 -1387px}#loco-admin.wrap .region-sg{background-position:0 -1399px}#loco-admin.wrap .region-pk{background-position:0 -1411px}#loco-admin.wrap .region-sr{background-position:0 -1423px}#loco-admin.wrap .region-se{background-position:0 -1435px}#loco-admin.wrap .region-jp{background-position:0 -1447px}#loco-admin.wrap .region-gw{background-position:0 -1459px}#loco-admin.wrap .region-eh{background-position:0 -1471px}#loco-admin.wrap .region-dz{background-position:0 -1483px}#loco-admin.wrap .region-ga{background-position:0 -1495px}#loco-admin.wrap .region-fr{background-position:0 -1507px}#loco-admin.wrap .region-dm{background-position:0 -1519px}#loco-admin.wrap .region-hn{background-position:0 -1531px}#loco-admin.wrap .region-sd{background-position:0 -1543px}#loco-admin.wrap .region-rw{background-position:0 -1555px}#loco-admin.wrap .region-ph{background-position:0 -1567px}#loco-admin.wrap .region-ss{background-position:0 -1579px}#loco-admin.wrap .region-qa{background-position:0 -1596px}#loco-admin.wrap .region-pe{background-position:0 -1608px}#loco-admin.wrap .region-pr{background-position:0 -1620px}#loco-admin.wrap .region-si{background-position:0 -1632px}#loco-admin.wrap .region-ht{background-position:0 -1644px}#loco-admin.wrap .region-es{background-position:0 -1656px}#loco-admin.wrap .region-gl{background-position:0 -1668px}#loco-admin.wrap .region-gm{background-position:0 -1680px}#loco-admin.wrap .region-er{background-position:0 -1692px}#loco-admin.wrap .region-fi{background-position:0 -1704px}#loco-admin.wrap .region-ee{background-position:0 -1716px}#loco-admin.wrap .region-kn{background-position:0 -1728px}#loco-admin.wrap .region-hu{background-position:0 -1740px}#loco-admin.wrap .region-iq{background-position:0 -1752px}#loco-admin.wrap .region-ky{background-position:0 -1764px}#loco-admin.wrap .region-sh{background-position:0 -1776px}#loco-admin.wrap .region-ps{background-position:0 -1788px}#loco-admin.wrap .region-pf{background-position:0 -1800px}#loco-admin.wrap .region-sj{background-position:0 -1812px}#loco-admin.wrap .region-id{background-position:0 -1824px}#loco-admin.wrap .region-is{background-position:0 -1836px}#loco-admin.wrap .region-eg{background-position:0 -1848px}#loco-admin.wrap .region-fk{background-position:0 -1860px}#loco-admin.wrap .region-fj{background-position:0 -1872px}#loco-admin.wrap .region-gn{background-position:0 -1884px}#loco-admin.wrap .region-gy{background-position:0 -1896px}#loco-admin.wrap .region-ir{background-position:0 -1908px}#loco-admin.wrap .region-km{background-position:0 -1920px}#loco-admin.wrap .region-ie{background-position:0 -1932px}#loco-admin.wrap .region-kz{background-position:0 -1944px}#loco-admin.wrap .region-ro{background-position:0 -1956px}#loco-admin.wrap .region-sk{background-position:0 -1968px}#loco-admin.wrap .region-pg{background-position:0 -1980px}#loco-admin.wrap .region-pt{background-position:0 -1992px}#loco-admin.wrap .region-so{background-position:0 -2004px}#loco-admin.wrap .region-sx{background-position:0 -2016px}#loco-admin.wrap .region-hr{background-position:0 -2033px}#loco-admin.wrap .region-ki{background-position:0 -2045px}#loco-admin.wrap .region-jm{background-position:0 -2057px}#loco-admin.wrap .region-ec{background-position:0 -2069px}#loco-admin.wrap .region-et{background-position:0 -2081px}#loco-admin.wrap .region-fo{background-position:0 -2093px}#loco-admin.wrap .region-kh{background-position:0 -2105px}#loco-admin.wrap .region-sy{background-position:0 -2117px}#loco-admin.wrap .region-sn{background-position:0 -2129px}#loco-admin.wrap .region-pw{background-position:0 -2141px}#loco-admin.wrap .region-sl{background-position:0 -2153px}#loco-admin.wrap .region-fm{background-position:0 -2165px}#loco-admin.wrap .region-gi{background-position:0 -2177px}#loco-admin.wrap .region-de{background-position:0 -2189px}#loco-admin.wrap .region-gh{background-position:0 -2201px}#loco-admin.wrap .region-jo{background-position:0 -2213px}#loco-admin.wrap .region-it{background-position:0 -2225px}#loco-admin.wrap .region-pa{background-position:0 -2237px}#loco-admin.wrap .region-sz{background-position:0 -2249px}#loco-admin.wrap .region-sm{background-position:0 -2261px}#loco-admin.wrap .region-tn{background-position:0 -2273px}#loco-admin.wrap .region-ml{background-position:0 -2285px}#loco-admin.wrap .region-cg{background-position:0 -2297px}#loco-admin.wrap .region-ax{background-position:0 -2309px}#loco-admin.wrap .region-ao{background-position:0 -2321px}#loco-admin.wrap .region-bt{background-position:0 -2333px}#loco-admin.wrap .region-an{background-position:0 -2345px}#loco-admin.wrap .region-bb{background-position:0 -2357px}#loco-admin.wrap .region-cf{background-position:0 -2369px}#loco-admin.wrap .region-mm{background-position:0 -2381px}#loco-admin.wrap .region-li{background-position:0 -2393px}#loco-admin.wrap .region-na{background-position:0 -2405px}#loco-admin.wrap .region-mz{background-position:0 -2417px}#loco-admin.wrap .region-to{background-position:0 -2429px}#loco-admin.wrap .region-vg{background-position:0 -2441px}#loco-admin.wrap .region-ve{background-position:0 -2453px}#loco-admin.wrap .region-tz{background-position:0 -2465px}#loco-admin.wrap .region-tm{background-position:0 -2477px}#loco-admin.wrap .region-mx{background-position:0 -2489px}#loco-admin.wrap .region-nc{background-position:0 -2501px}#loco-admin.wrap .region-mo{background-position:0 -2513px}#loco-admin.wrap .region-lk{background-position:0 -2525px}#loco-admin.wrap .region-cd{background-position:0 -2537px}#loco-admin.wrap .region-al{background-position:0 -2549px}#loco-admin.wrap .region-bw{background-position:0 -2561px}#loco-admin.wrap .region-cs{background-position:0 -2573px}#loco-admin.wrap .region-cr{background-position:0 -2585px}#loco-admin.wrap .region-bv{background-position:0 -2597px}#loco-admin.wrap .region-am{background-position:0 -2609px}#loco-admin.wrap .region-az{background-position:0 -2621px}#loco-admin.wrap .region-ba{background-position:0 -2633px}#loco-admin.wrap .region-mn{background-position:0 -2645px}#loco-admin.wrap .region-nu{background-position:0 -2657px}#loco-admin.wrap .region-my{background-position:0 -2669px}#loco-admin.wrap .region-tl{background-position:0 -2681px}#loco-admin.wrap .region-ws{background-position:0 -2693px}#loco-admin.wrap .region-th{background-position:0 -2705px}#loco-admin.wrap .region-nf{background-position:0 -2717px}#loco-admin.wrap .region-ly{background-position:0 -2729px}#loco-admin.wrap .region-ai{background-position:0 -2741px}#loco-admin.wrap .region-br{background-position:0 -2753px}#loco-admin.wrap .region-cv{background-position:0 -2765px}#loco-admin.wrap .region-be{background-position:0 -2777px}#loco-admin.wrap .region-ca{background-position:0 -2789px}#loco-admin.wrap .region-bd{background-position:0 -2801px}#loco-admin.wrap .region-cw{background-position:0 -2813px}#loco-admin.wrap .region-bs{background-position:0 -2830px}#loco-admin.wrap .region-ng{background-position:0 -2842px}#loco-admin.wrap .region-mk{background-position:0 -2854px}#loco-admin.wrap .region-np{background-position:0 -2866px}#loco-admin.wrap .region-va{background-position:0 -2878px}#loco-admin.wrap .region-uz{background-position:0 -2890px}#loco-admin.wrap .region-um{background-position:0 -2902px}#loco-admin.wrap .region-tk{background-position:0 -2914px}#loco-admin.wrap .region-vc{background-position:0 -2926px}#loco-admin.wrap .region-zw{background-position:0 -2938px}#loco-admin.wrap .region-nr{background-position:0 -2950px}#loco-admin.wrap .region-ne{background-position:0 -2962px}#loco-admin.wrap .region-cu{background-position:0 -2974px}#loco-admin.wrap .region-bq{background-position:0 -2986px}#loco-admin.wrap .region-bf{background-position:0 -2998px}#loco-admin.wrap .region-bg{background-position:0 -3010px}#loco-admin.wrap .region-cc{background-position:0 -3022px}#loco-admin.wrap .region-mh{background-position:0 -3034px}#loco-admin.wrap .region-za{background-position:0 -3046px}#loco-admin.wrap .region-uy{background-position:0 -3058px}#loco-admin.wrap .region-wf{background-position:0 -3070px}#loco-admin.wrap .region-vu{background-position:0 -3082px}#loco-admin.wrap .region-tj{background-position:0 -3094px}#loco-admin.wrap .variant-scotland,#loco-admin.wrap .region-gb.lang-gd{background-position:0 -3106px}#loco-admin.wrap .variant-valencia,#loco-admin.wrap .region-es.variant-valencia{background-position:0 -3118px}#loco-admin.wrap .variant-wales,#loco-admin.wrap .region-gb.lang-cy{background-position:0 -3130px}#loco-admin.wrap .x-eu{background-position:0 -3142px}#loco-admin.wrap span.lang code{display:none}#loco-admin.wrap .icon-notag:before{content:""}#loco-admin.wrap .icon-magnify:before{content:"🔍"}#loco-admin.wrap .icon-python:before{content:"🐍"}#loco-admin.wrap .icon-unicode:before{content:"u"}#loco-admin.wrap .icon-json:before{content:"{"}#loco-admin.wrap .icon-bullist:before{content:""}#loco-admin.wrap .icon-numlist:before{content:""}#loco-admin.wrap .icon-indent:before{content:""}#loco-admin.wrap .icon-outdent:before{content:""}#loco-admin.wrap .icon-link:before{content:""}#loco-admin.wrap .icon-unlink:before{content:""}#loco-admin.wrap .icon-bold:before{content:"B"}#loco-admin.wrap .icon-italic:before{content:"I"}#loco-admin.wrap .icon-translate:before{content:""}#loco-admin.wrap .icon-proj:before{content:""}#loco-admin.wrap .icon-plural:before{content:"᛬"}#loco-admin.wrap .icon-max:before,#loco-admin.wrap .icon-full-screen:before{content:""}#loco-admin.wrap .icon-min:before{content:""}#loco-admin.wrap .icon-sort:before{content:""}#loco-admin.wrap .icon-ok:before,#loco-admin.wrap .notice-success>.has-icon:before,#loco-admin.wrap .notice-success p>strong.has-icon:before{content:"✓"}#loco-admin.wrap .icon-ok-empty:before{content:"🗌"}#loco-admin.wrap .icon-checkbox-checked:before,#loco-admin.wrap .selector.multi li.checked .icon-checkbox:before{content:"☑"}#loco-admin.wrap .icon-checkbox-unchecked:before{content:"☐"}#loco-admin.wrap .icon-checkbox-partial:before{content:"☉"}#loco-admin.wrap .icon-radio-checked:before{content:"⚫"}#loco-admin.wrap .icon-radio-unchecked:before{content:"⚪"}#loco-admin.wrap .icon-ext:before{content:"⬈"}#loco-admin.wrap .icon-share:before{content:""}#loco-admin.wrap .icon-star:before{content:""}#loco-admin.wrap .icon-user:before{content:""}#loco-admin.wrap .icon-remove:before,#loco-admin.wrap a.icon.close:before{content:"×"}#loco-admin.wrap .icon-cog:before{content:""}#loco-admin.wrap .icon-trash:before{content:""}#loco-admin.wrap .icon-time:before,#loco-admin.wrap .icon-history:before{content:""}#loco-admin.wrap .icon-download:before{content:""}#loco-admin.wrap .icon-revert:before{content:""}#loco-admin.wrap .icon-sync:before{content:""}#loco-admin.wrap .icon-lock:before,#loco-admin.wrap .notice-locked>.has-icon:before,#loco-admin.wrap .notice-locked p>strong.has-icon:before{content:""}#loco-admin.wrap .icon-flag:before{content:""}#loco-admin.wrap .icon-tag:before{content:""}#loco-admin.wrap .icon-tags:before{content:""}#loco-admin.wrap .icon-print:before{content:""}#loco-admin.wrap .icon-camera:before{content:""}#loco-admin.wrap .icon-pencil:before{content:""}#loco-admin.wrap .icon-add:before{content:""}#loco-admin.wrap .icon-del:before{content:""}#loco-admin.wrap .icon-clear:before,#loco-admin.wrap a.icon.clear:before{content:""}#loco-admin.wrap .icon-ok-sign:before{content:"✔"}#loco-admin.wrap .icon-help:before{content:"?"}#loco-admin.wrap .icon-info:before,#loco-admin.wrap .notice-info>.has-icon:before,#loco-admin.wrap .notice-info p>strong.has-icon:before{content:"ℹ"}#loco-admin.wrap .icon-cancel:before{content:""}#loco-admin.wrap .icon-warn:before,#loco-admin.wrap .notice-error>.has-icon:before,#loco-admin.wrap .notice-error p>strong.has-icon:before,#loco-admin.wrap .notice-warning>.has-icon:before,#loco-admin.wrap .notice-warning p>strong.has-icon:before{content:""}#loco-admin.wrap .icon-comment:before{content:""}#loco-admin.wrap .icon-bar-chart:before{content:""}#loco-admin.wrap .icon-key:before{content:""}#loco-admin.wrap .icon-cogs:before{content:""}#loco-admin.wrap .icon-comments:before{content:""}#loco-admin.wrap .icon-signout:before{content:""}#loco-admin.wrap .icon-signin:before{content:""}#loco-admin.wrap .icon-upload:before{content:""}#loco-admin.wrap .icon-twitter:before{content:"🐦"}#loco-admin.wrap .icon-facebook:before{content:""}#loco-admin.wrap .icon-github:before{content:""}#loco-admin.wrap .icon-feed:before{content:""}#loco-admin.wrap .icon-globe:before{content:""}#loco-admin.wrap .icon-wrench:before,#loco-admin.wrap .notice-debug>.has-icon:before,#loco-admin.wrap .notice-debug p>strong.has-icon:before{content:""}#loco-admin.wrap .icon-group:before{content:""}#loco-admin.wrap .icon-cloud:before{content:""}#loco-admin.wrap .icon-copy:before{content:""}#loco-admin.wrap .icon-save:before{content:""}#loco-admin.wrap .icon-menu:before{content:""}#loco-admin.wrap .icon-table:before{content:""}#loco-admin.wrap .icon-caret-down:before{content:"▼"}#loco-admin.wrap .icon-caret-up:before{content:"▲"}#loco-admin.wrap .icon-caret-right:before{content:"▶"}#loco-admin.wrap .icon-mail:before{content:""}#loco-admin.wrap .icon-cloud-upload:before{content:""}#loco-admin.wrap .icon-file:before{content:""}#loco-admin.wrap .icon-circle-white:before{content:"⚬"}#loco-admin.wrap .icon-circle-black:before{content:"●"}#loco-admin.wrap .icon-eraser:before{content:""}#loco-admin.wrap .icon-unlock:before{content:""}#loco-admin.wrap .icon-apple:before{content:""}#loco-admin.wrap .icon-android:before{content:""}#loco-admin.wrap .icon-robot:before{content:"🤖"}#loco-admin.wrap .icon-back:before{content:"⬅"}#loco-admin.wrap .icon-next:before{content:"➔"}#loco-admin.wrap .icon-arrow-up:before{content:""}#loco-admin.wrap .icon-calendar:before{content:""}#loco-admin.wrap .icon-ccard:before{content:""}#loco-admin.wrap .icon-caret-left:before{content:"◀"}#loco-admin.wrap .icon-pro:before{content:"⚡"}#loco-admin.wrap .icon-bell:before{content:""}#loco-admin.wrap .icon-code:before{content:""}#loco-admin.wrap .icon-privacy:before{content:"🛡"}#loco-admin.wrap .icon-hellip:before{content:"…"}#loco-admin.wrap .icon-vellip:before{content:"⁞"}#loco-admin.wrap .icon-collapse:before{content:""}#loco-admin.wrap .icon-expand:before{content:""}#loco-admin.wrap .icon-wordpress:before{content:""}#loco-admin.wrap .icon-database:before{content:""}#loco-admin.wrap .icon-restore:before{content:""}#loco-admin.wrap .icon-pilcrow:before{content:"¶"}#loco-admin.wrap .icon,#loco-admin.wrap .has-icon:before,#loco-admin.wrap .has-dashicon:before{speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#loco-admin.wrap .icon,#loco-admin.wrap .has-icon:before{font-family:"loco"}#loco-admin.wrap .has-dashicon:before{font-family:"dashicons";font-size:1.4em}#loco-admin.wrap .has-icon:before,#loco-admin.wrap .has-dashicon:before,#loco-admin.wrap .has-icon>span{display:inline-block;vertical-align:middle}#loco-admin.wrap .only-icon{text-align:center}#loco-admin.wrap .only-icon:before{text-align:center;padding:0}#loco-admin.wrap .only-icon span{display:none}#loco-admin.wrap a,#loco-admin.wrap .wp-core-ui .button-link{text-decoration:none}#loco-admin.wrap h3:hover>a.loco-anchor{color:#ccc}#loco-admin.wrap h3:hover>a.loco-anchor:before{content:"¶"}#loco-admin.wrap .has-lang>span{display:inline-block;vertical-align:middle}#loco-admin.wrap a.has-lang:hover>span:last-child{text-decoration:underline}#loco-admin.wrap h1 ul,#loco-admin.wrap h1 li{margin:0;padding:0}#loco-admin.wrap h1 li{display:inline-block}#loco-admin.wrap h1 li:after{content:"/";color:#999;text-shadow:none;display:inline-block}#loco-admin.wrap h1 li:last-child:after{content:""}#loco-admin.wrap h1 li:last-child a{color:inherit;pointer-events:none;cursor:auto}#loco-admin.wrap h2 span{color:#999;font-weight:normal}#loco-admin.wrap h2 .loco-meta,#loco-admin.wrap h3 .loco-meta{color:inherit;font-size:14px;font-weight:normal;vertical-align:middle}#loco-admin.wrap .wp-list-table td:first-child .icon{width:16px;display:inline-block;text-align:center}#loco-admin.wrap .wp-list-table td{white-space:nowrap}#loco-admin.wrap .wp-list-table td>a,#loco-admin.wrap .wp-list-table td>time{display:inline-block;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-o-text-overflow:ellipsis;-ms-text-overflow:ellipsis}#loco-admin.wrap .wp-list-table th.loco-sort{cursor:pointer}#loco-admin.wrap .wp-list-table th.loco-sort:hover{color:#000}#loco-admin.wrap .wp-list-table th.loco-sort.loco-asc:after,#loco-admin.wrap .wp-list-table th.loco-sort.loco-desc:after{padding:0 0 0 4px;color:#999}#loco-admin.wrap .wp-list-table th.loco-sort.loco-desc:after{content:"▼"}#loco-admin.wrap .wp-list-table th.loco-sort.loco-asc:after{content:"▲"}#loco-admin.wrap .wp-list-table td.has-row-actions{overflow:visible}#loco-admin.wrap form.loco-filter{display:block;margin-bottom:5px}#loco-admin.wrap form.loco-filter .icon-filter{color:#999}#loco-admin.wrap nav.above-list-table{margin-bottom:1em}#loco-admin.wrap nav.above-list-table a{display:inline-block;margin-right:1em}#loco-admin.wrap .wp-core-ui button.inverted,#loco-admin.wrap .wp-core-ui button.inverted:hover,#loco-admin.wrap .po-fuzzy button.icon-cloud{background:-moz-linear-gradient(top, #cccccc 0%, #e0e0e0 30%, #fefefe 100%);background:-webkit-linear-gradient(top, #cccccc 0%, #e0e0e0 30%, #fefefe 100%);background:linear-gradient(to bottom, #cccccc 0%, #e0e0e0 30%, #fefefe 100%);-webkit-box-shadow:0 1px 0 #fff;-moz-box-shadow:0 1px 0 #fff;box-shadow:0 1px 0 #fff;border-color:gray}#loco-admin.wrap .wp-core-ui button:active,#loco-admin.wrap .wp-core-ui button.inverted:active{border-color:#5b9dd9}#loco-admin.wrap .loco-clearable{display:inline-block;vertical-align:middle;position:relative}#loco-admin.wrap .loco-clearable a.clear,#loco-admin.wrap .auto-comp-wrap a.clear{top:0;right:0;outline:none;margin:0;border:solid 1px transparent;padding:5px 5px;position:absolute;font-size:1em;line-height:normal}#loco-admin.wrap .loco-clearable a.clear:before,#loco-admin.wrap .auto-comp-wrap a.clear:before{vertical-align:middle;padding:0;color:#999}#loco-admin.wrap .loco-clearable a.clear:hover:before,#loco-admin.wrap .auto-comp-wrap a.clear:hover:before{color:#333}#loco-admin.wrap .loco-clearable a.clear span,#loco-admin.wrap .auto-comp-wrap a.clear span{display:none}#loco-admin.wrap .loco-clearable ::-ms-clear,#loco-admin.wrap .auto-comp-wrap ::-ms-clear{display:none}#loco-admin.wrap div.progress{color:#000;background:transparent !important}#loco-admin.wrap div.progress *{height:100%;overflow:hidden;white-space:nowrap}#loco-admin.wrap div.progress .t{background-color:#ddd;border:1px solid #ccc}#loco-admin.wrap div.progress .t .bar{float:left;clear:none;background-color:#3db63d}#loco-admin.wrap div.progress .t .bar.f{background-color:#bd2c00}#loco-admin.wrap div.progress .l{display:block}#loco-admin.wrap td div.progress .t{border:none}#loco-admin.wrap td div.progress .l{display:none}#loco-admin.wrap code.path{color:#333;margin:0;padding:0;display:inline;background:transparent}#loco-admin.wrap .loco-danger{color:#d54e21}#loco-admin.wrap .notice,#loco-admin.wrap .panel{background:#fff;position:relative;margin:1em 0;padding:1px 12px}#loco-admin.wrap .notice-generic{border-color:#ddd}#loco-admin.wrap .notice-success>.has-icon,#loco-admin.wrap .notice-success p>strong.has-icon{color:#000}#loco-admin.wrap .notice-warning{border-color:orange}#loco-admin.wrap .notice-error{border-color:#dc3232}#loco-admin.wrap .notice-debug{border-color:#00a0d2}#loco-admin.wrap .notice-danger{border-color:#dc3232}#loco-admin.wrap .notice-locked{border-color:orange}#loco-admin.wrap .notice>.has-icon:before,#loco-admin.wrap .notice p>strong.has-icon:before{padding-right:6px}#loco-admin.wrap .notice>p>a.button.has-icon:before{width:1.2em}#loco-admin.wrap .notice>p>em{color:#d54e21;font-style:normal}#loco-admin.wrap .notice>p>em a{color:inherit}#loco-admin.wrap .notice>p a:hover,#loco-admin.wrap .notice>nav a:hover{text-decoration:underline}#loco-admin.wrap .notice>p a.button,#loco-admin.wrap .notice>nav a.button{text-decoration:inherit}#loco-admin.wrap .notice.has-nav{display:flex;flex-direction:row}#loco-admin.wrap .notice.has-nav p,#loco-admin.wrap .notice.has-nav nav{line-height:22px;flex-grow:1}#loco-admin.wrap .notice.has-nav nav{text-align:right;padding:2px;margin:.5em 0}#loco-admin.wrap .notice.has-nav.is-dismissible{padding-right:38px}#loco-admin.wrap .notice.has-nav a{white-space:nowrap}#loco-admin.wrap .notice.has-nav nav>span{color:#666}#loco-admin.wrap .notice>h3>span{display:inline-block;vertical-align:middle}#loco-admin.wrap ul.problems li{font-style:italic}#loco-admin.wrap label{position:relative}#loco-admin.wrap label.for-disabled,#loco-admin.wrap label.for-disabled>input{cursor:default !important}#loco-admin.wrap input.regular-text,#loco-admin.wrap textarea.regular-text{width:25em}#loco-admin.wrap .button-link{padding:0 10px 1px}#loco-admin.wrap .button-danger{background:#ba0000;border-color:#900 #600 #600;-webkit-box-shadow:0 1px 0 #600;-moz-box-shadow:0 1px 0 #600;box-shadow:0 1px 0 #600;color:#fff;text-shadow:0 -1px 1px #600,1px 0 1px #600,0 1px 1px #600,-1px 0 1px #600}#loco-admin.wrap .button-success{background:#00b500;border-color:#090 #2e892e #2e892e;-webkit-box-shadow:0 1px 0 #2e892e;-moz-box-shadow:0 1px 0 #2e892e;box-shadow:0 1px 0 #2e892e;color:#fff;text-shadow:0 -1px 1px #2e892e,1px 0 1px #2e892e,0 1px 1px #2e892e,-1px 0 1px #2e892e}#loco-admin.wrap .button-success:hover{background:#3db63d}#loco-admin.wrap .button-danger[disabled],#loco-admin.wrap .button-success[disabled]{text-shadow:none !important}#loco-admin.wrap form button.loco-loading.button-large{padding-left:0}#loco-admin.wrap form button.loco-loading.button-large:before{width:16px;height:16px;margin:0 4px;content:" ";font-size:16px;line-height:1;display:inline-block;vertical-align:sub}#loco-admin.wrap ::placeholder{color:#ccc}#loco-admin.wrap ::-webkit-input-placeholder{color:#ccc}#loco-admin.wrap :-moz-placeholder{color:#ccc;opacity:1}#loco-admin.wrap ::-moz-placeholder{color:#ccc;opacity:1}#loco-admin.wrap :-ms-input-placeholder{color:#ccc}#loco-admin.wrap .ielt10 .placeheld{color:#ccc}#loco-admin.wrap a.has-raquo:after{content:" »"}#loco-admin.wrap a.has-laquo:before{content:"« "}#loco-admin.wrap span.inline-spinner{display:inline-block;min-width:16px;min-height:16px;background:transparent url(../img/spin-modal.gif?v=2.5.6) 0 0 no-repeat}.js #wpbody-content>.notice{display:none}.js #wpbody-content>.notice.inline{display:block}.js #loco-admin.wrap .jshide,.no-js #loco-admin.wrap .jsonly{display:none !important}#loco-admin.wrap .invis{visibility:hidden}.form-table tr td{vertical-align:top}.form-table tr.compact td{padding-top:0}.form-table tr th a.icon-help{display:none}.loco-modal{min-width:50%;min-height:100px}.loco-modal-wide{min-width:90% !important}.loco-modal-no-close .ui-dialog-titlebar-close{display:none}.loco-modal .ui-dialog-titlebar-close{overflow:hidden}.loco-modal.request-filesystem-credentials-dialog{top:15% !important;max-height:85% !important}.loco-modal.request-filesystem-credentials-dialog>.ui-dialog-content{background:inherit}.loco-modal.request-filesystem-credentials-dialog .ftp-password>label>em:last-child{display:none}.ui-dialog-content>div.loco-loading{height:100%;background:transparent url(../img/spin-modal.gif?v=2.5.6) center 20px no-repeat}#loco-po-ref ol li{color:#aaa;margin:0;white-space:pre;padding:0 0 0 1em;font:normal 12px/17px Consolas,Monaco,monospace;background:transparent;border-left:1px solid #eee}#loco-po-ref ol li code{margin:0;padding:0;display:inline;background:inherit}#loco-po-ref ol li.highlighted{color:#666;background-color:#f8eec7}#loco-po-ref ol li.highlighted code.T_CONSTANT_ENCAPSED_STRING{color:#c931c7}#loco-credit>*{vertical-align:middle}#loco-credit>a{display:inline-block;position:relative;overflow:hidden;background:transparent url(../img/logo-foot.gif?v=2.5.6) 0 0 no-repeat;height:30px;width:100px;text-indent:200px;-webkit-transition-duration:0s;transition-duration:0s}#loco-credit>a:hover{background-position:0 -35px}#loco-content{position:relative}#footer-upgrade span:before{color:#ccc;content:" | ";display:inline;padding-left:.5em;padding-right:.5em}#footer-upgrade span:first-child:before{content:"";display:none}.loco-clearfix:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}dl.debug dt{font-weight:bold}dl.debug dt,dl.debug dd{white-space:pre}.wrap #loco-editor .is-table .wg-tr:nth-child(even){background-color:rgba(0,115,170,.05)}.wrap #loco-editor .wg-split-x>nav.wg-tabs>a.active,.wrap #loco-editor .is-table .wg-cols>div>div.selected{background-color:#0073aa;foo:#0073aa}.wrap #loco-editor .is-editable>.wg-content>textarea:focus,.wrap #loco-editor .is-editable>.wg-content.has-focus .ace_scroller,.wrap #loco-editor .is-editable>.wg-content.has-focus .mce-content-body{border-color:#5b9dd9;-webkit-box-shadow:inset 0 0 .6em rgba(30,140,190,.8);-moz-box-shadow:inset 0 0 .6em rgba(30,140,190,.8);box-shadow:inset 0 0 .6em rgba(30,140,190,.8)}.wp-core-ui .button-primary.loco-loading[disabled]{color:#66c6e4 !important;background:#008ec2 !important;border-color:#008ec2 !important}.wp-core-ui .button-primary.loco-loading[disabled]:before{background:transparent url(../img/skins/fresh/spin-primary-button.gif?v=2.5.6) 0 0 no-repeat !important}
pub/css/editor.css CHANGED
@@ -1 +1 @@
1
- #loco-editor{border:solid 1px #ccc}#loco-editor ._ajax_loader_f2{background-image:url(../img/ajax-loader-f2.gif?v=2.5.5);background-repeat:no-repeat;min-height:16px}#loco-editor ._ajax_loader_f2x4{background:transparent url(../img/ajax-loader-f2-x4.gif?v=2.5.5) 0 0 no-repeat;min-height:75px}#loco-editor ._ajax_loader_cc{background-image:url(../img/ajax-loader-cc.gif?v=2.5.5);background-repeat:no-repeat;min-height:16px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1),only screen and (min-device-pixel-ratio: 2),only screen and (min-resolution: 192dpi),only screen and (min-resolution: 2dppx){#loco-editor ._ajax_loader_f2{background-image:url(../img/ajax-loader-f2-x2.gif?v=2.5.5);background-size:16px}#loco-editor ._ajax_loader_cc{background-image:url(../img/ajax-loader-cc-x2.gif?v=2.5.5);background-size:16px}}#loco-editor ._green_glow_inner,#loco-editor .is-editable>.wg-content>textarea:focus,#loco-editor .is-editable>.wg-content.has-focus .ace_scroller,#loco-editor .is-editable>.wg-content.has-focus .wysihtml-editor,#loco-editor .is-editable>.wg-content.has-focus .mce-content-body{-webkit-box-shadow:inset 0 0 10px 0 #3db63d;-moz-box-shadow:inset 0 0 10px 0 #3db63d;box-shadow:inset 0 0 10px 0 #3db63d}#loco-editor ._green_glow_outer{-webkit-box-shadow:0 0 .5em 0 #3db63d;-moz-box-shadow:0 0 .5em 0 #3db63d;box-shadow:0 0 .5em 0 #3db63d}#loco-editor .loco-font,#loco-editor .is-table .wg-thead .wg-sortable>header:after{font-family:"loco";speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#loco-editor div.ta-mirror{position:absolute;top:0;border:solid 1px transparent;color:transparent;padding:.4em .6em;pointer-events:none}#loco-editor div.ta-mirror span{position:relative}#loco-editor div.ta-mirror span:after{color:#ccc;white-space:pre;display:inline-block;position:absolute;top:0;line-height:normal}#loco-editor div.ta-mirror .crlf:after{content:"¬"}#loco-editor div.ta-mirror .eof:after{content:"¶"}#loco-editor div.ta-mirror .x20:after{content:"·";color:#aaa}#loco-editor div.ta-mirror .x9:after{content:"⟶"}#loco-editor div.ta-mirror,#loco-editor .has-mirror textarea{white-space:pre-wrap;word-wrap:break-word;word-spacing:0px}#loco-editor .has-mirror ::placeholder{color:transparent}#loco-editor .has-mirror ::-webkit-input-placeholder{color:transparent}#loco-editor .has-mirror :-moz-placeholder{color:transparent;opacity:1}#loco-editor .has-mirror ::-moz-placeholder{color:transparent;opacity:1}#loco-editor .has-mirror :-ms-input-placeholder{color:transparent}#loco-editor .has-mirror .ielt10 .placeheld{color:transparent}#loco-editor div.ta-mirror{left:0;text-align:left}#loco-editor div.ta-mirror span:after{left:0}#loco-editor div.ta-mirror .eol:after{padding-left:.2em}#loco-editor [dir=RTL] div.ta-mirror{left:auto;right:0;text-align:right}#loco-editor [dir=RTL] div.ta-mirror span:after{right:0}#loco-editor [dir=RTL] div.ta-mirror .eol:after{padding-left:0;padding-right:.2em}#loco-editor .has-proxy>textarea{display:none !important}#loco-editor .has-proxy .ace_editor{height:100%;font-size:13px !important;line-height:1.4 !important}#loco-editor .has-proxy .ace_editor .ace_marker-layer .ace_bracket{display:none}#loco-editor .has-proxy .ace_print-margin{display:none}#loco-editor .ace_printf{color:#b90690;background-color:#edf1be}#loco-editor .ace_locked{color:gray}#loco-editor .ace_icu-quoted{color:gray}#loco-editor .ace_icu{color:#697eb9}#loco-editor .ace_icu.ace_name{color:#b90600}#loco-editor .resizer{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0 0 6px 0;background:#f0f0f0 url(../img/wg/splity.png?v=2.5.5) center bottom no-repeat;border:1px solid #ddd;overflow:hidden;cursor:move;cursor:row-resize;cursor:s-resize}#loco-editor .resizer>*{height:100%;border:none}#loco-editor ._ajax_loader_f2{background-image:url(../img/ajax-loader-f2.gif?v=2.5.5);background-repeat:no-repeat;min-height:16px}#loco-editor ._ajax_loader_f2x4{background:transparent url(../img/ajax-loader-f2-x4.gif?v=2.5.5) 0 0 no-repeat;min-height:75px}#loco-editor ._ajax_loader_cc{background-image:url(../img/ajax-loader-cc.gif?v=2.5.5);background-repeat:no-repeat;min-height:16px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1),only screen and (min-device-pixel-ratio: 2),only screen and (min-resolution: 192dpi),only screen and (min-resolution: 2dppx){#loco-editor ._ajax_loader_f2{background-image:url(../img/ajax-loader-f2-x2.gif?v=2.5.5);background-size:16px}#loco-editor ._ajax_loader_cc{background-image:url(../img/ajax-loader-cc-x2.gif?v=2.5.5);background-size:16px}}#loco-editor ._green_glow_inner,#loco-editor .is-editable>.wg-content>textarea:focus,#loco-editor .is-editable>.wg-content.has-focus .ace_scroller,#loco-editor .is-editable>.wg-content.has-focus .wysihtml-editor,#loco-editor .is-editable>.wg-content.has-focus .mce-content-body{-webkit-box-shadow:inset 0 0 10px 0 #3db63d;-moz-box-shadow:inset 0 0 10px 0 #3db63d;box-shadow:inset 0 0 10px 0 #3db63d}#loco-editor ._green_glow_outer{-webkit-box-shadow:0 0 .5em 0 #3db63d;-moz-box-shadow:0 0 .5em 0 #3db63d;box-shadow:0 0 .5em 0 #3db63d}#loco-editor .loco-font,#loco-editor .is-table .wg-thead .wg-sortable>header:after{font-family:"loco";speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#loco-editor .wg-cell,#loco-editor .wg-cell>div{clear:both;position:relative;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;outline:none}#loco-editor .wg-cell{left:0;top:0;padding:0;margin:0;overflow:hidden}#loco-editor .wg-split{background:#eee}#loco-editor .wg-body:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}#loco-editor .wg-split-x>div>.not-first>*{margin-left:6px}#loco-editor .wg-split-y>div>.not-first>*{margin-top:6px}#loco-editor .wg-split>div>.has-title .wg-content{margin-top:0}#loco-editor .wg-split-x>div>.wg-cell{float:left;clear:none;height:100%}#loco-editor .wg-split-x>div{cursor:move;cursor:ew-resize;cursor:col-resize}#loco-editor .wg-split>div>.not-first:before{display:block;position:absolute;overflow:hidden;content:" "}#loco-editor .wg-split-x>div>.not-first:before{width:6px;height:100%;background:transparent url(../img/wg/splitx.png?v=2.5.5) center center no-repeat}#loco-editor .wg-split-y>div{cursor:move;cursor:ns-resize;cursor:row-resize}#loco-editor .wg-split-y>div>.not-first:before{height:6px;width:100%;background:transparent url(../img/wg/splity.png?v=2.5.5) center center no-repeat}#loco-editor .wg-split>div.locked{cursor:default}#loco-editor .wg-split-x>div.locked>.not-first>*{margin-left:0px}#loco-editor .wg-split-y>div.locked>.not-first>*{margin-top:0px}#loco-editor .wg-split>div.locked>.not-first:before{display:none}#loco-editor .has-title>header{background:#e2e2e2;cursor:default !important;margin:0;white-space:nowrap}#loco-editor .wg-content{background:#fff;cursor:default;padding:4px 6px;overflow:hidden;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#loco-editor .wg-toolbar{top:0;right:0;margin-top:6px;position:absolute}#loco-editor .wg-toolbar>span{color:#fff;background:#000;display:block;padding:0 6px;cursor:default !important}#loco-editor .wg-toolbar>span:active{color:#000;background-color:#fff}#loco-editor .wg-content,#loco-editor .wg-tbody>div{overflow:scroll;overflow-x:hidden;overflow-y:auto}#loco-editor .is-table{background-color:#fff}#loco-editor .is-table .wg-thead .has-title>header{font-weight:normal;background:transparent;padding:4px 0;margin:0 0 0 10px}#loco-editor .is-table .wg-thead>div>.not-first:before{background-position:center center}#loco-editor .is-table .wg-thead{background:#e2e2e2;border-bottom:solid 1px #ccc}#loco-editor .is-table .wg-tbody{background-image:url(data:image/gif;base64,R0lGODlhAQAsAIABAPz8/P///yH5BAEAAAEALAAAAAABACwAAAIIjI+pAe0PIygAOw==);position:relative}#loco-editor .is-table .wg-cols>div{float:left;clear:none}#loco-editor .is-table .wg-cols>div>div{white-space:nowrap;line-height:1.7em;padding-left:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-o-text-overflow:ellipsis;-ms-text-overflow:ellipsis;background-color:#fff}#loco-editor .is-table .wg-cols>div>div:nth-child(even){background-color:#f7f7f7}#loco-editor .is-table .wg-cols>div>div.selected{background-color:#3db63d;color:#fff}#loco-editor .is-table .wg-cols>div>div.selected::selection{background-color:#fff;color:#000}#loco-editor .is-table .wg-cols>div:first-child>div{padding-left:4px}#loco-editor .is-table .wg-dead{clear:both}#loco-editor .is-table .wg-thead .wg-sortable>header{cursor:pointer !important}#loco-editor .is-table .wg-thead .wg-sortable>header:after{padding:0 0 0 5px;color:#999}#loco-editor .is-table .wg-thead .wg-sortable.wg-asc>header:after{content:"▲"}#loco-editor .is-table .wg-thead .wg-sortable.wg-desc>header:after{content:"▼"}#loco-editor .is-table .wg-thead .wg-sortable:hover>header:after{color:#000}#loco-editor .is-field>.wg-content{cursor:text;padding:0;line-height:normal;overflow:hidden;overflow-y:hidden}#loco-editor .is-field>.wg-content>div,#loco-editor .is-field>.wg-content>textarea{font-size:14px;line-height:1.4;border:1px solid #ddd;width:100%;height:100%;padding:8px 10px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0}#loco-editor .is-field>.wg-content textarea{resize:none;overflow:auto;display:block}#loco-editor .is-field>.wg-content>.ace_editor{padding:0;border-width:0}#loco-editor .is-field>.wg-content>div[contenteditable]{overflow:scroll;overflow-x:hidden;overflow-y:auto}#loco-editor .is-readonly>.wg-content{cursor:default}#loco-editor .is-readonly>.wg-content>div,#loco-editor .is-readonly>.wg-content>textarea,#loco-editor .is-readonly>.wg-content>textarea[readonly]{background:#f8f8f8;text-shadow:0 1px #fff;color:inherit}#loco-editor .is-readonly>.wg-content .ace_scroller{cursor:default;background:#f8f8f8}#loco-editor .is-readonly>.wg-content .ace_cursor-layer{display:none}#loco-editor .is-readonly>.wg-content>textarea[readonly]{cursor:default}#loco-editor .is-editable>.wg-content[dir=RTL] .ace_editor .ace_line{direction:ltr;unicode-bidi:bidi-override}#loco-editor .wg-split-x>nav.wg-tabs{white-space:nowrap;text-align:center;cursor:default}#loco-editor .wg-split-x>nav.wg-tabs>a{display:inline-block;padding:.5em 1em;margin-top:.2em;color:#000;text-decoration:none;-webkit-border-radius:.2em .2em 0 0;-moz-border-radius:.2em .2em 0 0;-ms-border-radius:.2em .2em 0 0;-o-border-radius:.2em .2em 0 0;border-radius:.2em .2em 0 0;background-color:#f3f7fd}#loco-editor .wg-split-x>nav.wg-tabs>a:hover{background-color:#fff}#loco-editor .wg-split-x>nav.wg-tabs>a.active{background-color:#3db63d;color:#fff}#loco-editor .wg-split>div>.has-nav>.wg-body{margin-top:0px}#loco-editor .wg-dead{visibility:hidden}@media all and (max-width: 768px){#loco-editor .wg-split-x>div>.not-first>*{margin-left:20px}#loco-editor .wg-split-y>div>.not-first>*{margin-top:20px}#loco-editor .wg-split-x>div>.not-first:before{width:20px}#loco-editor .wg-split-y>div>.not-first:before{height:20px}#loco-editor .is-table .wg-thead header{padding-left:20px}}#loco-editor .is-table .po-fuzzy{color:#b59829;font-weight:bold}#loco-editor .is-table .po-empty{color:#1f507a;font-weight:bold}#loco-editor .is-table .po-flagged{color:#bd2c00}#loco-editor .is-table .wg-cols>div:first-child>div:before{font-family:loco;vertical-align:inherit;display:inline-block;content:" ";width:1.3em;line-height:1}#loco-editor .is-table .wg-cols>div:first-child>div.po-fuzzy:before{content:""}#loco-editor .is-table .wg-cols>div:first-child>div.po-flagged:before{content:""}#loco-editor .is-table .wg-cols>div:first-child>div.po-comment:before{content:"";color:#999}#loco-editor .is-table .wg-cols>div:first-child>div.po-unsaved:before{content:"";color:#f1d040}#loco-editor .is-table .wg-cols>div:first-child>div.selected:before{color:#fff !important}#loco-editor .wg-cell>.meta{color:#333;margin:0 !important;padding:6px 10px;font-weight:normal;font-size:13px;line-height:1.4em;cursor:default !important}#loco-editor .wg-cell>.meta>*{display:inline-block;margin-top:3px;margin-bottom:3px}#loco-editor .wg-cell>.meta>span{border:1px solid transparent;border-left:none}#loco-editor .wg-cell>.meta>mark{color:#fff;border-radius:2px;background-color:silver;border:1px solid silver;padding:0 .3em}#loco-editor .wg-cell>.meta>mark.tag{color:#999;background-color:#eee}#loco-editor .wg-cell>.meta>p{display:block;white-space:pre-line}#loco-editor .wg-cell>.meta .icon-warn{color:#c00}#loco-editor .wg-cell>.meta .has-icon:before{padding-right:0;width:17px}#loco-editor .wg-cell>.meta code{font-size:12px}#loco-editor .is-table .wg-cols>div>div>mark{display:inline-block;vertical-align:text-bottom;font:inherit;font-weight:normal;color:#fff;border-radius:2px;font-size:90%;line-height:1;padding:.2em .3em;background-color:rgba(0,0,0,.25)}#loco-editor .is-table .wg-cols>div>div.selected.po-flagged{background-color:#bd2c00}#loco-editor .is-table .wg-cols>div>div.selected.po-fuzzy{background-color:#b59829}#loco-editor .is-table .wg-cols>div>div.selected.po-empty{background-color:#999}#loco-editor #po-target header nav{display:block;position:absolute;right:0px;top:0px;padding:2px}#loco-editor #po-target header nav button{margin-left:5px}#loco-editor #po-target header nav.po-empty .icon-cloud{display:none !important}#loco-editor #po-list .wg-content{padding:0}#loco-editor #po-source>.wg-body>.has-title>header{background:transparent;font-weight:normal;float:left;clear:none;min-width:3.4em}#loco-editor #po-source>.wg-body>.has-title>.wg-content{clear:none}#loco-editor .has-title>header{line-height:normal;padding:6px}#loco-editor .has-title>header .lang{margin-right:6px;margin-bottom:1px}#loco-editor .trg-rtl #po-list-tbody .wg-cols>div[for=po-list-col-target]>div,#loco-editor .src-rtl #po-list-tbody .wg-cols>div[for=po-list-col-source]>div{direction:rtl;padding-left:0;padding-right:10px;text-align:right}#loco-editor #po-source>.wg-body>.has-title>h2{min-width:4.5em}#loco-editor .is-table .wg-td{font-size:13px}#loco-editor header,#loco-editor nav{display:block;position:relative}#loco-editor-inner{min-height:600px;font-size:14px;clear:both}#loco-editor-inner>div.loco-loading{height:100px;background:transparent url(../img/spin-editor-button.gif?v=2.5.5) center 20px no-repeat}#loco-editor-inner h2{color:#000;line-height:1}#loco-editor-inner .wg-cell>.meta code{padding:0;color:#0073aa;background:inherit;cursor:pointer}#loco-editor-inner .wg-cell>.meta code:hover{text-decoration:underline}#loco-admin.wrap #loco-editor>nav{font-size:14px;height:50px}#loco-admin.wrap #loco-editor>nav form{display:block;float:left;clear:none;padding:0;margin:0}#loco-admin.wrap #loco-editor>nav form.aux{float:right;margin-right:5px}#loco-admin.wrap #loco-editor>nav fieldset{display:block;position:relative;float:left;clear:none}#loco-admin.wrap #loco-editor>nav button,#loco-admin.wrap #loco-editor>nav input[type=text]{display:block;position:relative;float:left;clear:none;margin:5px 0 0 5px;height:36px;text-align:left;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#loco-admin.wrap #loco-editor>nav input[type=text]{padding:0 10px;font-size:14px;line-height:normal}#loco-admin.wrap #loco-editor>nav .invalid input[type=text]:focus{border-color:#c00;-webkit-box-shadow:0 0 2px rgba(153,0,0,.5);-moz-box-shadow:0 0 2px rgba(153,0,0,.5);box-shadow:0 0 2px rgba(153,0,0,.5)}#loco-admin.wrap #loco-editor>nav .loco-clearable{padding:0 20px}#loco-admin.wrap #loco-editor>nav .loco-clearable.invalid a.clear:before{color:#c00}#loco-admin.wrap #loco-editor>nav .loco-clearable a.clear{right:25px;line-height:2}#loco-admin.wrap #loco-editor>nav .loco-clearable a.clear:focus{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}#loco-admin.wrap #loco-editor>nav .loco-clearable a.clear:hover:before{color:#c00}#loco-admin.wrap #loco-editor>nav .loco-clearable a.clear:active:before{color:#000}#loco-admin.wrap #loco-editor>nav button.only-icon{width:40px}#loco-admin.wrap button.has-icon:before{width:16px;padding:0}#loco-admin.wrap button.has-icon.loco-loading:before{content:" ";height:16px;background:transparent url(../img/spin-editor-button.gif?v=2.5.5) 0 0 no-repeat}#loco-admin.wrap .button,#loco-admin.wrap .button-link,#loco-admin.wrap input[type=text]{border-color:#aaa;color:#444}#loco-admin.wrap .button:hover,#loco-admin.wrap .button-link:hover{color:#000}#loco-admin.wrap .button-primary,#loco-admin.wrap .button-primary:hover{color:#fff}#loco-admin.wrap button.icon-translate:before{font-size:16px}.loco-modal .loco-api{position:relative;padding:10px;background:#f7f7f7;border:solid 1px #eee;font-size:14px;margin-bottom:16px}.loco-modal .loco-api p{padding:0;margin:0;font-size:inherit}.loco-modal .loco-api blockquote{font-weight:bold;margin:0;padding:10px 0}.loco-modal .loco-api a.loco-api-credit{padding:0;display:block;position:absolute;right:10px;bottom:10px;text-decoration:none;white-space:nowrap;overflow:hidden;font-size:12px}.loco-modal .loco-api a.loco-api-credit:hover{text-decoration:underline}.loco-modal .loco-api-loading{text-indent:20px;background:transparent url(../img/spin-modal.gif?v=2.5.5) 10px center no-repeat}.loco-modal .loco-alert p{margin-bottom:2em;font-size:14px}.loco-modal .loco-alert nav{display:block;position:relative;margin:1em 0}.loco-modal .loco-alert nav a{display:inline-block;margin-right:1em;padding:10px}#loco-auto{display:none;min-width:50%;min-height:300px;position:relative}#loco-auto form blockquote{margin:0;padding:1em 0;font-size:14px}.loco-api a.loco-api-credit{color:inherit}.loco-api-yandex a.loco-api-credit:before{content:"Powered by "}.loco-api-google a.loco-api-credit{text-indent:200px;width:122px;height:16px;background:transparent url(../img/api/google.png?v=2.5.5) 0 0 no-repeat}.loco-api-microsoft a.loco-api-credit{text-indent:200px;width:152px;height:16px;background:transparent url(../img/api/microsoft.png?v=2.5.5) 0 0 no-repeat}.loco-api-deepl a.loco-api-credit{text-indent:200px;width:122px;height:16px;background:transparent url(../img/api/deepl.png?v=2.5.5) 0 0 no-repeat}
1
+ #loco-editor{border:solid 1px #ccc}#loco-editor ._ajax_loader_f2{background-image:url(../img/ajax-loader-f2.gif?v=2.5.6);background-repeat:no-repeat;min-height:16px}#loco-editor ._ajax_loader_f2x4{background:transparent url(../img/ajax-loader-f2-x4.gif?v=2.5.6) 0 0 no-repeat;min-height:75px}#loco-editor ._ajax_loader_cc{background-image:url(../img/ajax-loader-cc.gif?v=2.5.6);background-repeat:no-repeat;min-height:16px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1),only screen and (min-device-pixel-ratio: 2),only screen and (min-resolution: 192dpi),only screen and (min-resolution: 2dppx){#loco-editor ._ajax_loader_f2{background-image:url(../img/ajax-loader-f2-x2.gif?v=2.5.6);background-size:16px}#loco-editor ._ajax_loader_cc{background-image:url(../img/ajax-loader-cc-x2.gif?v=2.5.6);background-size:16px}}#loco-editor ._green_glow_inner,#loco-editor .is-editable>.wg-content>textarea:focus,#loco-editor .is-editable>.wg-content.has-focus .ace_scroller,#loco-editor .is-editable>.wg-content.has-focus .wysihtml-editor,#loco-editor .is-editable>.wg-content.has-focus .mce-content-body{-webkit-box-shadow:inset 0 0 10px 0 #3db63d;-moz-box-shadow:inset 0 0 10px 0 #3db63d;box-shadow:inset 0 0 10px 0 #3db63d}#loco-editor ._green_glow_outer{-webkit-box-shadow:0 0 .5em 0 #3db63d;-moz-box-shadow:0 0 .5em 0 #3db63d;box-shadow:0 0 .5em 0 #3db63d}#loco-editor .loco-font,#loco-editor .is-table .wg-thead .wg-sortable>header:after{font-family:"loco";speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#loco-editor div.ta-mirror{position:absolute;top:0;border:solid 1px transparent;color:transparent;padding:.4em .6em;pointer-events:none}#loco-editor div.ta-mirror span{position:relative}#loco-editor div.ta-mirror span:after{color:#ccc;white-space:pre;display:inline-block;position:absolute;top:0;line-height:normal}#loco-editor div.ta-mirror .crlf:after{content:"¬"}#loco-editor div.ta-mirror .eof:after{content:"¶"}#loco-editor div.ta-mirror .x20:after{content:"·";color:#aaa}#loco-editor div.ta-mirror .x9:after{content:"⟶"}#loco-editor div.ta-mirror,#loco-editor .has-mirror textarea{white-space:pre-wrap;word-wrap:break-word;word-spacing:0px}#loco-editor .has-mirror ::placeholder{color:transparent}#loco-editor .has-mirror ::-webkit-input-placeholder{color:transparent}#loco-editor .has-mirror :-moz-placeholder{color:transparent;opacity:1}#loco-editor .has-mirror ::-moz-placeholder{color:transparent;opacity:1}#loco-editor .has-mirror :-ms-input-placeholder{color:transparent}#loco-editor .has-mirror .ielt10 .placeheld{color:transparent}#loco-editor div.ta-mirror{left:0;text-align:left}#loco-editor div.ta-mirror span:after{left:0}#loco-editor div.ta-mirror .eol:after{padding-left:.2em}#loco-editor [dir=RTL] div.ta-mirror{left:auto;right:0;text-align:right}#loco-editor [dir=RTL] div.ta-mirror span:after{right:0}#loco-editor [dir=RTL] div.ta-mirror .eol:after{padding-left:0;padding-right:.2em}#loco-editor .has-proxy>textarea{display:none !important}#loco-editor .has-proxy .ace_editor{height:100%;font-size:13px !important;line-height:1.4 !important}#loco-editor .has-proxy .ace_editor .ace_marker-layer .ace_bracket{display:none}#loco-editor .has-proxy .ace_print-margin{display:none}#loco-editor .ace_printf{color:#b90690;background-color:#edf1be}#loco-editor .ace_locked{color:gray}#loco-editor .ace_icu-quoted{color:gray}#loco-editor .ace_icu{color:#697eb9}#loco-editor .ace_icu.ace_name{color:#b90600}#loco-editor .resizer{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0 0 6px 0;background:#f0f0f0 url(../img/wg/splity.png?v=2.5.6) center bottom no-repeat;border:1px solid #ddd;overflow:hidden;cursor:move;cursor:row-resize;cursor:s-resize}#loco-editor .resizer>*{height:100%;border:none}#loco-editor ._ajax_loader_f2{background-image:url(../img/ajax-loader-f2.gif?v=2.5.6);background-repeat:no-repeat;min-height:16px}#loco-editor ._ajax_loader_f2x4{background:transparent url(../img/ajax-loader-f2-x4.gif?v=2.5.6) 0 0 no-repeat;min-height:75px}#loco-editor ._ajax_loader_cc{background-image:url(../img/ajax-loader-cc.gif?v=2.5.6);background-repeat:no-repeat;min-height:16px}@media only screen and (-webkit-min-device-pixel-ratio: 2),only screen and (min--moz-device-pixel-ratio: 2),only screen and (-o-min-device-pixel-ratio: 2/1),only screen and (min-device-pixel-ratio: 2),only screen and (min-resolution: 192dpi),only screen and (min-resolution: 2dppx){#loco-editor ._ajax_loader_f2{background-image:url(../img/ajax-loader-f2-x2.gif?v=2.5.6);background-size:16px}#loco-editor ._ajax_loader_cc{background-image:url(../img/ajax-loader-cc-x2.gif?v=2.5.6);background-size:16px}}#loco-editor ._green_glow_inner,#loco-editor .is-editable>.wg-content>textarea:focus,#loco-editor .is-editable>.wg-content.has-focus .ace_scroller,#loco-editor .is-editable>.wg-content.has-focus .wysihtml-editor,#loco-editor .is-editable>.wg-content.has-focus .mce-content-body{-webkit-box-shadow:inset 0 0 10px 0 #3db63d;-moz-box-shadow:inset 0 0 10px 0 #3db63d;box-shadow:inset 0 0 10px 0 #3db63d}#loco-editor ._green_glow_outer{-webkit-box-shadow:0 0 .5em 0 #3db63d;-moz-box-shadow:0 0 .5em 0 #3db63d;box-shadow:0 0 .5em 0 #3db63d}#loco-editor .loco-font,#loco-editor .is-table .wg-thead .wg-sortable>header:after{font-family:"loco";speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#loco-editor .wg-cell,#loco-editor .wg-cell>div{clear:both;position:relative;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;outline:none}#loco-editor .wg-cell{left:0;top:0;padding:0;margin:0;overflow:hidden}#loco-editor .wg-split{background:#eee}#loco-editor .wg-body:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}#loco-editor .wg-split-x>div>.not-first>*{margin-left:6px}#loco-editor .wg-split-y>div>.not-first>*{margin-top:6px}#loco-editor .wg-split>div>.has-title .wg-content{margin-top:0}#loco-editor .wg-split-x>div>.wg-cell{float:left;clear:none;height:100%}#loco-editor .wg-split-x>div{cursor:move;cursor:ew-resize;cursor:col-resize}#loco-editor .wg-split>div>.not-first:before{display:block;position:absolute;overflow:hidden;content:" "}#loco-editor .wg-split-x>div>.not-first:before{width:6px;height:100%;background:transparent url(../img/wg/splitx.png?v=2.5.6) center center no-repeat}#loco-editor .wg-split-y>div{cursor:move;cursor:ns-resize;cursor:row-resize}#loco-editor .wg-split-y>div>.not-first:before{height:6px;width:100%;background:transparent url(../img/wg/splity.png?v=2.5.6) center center no-repeat}#loco-editor .wg-split>div.locked{cursor:default}#loco-editor .wg-split-x>div.locked>.not-first>*{margin-left:0px}#loco-editor .wg-split-y>div.locked>.not-first>*{margin-top:0px}#loco-editor .wg-split>div.locked>.not-first:before{display:none}#loco-editor .has-title>header{background:#e2e2e2;cursor:default !important;margin:0;white-space:nowrap}#loco-editor .wg-content{background:#fff;cursor:default;padding:4px 6px;overflow:hidden;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#loco-editor .wg-toolbar{top:0;right:0;margin-top:6px;position:absolute}#loco-editor .wg-toolbar>span{color:#fff;background:#000;display:block;padding:0 6px;cursor:default !important}#loco-editor .wg-toolbar>span:active{color:#000;background-color:#fff}#loco-editor .wg-content,#loco-editor .wg-tbody>div{overflow:scroll;overflow-x:hidden;overflow-y:auto}#loco-editor .is-table{background-color:#fff}#loco-editor .is-table .wg-thead .has-title>header{font-weight:normal;background:transparent;padding:4px 0;margin:0 0 0 10px}#loco-editor .is-table .wg-thead>div>.not-first:before{background-position:center center}#loco-editor .is-table .wg-thead{background:#e2e2e2;border-bottom:solid 1px #ccc}#loco-editor .is-table .wg-tbody{background-image:url(data:image/gif;base64,R0lGODlhAQAsAIABAPz8/P///yH5BAEAAAEALAAAAAABACwAAAIIjI+pAe0PIygAOw==);position:relative}#loco-editor .is-table .wg-cols>div{float:left;clear:none}#loco-editor .is-table .wg-cols>div>div{white-space:nowrap;line-height:1.7em;padding-left:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-o-text-overflow:ellipsis;-ms-text-overflow:ellipsis;background-color:#fff}#loco-editor .is-table .wg-cols>div>div:nth-child(even){background-color:#f7f7f7}#loco-editor .is-table .wg-cols>div>div.selected{background-color:#3db63d;color:#fff}#loco-editor .is-table .wg-cols>div>div.selected::selection{background-color:#fff;color:#000}#loco-editor .is-table .wg-cols>div:first-child>div{padding-left:4px}#loco-editor .is-table .wg-dead{clear:both}#loco-editor .is-table .wg-thead .wg-sortable>header{cursor:pointer !important}#loco-editor .is-table .wg-thead .wg-sortable>header:after{padding:0 0 0 5px;color:#999}#loco-editor .is-table .wg-thead .wg-sortable.wg-asc>header:after{content:"▲"}#loco-editor .is-table .wg-thead .wg-sortable.wg-desc>header:after{content:"▼"}#loco-editor .is-table .wg-thead .wg-sortable:hover>header:after{color:#000}#loco-editor .is-field>.wg-content{cursor:text;padding:0;line-height:normal;overflow:hidden;overflow-y:hidden}#loco-editor .is-field>.wg-content>div,#loco-editor .is-field>.wg-content>textarea{font-size:14px;line-height:1.4;border:1px solid #ddd;width:100%;height:100%;padding:8px 10px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0}#loco-editor .is-field>.wg-content textarea{resize:none;overflow:auto;display:block}#loco-editor .is-field>.wg-content>.ace_editor{padding:0;border-width:0}#loco-editor .is-field>.wg-content>div[contenteditable]{overflow:scroll;overflow-x:hidden;overflow-y:auto}#loco-editor .is-readonly>.wg-content{cursor:default}#loco-editor .is-readonly>.wg-content>div,#loco-editor .is-readonly>.wg-content>textarea,#loco-editor .is-readonly>.wg-content>textarea[readonly]{background:#f8f8f8;text-shadow:0 1px #fff;color:inherit}#loco-editor .is-readonly>.wg-content .ace_scroller{cursor:default;background:#f8f8f8}#loco-editor .is-readonly>.wg-content .ace_cursor-layer{display:none}#loco-editor .is-readonly>.wg-content>textarea[readonly]{cursor:default}#loco-editor .is-editable>.wg-content[dir=RTL] .ace_editor .ace_line{direction:ltr;unicode-bidi:bidi-override}#loco-editor .wg-split-x>nav.wg-tabs{white-space:nowrap;text-align:center;cursor:default}#loco-editor .wg-split-x>nav.wg-tabs>a{display:inline-block;padding:.5em 1em;margin-top:.2em;color:#000;text-decoration:none;-webkit-border-radius:.2em .2em 0 0;-moz-border-radius:.2em .2em 0 0;-ms-border-radius:.2em .2em 0 0;-o-border-radius:.2em .2em 0 0;border-radius:.2em .2em 0 0;background-color:#f3f7fd}#loco-editor .wg-split-x>nav.wg-tabs>a:hover{background-color:#fff}#loco-editor .wg-split-x>nav.wg-tabs>a.active{background-color:#3db63d;color:#fff}#loco-editor .wg-split>div>.has-nav>.wg-body{margin-top:0px}#loco-editor .wg-dead{visibility:hidden}@media all and (max-width: 768px){#loco-editor .wg-split-x>div>.not-first>*{margin-left:20px}#loco-editor .wg-split-y>div>.not-first>*{margin-top:20px}#loco-editor .wg-split-x>div>.not-first:before{width:20px}#loco-editor .wg-split-y>div>.not-first:before{height:20px}#loco-editor .is-table .wg-thead header{padding-left:20px}}#loco-editor .is-table .po-fuzzy{color:#b59829;font-weight:bold}#loco-editor .is-table .po-empty{color:#1f507a;font-weight:bold}#loco-editor .is-table .po-flagged{color:#bd2c00}#loco-editor .is-table .wg-cols>div:first-child>div:before{font-family:loco;vertical-align:inherit;display:inline-block;content:" ";width:1.3em;line-height:1}#loco-editor .is-table .wg-cols>div:first-child>div.po-fuzzy:before{content:""}#loco-editor .is-table .wg-cols>div:first-child>div.po-flagged:before{content:""}#loco-editor .is-table .wg-cols>div:first-child>div.po-comment:before{content:"";color:#999}#loco-editor .is-table .wg-cols>div:first-child>div.po-unsaved:before{content:"";color:#f1d040}#loco-editor .is-table .wg-cols>div:first-child>div.selected:before{color:#fff !important}#loco-editor .wg-cell>.meta{color:#333;margin:0 !important;padding:6px 10px;font-weight:normal;font-size:13px;line-height:1.4em;cursor:default !important}#loco-editor .wg-cell>.meta>*{display:inline-block;margin-top:3px;margin-bottom:3px}#loco-editor .wg-cell>.meta>span{border:1px solid transparent;border-left:none}#loco-editor .wg-cell>.meta>mark{color:#fff;border-radius:2px;background-color:silver;border:1px solid silver;padding:0 .3em}#loco-editor .wg-cell>.meta>mark.tag{color:#999;background-color:#eee}#loco-editor .wg-cell>.meta>p{display:block;white-space:pre-line}#loco-editor .wg-cell>.meta .icon-warn{color:#c00}#loco-editor .wg-cell>.meta .has-icon:before{padding-right:0;width:17px}#loco-editor .wg-cell>.meta code{font-size:12px}#loco-editor .is-table .wg-cols>div>div>mark{display:inline-block;vertical-align:text-bottom;font:inherit;font-weight:normal;color:#fff;border-radius:2px;font-size:90%;line-height:1;padding:.2em .3em;background-color:rgba(0,0,0,.25)}#loco-editor .is-table .wg-cols>div>div.selected.po-flagged{background-color:#bd2c00}#loco-editor .is-table .wg-cols>div>div.selected.po-fuzzy{background-color:#b59829}#loco-editor .is-table .wg-cols>div>div.selected.po-empty{background-color:#999}#loco-editor #po-target header nav{display:block;position:absolute;right:0px;top:0px;padding:2px}#loco-editor #po-target header nav button{margin-left:5px}#loco-editor #po-target header nav.po-empty .icon-cloud{display:none !important}#loco-editor #po-list .wg-content{padding:0}#loco-editor #po-source>.wg-body>.has-title>header{background:transparent;font-weight:normal;float:left;clear:none;min-width:3.4em}#loco-editor #po-source>.wg-body>.has-title>.wg-content{clear:none}#loco-editor .has-title>header{line-height:normal;padding:6px}#loco-editor .has-title>header .lang{margin-right:6px;margin-bottom:1px}#loco-editor .trg-rtl #po-list-tbody .wg-cols>div[for=po-list-col-target]>div,#loco-editor .src-rtl #po-list-tbody .wg-cols>div[for=po-list-col-source]>div{direction:rtl;padding-left:0;padding-right:10px;text-align:right}#loco-editor #po-source>.wg-body>.has-title>h2{min-width:4.5em}#loco-editor .is-table .wg-td{font-size:13px}#loco-editor header,#loco-editor nav{display:block;position:relative}#loco-editor-inner{min-height:600px;font-size:14px;clear:both}#loco-editor-inner>div.loco-loading{height:100px;background:transparent url(../img/spin-editor-button.gif?v=2.5.6) center 20px no-repeat}#loco-editor-inner h2{color:#000;line-height:1}#loco-editor-inner .wg-cell>.meta code{padding:0;color:#0073aa;background:inherit;cursor:pointer}#loco-editor-inner .wg-cell>.meta code:hover{text-decoration:underline}#loco-admin.wrap #loco-editor>nav{font-size:14px;height:50px}#loco-admin.wrap #loco-editor>nav form{display:block;float:left;clear:none;padding:0;margin:0}#loco-admin.wrap #loco-editor>nav form.aux{float:right;margin-right:5px}#loco-admin.wrap #loco-editor>nav fieldset{display:block;position:relative;float:left;clear:none}#loco-admin.wrap #loco-editor>nav button,#loco-admin.wrap #loco-editor>nav input[type=text]{display:block;position:relative;float:left;clear:none;margin:5px 0 0 5px;height:36px;text-align:left;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#loco-admin.wrap #loco-editor>nav input[type=text]{padding:0 10px;font-size:14px;line-height:normal}#loco-admin.wrap #loco-editor>nav .invalid input[type=text]:focus{border-color:#c00;-webkit-box-shadow:0 0 2px rgba(153,0,0,.5);-moz-box-shadow:0 0 2px rgba(153,0,0,.5);box-shadow:0 0 2px rgba(153,0,0,.5)}#loco-admin.wrap #loco-editor>nav .loco-clearable{padding:0 20px}#loco-admin.wrap #loco-editor>nav .loco-clearable.invalid a.clear:before{color:#c00}#loco-admin.wrap #loco-editor>nav .loco-clearable a.clear{right:25px;line-height:2}#loco-admin.wrap #loco-editor>nav .loco-clearable a.clear:focus{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}#loco-admin.wrap #loco-editor>nav .loco-clearable a.clear:hover:before{color:#c00}#loco-admin.wrap #loco-editor>nav .loco-clearable a.clear:active:before{color:#000}#loco-admin.wrap #loco-editor>nav button.only-icon{width:40px}#loco-admin.wrap button.has-icon:before{width:16px;padding:0}#loco-admin.wrap button.has-icon.loco-loading:before{content:" ";height:16px;background:transparent url(../img/spin-editor-button.gif?v=2.5.6) 0 0 no-repeat}#loco-admin.wrap .button,#loco-admin.wrap .button-link,#loco-admin.wrap input[type=text]{border-color:#aaa;color:#444}#loco-admin.wrap .button:hover,#loco-admin.wrap .button-link:hover{color:#000}#loco-admin.wrap .button-primary,#loco-admin.wrap .button-primary:hover{color:#fff}#loco-admin.wrap button.icon-translate:before{font-size:16px}.loco-modal .loco-api{position:relative;padding:10px;background:#f7f7f7;border:solid 1px #eee;font-size:14px;margin-bottom:16px}.loco-modal .loco-api p{padding:0;margin:0;font-size:inherit}.loco-modal .loco-api blockquote{font-weight:bold;margin:0;padding:10px 0}.loco-modal .loco-api a.loco-api-credit{padding:0;display:block;position:absolute;right:10px;bottom:10px;text-decoration:none;white-space:nowrap;overflow:hidden;font-size:12px}.loco-modal .loco-api a.loco-api-credit:hover{text-decoration:underline}.loco-modal .loco-api-loading{text-indent:20px;background:transparent url(../img/spin-modal.gif?v=2.5.6) 10px center no-repeat}.loco-modal .loco-alert p{margin-bottom:2em;font-size:14px}.loco-modal .loco-alert nav{display:block;position:relative;margin:1em 0}.loco-modal .loco-alert nav a{display:inline-block;margin-right:1em;padding:10px}#loco-auto{display:none;min-width:50%;min-height:300px;position:relative}#loco-auto form blockquote{margin:0;padding:1em 0;font-size:14px}.loco-api a.loco-api-credit{color:inherit}.loco-api-yandex a.loco-api-credit:before{content:"Powered by "}.loco-api-google a.loco-api-credit{text-indent:200px;width:122px;height:16px;background:transparent url(../img/api/google.png?v=2.5.6) 0 0 no-repeat}.loco-api-microsoft a.loco-api-credit{text-indent:200px;width:152px;height:16px;background:transparent url(../img/api/microsoft.png?v=2.5.6) 0 0 no-repeat}.loco-api-deepl a.loco-api-credit{text-indent:200px;width:122px;height:16px;background:transparent url(../img/api/deepl.png?v=2.5.6) 0 0 no-repeat}
pub/css/podiff.css CHANGED
@@ -1 +1 @@
1
- #loco-admin.wrap .revisions-diff{padding:10px;min-height:20px}#loco-admin.wrap table.diff{border-collapse:collapse}#loco-admin.wrap table.diff td{white-space:nowrap;overflow:hidden;font:normal 12px/17px "Monaco","Menlo","Ubuntu Mono","Consolas","source-code-pro",monospace;padding:2px}#loco-admin.wrap table.diff td>span{color:#aaa}#loco-admin.wrap table.diff td>span:after{content:". "}#loco-admin.wrap table.diff tbody{border-top:1px dashed #ccc}#loco-admin.wrap table.diff tbody:first-child{border-top:none}#loco-admin.wrap .revisions.loading .diff-meta{color:#eee}#loco-admin.wrap .revisions.loading .loading-indicator span.spinner{visibility:visible;background:#fff url(../img/spin-modal.gif?v=2.5.5) center center no-repeat}#loco-admin.wrap .revisions-meta{clear:both;padding:10px 12px;margin:0;position:relative;top:10px}#loco-admin.wrap .revisions-meta .diff-meta{clear:none;float:left;width:50%;padding:0;min-height:auto}#loco-admin.wrap .revisions-meta .diff-meta button{margin-top:5px}#loco-admin.wrap .revisions-meta .diff-meta-current{float:right;text-align:right}#loco-admin.wrap .revisions-meta time{color:#72777c}#loco-admin.wrap .revisions-control-frame{margin:10px 0}#loco-admin.wrap .revisions-diff-frame{margin-top:20px}
1
+ #loco-admin.wrap .revisions-diff{padding:10px;min-height:20px}#loco-admin.wrap table.diff{border-collapse:collapse}#loco-admin.wrap table.diff td{white-space:nowrap;overflow:hidden;font:normal 12px/17px "Monaco","Menlo","Ubuntu Mono","Consolas","source-code-pro",monospace;padding:2px}#loco-admin.wrap table.diff td>span{color:#aaa}#loco-admin.wrap table.diff td>span:after{content:". "}#loco-admin.wrap table.diff tbody{border-top:1px dashed #ccc}#loco-admin.wrap table.diff tbody:first-child{border-top:none}#loco-admin.wrap .revisions.loading .diff-meta{color:#eee}#loco-admin.wrap .revisions.loading .loading-indicator span.spinner{visibility:visible;background:#fff url(../img/spin-modal.gif?v=2.5.6) center center no-repeat}#loco-admin.wrap .revisions-meta{clear:both;padding:10px 12px;margin:0;position:relative;top:10px}#loco-admin.wrap .revisions-meta .diff-meta{clear:none;float:left;width:50%;padding:0;min-height:auto}#loco-admin.wrap .revisions-meta .diff-meta button{margin-top:5px}#loco-admin.wrap .revisions-meta .diff-meta-current{float:right;text-align:right}#loco-admin.wrap .revisions-meta time{color:#72777c}#loco-admin.wrap .revisions-control-frame{margin:10px 0}#loco-admin.wrap .revisions-diff-frame{margin-top:20px}
pub/css/poview.css CHANGED
@@ -1 +1 @@
1
- .js #loco-admin.wrap .loco-loading{min-height:100px;background:#fff url(../img/spin-modal.gif?v=2.5.5) center center no-repeat}.js #loco-admin.wrap .loco-loading ol.msgcat{display:none}#loco-admin.wrap #loco-po{padding-right:0;overflow:auto}#loco-admin.wrap ol.msgcat{margin-left:3em;padding-top:1em;border-top:1px dashed #ccc}#loco-admin.wrap ol.msgcat:first-child{padding-top:0;border-top:none}#loco-admin.wrap ol.msgcat li{color:#aaa;margin:0;padding:0 0 0 1em;font:normal 12px/17px "Monaco","Menlo","Ubuntu Mono","Consolas","source-code-pro",monospace;border-left:1px solid #eee}#loco-admin.wrap ol.msgcat li>*{color:#333;white-space:pre}#loco-admin.wrap ol.msgcat li>.po-comment{color:#3cc200}#loco-admin.wrap ol.msgcat li>.po-refs{color:#0073aa}#loco-admin.wrap ol.msgcat li>.po-refs a{color:inherit;text-decoration:none}#loco-admin.wrap ol.msgcat li>.po-refs a:hover{text-decoration:underline}#loco-admin.wrap ol.msgcat li>.po-flags{color:#77904a}#loco-admin.wrap ol.msgcat li>.po-flags em{font-style:normal}#loco-admin.wrap ol.msgcat li>.po-word{color:#000}#loco-admin.wrap ol.msgcat li>.po-junk{font-style:italic;color:#ccc}#loco-admin.wrap ol.msgcat li>.po-string>span{color:#c931c7}#loco-admin.wrap form.loco-filter{top:0;right:0;position:absolute}#loco-admin.wrap .loco-invalid form.loco-filter input[type=text]:focus{border-color:#c00;-webkit-box-shadow:0 0 2px rgba(153,0,0,.5);-moz-box-shadow:0 0 2px rgba(153,0,0,.5);box-shadow:0 0 2px rgba(153,0,0,.5)}#loco-admin.wrap .loco-invalid ol.msgcat{list-style-type:none}#loco-admin.wrap .loco-invalid ol.msgcat li{color:#000}
1
+ .js #loco-admin.wrap .loco-loading{min-height:100px;background:#fff url(../img/spin-modal.gif?v=2.5.6) center center no-repeat}.js #loco-admin.wrap .loco-loading ol.msgcat{display:none}#loco-admin.wrap #loco-po{padding-right:0;overflow:auto}#loco-admin.wrap ol.msgcat{margin-left:3em;padding-top:1em;border-top:1px dashed #ccc}#loco-admin.wrap ol.msgcat:first-child{padding-top:0;border-top:none}#loco-admin.wrap ol.msgcat li{color:#aaa;margin:0;padding:0 0 0 1em;font:normal 12px/17px "Monaco","Menlo","Ubuntu Mono","Consolas","source-code-pro",monospace;border-left:1px solid #eee}#loco-admin.wrap ol.msgcat li>*{color:#333;white-space:pre}#loco-admin.wrap ol.msgcat li>.po-comment{color:#3cc200}#loco-admin.wrap ol.msgcat li>.po-refs{color:#0073aa}#loco-admin.wrap ol.msgcat li>.po-refs a{color:inherit;text-decoration:none}#loco-admin.wrap ol.msgcat li>.po-refs a:hover{text-decoration:underline}#loco-admin.wrap ol.msgcat li>.po-flags{color:#77904a}#loco-admin.wrap ol.msgcat li>.po-flags em{font-style:normal}#loco-admin.wrap ol.msgcat li>.po-word{color:#000}#loco-admin.wrap ol.msgcat li>.po-junk{font-style:italic;color:#ccc}#loco-admin.wrap ol.msgcat li>.po-string>span{color:#c931c7}#loco-admin.wrap form.loco-filter{top:0;right:0;position:absolute}#loco-admin.wrap .loco-invalid form.loco-filter input[type=text]:focus{border-color:#c00;-webkit-box-shadow:0 0 2px rgba(153,0,0,.5);-moz-box-shadow:0 0 2px rgba(153,0,0,.5);box-shadow:0 0 2px rgba(153,0,0,.5)}#loco-admin.wrap .loco-invalid ol.msgcat{list-style-type:none}#loco-admin.wrap .loco-invalid ol.msgcat li{color:#000}
pub/css/skins/blue.css CHANGED
@@ -1 +1 @@
1
- .wrap #loco-editor .is-table .wg-tr:nth-child(even){background-color:rgba(9,100,132,.05)}.wrap #loco-editor .wg-split-x>nav.wg-tabs>a.active,.wrap #loco-editor .is-table .wg-cols>div>div.selected{background-color:#096484;foo:#096484}.wrap #loco-editor .is-editable>.wg-content>textarea:focus,.wrap #loco-editor .is-editable>.wg-content.has-focus .ace_scroller,.wrap #loco-editor .is-editable>.wg-content.has-focus .mce-content-body{border-color:#5b9dd9;-webkit-box-shadow:inset 0 0 .6em rgba(30,140,190,.8);-moz-box-shadow:inset 0 0 .6em rgba(30,140,190,.8);box-shadow:inset 0 0 .6em rgba(30,140,190,.8)}.wp-core-ui .button-primary.loco-loading[disabled]{color:#d1cdc7 !important;background:#db9925 !important;border-color:#db9925 !important}.wp-core-ui .button-primary.loco-loading[disabled]:before{background:transparent url(../../img/skins/blue/spin-primary-button.gif?v=2.5.5) 0 0 no-repeat !important}
1
+ .wrap #loco-editor .is-table .wg-tr:nth-child(even){background-color:rgba(9,100,132,.05)}.wrap #loco-editor .wg-split-x>nav.wg-tabs>a.active,.wrap #loco-editor .is-table .wg-cols>div>div.selected{background-color:#096484;foo:#096484}.wrap #loco-editor .is-editable>.wg-content>textarea:focus,.wrap #loco-editor .is-editable>.wg-content.has-focus .ace_scroller,.wrap #loco-editor .is-editable>.wg-content.has-focus .mce-content-body{border-color:#5b9dd9;-webkit-box-shadow:inset 0 0 .6em rgba(30,140,190,.8);-moz-box-shadow:inset 0 0 .6em rgba(30,140,190,.8);box-shadow:inset 0 0 .6em rgba(30,140,190,.8)}.wp-core-ui .button-primary.loco-loading[disabled]{color:#d1cdc7 !important;background:#db9925 !important;border-color:#db9925 !important}.wp-core-ui .button-primary.loco-loading[disabled]:before{background:transparent url(../../img/skins/blue/spin-primary-button.gif?v=2.5.6) 0 0 no-repeat !important}
pub/css/skins/coffee.css CHANGED
@@ -1 +1 @@
1
- .wrap #loco-editor .is-table .wg-tr:nth-child(even){background-color:rgba(199,165,137,.05)}.wrap #loco-editor .wg-split-x>nav.wg-tabs>a.active,.wrap #loco-editor .is-table .wg-cols>div>div.selected{background-color:#c7a589;foo:#c7a589}.wrap #loco-editor .is-editable>.wg-content>textarea:focus,.wrap #loco-editor .is-editable>.wg-content.has-focus .ace_scroller,.wrap #loco-editor .is-editable>.wg-content.has-focus .mce-content-body{border-color:#5b9dd9;-webkit-box-shadow:inset 0 0 .6em rgba(30,140,190,.8);-moz-box-shadow:inset 0 0 .6em rgba(30,140,190,.8);box-shadow:inset 0 0 .6em rgba(30,140,190,.8)}.wp-core-ui .button-primary.loco-loading[disabled]{color:#d1ccc7 !important;background:#ba906d !important;border-color:#ba906d !important}.wp-core-ui .button-primary.loco-loading[disabled]:before{background:transparent url(../../img/skins/coffee/spin-primary-button.gif?v=2.5.5) 0 0 no-repeat !important}
1
+ .wrap #loco-editor .is-table .wg-tr:nth-child(even){background-color:rgba(199,165,137,.05)}.wrap #loco-editor .wg-split-x>nav.wg-tabs>a.active,.wrap #loco-editor .is-table .wg-cols>div>div.selected{background-color:#c7a589;foo:#c7a589}.wrap #loco-editor .is-editable>.wg-content>textarea:focus,.wrap #loco-editor .is-editable>.wg-content.has-focus .ace_scroller,.wrap #loco-editor .is-editable>.wg-content.has-focus .mce-content-body{border-color:#5b9dd9;-webkit-box-shadow:inset 0 0 .6em rgba(30,140,190,.8);-moz-box-shadow:inset 0 0 .6em rgba(30,140,190,.8);box-shadow:inset 0 0 .6em rgba(30,140,190,.8)}.wp-core-ui .button-primary.loco-loading[disabled]{color:#d1ccc7 !important;background:#ba906d !important;border-color:#ba906d !important}.wp-core-ui .button-primary.loco-loading[disabled]:before{background:transparent url(../../img/skins/coffee/spin-primary-button.gif?v=2.5.6) 0 0 no-repeat !important}
pub/css/skins/ectoplasm.css CHANGED
@@ -1 +1 @@
1
- .wrap #loco-editor .is-table .wg-tr:nth-child(even){background-color:rgba(163,183,69,.05)}.wrap #loco-editor .wg-split-x>nav.wg-tabs>a.active,.wrap #loco-editor .is-table .wg-cols>div>div.selected{background-color:#a3b745;foo:#a3b745}.wrap #loco-editor .is-editable>.wg-content>textarea:focus,.wrap #loco-editor .is-editable>.wg-content.has-focus .ace_scroller,.wrap #loco-editor .is-editable>.wg-content.has-focus .mce-content-body{border-color:#5b9dd9;-webkit-box-shadow:inset 0 0 .6em rgba(30,140,190,.8);-moz-box-shadow:inset 0 0 .6em rgba(30,140,190,.8);box-shadow:inset 0 0 .6em rgba(30,140,190,.8)}.wp-core-ui .button-primary.loco-loading[disabled]{color:#cfd1c7 !important;background:#89993a !important;border-color:#89993a !important}.wp-core-ui .button-primary.loco-loading[disabled]:before{background:transparent url(../../img/skins/ectoplasm/spin-primary-button.gif?v=2.5.5) 0 0 no-repeat !important}
1
+ .wrap #loco-editor .is-table .wg-tr:nth-child(even){background-color:rgba(163,183,69,.05)}.wrap #loco-editor .wg-split-x>nav.wg-tabs>a.active,.wrap #loco-editor .is-table .wg-cols>div>div.selected{background-color:#a3b745;foo:#a3b745}.wrap #loco-editor .is-editable>.wg-content>textarea:focus,.wrap #loco-editor .is-editable>.wg-content.has-focus .ace_scroller,.wrap #loco-editor .is-editable>.wg-content.has-focus .mce-content-body{border-color:#5b9dd9;-webkit-box-shadow:inset 0 0 .6em rgba(30,140,190,.8);-moz-box-shadow:inset 0 0 .6em rgba(30,140,190,.8);box-shadow:inset 0 0 .6em rgba(30,140,190,.8)}.wp-core-ui .button-primary.loco-loading[disabled]{color:#cfd1c7 !important;background:#89993a !important;border-color:#89993a !important}.wp-core-ui .button-primary.loco-loading[disabled]:before{background:transparent url(../../img/skins/ectoplasm/spin-primary-button.gif?v=2.5.6) 0 0 no-repeat !important}
pub/css/skins/light.css CHANGED
@@ -1 +1 @@
1
- .wrap #loco-editor .is-table .wg-tr:nth-child(even){background-color:rgba(136,136,136,.05)}.wrap #loco-editor .wg-split-x>nav.wg-tabs>a.active,.wrap #loco-editor .is-table .wg-cols>div>div.selected{background-color:#888;foo:#04a4cc}.wrap #loco-editor .is-editable>.wg-content>textarea:focus,.wrap #loco-editor .is-editable>.wg-content.has-focus .ace_scroller,.wrap #loco-editor .is-editable>.wg-content.has-focus .mce-content-body{border-color:#5b9dd9;-webkit-box-shadow:inset 0 0 .6em rgba(30,140,190,.8);-moz-box-shadow:inset 0 0 .6em rgba(30,140,190,.8);box-shadow:inset 0 0 .6em rgba(30,140,190,.8)}.wp-core-ui .button-primary.loco-loading[disabled]{color:#c7cfd1 !important;background:#0384a4 !important;border-color:#0384a4 !important}.wp-core-ui .button-primary.loco-loading[disabled]:before{background:transparent url(../../img/skins/light/spin-primary-button.gif?v=2.5.5) 0 0 no-repeat !important}
1
+ .wrap #loco-editor .is-table .wg-tr:nth-child(even){background-color:rgba(136,136,136,.05)}.wrap #loco-editor .wg-split-x>nav.wg-tabs>a.active,.wrap #loco-editor .is-table .wg-cols>div>div.selected{background-color:#888;foo:#04a4cc}.wrap #loco-editor .is-editable>.wg-content>textarea:focus,.wrap #loco-editor .is-editable>.wg-content.has-focus .ace_scroller,.wrap #loco-editor .is-editable>.wg-content.has-focus .mce-content-body{border-color:#5b9dd9;-webkit-box-shadow:inset 0 0 .6em rgba(30,140,190,.8);-moz-box-shadow:inset 0 0 .6em rgba(30,140,190,.8);box-shadow:inset 0 0 .6em rgba(30,140,190,.8)}.wp-core-ui .button-primary.loco-loading[disabled]{color:#c7cfd1 !important;background:#0384a4 !important;border-color:#0384a4 !important}.wp-core-ui .button-primary.loco-loading[disabled]:before{background:transparent url(../../img/skins/light/spin-primary-button.gif?v=2.5.6) 0 0 no-repeat !important}
pub/css/skins/midnight.css CHANGED
@@ -1 +1 @@
1
- .wrap #loco-editor .is-table .wg-tr:nth-child(even){background-color:rgba(225,77,67,.05)}.wrap #loco-editor .wg-split-x>nav.wg-tabs>a.active,.wrap #loco-editor .is-table .wg-cols>div>div.selected{background-color:#e14d43;foo:#e14d43}.wrap #loco-editor .is-editable>.wg-content>textarea:focus,.wrap #loco-editor .is-editable>.wg-content.has-focus .ace_scroller,.wrap #loco-editor .is-editable>.wg-content.has-focus .mce-content-body{border-color:#5b9dd9;-webkit-box-shadow:inset 0 0 .6em rgba(30,140,190,.8);-moz-box-shadow:inset 0 0 .6em rgba(30,140,190,.8);box-shadow:inset 0 0 .6em rgba(30,140,190,.8)}.wp-core-ui .button-primary.loco-loading[disabled]{color:#d1c8c7 !important;background:#d92e23 !important;border-color:#d92e23 !important}.wp-core-ui .button-primary.loco-loading[disabled]:before{background:transparent url(../../img/skins/midnight/spin-primary-button.gif?v=2.5.5) 0 0 no-repeat !important}
1
+ .wrap #loco-editor .is-table .wg-tr:nth-child(even){background-color:rgba(225,77,67,.05)}.wrap #loco-editor .wg-split-x>nav.wg-tabs>a.active,.wrap #loco-editor .is-table .wg-cols>div>div.selected{background-color:#e14d43;foo:#e14d43}.wrap #loco-editor .is-editable>.wg-content>textarea:focus,.wrap #loco-editor .is-editable>.wg-content.has-focus .ace_scroller,.wrap #loco-editor .is-editable>.wg-content.has-focus .mce-content-body{border-color:#5b9dd9;-webkit-box-shadow:inset 0 0 .6em rgba(30,140,190,.8);-moz-box-shadow:inset 0 0 .6em rgba(30,140,190,.8);box-shadow:inset 0 0 .6em rgba(30,140,190,.8)}.wp-core-ui .button-primary.loco-loading[disabled]{color:#d1c8c7 !important;background:#d92e23 !important;border-color:#d92e23 !important}.wp-core-ui .button-primary.loco-loading[disabled]:before{background:transparent url(../../img/skins/midnight/spin-primary-button.gif?v=2.5.6) 0 0 no-repeat !important}
pub/css/skins/modern.css CHANGED
@@ -1 +1 @@
1
- .wrap #loco-editor .is-table .wg-tr:nth-child(even){background-color:rgba(56,88,233,.05)}.wrap #loco-editor .wg-split-x>nav.wg-tabs>a.active,.wrap #loco-editor .is-table .wg-cols>div>div.selected{background-color:#3858e9;foo:#3858e9}.wrap #loco-editor .is-editable>.wg-content>textarea:focus,.wrap #loco-editor .is-editable>.wg-content.has-focus .ace_scroller,.wrap #loco-editor .is-editable>.wg-content.has-focus .mce-content-body{border-color:#5b9dd9;-webkit-box-shadow:inset 0 0 .6em rgba(30,140,190,.8);-moz-box-shadow:inset 0 0 .6em rgba(30,140,190,.8);box-shadow:inset 0 0 .6em rgba(30,140,190,.8)}.wp-core-ui .button-primary.loco-loading[disabled]{color:#c7c9d1 !important;background:#193ddf !important;border-color:#193ddf !important}.wp-core-ui .button-primary.loco-loading[disabled]:before{background:transparent url(../../img/skins/modern/spin-primary-button.gif?v=2.5.5) 0 0 no-repeat !important}
1
+ .wrap #loco-editor .is-table .wg-tr:nth-child(even){background-color:rgba(56,88,233,.05)}.wrap #loco-editor .wg-split-x>nav.wg-tabs>a.active,.wrap #loco-editor .is-table .wg-cols>div>div.selected{background-color:#3858e9;foo:#3858e9}.wrap #loco-editor .is-editable>.wg-content>textarea:focus,.wrap #loco-editor .is-editable>.wg-content.has-focus .ace_scroller,.wrap #loco-editor .is-editable>.wg-content.has-focus .mce-content-body{border-color:#5b9dd9;-webkit-box-shadow:inset 0 0 .6em rgba(30,140,190,.8);-moz-box-shadow:inset 0 0 .6em rgba(30,140,190,.8);box-shadow:inset 0 0 .6em rgba(30,140,190,.8)}.wp-core-ui .button-primary.loco-loading[disabled]{color:#c7c9d1 !important;background:#193ddf !important;border-color:#193ddf !important}.wp-core-ui .button-primary.loco-loading[disabled]:before{background:transparent url(../../img/skins/modern/spin-primary-button.gif?v=2.5.6) 0 0 no-repeat !important}
pub/css/skins/ocean.css CHANGED
@@ -1 +1 @@
1
- .wrap #loco-editor .is-table .wg-tr:nth-child(even){background-color:rgba(158,186,160,.05)}.wrap #loco-editor .wg-split-x>nav.wg-tabs>a.active,.wrap #loco-editor .is-table .wg-cols>div>div.selected{background-color:#9ebaa0;foo:#9ebaa0}.wrap #loco-editor .is-editable>.wg-content>textarea:focus,.wrap #loco-editor .is-editable>.wg-content.has-focus .ace_scroller,.wrap #loco-editor .is-editable>.wg-content.has-focus .mce-content-body{border-color:#5b9dd9;-webkit-box-shadow:inset 0 0 .6em rgba(30,140,190,.8);-moz-box-shadow:inset 0 0 .6em rgba(30,140,190,.8);box-shadow:inset 0 0 .6em rgba(30,140,190,.8)}.wp-core-ui .button-primary.loco-loading[disabled]{color:#c7d1c8 !important;background:#86a989 !important;border-color:#86a989 !important}.wp-core-ui .button-primary.loco-loading[disabled]:before{background:transparent url(../../img/skins/ocean/spin-primary-button.gif?v=2.5.5) 0 0 no-repeat !important}
1
+ .wrap #loco-editor .is-table .wg-tr:nth-child(even){background-color:rgba(158,186,160,.05)}.wrap #loco-editor .wg-split-x>nav.wg-tabs>a.active,.wrap #loco-editor .is-table .wg-cols>div>div.selected{background-color:#9ebaa0;foo:#9ebaa0}.wrap #loco-editor .is-editable>.wg-content>textarea:focus,.wrap #loco-editor .is-editable>.wg-content.has-focus .ace_scroller,.wrap #loco-editor .is-editable>.wg-content.has-focus .mce-content-body{border-color:#5b9dd9;-webkit-box-shadow:inset 0 0 .6em rgba(30,140,190,.8);-moz-box-shadow:inset 0 0 .6em rgba(30,140,190,.8);box-shadow:inset 0 0 .6em rgba(30,140,190,.8)}.wp-core-ui .button-primary.loco-loading[disabled]{color:#c7d1c8 !important;background:#86a989 !important;border-color:#86a989 !important}.wp-core-ui .button-primary.loco-loading[disabled]:before{background:transparent url(../../img/skins/ocean/spin-primary-button.gif?v=2.5.6) 0 0 no-repeat !important}
pub/css/skins/sunrise.css CHANGED
@@ -1 +1 @@
1
- .wrap #loco-editor .is-table .wg-tr:nth-child(even){background-color:rgba(221,130,59,.05)}.wrap #loco-editor .wg-split-x>nav.wg-tabs>a.active,.wrap #loco-editor .is-table .wg-cols>div>div.selected{background-color:#dd823b;foo:#dd823b}.wrap #loco-editor .is-editable>.wg-content>textarea:focus,.wrap #loco-editor .is-editable>.wg-content.has-focus .ace_scroller,.wrap #loco-editor .is-editable>.wg-content.has-focus .mce-content-body{border-color:#5b9dd9;-webkit-box-shadow:inset 0 0 .6em rgba(30,140,190,.8);-moz-box-shadow:inset 0 0 .6em rgba(30,140,190,.8);box-shadow:inset 0 0 .6em rgba(30,140,190,.8)}.wp-core-ui .button-primary.loco-loading[disabled]{color:#d1cbc7 !important;background:#cc6d23 !important;border-color:#cc6d23 !important}.wp-core-ui .button-primary.loco-loading[disabled]:before{background:transparent url(../../img/skins/sunrise/spin-primary-button.gif?v=2.5.5) 0 0 no-repeat !important}
1
+ .wrap #loco-editor .is-table .wg-tr:nth-child(even){background-color:rgba(221,130,59,.05)}.wrap #loco-editor .wg-split-x>nav.wg-tabs>a.active,.wrap #loco-editor .is-table .wg-cols>div>div.selected{background-color:#dd823b;foo:#dd823b}.wrap #loco-editor .is-editable>.wg-content>textarea:focus,.wrap #loco-editor .is-editable>.wg-content.has-focus .ace_scroller,.wrap #loco-editor .is-editable>.wg-content.has-focus .mce-content-body{border-color:#5b9dd9;-webkit-box-shadow:inset 0 0 .6em rgba(30,140,190,.8);-moz-box-shadow:inset 0 0 .6em rgba(30,140,190,.8);box-shadow:inset 0 0 .6em rgba(30,140,190,.8)}.wp-core-ui .button-primary.loco-loading[disabled]{color:#d1cbc7 !important;background:#cc6d23 !important;border-color:#cc6d23 !important}.wp-core-ui .button-primary.loco-loading[disabled]:before{background:transparent url(../../img/skins/sunrise/spin-primary-button.gif?v=2.5.6) 0 0 no-repeat !important}
pub/font/loco.eot CHANGED
Binary file
pub/font/loco.svg CHANGED
@@ -94,6 +94,7 @@
94
  <glyph unicode="&#xe904;" glyph-name="share" d="M864 256c-45.16 0-85.92-18.738-115.012-48.83l-431.004 215.502c1.314 8.252 2.016 16.706 2.016 25.328s-0.702 17.076-2.016 25.326l431.004 215.502c29.092-30.090 69.852-48.828 115.012-48.828 88.366 0 160 71.634 160 160s-71.634 160-160 160-160-71.634-160-160c0-8.622 0.704-17.076 2.016-25.326l-431.004-215.504c-29.092 30.090-69.852 48.83-115.012 48.83-88.366 0-160-71.636-160-160 0-88.368 71.634-160 160-160 45.16 0 85.92 18.738 115.012 48.828l431.004-215.502c-1.312-8.25-2.016-16.704-2.016-25.326 0-88.368 71.634-160 160-160s160 71.632 160 160c0 88.364-71.634 160-160 160z" />
95
  <glyph unicode="&#xe906;" glyph-name="notag" d="M949.632 482.994l-408.455 410.066c-10.94 10.997-25.826 17.163-41.323 17.163h-384.156c-32.215 0-58.347-26.132-58.347-58.404v-384.128c0-15.497 6.165-30.354 17.108-41.296l409.289-409.316c11.385-11.385 26.327-17.079 41.239-17.079s29.854 5.694 41.239 17.079l383.323 383.351c22.773 22.772 22.8 59.737 0.084 82.564zM810.028 421.731l-264.964-264.964c-11.109-11.108-29.074-11.108-40.156 0l-333.863 333.89v277.349c0 15.691 12.718 28.437 28.382 28.437h277.46l333.168-334.5c11.108-11.109 11.052-29.104-0.027-40.213zM455.198 597.326c0-47.127-38.185-85.34-85.257-85.34-47.1 0-85.257 38.213-85.257 85.34 0 47.129 38.156 85.34 85.257 85.34 47.070 0 85.257-38.212 85.257-85.34z" />
96
  <glyph unicode="&#xf062;" glyph-name="arrow-up" horiz-adv-x="951" d="M30.286 396q0 30.286 21.714 52l372 372q20 21.143 51.429 21.143 30.857 0 52-21.143l372-372q21.143-22.286 21.143-52 0-29.143-21.143-51.429l-42.857-42.857q-21.714-21.714-52-21.714-30.857 0-51.429 21.714l-168 167.429v-402.286q0-29.714-21.429-48.286t-51.714-18.571h-73.143q-30.286 0-51.714 18.571t-21.429 48.286v402.286l-168-167.429q-20.571-21.714-51.429-21.714t-51.429 21.714l-42.857 42.857q-21.714 21.714-21.714 51.429z" />
 
97
  <glyph unicode="&#xf09d;" glyph-name="ccard" horiz-adv-x="1097" d="M0 91.428v694.857q0 37.714 26.857 64.571t64.571 26.857h914.286q37.714 0 64.571-26.857t26.857-64.571v-694.857q0-37.714-26.857-64.571t-64.571-26.857h-914.286q-37.714 0-64.571 26.857t-26.857 64.571zM73.143 91.428q0-7.429 5.429-12.857t12.857-5.429h914.286q7.429 0 12.857 5.429t5.429 12.857v347.429h-950.857v-347.429zM73.143 658.286h950.857v128q0 7.429-5.429 12.857t-12.857 5.429h-914.286q-7.429 0-12.857-5.429t-5.429-12.857v-128zM146.286 146.286v73.143h146.286v-73.143h-146.286zM365.714 146.286v73.143h219.429v-73.143h-219.429z" />
98
  <glyph unicode="&#xf0f3;" glyph-name="bell" horiz-adv-x="951" d="M0 146.286q108.571 92 164 227.143t55.429 284.857q0 94.286 54.857 149.714t150.857 66.857q-4.571 10.286-4.571 21.143 0 22.857 16 38.857t38.857 16 38.857-16 16-38.857q0-10.857-4.571-21.143 96-11.429 150.857-66.857t54.857-149.714q0-149.714 55.429-284.857t164-227.143q0-29.714-21.714-51.429t-51.429-21.714h-256q0-60.571-42.857-103.429t-103.429-42.857-103.429 42.857-42.857 103.429h-256q-29.714 0-51.429 21.714t-21.714 51.429zM374.857 73.143q0-41.714 29.429-71.143t71.143-29.429q9.143 0 9.143 9.143t-9.143 9.143q-33.714 0-58 24.286t-24.286 58q0 9.143-9.143 9.143t-9.143-9.143z" />
99
  <glyph unicode="&#xf121;" glyph-name="code" horiz-adv-x="1097" d="M25.714 402.286q0 7.429 5.714 13.143l266.286 266.286q5.714 5.714 13.143 5.714t13.143-5.714l28.571-28.571q5.714-5.714 5.714-13.143t-5.714-13.143l-224.571-224.571 224.571-224.571q5.714-5.714 5.714-13.143t-5.714-13.143l-28.571-28.571q-5.714-5.714-13.143-5.714t-13.143 5.714l-266.286 266.286q-5.714 5.714-5.714 13.143zM406.857 43.428l213.143 737.714q2.286 7.429 8.857 11.143t13.429 1.429l35.429-9.714q7.429-2.286 11.143-8.857t1.429-14l-213.143-737.714q-2.286-7.429-8.857-11.143t-13.429-1.429l-35.429 9.714q-7.429 2.286-11.143 8.857t-1.429 14zM738.857 164.571q0 7.429 5.714 13.143l224.571 224.571-224.571 224.571q-5.714 5.714-5.714 13.143t5.714 13.143l28.571 28.571q5.714 5.714 13.143 5.714t13.143-5.714l266.286-266.286q5.714-5.714 5.714-13.143t-5.714-13.143l-266.286-266.286q-5.714-5.714-13.143-5.714t-13.143 5.714l-28.571 28.571q-5.714 5.714-5.714 13.143z" />
94
  <glyph unicode="&#xe904;" glyph-name="share" d="M864 256c-45.16 0-85.92-18.738-115.012-48.83l-431.004 215.502c1.314 8.252 2.016 16.706 2.016 25.328s-0.702 17.076-2.016 25.326l431.004 215.502c29.092-30.090 69.852-48.828 115.012-48.828 88.366 0 160 71.634 160 160s-71.634 160-160 160-160-71.634-160-160c0-8.622 0.704-17.076 2.016-25.326l-431.004-215.504c-29.092 30.090-69.852 48.83-115.012 48.83-88.366 0-160-71.636-160-160 0-88.368 71.634-160 160-160 45.16 0 85.92 18.738 115.012 48.828l431.004-215.502c-1.312-8.25-2.016-16.704-2.016-25.326 0-88.368 71.634-160 160-160s160 71.632 160 160c0 88.364-71.634 160-160 160z" />
95
  <glyph unicode="&#xe906;" glyph-name="notag" d="M949.632 482.994l-408.455 410.066c-10.94 10.997-25.826 17.163-41.323 17.163h-384.156c-32.215 0-58.347-26.132-58.347-58.404v-384.128c0-15.497 6.165-30.354 17.108-41.296l409.289-409.316c11.385-11.385 26.327-17.079 41.239-17.079s29.854 5.694 41.239 17.079l383.323 383.351c22.773 22.772 22.8 59.737 0.084 82.564zM810.028 421.731l-264.964-264.964c-11.109-11.108-29.074-11.108-40.156 0l-333.863 333.89v277.349c0 15.691 12.718 28.437 28.382 28.437h277.46l333.168-334.5c11.108-11.109 11.052-29.104-0.027-40.213zM455.198 597.326c0-47.127-38.185-85.34-85.257-85.34-47.1 0-85.257 38.213-85.257 85.34 0 47.129 38.156 85.34 85.257 85.34 47.070 0 85.257-38.212 85.257-85.34z" />
96
  <glyph unicode="&#xf062;" glyph-name="arrow-up" horiz-adv-x="951" d="M30.286 396q0 30.286 21.714 52l372 372q20 21.143 51.429 21.143 30.857 0 52-21.143l372-372q21.143-22.286 21.143-52 0-29.143-21.143-51.429l-42.857-42.857q-21.714-21.714-52-21.714-30.857 0-51.429 21.714l-168 167.429v-402.286q0-29.714-21.429-48.286t-51.714-18.571h-73.143q-30.286 0-51.714 18.571t-21.429 48.286v402.286l-168-167.429q-20.571-21.714-51.429-21.714t-51.429 21.714l-42.857 42.857q-21.714 21.714-21.714 51.429z" />
97
+ <glyph unicode="&#xf073;" glyph-name="calendar" horiz-adv-x="951" d="M0 0v731.429q0 29.714 21.714 51.429t51.429 21.714h73.143v54.857q0 37.714 26.857 64.571t64.571 26.857h36.571q37.714 0 64.571-26.857t26.857-64.571v-54.857h219.429v54.857q0 37.714 26.857 64.571t64.571 26.857h36.571q37.714 0 64.571-26.857t26.857-64.571v-54.857h73.143q29.714 0 51.429-21.714t21.714-51.429v-731.429q0-29.714-21.714-51.429t-51.429-21.714h-804.571q-29.714 0-51.429 21.714t-21.714 51.429zM73.143 0h164.571v164.571h-164.571v-164.571zM73.143 201.143h164.571v182.857h-164.571v-182.857zM73.143 420.571h164.571v164.571h-164.571v-164.571zM219.429 694.857q0-7.429 5.429-12.857t12.857-5.429h36.571q7.429 0 12.857 5.429t5.429 12.857v164.571q0 7.429-5.429 12.857t-12.857 5.429h-36.571q-7.429 0-12.857-5.429t-5.429-12.857v-164.571zM274.286 0h182.857v164.571h-182.857v-164.571zM274.286 201.143h182.857v182.857h-182.857v-182.857zM274.286 420.571h182.857v164.571h-182.857v-164.571zM493.714 0h182.857v164.571h-182.857v-164.571zM493.714 201.143h182.857v182.857h-182.857v-182.857zM493.714 420.571h182.857v164.571h-182.857v-164.571zM658.286 694.857q0-7.429 5.429-12.857t12.857-5.429h36.571q7.429 0 12.857 5.429t5.429 12.857v164.571q0 7.429-5.429 12.857t-12.857 5.429h-36.571q-7.429 0-12.857-5.429t-5.429-12.857v-164.571zM713.143 0h164.571v164.571h-164.571v-164.571zM713.143 201.143h164.571v182.857h-164.571v-182.857zM713.143 420.571h164.571v164.571h-164.571v-164.571z" />
98
  <glyph unicode="&#xf09d;" glyph-name="ccard" horiz-adv-x="1097" d="M0 91.428v694.857q0 37.714 26.857 64.571t64.571 26.857h914.286q37.714 0 64.571-26.857t26.857-64.571v-694.857q0-37.714-26.857-64.571t-64.571-26.857h-914.286q-37.714 0-64.571 26.857t-26.857 64.571zM73.143 91.428q0-7.429 5.429-12.857t12.857-5.429h914.286q7.429 0 12.857 5.429t5.429 12.857v347.429h-950.857v-347.429zM73.143 658.286h950.857v128q0 7.429-5.429 12.857t-12.857 5.429h-914.286q-7.429 0-12.857-5.429t-5.429-12.857v-128zM146.286 146.286v73.143h146.286v-73.143h-146.286zM365.714 146.286v73.143h219.429v-73.143h-219.429z" />
99
  <glyph unicode="&#xf0f3;" glyph-name="bell" horiz-adv-x="951" d="M0 146.286q108.571 92 164 227.143t55.429 284.857q0 94.286 54.857 149.714t150.857 66.857q-4.571 10.286-4.571 21.143 0 22.857 16 38.857t38.857 16 38.857-16 16-38.857q0-10.857-4.571-21.143 96-11.429 150.857-66.857t54.857-149.714q0-149.714 55.429-284.857t164-227.143q0-29.714-21.714-51.429t-51.429-21.714h-256q0-60.571-42.857-103.429t-103.429-42.857-103.429 42.857-42.857 103.429h-256q-29.714 0-51.429 21.714t-21.714 51.429zM374.857 73.143q0-41.714 29.429-71.143t71.143-29.429q9.143 0 9.143 9.143t-9.143 9.143q-33.714 0-58 24.286t-24.286 58q0 9.143-9.143 9.143t-9.143-9.143z" />
100
  <glyph unicode="&#xf121;" glyph-name="code" horiz-adv-x="1097" d="M25.714 402.286q0 7.429 5.714 13.143l266.286 266.286q5.714 5.714 13.143 5.714t13.143-5.714l28.571-28.571q5.714-5.714 5.714-13.143t-5.714-13.143l-224.571-224.571 224.571-224.571q5.714-5.714 5.714-13.143t-5.714-13.143l-28.571-28.571q-5.714-5.714-13.143-5.714t-13.143 5.714l-266.286 266.286q-5.714 5.714-5.714 13.143zM406.857 43.428l213.143 737.714q2.286 7.429 8.857 11.143t13.429 1.429l35.429-9.714q7.429-2.286 11.143-8.857t1.429-14l-213.143-737.714q-2.286-7.429-8.857-11.143t-13.429-1.429l-35.429 9.714q-7.429 2.286-11.143 8.857t-1.429 14zM738.857 164.571q0 7.429 5.714 13.143l224.571 224.571-224.571 224.571q-5.714 5.714-5.714 13.143t5.714 13.143l28.571 28.571q5.714 5.714 13.143 5.714t13.143-5.714l266.286-266.286q5.714-5.714 5.714-13.143t-5.714-13.143l-266.286-266.286q-5.714-5.714-13.143-5.714t-13.143 5.714l-28.571 28.571q-5.714 5.714-5.714 13.143z" />
pub/font/loco.ttf CHANGED
Binary file
pub/font/loco.woff CHANGED
Binary file
pub/js/min/admin.js CHANGED
@@ -1,33 +1,33 @@
1
- (function(w, A, k, J) {
2
- var n = function() {
3
  function f(d) {
4
  throw Error("Failed to require " + d);
5
  }
6
  var d = {};
7
  return {
8
- register: function(f, m) {
9
- d[f] = m;
10
  },
11
- require: function(k, m) {
12
- return d[k] || f(m);
13
  },
14
- include: function(k, m, g) {
15
- return d[k] || (g ? f(m) : null);
16
  }
17
  };
18
  }();
19
- n.register("$1", function(f, d, k) {
20
- function m(g) {
21
- var c = typeof g;
22
- if ("string" === c) if (/[^ <>!=()%^&|?:n0-9]/.test(g)) console.error("Invalid plural: " + g); else return new Function("n", "return " + g);
23
- "function" !== c && (g = function(b) {
24
  return 1 != b;
25
  });
26
- return g;
27
  }
28
- f.init = function(g) {
29
  function c(a, b, e) {
30
- return (a = h[a]) && a[e] ? a[e] : b || "";
31
  }
32
  function b(a) {
33
  return c(a, a, 0);
@@ -36,12 +36,12 @@ function a(a, b) {
36
  return c(b + "" + a, a, 0);
37
  }
38
  function e(a, b, e) {
39
- e = Number(g(e));
40
  isNaN(e) && (e = 0);
41
  return c(a, e ? b : a, e);
42
  }
43
- g = m(g);
44
- var h = {};
45
  return {
46
  __: b,
47
  _x: a,
@@ -50,22 +50,22 @@ _: b,
50
  x: a,
51
  n: e,
52
  load: function(a) {
53
- h = a || {};
54
  return this;
55
  },
56
  pluraleq: function(a) {
57
- g = m(a);
58
  return this;
59
  }
60
  };
61
  };
62
  return f;
63
- }({}, w, A));
64
- n.register("$2", function(f, d, k) {
65
  f.ie = function() {
66
- var f = !1, g = 0;
67
- d.attachEvent && d.navigator && /MSIE (\d+)\./.exec(String(navigator.appVersion)) && (g = Number(RegExp.$1),
68
- f = 11 > g);
69
  return function() {
70
  return f;
71
  };
@@ -74,9 +74,9 @@ f.init = function() {
74
  return f;
75
  };
76
  return f;
77
- }({}, w, A));
78
- n.register("$3", function(f, d, k) {
79
- Number.prototype.format = function(d, g, c) {
80
  d = Math.pow(10, d || 0);
81
  var b = Math.round(d * this) / d;
82
  d = [];
@@ -87,114 +87,114 @@ d.unshift(b.substring(e - 3, e));
87
  b = d.join(c || ",");
88
  if (a) {
89
  c = a;
90
- var h;
91
- for (d = c.length; "0" === c.charAt(--d); ) h = d;
92
- h && (c = c.substring(0, h));
93
- (a = c) && (b += (g || ".") + a);
94
  }
95
  return b;
96
  };
97
  Number.prototype.percent = function(d) {
98
- var g = 0, c = this && d ? 100 * (this / d) : 0;
99
  if (0 === c) return "0";
100
  if (100 === c) return "100";
101
- if (99 < c) c = Math.min(c, 99.9), d = c.format(++g); else if (.5 > c) {
102
  c = Math.max(c, 1e-4);
103
  do {
104
- d = c.format(++g);
105
- } while ("0" === d && 4 > g);
106
  d = d.substr(1);
107
  } else d = c.format(0);
108
  return d;
109
  };
110
  return f;
111
- }({}, w, A));
112
- n.register("$4", function(f, d, k) {
113
  Array.prototype.indexOf || (Array.prototype.indexOf = function(d) {
114
  if (null == this) throw new TypeError();
115
- var g, c = Object(this), b = c.length >>> 0;
116
  if (0 === b) return -1;
117
- g = 0;
118
- 1 < arguments.length && (g = Number(arguments[1]), g != g ? g = 0 : 0 != g && Infinity != g && -Infinity != g && (g = (0 < g || -1) * Math.floor(Math.abs(g))));
119
- if (g >= b) return -1;
120
- for (g = 0 <= g ? g : Math.max(b - Math.abs(g), 0); g < b; g++) if (g in c && c[g] === d) return g;
121
  return -1;
122
  });
123
  return f;
124
- }({}, w, A));
125
- n.register("$5", function(f, d, n) {
126
  d.JSON || (d.JSON = {
127
- parse: k.parseJSON,
128
  stringify: null
129
  });
130
  return f = d.JSON;
131
- }({}, w, A));
132
- n.register("$6", function(f, d, k) {
133
- f.trim = function(d, g) {
134
- for (g || (g = " \n"); d && -1 !== g.indexOf(d.substr(0, 1)); ) d = d.substr(1);
135
- for (;d && -1 !== g.indexOf(d.substr(-1)); ) d = d.substr(0, d.length - 1);
136
  return d;
137
  };
138
  f.sprintf = function(d) {
139
- var g = 0, c = [].slice.call(arguments, 1);
140
  return d.replace(/%(?:([1-9][0-9]*)\$)?([sud%])/g, function(b, a, e) {
141
- return "%" === e ? "%" : (a ? c[Number(a) - 1] : c[g++]) || "";
142
  });
143
  };
144
  return f;
145
- }({}, w, A));
146
- n.register("$21", function(f, d, k) {
147
- function m(g) {
148
  return function(c, b) {
149
- for (var a = c[g] || 0; (c = c.offsetParent) && c !== (b || k.body); ) a += c[g] || 0;
150
  return a;
151
  };
152
  }
153
- f.top = m("offsetTop");
154
- f.left = m("offsetLeft");
155
- f.el = function(g, c) {
156
- var b = k.createElement(g || "div");
157
  c && (b.className = c);
158
  return b;
159
  };
160
- f.txt = function(g) {
161
- return k.createTextNode(g || "");
162
  };
163
  return f;
164
- }({}, w, A));
165
- n.register("$7", function(f, d, E) {
166
- function m(a, b, e) {
167
  function c() {
168
  q();
169
- z = setTimeout(b, e);
170
  }
171
  function q() {
172
- z && clearTimeout(z);
173
- z = null;
174
  }
175
- var z;
176
  c();
177
- k(a).on("mouseenter", q).on("mouseleave", c);
178
  return {
179
  die: function() {
180
  q();
181
- k(a).off("mouseenter mouseleave");
182
  }
183
  };
184
  }
185
- function g(a, b) {
186
  a.fadeTo(b, 0, function() {
187
  a.slideUp(b, function() {
188
  a.remove();
189
- k(d).triggerHandler("resize");
190
  });
191
  });
192
  return a;
193
  }
194
  function c(a, b) {
195
  function e(b) {
196
- p[z] = null;
197
- g(k(a), 250);
198
  q && q.die();
199
  var c;
200
  if (c = b) b.stopPropagation(), b.preventDefault(), c = !1;
@@ -202,27 +202,27 @@ return c;
202
  }
203
  function c(b) {
204
  q && q.die();
205
- return q = m(a, e, b);
206
- }
207
- var q, z, h, l = k(a), C = l.find("button");
208
- 0 === C.length && (l.addClass("is-dismissible"), C = k('<button type="button" class="notice-dismiss"> </a>').appendTo(l));
209
- C.off("click").on("click", e);
210
- k(d).triggerHandler("resize");
211
- v();
212
- z = p.length;
213
- p.push(e);
214
  b && (q = c(b));
215
  return {
216
- link: function(b, z) {
217
- var e = z || b, c = k(a).find("nav"), e = k("<nav></nav>").append(k("<a></a>").attr("href", b).text(e));
218
- h ? (h.push(e.html()), c.html(h.join("<span> | </span>"))) : (h = [ e.html() ],
219
- k(a).addClass("has-nav").append(e));
220
  return this;
221
  },
222
  stick: function() {
223
  q && q.die();
224
  q = null;
225
- p[z] = null;
226
  return this;
227
  },
228
  slow: function(a) {
@@ -232,55 +232,55 @@ return this;
232
  };
233
  }
234
  function b(a, b, e) {
235
- var c = n.require("$21", "dom.js").el;
236
- a = k('<div class="notice notice-' + a + ' loco-notice inline"></div>').prependTo(k("#loco-notices"));
237
- var q = k(c("p"));
238
- e = k(c("span")).text(e);
239
- b = k(c("strong", "has-icon")).text(b + ": ");
240
  q.append(b).append(e).appendTo(a);
241
  return a;
242
  }
243
- function a(a, e, q, h) {
244
  a = b(q, e, a).css("opacity", "0").fadeTo(500, 1);
245
- k(d).triggerHandler("resize");
246
- return c(a, h);
247
  }
248
  function e(b) {
249
- return a(b, r, "warning");
250
  }
251
- function h() {
252
- k("#loco-notices").find("div.notice").each(function(a, b) {
253
  if (-1 === b.className.indexOf("jshide")) {
254
  var e = -1 === b.className.indexOf("notice-success") ? null : 5e3;
255
  c(b, e);
256
  }
257
  });
258
  }
259
- var p = [], l = d.console || {
260
  log: function() {}
261
- }, v = Date.now || function() {
262
  return new Date().getTime();
263
- }, x, r, q, C;
264
  f.error = function(b) {
265
- return a(b, x, "error");
266
  };
267
  f.warn = e;
268
  f.info = function(b) {
269
  return a(b, q, "info");
270
  };
271
  f.success = function(b) {
272
- return a(b, C, "success", 5e3);
273
  };
274
  f.warning = e;
275
  f.log = function() {
276
- l.log.apply(l, arguments);
277
  };
278
  f.debug = function() {
279
- (l.debug || l.log).apply(l, arguments);
280
  };
281
  f.clear = function() {
282
- for (var a = -1, b, e = p, c = e.length; ++a < c; ) (b = e[a]) && b.call && b();
283
- p = [];
284
  return f;
285
  };
286
  f.create = b;
@@ -289,23 +289,23 @@ f.raise = function(a) {
289
  };
290
  f.convert = c;
291
  f.init = function(a) {
292
- x = a._("Error");
293
- r = a._("Warning");
294
  q = a._("Notice");
295
- C = a._("OK");
296
- setTimeout(h, 1e3);
297
  return f;
298
  };
299
  return f;
300
- }({}, w, A));
301
- n.register("$8", function(f, d, E) {
302
- function m(a) {
303
- var b = k("<pre>" + a + "</pre>").text();
304
  b && (b = b.replace(/[\r\n]+/g, "\n").replace(/(^|\n)\s+/g, "$1").replace(/\s+$/, ""));
305
  b || (b = a) || (b = "Blank response from server");
306
  return b;
307
  }
308
- function g(a) {
309
  return (a = a.split(/[\r\n]/)[0]) ? (a = a.replace(/ +in +\S+ on line \d+/, ""),
310
  a = a.replace(/^[()! ]+Fatal error:\s*/, "")) : t._("Server returned invalid data");
311
  }
@@ -325,64 +325,64 @@ value: e
325
  function e(a, b, e) {
326
  a.append(b, e);
327
  }
328
- function h(a, b, e, c) {
329
- function h(b, c, z) {
330
  if ("abort" !== c) {
331
- var q = l || {
332
  _: function(a) {
333
  return a;
334
  }
335
- }, y = b.status || 0, d = b.responseText || "", s = m(d), f = b.getResponseHeader("Content-Type") || "Unknown type", x = b.getResponseHeader("Content-Length") || d.length;
336
- "success" === c && z ? p.error(z) : (p.error(g(s) + ".\n" + q._("Check console output for debugging information")),
337
- p.log("Ajax failure for " + a, {
338
- status: y,
339
  error: c,
340
- message: z,
341
  output: d
342
- }), "parsererror" === c && (z = "Response not JSON"), p.log([ q._("Provide the following text when reporting a problem") + ":", "----", "Status " + y + ' "' + (z || q._("Unknown error")) + '" (' + f + " " + x + " bytes)", s, "====" ].join("\n")));
343
- e && e.call && e(b, c, z);
344
- v = b;
345
  }
346
  }
347
- c.url = x;
348
  c.dataType = "json";
349
- var p = n.require("$7", "notices.js").clear();
350
- v = null;
351
- return k.ajax(c).fail(h).done(function(a, e, c) {
352
- var v = a && a.data, l = a && a.notices, g = l && l.length, d = -1;
353
- for (!v || a.error ? h(c, e, a && a.error && a.error.message) : b && b(v, e, c); ++d < g; ) p.raise(l[d]);
354
  });
355
  }
356
- var p = {}, l, v, x = d.ajaxurl || "/wp-admin/admin-ajax.php";
357
  f.init = function(a) {
358
- p = a.nonces || p;
359
  return f;
360
  };
361
  f.localise = function(a) {
362
- l = a;
363
  return f;
364
  };
365
  f.xhr = function() {
366
- return v;
367
  };
368
- f.strip = m;
369
- f.parse = g;
370
  f.submit = function(a, b, e) {
371
  function c(a, b) {
372
  b.disabled ? b.setAttribute("data-was-disabled", "true") : b.disabled = !0;
373
  }
374
- function p(a, b) {
375
  b.getAttribute("data-was-disabled") || (b.disabled = !1);
376
  }
377
- function l(a) {
378
  a.find(".button-primary").removeClass("loading");
379
- a.find("button").each(p);
380
- a.find("input").each(p);
381
- a.find("select").each(p);
382
- a.find("textarea").each(p);
383
  a.removeClass("disabled loading");
384
  }
385
- var v = k(a), g = v.serialize();
386
  (function(a) {
387
  a.find(".button-primary").addClass("loading");
388
  a.find("button").each(c);
@@ -390,49 +390,49 @@ a.find("input").each(c);
390
  a.find("select").each(c);
391
  a.find("textarea").each(c);
392
  a.addClass("disabled loading");
393
- })(v);
394
- return h(a.route.value, function(a, e, c) {
395
- l(v);
396
  b && b(a, e, c);
397
  }, function(a, b, c) {
398
- l(v);
399
  e && e(a, b, c);
400
  }, {
401
  type: a.method,
402
- data: g
403
  });
404
  };
405
- f.post = function(v, q, l, g) {
406
- var y = !0, G = q || {}, B = p[v] || c(v);
407
- d.FormData && G instanceof FormData ? (y = !1, q = e) : q = Array.isArray(G) ? a : b;
408
  q(G, "action", "loco_json");
409
- q(G, "route", v);
410
- q(G, "loco-nonce", B);
411
- return h(v, l, g, {
412
  type: "post",
413
  data: G,
414
- processData: y,
415
- contentType: y ? "application/x-www-form-urlencoded; charset=UTF-8" : !1
416
  });
417
  };
418
- f.get = function(a, b, e, v) {
419
  b = b || {};
420
- var l = p[a] || c(a);
421
  b.action = "loco_json";
422
  b.route = a;
423
- b["loco-nonce"] = l;
424
- return h(a, e, v, {
425
  type: "get",
426
  data: b
427
  });
428
  };
429
  f.setNonce = function(a, b) {
430
- p[a] = b;
431
  return f;
432
  };
433
  return f;
434
- }({}, w, A));
435
- n.register("$22", {
436
  arab: 1,
437
  aran: 1,
438
  hebr: 1,
@@ -470,29 +470,29 @@ ps: 1,
470
  ur: 1,
471
  yi: 1
472
  });
473
- n.register("$9", function(f, d, k) {
474
- function m() {}
475
- var g, c = n.require("$22", "rtl.json");
476
  f.init = function() {
477
- return new m();
478
  };
479
  f.cast = function(b) {
480
- return b instanceof m ? b : "string" === typeof b ? f.parse(b) : f.clone(b);
481
  };
482
  f.clone = function(b) {
483
- var a, e = new m();
484
  for (a in b) e[a] = b[a];
485
  return e;
486
  };
487
  f.parse = function(b) {
488
- if (!(g || (g = /^([a-z]{2,3})(?:[-_]([a-z]{2}))?(?:[-_]([a-z0-9]{3,8}))?$/i)).exec(b)) return null;
489
- var a = new m();
490
  a.lang = RegExp.$1.toLowerCase();
491
  if (b = RegExp.$2) a.region = b.toUpperCase();
492
  if (b = RegExp.$3) a.variant = b.toLowerCase();
493
  return a;
494
  };
495
- d = m.prototype;
496
  d.isValid = function() {
497
  return !!this.lang;
498
  };
@@ -508,17 +508,17 @@ if (a = this.variant) e += b + a;
508
  return e;
509
  };
510
  d.getIcon = function() {
511
- for (var b = 3, a, e, c = [ "variant", "region", "lang" ], p = []; 0 !== b--; ) if (a = c[b],
512
- e = this[a]) p.push(a), p.push(a + "-" + e.toLowerCase());
513
- return p.join(" ");
514
  };
515
  d.isRTL = function() {
516
  return !!c[String(this.lang).toLowerCase()];
517
  };
518
  d = null;
519
  return f;
520
- }({}, w, A));
521
- n.register("$23", {
522
  "á": "a",
523
  "à": "a",
524
  "ă": "a",
@@ -930,37 +930,37 @@ n.register("$23", {
930
  "ӣ": "и",
931
  "ӯ": "у"
932
  });
933
- n.register("$10", function(f, d, k) {
934
  f.init = function() {
935
  function d(a) {
936
- return l[a] || a;
937
  }
938
- function g(a, b, e, c) {
939
  b = a.split(b);
940
- for (var h = b.length; 0 !== h--; ) (a = b[h]) && null == c[a] && (e.push(a), c[a] = !0);
941
  return e;
942
  }
943
  function c(a) {
944
- return g(String(a || "").toLowerCase().replace(h, d), p, [], {});
945
  }
946
  function b(a, b) {
947
- for (var c = [], q = {}, l, s = b.length, y = p; 0 !== s--; ) (l = b[s]) && g(String(l || "").toLowerCase().replace(h, d), y, c, q);
948
  e[a] = c;
949
  }
950
  function a(a, b) {
951
- var c = [], h = -1, p = e, l = p.length, y, g, d, u, z, F, f = a.length, k = b ? !0 : !1;
952
- a: for (;++h < l; ) if (d = p[h], null != d && (u = d.length)) {
953
- z = 0;
954
- b: for (;z < f; z++) {
955
- F = a[z];
956
- for (y = 0; y < u; y++) if (g = d[y], 0 === g.indexOf(F)) continue b;
957
  continue a;
958
  }
959
- c.push(k ? b[h] : h);
960
  }
961
  return c;
962
  }
963
- var e = [], h = /[^a-z0-9]/g, p = /[\-_\s.?!;:,*^+=~`"(){}<>\[\]\/\\\u00a0\u1680\u180e\u2000-\u206f\u2e00-\u2e7f\u3000-\u303f]+/, l = n.require("$23", "flatten.json");
964
  return {
965
  split: c,
966
  pull: function(b, e) {
@@ -990,36 +990,36 @@ e[a] = null;
990
  };
991
  };
992
  return f;
993
- }({}, w, A));
994
- n.register("$11", function(f, d, n) {
995
- f.listen = function(f, g) {
996
  function c() {
997
- q[h ? "show" : "hide"]();
998
  }
999
  function b(a) {
1000
- r && v.setAttribute("size", 2 + a.length);
1001
- h = a;
1002
  c();
1003
  return a;
1004
  }
1005
  function a() {
1006
- p = null;
1007
- g(h);
1008
  }
1009
  function e(e) {
1010
- var c = v.value;
1011
- x && c === x && (c = "");
1012
- c !== h ? (p && clearTimeout(p), b(c), e ? p = setTimeout(a, e) : a()) : p && null == e && (clearTimeout(p),
1013
  a());
1014
  }
1015
- var h, p, l = 150, v = f instanceof jQuery ? f[0] : f, x = d.attachEvent && v.getAttribute("placeholder"), r = 1 === Number(v.size), q = k('<a href="#clear" tabindex="-1" class="icon clear"><span>clear</span></a>').on("click", function() {
1016
- v.value = "";
1017
  e();
1018
  return !1;
1019
  });
1020
- b(v.value);
1021
- k(v).on("input", function() {
1022
- e(l);
1023
  return !0;
1024
  }).on("blur focus change", function() {
1025
  e(null);
@@ -1028,35 +1028,35 @@ return !0;
1028
  c();
1029
  return {
1030
  delay: function(a) {
1031
- l = a;
1032
  return this;
1033
  },
1034
  ping: function(c) {
1035
- c ? (p && clearTimeout(p), c = v.value, x && c === x && (c = ""), b(c), a(), c = void 0) : c = e();
1036
  return c;
1037
  },
1038
  val: function(a) {
1039
- if (null == a) return h;
1040
- p && clearTimeout(p);
1041
- v.value = b(a);
1042
  c();
1043
  },
1044
  el: function() {
1045
- return v;
1046
  },
1047
  blur: function(a) {
1048
- return k(v).on("blur", a);
1049
  },
1050
  destroy: function() {
1051
- p && clearTimeout(p);
1052
  }
1053
  };
1054
  };
1055
  return f;
1056
- }({}, w, A));
1057
- n.register("$12", function(f, d, n) {
1058
- function m(b, a) {
1059
- this.$element = k(b);
1060
  this.options = a;
1061
  this.enabled = !0;
1062
  this.fixTitle();
@@ -1065,31 +1065,31 @@ f.init = function(b, a) {
1065
  var e = {
1066
  fade: !0,
1067
  offset: 5,
1068
- delayIn: g,
1069
  delayOut: c,
1070
  anchor: b.attr("data-anchor"),
1071
  gravity: b.attr("data-gravity") || "s"
1072
  };
1073
- a && (e = k.extend({}, e, a));
1074
  b.tipsy(e);
1075
  };
1076
  f.delays = function(b, a) {
1077
- g = b || 150;
1078
  c = a || 100;
1079
  };
1080
  f.kill = function() {
1081
- k("div.tipsy").remove();
1082
  };
1083
  f.text = function(b, a) {
1084
  a.data("tipsy").setTitle(b);
1085
  };
1086
- var g, c;
1087
  f.delays();
1088
- k(n.body).on("overlayOpened overlayClosing", function(b) {
1089
  f.kill();
1090
  return !0;
1091
  });
1092
- m.prototype = {
1093
  show: function() {
1094
  var b = this.getTitle();
1095
  if (b && this.enabled) {
@@ -1099,42 +1099,42 @@ a[0].className = "tipsy";
1099
  a.remove().css({
1100
  top: 0,
1101
  left: 0
1102
- }).prependTo(n.body);
1103
- var b = (b = this.options.anchor) ? this.$element.find(b) : this.$element, b = k.extend({}, b.offset(), {
1104
  width: b[0].offsetWidth,
1105
  height: b[0].offsetHeight
1106
- }), e = a[0].offsetWidth, c = a[0].offsetHeight, p = "function" == typeof this.options.gravity ? this.options.gravity.call(this.$element[0]) : this.options.gravity, l;
1107
- switch (p.charAt(0)) {
1108
  case "n":
1109
- l = {
1110
  top: b.top + b.height + this.options.offset,
1111
  left: b.left + b.width / 2 - e / 2
1112
  };
1113
  break;
1114
 
1115
  case "s":
1116
- l = {
1117
  top: b.top - c - this.options.offset,
1118
  left: b.left + b.width / 2 - e / 2
1119
  };
1120
  break;
1121
 
1122
  case "e":
1123
- l = {
1124
  top: b.top + b.height / 2 - c / 2,
1125
  left: b.left - e - this.options.offset
1126
  };
1127
  break;
1128
 
1129
  case "w":
1130
- l = {
1131
  top: b.top + b.height / 2 - c / 2,
1132
  left: b.left + b.width + this.options.offset
1133
  };
1134
  }
1135
- 2 == p.length && ("w" == p.charAt(1) ? l.left = b.left + b.width / 2 - 15 : l.left = b.left + b.width / 2 - e + 15);
1136
- a.css(l).addClass("tipsy-" + p);
1137
- a.find(".tipsy-arrow")[0].className = "tipsy-arrow tipsy-arrow-" + p.charAt(0);
1138
  this.options.className && a.addClass("function" == typeof this.options.className ? this.options.className.call(this.$element[0]) : this.options.className);
1139
  a.addClass("in");
1140
  }
@@ -1160,7 +1160,7 @@ a.attr("original-title", b);
1160
  if (this.$tip) this.$tip.find(".tipsy-inner")[this.options.html ? "html" : "text"](b);
1161
  },
1162
  tip: function() {
1163
- this.$tip || (this.$tip = k('<div class="tipsy"></div>').html('<div class="tipsy-arrow"></div><div class="tipsy-inner"></div>'),
1164
  this.$tip.data("tipsy-pointee", this.$element[0]));
1165
  return this.$tip;
1166
  },
@@ -1178,10 +1178,10 @@ toggleEnabled: function() {
1178
  this.enabled = !this.enabled;
1179
  }
1180
  };
1181
- k.fn.tipsy = function(b) {
1182
  function a(a) {
1183
- var e = k.data(a, "tipsy");
1184
- e || (e = new m(a, k.fn.tipsy.elementOptions(a, b)), k.data(a, "tipsy", e));
1185
  return e;
1186
  }
1187
  function e() {
@@ -1192,23 +1192,23 @@ e.hoverState = "in";
1192
  }, c));
1193
  }
1194
  function c() {
1195
- var e = a(this), h = b.delayOut;
1196
  e.hoverState = "out";
1197
- 0 == h ? e.hide() : (e.tip().removeClass("in"), setTimeout(function() {
1198
  "out" == e.hoverState && e.hide();
1199
- }, h));
1200
  }
1201
- b = k.extend({}, k.fn.tipsy.defaults, b);
1202
  b.live || this.each(function() {
1203
  a(this);
1204
  });
1205
  if ("manual" != b.trigger) {
1206
- var p = b.live ? "live" : "bind", l = "hover" == b.trigger ? "mouseleave" : "blur";
1207
- this[p]("hover" == b.trigger ? "mouseenter" : "focus", e)[p](l, c);
1208
  }
1209
  return this;
1210
  };
1211
- k.fn.tipsy.defaults = {
1212
  className: null,
1213
  delayIn: 0,
1214
  delayOut: 0,
@@ -1223,77 +1223,77 @@ title: "title",
1223
  trigger: "hover",
1224
  anchor: null
1225
  };
1226
- k.fn.tipsy.elementOptions = function(b, a) {
1227
- return k.metadata ? k.extend({}, a, k(b).metadata()) : a;
1228
  };
1229
- k.fn.tipsy.autoNS = function() {
1230
- return k(this).offset().top > k(n).scrollTop() + k(d).height() / 2 ? "s" : "n";
1231
  };
1232
- k.fn.tipsy.autoWE = function() {
1233
- return k(this).offset().left > k(n).scrollLeft() + k(d).width() / 2 ? "e" : "w";
1234
  };
1235
- k.fn.tipsy.autoBounds = function(b, a) {
1236
  return function() {
1237
- var e = a[0], c = 1 < a.length ? a[1] : !1, p = k(n).scrollTop() + b, l = k(n).scrollLeft() + b, g = k(this);
1238
- g.offset().top < p && (e = "n");
1239
- g.offset().left < l && (c = "w");
1240
- k(d).width() + k(n).scrollLeft() - g.offset().left < b && (c = "e");
1241
- k(d).height() + k(n).scrollTop() - g.offset().top < b && (e = "s");
1242
  return e + (c ? c : "");
1243
  };
1244
  };
1245
  return f;
1246
- }({}, w, A));
1247
- n.register("$35", function(f, d, k) {
1248
  "".localeCompare || (String.prototype.localeCompare = function() {
1249
  return 0;
1250
  });
1251
  "".trim || (String.prototype.trim = function() {
1252
- return n.require("$6", "string.js").trim(this, " \n\r\t");
1253
  });
1254
  f.html = function() {
1255
  function d() {
1256
  b = /[<>&]/g;
1257
  a = /(\r\n|\n|\r)/g;
1258
  e = /(?:https?):\/\/(\S+)/gi;
1259
- h = location.hostname;
1260
  d = null;
1261
  }
1262
- function g(a) {
1263
  return "&#" + a.charCodeAt(0) + ";";
1264
  }
1265
  function c(a, b) {
1266
- return '<a href="' + a + '" target="' + (b.indexOf(h) ? "_blank" : "_top") + '">' + b + "</a>";
1267
  }
1268
- var b, a, e, h;
1269
- return function(h, l) {
1270
  d && d();
1271
- var v = h.replace(b, g);
1272
- l && (v = v.replace(e, c).replace(a, "<br />"));
1273
- return v;
1274
  };
1275
  }();
1276
  return f;
1277
- }({}, w, A));
1278
- n.register("$36", function(f, d, k) {
1279
- function m() {}
1280
- var g, c, b = n.require("$22", "rtl.json");
1281
  f.init = function() {
1282
- return new m();
1283
  };
1284
  f.cast = function(a) {
1285
- return a instanceof m ? a : "string" === typeof a ? f.parse(a) : f.clone(a);
1286
  };
1287
  f.clone = function(a) {
1288
- var b, c = new m();
1289
  for (b in a) c[b] = a[b];
1290
  return c;
1291
  };
1292
  f.parse = function(a) {
1293
- g || (c = /[-_+]/, g = /^([a-z]{2,3})(?:-([a-z]{4}))?(?:-([a-z]{2}|[0-9]{3}))?(?:-([0-9][a-z0-9]{3,8}|[a-z0-9]{5,8}))?(?:-([a-z]-[-a-z]+))?$/i);
1294
  a = String(a).split(c).join("-");
1295
- if (!g.exec(a)) return null;
1296
- var b = new m();
1297
  b.lang = RegExp.$1.toLowerCase();
1298
  if (a = RegExp.$2) b.script = a.charAt(0).toUpperCase() + a.substr(1).toLowerCase();
1299
  if (a = RegExp.$3) b.region = a.toUpperCase();
@@ -1301,7 +1301,7 @@ if (a = RegExp.$4) b.variant = a.toLowerCase();
1301
  if (a = RegExp.$5) b.extension = a;
1302
  return b;
1303
  };
1304
- d = m.prototype;
1305
  d.isValid = function() {
1306
  return !!this.lang;
1307
  };
@@ -1319,22 +1319,22 @@ if (b = this.extension) c += a + b;
1319
  return c;
1320
  };
1321
  d.getIcon = function() {
1322
- for (var a = 4, b, c, p = [ "variant", "region", "script", "lang" ], l = []; 0 !== a--; ) if (b = p[a],
1323
- c = this[b]) c.join && (c = c.join("-")), 1 === a && 3 === c.length ? l.push("region-m49") : l = l.concat([ b, b + "-" + c.toLowerCase() ]);
1324
- return l.join(" ");
1325
  };
1326
  d.isRTL = function() {
1327
  return !!b[String(this.script || this.lang).toLowerCase()];
1328
  };
1329
  d = null;
1330
  return f;
1331
- }({}, w, A));
1332
- n.register("$37", function(f, d, k) {
1333
- function m(a) {
1334
  d.console && console.error && console.error(a);
1335
  }
1336
- function g() {
1337
- m("Method not implemented");
1338
  }
1339
  function c() {}
1340
  function b(a) {}
@@ -1342,41 +1342,41 @@ c.prototype.toString = function() {
1342
  return "[Undefined]";
1343
  };
1344
  b.prototype._validate = function(a) {
1345
- var b, h, p = !0;
1346
- for (b in this) h = this[b], h === g ? (m(a + "." + b + "() must be implemented"),
1347
- p = !1) : h instanceof c && (m(a + "." + b + " must be defined"), p = !1);
1348
- return p;
1349
  };
1350
  f.init = function(a, e) {
1351
- var h, p = new b();
1352
- if (a) for (h = a.length; 0 !== h--; ) p[a[h]] = g;
1353
- if (e) for (h = e.length; 0 !== h--; ) p[e[h]] = new c();
1354
- return p;
1355
  };
1356
  f.validate = function(a) {
1357
  var b = /function (\w+)\(/.exec(a.toString()) ? RegExp.$1 : "";
1358
  a.prototype._validate(b || "Object");
1359
  };
1360
  return f;
1361
- }({}, w, A));
1362
- n.register("$48", function(f, d, k) {
1363
- var m = d.requestAnimationFrame, g = d.cancelAnimationFrame, c = 0;
1364
- if (!m || !g) for (var b in {
1365
  ms: 1,
1366
  moz: 1,
1367
  webkit: 1,
1368
  o: 1
1369
- }) if (m = d[b + "RequestAnimationFrame"]) if (g = d[b + "CancelAnimationFrame"] || d[b + "CancelRequestAnimationFrame"]) break;
1370
- m && g || (m = function(b) {
1371
- var h = a();
1372
- timeToCall = Math.max(0, 16 - (h - c));
1373
- nextTime = h + timeToCall;
1374
  timerId = d.setTimeout(function() {
1375
  b(nextTime);
1376
  }, timeToCall);
1377
  c = nextTime;
1378
  return timerId;
1379
- }, g = function(a) {
1380
  clearTimeout(a);
1381
  });
1382
  var a = Date.now || function() {
@@ -1384,26 +1384,26 @@ return new Date().getTime();
1384
  };
1385
  f.loop = function(a, b) {
1386
  function c() {
1387
- d = m(c, b);
1388
- a(l++);
1389
  }
1390
- var l = 0, d;
1391
  c();
1392
  return {
1393
  stop: function() {
1394
- d && g(d);
1395
  d = null;
1396
  }
1397
  };
1398
  };
1399
  return f;
1400
- }({}, w, A));
1401
- n.register("$45", function(f, d, k) {
1402
- function m(a, c, e, q) {
1403
  if (b) {
1404
- var h = e;
1405
  e = function(a) {
1406
- if ((a.MSPOINTER_TYPE_TOUCH || "touch") === a.pointerType) return h(a);
1407
  };
1408
  }
1409
  a.addEventListener(c, e, q);
@@ -1413,14 +1413,14 @@ a.removeEventListener(c, e, q);
1413
  }
1414
  };
1415
  }
1416
- function g(a) {
1417
  a.preventDefault();
1418
  a.stopPropagation();
1419
  return !1;
1420
  }
1421
- var c, b = !!d.navigator.msPointerEnabled, a = b ? "MSPointerDown" : "touchstart", e = b ? "MSPointerMove" : "touchmove", h = b ? "MSPointerUp" : "touchend";
1422
  f.ok = function(a) {
1423
- null == c && (c = "function" === typeof k.body.addEventListener);
1424
  c && a && a(f);
1425
  return c;
1426
  };
@@ -1428,7 +1428,7 @@ f.ms = function() {
1428
  return b;
1429
  };
1430
  f.dragger = function(b, c) {
1431
- function l(a) {
1432
  b.addEventListener(a, d[a], !1);
1433
  }
1434
  function q(a) {
@@ -1436,36 +1436,36 @@ b.removeEventListener(a, d[a], !1);
1436
  }
1437
  var d = {};
1438
  d[a] = function(b) {
1439
- p(b, function(e, q) {
1440
- q.type = a;
1441
- c(b, q, f);
1442
  });
1443
- l(e);
1444
- l(h);
1445
  return !0;
1446
  };
1447
- d[h] = function(a) {
1448
  q(e);
1449
- q(h);
1450
- p(a, function(b, e) {
1451
- e.type = h;
1452
  c(a, e, f);
1453
  });
1454
  return !0;
1455
  };
1456
  d[e] = function(a) {
1457
- p(a, function(b, q) {
1458
- q.type = e;
1459
- c(a, q, f);
1460
  });
1461
- return g(a);
1462
  };
1463
- l(a);
1464
  var f = {
1465
  kill: function() {
1466
  q(a);
1467
  q(e);
1468
- q(h);
1469
  b = f = c = null;
1470
  }
1471
  };
@@ -1475,51 +1475,51 @@ f.swiper = function(c, d, f) {
1475
  function q(a) {
1476
  c.addEventListener(a, u[a], !1);
1477
  }
1478
- function C(a) {
1479
  c.removeEventListener(a, u[a], !1);
1480
  }
1481
- function s() {
1482
- y && y.stop();
1483
- y = null;
1484
  }
1485
- var y, G, B, u = {}, z = [], F = [], k = [];
1486
  u[a] = function(a) {
1487
  G = !1;
1488
- s();
1489
- var b = l();
1490
- p(a, function(a, c) {
1491
- z[a] = b;
1492
  F[a] = c.clientX;
1493
- k[a] = c.clientY;
1494
  });
1495
- B = c.scrollLeft;
1496
  return !0;
1497
  };
1498
- u[h] = function(a) {
1499
- p(a, function(a, b) {
1500
- var c = l() - z[a], e = F[a] - b.clientX, c = Math.abs(e) / c;
1501
  d(c, e ? 0 > e ? -1 : 1 : 0);
1502
  });
1503
- B = null;
1504
  return !0;
1505
  };
1506
  u[e] = function(a) {
1507
  var b, e;
1508
- null == B || p(a, function(a, c) {
1509
  b = F[a] - c.clientX;
1510
- e = k[a] - c.clientY;
1511
  });
1512
  if (e && Math.abs(e) > Math.abs(b)) return G = !0;
1513
- b && (G = !0, c.scrollLeft = Math.max(0, B + b));
1514
- return g(a);
1515
  };
1516
- if (!b || f) q(a), q(e), q(h), b && (c.className += " mstouch");
1517
  return {
1518
  kill: function() {
1519
- C(a);
1520
- C(e);
1521
- C(h);
1522
- s();
1523
  },
1524
  swiped: function() {
1525
  return G;
@@ -1532,33 +1532,33 @@ b && !f && (c.style["-ms-scroll-snap-points-x"] = "snapInterval(0px," + a + "px)
1532
  c.style["-ms-scroll-snap-type"] = "mandatory", c.style["-ms-scroll-chaining"] = "none");
1533
  },
1534
  scroll: function(a, b, e) {
1535
- s();
1536
- var z = c.scrollLeft, q = a > z ? 1 : -1, l = Math[1 === q ? "min" : "max"], h = Math.round(16 * b * q);
1537
- return y = n.require("$48", "fps.js").loop(function(b) {
1538
- b && (z = Math.max(0, l(a, z + h)), c.scrollLeft = z, a === z && (s(), e && e(z)));
1539
  }, c);
1540
  }
1541
  };
1542
  };
1543
  f.start = function(b, c) {
1544
- return m(b, a, c, !1);
1545
  };
1546
  f.move = function(a, b) {
1547
- return m(a, e, b, !1);
1548
  };
1549
  f.end = function(a, b) {
1550
- return m(a, h, b, !1);
1551
  };
1552
- var p = f.each = function(a, c) {
1553
- if (b) (a.MSPOINTER_TYPE_TOUCH || "touch") === a.pointerType && c(0, a); else for (var e = -1, q = (a.originalEvent || a).changedTouches || []; ++e < q.length; ) c(e, q[e]);
1554
- }, l = Date.now || function() {
1555
  return new Date().getTime();
1556
  };
1557
  return f;
1558
- }({}, w, A));
1559
- n.register("$49", function(f, d, n) {
1560
  f.init = function(d) {
1561
- function g() {
1562
  e.style.top = String(-d.scrollTop) + "px";
1563
  return !0;
1564
  }
@@ -1571,74 +1571,74 @@ return !0;
1571
  function b(a) {
1572
  return '<span class="x' + a.charCodeAt(0).toString(16) + '">' + a + "</span>";
1573
  }
1574
- var a = d.parentNode, e = a.insertBefore(n.createElement("div"), d);
1575
- k(d).on("input", c).on("scroll", g);
1576
- k(a).addClass("has-mirror");
1577
  e.className = "ta-mirror";
1578
- var h = d.offsetWidth - d.clientWidth;
1579
- 2 < h && (e.style.marginRight = String(h - 2) + "px");
1580
  c();
1581
- g();
1582
  return {
1583
  kill: function() {
1584
- k(d).off("input", c).off("scroll", g);
1585
  a.removeChild(e);
1586
  e = null;
1587
- k(a).removeClass("has-mirror");
1588
  }
1589
  };
1590
  };
1591
  return f;
1592
- }({}, w, A));
1593
- n.register("$29", function(f, d, k) {
1594
- function m(b, a) {
1595
- for (var c = 0, h = -1, p = a && d[a], l = g[b] || [], f = l.length; ++h < f; ) callback = l[h],
1596
- "function" === typeof callback && (callback(p), c++);
1597
  return c;
1598
  }
1599
- var g = {}, c;
1600
  f.load = function(b, a, c) {
1601
- function h() {
1602
  f && (clearTimeout(f), f = null);
1603
- x && (x.onreadystatechange = null, x = x = x.onload = null);
1604
- b && (delete g[b], b = null);
1605
  }
1606
- function p(a, q) {
1607
- var l = x && x.readyState;
1608
- if (q || !l || "loaded" === l || "complete" === l) q || m(b, c), h();
1609
  }
1610
- function l() {
1611
- if (0 === m(b)) throw Error('Failed to load "' + (c || b) + '"');
1612
- h();
1613
  }
1614
- if (c && d[c]) "function" === typeof a && a(d[c]); else if (null != g[b]) g[b].push(a); else {
1615
- g[b] = [ a ];
1616
- var f = setTimeout(l, 4e3), x = k.createElement("script");
1617
- x.setAttribute("src", b);
1618
- x.setAttribute("async", "true");
1619
- x.onreadystatechange = p;
1620
- x.onload = p;
1621
- x.onerror = l;
1622
- x.onabort = h;
1623
- k.getElementsByTagName("head")[0].appendChild(x);
1624
  }
1625
  };
1626
  f.stat = function(b) {
1627
  var a;
1628
  if (!(a = c)) {
1629
- for (var e, h, d = k.getElementsByTagName("script"), l = -1, g = d.length; ++l < g; ) if (a = d[l].getAttribute("src")) if (e = a.indexOf("/lib/vendor"),
1630
  -1 !== e) {
1631
- h = a.substr(0, e);
1632
  break;
1633
  }
1634
- a = c = h || "/static";
1635
  }
1636
  return a + b;
1637
  };
1638
  return f;
1639
- }({}, w, A));
1640
- n.register("$16", function(f, d, E) {
1641
- function m(a, b) {
1642
  a.setReadOnly(!1);
1643
  a.on("change", function(a, c) {
1644
  return b.val(c.getValue());
@@ -1650,13 +1650,13 @@ a.on("blur", function() {
1650
  return b.blur();
1651
  });
1652
  }
1653
- function g(a) {
1654
  a.off("change");
1655
  a.off("focus");
1656
  a.off("blur");
1657
  }
1658
  function c(a) {
1659
- g(a);
1660
  a.setReadOnly(!0);
1661
  a.setHighlightGutterLine(!1);
1662
  a.setHighlightActiveLine(!1);
@@ -1665,9 +1665,9 @@ function b(b, c) {
1665
  function e() {
1666
  this.HighlightRules = d;
1667
  }
1668
- var d = a(c), q = b.require, h = q("ace/lib/oop");
1669
- h.inherits(d, q("ace/mode/text_highlight_rules").TextHighlightRules);
1670
- h.inherits(e, q("ace/mode/text").Mode);
1671
  return new e();
1672
  }
1673
  function a(a) {
@@ -1757,38 +1757,38 @@ return /%(?:[1-9]\d*\$)?\+?(?:0|'[^$])?-?\d*(?:\.\d+)?[b-gijostTuvxX%]/;
1757
  case "auto":
1758
  return /%(?:\d+\$|\([_A-Za-z][_A-Za-z0-9]*\))?(?:[-+0]?\d*(\.\d+)?[duxoefgaDUXOEFGA]|[@scSC%])/;
1759
 
1760
- case p:
1761
- return h || "%%";
1762
- }
1763
- }
1764
- var h, p = "auto";
1765
- f.init = function(a, e, h) {
1766
- var f, q = !1, C = h || p, s = a.parentNode, y = s.appendChild(E.createElement("div"));
1767
- k(s).addClass("has-proxy has-ace");
1768
- n.require("$29", "remote.js").load("https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.1/ace.js", function(h) {
1769
- if (y) {
1770
- if (!h) throw Error("Failed to load code editor");
1771
- f = h.edit(y);
1772
- var d = f.session, g = f.renderer;
1773
  f.$blockScrolling = Infinity;
1774
  f.setShowInvisibles(q);
1775
  f.setWrapBehavioursEnabled(!1);
1776
  f.setBehavioursEnabled(!1);
1777
  f.setHighlightActiveLine(!1);
1778
- d.setUseSoftTabs(!1);
1779
- g.setShowGutter(!0);
1780
- g.setPadding(10);
1781
- g.setScrollMargin(8);
1782
- d.setMode(b(h, C));
1783
  f.setValue(a.value, -1);
1784
- d.setUseWrapMode(!0);
1785
- e ? m(f, e) : c(f);
1786
  }
1787
  }, "ace");
1788
  return {
1789
  kill: function() {
1790
- f && (g(f), f.destroy(), f = null);
1791
- y && (s.removeChild(y), k(s).removeClass("has-proxy has-ace"), y = null);
1792
  return this;
1793
  },
1794
  disable: function() {
@@ -1798,7 +1798,7 @@ return this;
1798
  },
1799
  enable: function(a) {
1800
  e = a;
1801
- f && m(f, a);
1802
  return this;
1803
  },
1804
  resize: function() {
@@ -1815,8 +1815,8 @@ q !== a && (q = a, f && f.setShowInvisibles(a));
1815
  return this;
1816
  },
1817
  strf: function(a) {
1818
- a = a || p;
1819
- a !== C && (C = a, f && f.session.setMode(b(d.ace, a)));
1820
  return this;
1821
  },
1822
  focus: function() {
@@ -1825,14 +1825,14 @@ return this;
1825
  };
1826
  };
1827
  f.strf = function(a, b) {
1828
- p = a;
1829
- h = b;
1830
  return f;
1831
  };
1832
  return f;
1833
- }({}, w, A));
1834
- n.register("$50", function(f, d, E) {
1835
- function m(a, b) {
1836
  function c() {
1837
  return b.val(a.getContent());
1838
  }
@@ -1846,37 +1846,37 @@ return b.blur();
1846
  });
1847
  a.setMode("design");
1848
  }
1849
- function g(a) {
1850
  a.off("input");
1851
  a.off("change");
1852
  a.off("focus");
1853
  a.off("blur");
1854
  }
1855
  function c(a) {
1856
- g(a);
1857
  a.setMode("readonly");
1858
  }
1859
  var b = 0;
1860
  f.load = function(a) {
1861
- var b = n.require("$29", "remote.js");
1862
  b.load(b.stat("/lib/tinymce.min.js"), a, "tinymce");
1863
  return f;
1864
  };
1865
  f.init = function(a, e) {
1866
  function d(a) {
1867
- x = a;
1868
- r = "<p>" === a.substr(0, 3) && "</p>" === a.substr(-4);
1869
  return a.replace(/(<\/?)script/gi, "$1loco:script");
1870
  }
1871
- function p(a) {
1872
- l = a;
1873
  a._getContent = a.getContent;
1874
  a.getContent = function(a) {
1875
  a = this._getContent(a);
1876
  a = a.replace(/(<\/?)loco:script/gi, "$1script");
1877
- if (!r && "<p>" === a.substr(0, 3) && "</p>" === a.substr(-4)) {
1878
  var b = a.substr(3, a.length - 7);
1879
- if (b === x || -1 === b.indexOf("</p>")) a = b;
1880
  }
1881
  return a;
1882
  };
@@ -1884,25 +1884,25 @@ a._setContent = a.setContent;
1884
  a.setContent = function(a, b) {
1885
  return this._setContent(d(a), b);
1886
  };
1887
- e ? (m(a, e), e.reset()) : c(a);
1888
- k(s).removeClass("loading");
1889
  }
1890
- var l, v = !1, x = "", r = !1, q = a.parentNode, C = q.parentNode, s = q.appendChild(E.createElement("div")), y = C.insertBefore(E.createElement("nav"), q);
1891
- y.id = "_tb" + String(++b);
1892
- k(q).addClass("has-proxy has-mce");
1893
- k(s).addClass("mce-content-body loading").html(d(a.value));
1894
  f.load(function(a) {
1895
  if (!a) throw Error("Failed to load HTML editor");
1896
- s && a.init({
1897
  inline: !0,
1898
- target: s,
1899
  hidden_input: !1,
1900
  theme: "modern",
1901
  skin: !1,
1902
  plugins: "link lists",
1903
  browser_spellcheck: !0,
1904
  menubar: !1,
1905
- fixed_toolbar_container: "#" + y.id,
1906
  toolbar: "formatselect | bold italic link unlink | bullist numlist outdent indent",
1907
  block_formats: "Paragraph=p;Heading 1=h1;Heading 2=h2;Heading 3=h4;Heading 4=h4;Heading 5=h5;Heading 6=h6;",
1908
  forced_root_block: "p",
@@ -1932,109 +1932,109 @@ extended_valid_elements: "span,b,i,u,loco:script",
1932
  entities: "38,amp,60,lt,62,gt,160,nbsp",
1933
  entity_encoding: "named",
1934
  keep_styles: !1,
1935
- init_instance_callback: p
1936
  });
1937
  });
1938
  return {
1939
  val: function(b) {
1940
  b = d(b);
1941
- null == l ? (a.value = b, k(s).html(b)) : l.getContent() !== b && l.setContent(b);
1942
  e && e.val(b);
1943
  return this;
1944
  },
1945
  kill: function() {
1946
- l && (e && e.val(l.getContent()), g(l), l.destroy(), l = null);
1947
- s && (q.removeChild(s), k(q).removeClass("has-proxy has-mce"), s = null);
1948
- y && (C.removeChild(y), y = null);
1949
  return this;
1950
  },
1951
  enable: function(a) {
1952
  e = a;
1953
- l && m(l, a);
1954
  return this;
1955
  },
1956
  disable: function() {
1957
- l && c(l);
1958
  e = null;
1959
  return this;
1960
  },
1961
  focus: function() {
1962
- l && e && l.focus();
1963
  return this;
1964
  },
1965
  invs: function(a) {
1966
  a = a || !1;
1967
- v !== a && (v = a, k(q)[a ? "addClass" : "removeClass"]("show-invs"));
1968
  return this;
1969
  }
1970
  };
1971
  };
1972
  return f;
1973
- }({}, w, A));
1974
- n.register("$46", function(f, d, E) {
1975
- function m(b) {
1976
  function a() {
1977
- f && (x.off("input", e), f = !1);
1978
  }
1979
  function e() {
1980
  var a = b.value;
1981
- a !== q && (x.trigger("changing", [ a, q ]), q = a);
1982
  }
1983
  function d() {
1984
  e();
1985
- f && C !== q && x.trigger("changed", [ q ]);
1986
  }
1987
- function g() {
1988
  c = b;
1989
- C = q;
1990
- f || (x.on("input", e), f = !0);
1991
- x.trigger("editFocus");
1992
- r.addClass("has-focus");
1993
  return !0;
1994
  }
1995
- function l() {
1996
  c === b && (c = null);
1997
- x.trigger("editBlur");
1998
- r.removeClass("has-focus");
1999
- f && (d(), a());
2000
  return !0;
2001
  }
2002
- var f = !1, x = k(b), r = k(b.parentNode), q = b.value, C;
2003
- x.on("blur", l).on("focus", g);
2004
  return {
2005
  val: function(a) {
2006
- q !== a && (b.value = a, x.triggerHandler("input"), q = a);
2007
  return !0;
2008
  },
2009
  kill: function() {
2010
  a();
2011
- x.off("blur", l).off("focus", g);
2012
  },
2013
  fire: function() {
2014
  q = null;
2015
  e();
2016
  },
2017
  ping: d,
2018
- blur: l,
2019
- focus: g,
2020
  reset: function() {
2021
- C = q = b.value;
2022
  }
2023
  };
2024
  }
2025
- function g(b) {
2026
  this.e = b;
2027
  }
2028
  var c;
2029
  f._new = function(b) {
2030
- return new g(b);
2031
  };
2032
  f.init = function(b) {
2033
- var a = new g(b);
2034
  b.disabled ? (b.removeAttribute("disabled"), a.disable()) : b.readOnly ? a.disable() : a.enable();
2035
  return a;
2036
  };
2037
- TextAreaPrototype = g.prototype;
2038
  TextAreaPrototype.destroy = function() {
2039
  this.unlisten();
2040
  var b = this.p;
@@ -2054,7 +2054,7 @@ if (null == b) return a.value;
2054
  var c = this.l, d = this.p;
2055
  d && d.val(b);
2056
  c && c.val(b);
2057
- c || a.value === b || (a.value = b, k(a).triggerHandler("input"));
2058
  return this;
2059
  };
2060
  TextAreaPrototype.fire = function() {
@@ -2067,7 +2067,7 @@ return this;
2067
  };
2068
  TextAreaPrototype.focus = function() {
2069
  var b = this.p;
2070
- b ? b.focus() : k(this.e).focus();
2071
  };
2072
  TextAreaPrototype.focused = function() {
2073
  return c && c === this.el;
@@ -2101,7 +2101,7 @@ return this;
2101
  TextAreaPrototype.listen = function() {
2102
  var b = this.l;
2103
  b && b.kill();
2104
- this.l = m(this.e);
2105
  return this;
2106
  };
2107
  TextAreaPrototype.unlisten = function() {
@@ -2111,7 +2111,7 @@ return this;
2111
  };
2112
  TextAreaPrototype.setInvs = function(b, a) {
2113
  var c = this.i || !1;
2114
- if (a || c !== b) this._i && (this._i.kill(), delete this._i), (c = this.p) ? c.invs && c.invs(b) : b && (this._i = n.require("$49", "mirror.js").init(this.e)),
2115
  this.i = b;
2116
  return this;
2117
  };
@@ -2120,7 +2120,7 @@ return this.i || !1;
2120
  };
2121
  TextAreaPrototype.setMode = function(b) {
2122
  var a = this.p, e = this.i || !1;
2123
- b !== (this.m || "") && (this.m = b, a && a.kill(), this.p = a = "code" === b ? n.require("$16", "ace.js").init(this.e, this.l, this["%"]) : "html" === b ? n.require("$50", "mce.js").init(this.e, this.l) : null,
2124
  this.setInvs(e, !0), c && this.focus());
2125
  return this;
2126
  };
@@ -2143,14 +2143,14 @@ b && b.resize && b.resize();
2143
  };
2144
  TextAreaPrototype = null;
2145
  return f;
2146
- }({}, w, A));
2147
- n.register("$47", function(f, d, n) {
2148
- function m(a) {
2149
  var b = d.console;
2150
  b && b.error && b.error(a);
2151
  }
2152
- function g(a) {
2153
- var b = n.createElement("div");
2154
  a && b.setAttribute("class", a);
2155
  return b;
2156
  }
@@ -2185,9 +2185,9 @@ b.preventDefault();
2185
  return !1;
2186
  };
2187
  }
2188
- function h(a, b, c) {
2189
  function e(a) {
2190
- m("row[" + a + "] disappeared");
2191
  return {
2192
  cellVal: function() {
2193
  return "";
@@ -2195,80 +2195,80 @@ return "";
2195
  };
2196
  }
2197
  return function(d) {
2198
- var h = b || 0, g = c ? -1 : 1, z = a.rows || [];
2199
  d.sort(function(a, b) {
2200
- return g * (z[a] || e(a)).cellVal(h).localeCompare((z[b] || e(b)).cellVal(h));
2201
  });
2202
  };
2203
  }
2204
- function p(a) {
2205
  this.w = a;
2206
  }
2207
- function l(a) {
2208
  this.t = a;
2209
  this.length = 0;
2210
  }
2211
- function v(a, b, c) {
2212
- var e = n.createElement("div");
2213
  e.className = c || "";
2214
  this._ = e;
2215
  this.d = b || [];
2216
  this.i = a || 0;
2217
  this.length = b.length;
2218
  }
2219
- function x(a) {
2220
  this.live = a;
2221
  this.rows = [];
2222
  }
2223
  f.create = function(a) {
2224
- return new p(a);
2225
  };
2226
- var r = p.prototype;
2227
- r.init = function(d) {
2228
- var h = this.w, l = h.id, p = h.splity(l + "-thead", l + "-tbody"), f = p[0], p = p[1], B = [], u = [], z = [], F = [];
2229
  if (d) this.ds = d, this.idxs = u, this._idxs = null; else if (!(d = this.ds)) throw Error("No datasource");
2230
  f.css.push("wg-thead");
2231
- p.css.push("wg-tbody");
2232
  d.eachCol(function(a, b, c) {
2233
- z[a] = l + "-col-" + b;
2234
  F[a] = c || b;
2235
  });
2236
- for (var R = g(), r = -1, x = z.length, m = g("wg-cols"), n = f.splitx.apply(f, z); ++r < x; ) n[r].header(F[r]),
2237
- m.appendChild(R.cloneNode(!1)).setAttribute("for", z[r]);
2238
  d.eachRow(function(a, b, c) {
2239
- B[a] = new v(a, b, c);
2240
  u[a] = a;
2241
  });
2242
- this.rows = B;
2243
- this.cols = m;
2244
  this.ww = null;
2245
- this.root = R = p.body;
2246
  this.head = f;
2247
  f.redraw = c(this);
2248
- f = p.fixed = n[0].bodyY() || 20;
2249
- h.lock().resize(f, p);
2250
- h.css.push("is-table");
2251
- h.restyle();
2252
- this.sc ? this._re_sort(x) : d.sort && d.sort(u);
2253
  this.redrawDirty();
2254
  this.render();
2255
- k(R).attr("tabindex", "-1").on("keydown", e(this)).on("mousedown", b(this)).on("scroll", a(this));
2256
  return this;
2257
  };
2258
- r.clear = function() {
2259
  for (var a = this.pages || [], b = a.length; 0 !== b--; ) a[b].destroy();
2260
  this.pages = [];
2261
  this.sy = this.mx = this.mn = this.vh = null;
2262
  void 0;
2263
  return this;
2264
  };
2265
- r.render = function() {
2266
- for (var a, b, c = [], e = this.rows || [], d = -1, h, g = this.idxs, z = g.length, p = this.idxr = {}, l = this.r, f = this._r, v = this.root, k = this.cols; ++d < z; ) {
2267
- 0 === d % 100 && (a = k.cloneNode(!0), b = new x(a), b.h = 2200, b.insert(v), c.push(b));
2268
- h = g[d];
2269
- p[h] = d;
2270
- a = e[h];
2271
- if (null == a) throw Error("Render error, no data at [" + h + "]");
2272
  a.page = b;
2273
  b.rows.push(a);
2274
  }
@@ -2281,133 +2281,133 @@ null == l ? null != f && (a = e[f]) && a.page && (delete this._r, this.select(f,
2281
  this._r = l);
2282
  return this;
2283
  };
2284
- r.resize = function() {
2285
- var a = -1, b = this.ww || (this.ww = []), c = this.w, e = c.cells[0], d = e.body.childNodes, h = d.length, g = this.pages || [], z = g.length;
2286
- for (c.redraw.call(e); ++a < h; ) b[a] = d[a].style.width;
2287
- if (z) {
2288
  c = this.mx;
2289
- for (a = this.mn; a <= c; a++) g[a].widths(b);
2290
  this.redrawDirty() && this.redraw();
2291
  }
2292
  };
2293
- r.redrawDirty = function() {
2294
  var a = !1, b = this.root, c = b.scrollTop, b = b.clientHeight;
2295
  this.sy !== c && (a = !0, this.sy = c);
2296
  this.vh !== b && (a = !0, this.vh = b);
2297
  return a;
2298
  };
2299
- r.redraw = function() {
2300
- for (var a = 0, b = -1, c = null, e = null, d = this.ww, h = this.sy, g = this.vh, z = this.mn, l = this.mx, p = Math.max(0, h - 100), h = g + h + 100, f = this.pages || [], v = f.length; ++b < v && !(a > h); ) g = f[b],
2301
- a += g.height(), a < p || (null === c && (c = b), e = b, g.rendered || g.render(d));
2302
- if (z !== c) {
2303
- if (null !== z && c > z) for (b = z; b < c; b++) {
2304
- g = f[b];
2305
- if (!g) throw Error("Shit!");
2306
- g.rendered && g.sleep();
2307
  }
2308
  this.mn = c;
2309
  }
2310
- if (l !== e) {
2311
- if (null !== l && e < l) for (b = l; b > e; b--) g = f[b], g.rendered && g.sleep();
2312
  this.mx = e;
2313
  }
2314
  };
2315
- r.selected = function() {
2316
  return this.r;
2317
  };
2318
- r.thead = function() {
2319
  return this.w.cells[0];
2320
  };
2321
- r.tbody = function() {
2322
  return this.w.cells[1];
2323
  };
2324
- r.tr = function(a) {
2325
  return (a = this.row(a)) ? a.cells() : [];
2326
  };
2327
- r.row = function(a) {
2328
  return this.rows[a];
2329
  };
2330
- r.td = function(a, b) {
2331
  return this.tr(a)[b];
2332
  };
2333
- r.next = function(a, b, c) {
2334
  null == c && (c = this.r || 0);
2335
- var e = this.idxs, d = e.length, h = (this.idxr || {})[c];
2336
- for (c = h; c !== (h += a) && !(0 <= h && d > h); ) if (b && d) h = 1 === a ? -1 : d,
2337
  b = !1; else return null;
2338
- c = e[h];
2339
- return null == c || null == this.rows[c] ? (m("Bad next: [" + h + "] does not map to data row"),
2340
  null) : c;
2341
  };
2342
- r.selectNext = function(a, b, c) {
2343
  a = this.next(a, b);
2344
  null != a && this.r !== a && this.select(a, c);
2345
  return this;
2346
  };
2347
- r.deselect = function(a) {
2348
  var b = this.r;
2349
- null != b && (this.r = null, k(this.tr(b)).removeClass("selected"), this.w.fire("wgRowDeselect", [ b, a ]));
2350
  return this;
2351
  };
2352
- r.selectRow = function(a, b) {
2353
  return this.select(this.idxs[a]);
2354
  };
2355
- r.select = function(a, b) {
2356
  var c = this.rows[a], e = c && c.page;
2357
- if (!e) return this.deselect(!1), m("Row is filtered out"), this;
2358
  this.deselect(!0);
2359
- var d, h = this.w.cells[1];
2360
- e.rendered || (d = e.top(), h.scrollY(d), this.redrawDirty() && this.redraw());
2361
- if (!c.rendered) return e.rendered || m("Failed to render page"), m("Row [" + c.i + "] not rendered"),
2362
  this;
2363
  e = c.cells();
2364
- k(e).addClass("selected");
2365
  this.r = a;
2366
- b || (d = h.scrollY(), k(this.root).focus(), d !== h.scrollY() && h.scrollY(d));
2367
- h.scrollTo(e[0], !0);
2368
  this.w.fire("wgRowSelect", [ a, c.data() ]);
2369
  return this;
2370
  };
2371
- r.unfilter = function() {
2372
  this._idxs && (this.idxs = this._sort(this._idxs), this._idxs = null, this.clear().render());
2373
  return this;
2374
  };
2375
- r.filter = function(a) {
2376
  this._idxs || (this._idxs = this.idxs);
2377
  this.idxs = this._sort(a);
2378
  return this.clear().render();
2379
  };
2380
- r.each = function(a) {
2381
- for (var b, c = -1, e = this.rows || [], d = this.idxs || [], h = d.length; ++c < h; ) b = d[c],
2382
  a(e[b], c, b);
2383
  return this;
2384
  };
2385
- r.sortable = function(a) {
2386
- var b = this.sc || (this.sc = new l(this));
2387
  b.has(a) || b.add(a);
2388
  return this;
2389
  };
2390
- r._re_sort = function(a) {
2391
  var b = -1, c = this.sc, e = c.active;
2392
- for (this.sc = c = new l(this); ++b < a; ) c.add(b);
2393
  e && (b = this.head.indexOf(e.id), -1 === b && (b = Math.min(e.idx, a - 1)), this.sort(b, e.desc));
2394
  return this;
2395
  };
2396
- r._sort = function(a, b) {
2397
  b ? (this.s = b, b(a)) : (b = this.s) && b(a);
2398
  return a;
2399
  };
2400
- r.sort = function(a, b) {
2401
- this._sort(this.idxs, h(this, a, b));
2402
  this.sc.activate(a, b);
2403
  return this;
2404
  };
2405
- r = null;
2406
- r = l.prototype;
2407
- r.has = function(a) {
2408
  return null != this[a];
2409
  };
2410
- r.add = function(a) {
2411
  var b = this, c = b.t.head.cells[a];
2412
  b[a] = {
2413
  desc: null,
@@ -2421,22 +2421,22 @@ b.toggle(a), !1;
2421
  });
2422
  return b;
2423
  };
2424
- r.toggle = function(a) {
2425
  this.t.sort(a, !this[a].desc).clear().render();
2426
  return this;
2427
  };
2428
- r.activate = function(a, b) {
2429
  var c, e;
2430
  c = this.active;
2431
- var d = this[a], h = this.t.head.cells;
2432
- c && (e = h[c.idx]) && (e.removeClass(c.css), c !== d && e.restyle());
2433
- (e = h[a]) ? (d.desc = b, this.active = d, c = "wg-" + (b ? "desc" : "asc"), e.addClass(c).restyle(),
2434
  d.css = c) : this.active = null;
2435
  return this;
2436
  };
2437
- r = null;
2438
- r = v.prototype;
2439
- r.render = function(a) {
2440
  var b, c = [], e = this._, d = this.length;
2441
  if (e) {
2442
  for (this.c = c; 0 !== d--; ) b = e.cloneNode(!1), c[d] = this.update(d, b), b.$index = this.i,
@@ -2446,57 +2446,57 @@ this._ = null;
2446
  this.rendered = !0;
2447
  return this;
2448
  };
2449
- r.update = function(a, b) {
2450
  var c = b || this.c[a] || {}, e = (this.d[a] || function() {})() || " ";
2451
  null == e.innerHTML ? c.textContent = e : c.innerHTML = e.innerHTML;
2452
  return c;
2453
  };
2454
- r.cells = function() {
2455
  return this.c || [ this._ ];
2456
  };
2457
- r.data = function() {
2458
  for (var a = -1, b = [], c = this.length; ++a < c; ) b[a] = this.cellVal(a);
2459
  return b;
2460
  };
2461
- r.destroy = function() {
2462
  this.page = null;
2463
  this.rendered = !1;
2464
  };
2465
- r.cellVal = function(a) {
2466
  a = this.d[a]() || "";
2467
  return String(a.textContent || a);
2468
  };
2469
- r = null;
2470
- r = x.prototype;
2471
- r.size = function() {
2472
  return this.rows.length;
2473
  };
2474
- r.insert = function(a) {
2475
- var b = this.h, c = g("wg-dead");
2476
  c.style.height = String(b) + "px";
2477
  a.appendChild(c);
2478
  return this.dead = c;
2479
  };
2480
- r.top = function() {
2481
  return (this.rendered ? this.live : this.dead).offsetTop;
2482
  };
2483
- r.height = function() {
2484
  var a = this.h;
2485
  null == a && (this.h = a = this.rendered ? this.live.firstChild.offsetHeight : this.dead.offsetHight);
2486
- a || m("row has zero height");
2487
  return a;
2488
  };
2489
- r.render = function(a) {
2490
- for (var b, c = -1, e = this.rows, d = e.length, h = this.dead, g = this.live, z = g.childNodes; ++c < d; ) b = e[c],
2491
- b.rendered || b.render(z);
2492
  d = a.length;
2493
- for (c = 0; c < d; c++) z[c].style.width = a[c];
2494
- h.parentNode.replaceChild(g, h);
2495
  this.rendered = !0;
2496
  this.h = null;
2497
  return this;
2498
  };
2499
- r.sleep = function() {
2500
  var a = this.height(), b = this.live, c = this.dead;
2501
  c.style.height = String(a) + "px";
2502
  b.parentNode.replaceChild(c, b);
@@ -2504,62 +2504,62 @@ this.rendered = !1;
2504
  this.h = a;
2505
  return this;
2506
  };
2507
- r.sleepH = function(a) {
2508
  a *= this.rows.length;
2509
  var b = this.dead;
2510
  b && (b.style.height = String(a) + "px");
2511
  this.rendered || (this.h = a);
2512
  return this;
2513
  };
2514
- r.widths = function(a) {
2515
  for (var b = this.live.childNodes, c = a.length; 0 !== c--; ) b[c].style.width = a[c];
2516
  return this;
2517
  };
2518
- r.destroy = function() {
2519
  var a = this.rendered ? this.live : this.dead, b = this.rows, c = b.length;
2520
  for (a.parentNode.removeChild(a); 0 !== c--; ) b[c].destroy();
2521
  };
2522
- r = null;
2523
  return f;
2524
- }({}, w, A));
2525
- n.register("$38", function(f, d, E) {
2526
- function m(a, b) {
2527
  var c = a.id, e = c && q[c], d = e && e.parent();
2528
  if (!e || !d) return null;
2529
- var h = d.dir === r, c = h ? "X" : "Y", g = "page" + c, h = h ? x : v, l = h(d.el), c = b["offset" + c], p = d.el, f = p.className;
2530
- null == c && (c = b[g] - h(a));
2531
- c && (l += c);
2532
- p.className = f + " is-resizing";
2533
  return {
2534
  done: function() {
2535
- p.className = f;
2536
  },
2537
  move: function(a) {
2538
- d.resize(a[g] - l, e);
2539
  return !0;
2540
  }
2541
  };
2542
  }
2543
- function g(a, c) {
2544
  function e() {
2545
- k(E).off("mousemove", d);
2546
- s && (s.done(), s = null);
2547
  return !0;
2548
  }
2549
  function d(a) {
2550
- s ? s.move(a) : e();
2551
  return !0;
2552
  }
2553
- if (s) return !0;
2554
- s = m(a.target, a);
2555
- if (!s) return !0;
2556
- k(E).one("mouseup", e).on("mousemove", d);
2557
  return b(a);
2558
  }
2559
  function c(a, b) {
2560
  var c = b.type;
2561
- "touchmove" === c ? s && s.move(b) : "touchstart" === c ? s = m(a.target, b) : "touchend" === c && s && (s.done(),
2562
- s = null);
2563
  }
2564
  function b(a) {
2565
  a.stopPropagation();
@@ -2567,19 +2567,19 @@ a.preventDefault();
2567
  return !1;
2568
  }
2569
  function a(a) {
2570
- var b = C;
2571
  b && b.redraw();
2572
  a && a.redraw();
2573
- return C = a;
2574
  }
2575
  function e(b, c) {
2576
- var e = k(c).on("editFocus", function() {
2577
  e.trigger("wgFocus", [ a(b) ]);
2578
  }).on("editBlur", function() {
2579
  e.trigger("wgBlur", [ a(null) ]);
2580
  });
2581
  }
2582
- function h(a) {
2583
  var b = a.id, c = a.className;
2584
  this.id = b;
2585
  this.el = a;
@@ -2589,21 +2589,21 @@ this._cn = c;
2589
  q[b] = this;
2590
  this.clear();
2591
  }
2592
- var p = n.include("$44", "html.js") || n.include("$2", "html.js", !0), l = n.require("$21", "dom.js"), v = l.top, x = l.left, r = 1, q = {}, C, s = !1;
2593
  f.init = function(a) {
2594
- var b = new h(a);
2595
  b.redraw();
2596
- n.require("$45", "touch.js").ok(function(b) {
2597
  b.dragger(a, c);
2598
  });
2599
- k(a).on("mousedown", g);
2600
  return b;
2601
  };
2602
- d = h.prototype;
2603
  d.fire = function(a, b) {
2604
- var c = k.Event(a);
2605
  c.cell = this;
2606
- k(this.el).trigger(c, b);
2607
  return this;
2608
  };
2609
  d.each = function(a) {
@@ -2620,10 +2620,10 @@ d.off = function() {
2620
  return this.$("off", arguments);
2621
  };
2622
  d.find = function(a) {
2623
- return k(this.el).find(a);
2624
  };
2625
  d.$ = function(a, b) {
2626
- k.fn[a].apply(k(this.el), b);
2627
  return this;
2628
  };
2629
  d.addClass = function(a) {
@@ -2639,24 +2639,24 @@ d.parent = function() {
2639
  return this.pid && q[this.pid];
2640
  };
2641
  d.splitx = function() {
2642
- return this._split(r, arguments);
2643
  };
2644
  d.splity = function() {
2645
  return this._split(2, arguments);
2646
  };
2647
  d._split = function(a, b) {
2648
  (this.length || this.field) && this.clear();
2649
- for (var c = -1, e, d = b.length, g = 1 / d, p = 0; ++c < d; ) {
2650
- e = l.el();
2651
  this.body.appendChild(e);
2652
- for (var f = e, v = b[c], k = v, r = 1; q[v]; ) v = k + "-" + ++r;
2653
- f.id = v;
2654
- e = new h(e);
2655
  e.index = c;
2656
  e.pid = this.id;
2657
  e._locale(this.lang, this.rtl);
2658
- e.pos = p;
2659
- p += g;
2660
  this.cells.push(e);
2661
  this.length++;
2662
  }
@@ -2671,35 +2671,35 @@ var a = this.el;
2671
  a.innerHTML = "";
2672
  this.body = null;
2673
  a.className = this._cn || "";
2674
- k(a).off();
2675
  return this;
2676
  };
2677
  d.exists = function() {
2678
  return this === q[this.id];
2679
  };
2680
  d.clear = function() {
2681
- for (var a = this.el, b = this.cells, c = this.field, e = this.body, d = this.nav, h = this.length || 0; 0 !== h--; ) delete q[b[h].destroy().id];
2682
  this.cells = [];
2683
  this.length = 0;
2684
  d && (a.removeChild(d), this.nav = null);
2685
- e && (c && (p.ie() && k(e).triggerHandler("blur"), c.destroy(), this.field = null),
2686
  this.table && (this.table = null), a === e.parentNode && a.removeChild(e));
2687
- this.body = a.appendChild(l.el("", "wg-body"));
2688
  this._h = null;
2689
  return this;
2690
  };
2691
  d.resize = function(a, b) {
2692
  if (!b && (b = this.cells[1], !b)) return;
2693
- var c = b.index, e = this.cells, d = k(this.el)[this.dir === r ? "width" : "height"](), h = e[c + 1], c = e[c - 1];
2694
  pad = (b.body || b.el.firstChild).offsetTop || 0;
2695
- max = (h ? h.pos * d : d) - pad;
2696
  min = c ? c.pos * d : 0;
2697
  b.pos = Math.min(max, Math.max(min, a)) / d;
2698
  this.redraw();
2699
  return this;
2700
  };
2701
  d.distribute = function(a) {
2702
- for (var b = -1, c = 0, e, d = this.cells, h = a.length; ++b < h && (e = d[++c]); ) e.pos = Math.max(0, Math.min(1, a[b]));
2703
  this.redraw();
2704
  return this;
2705
  };
@@ -2722,25 +2722,25 @@ d.redraw = function(a) {
2722
  this.restyle();
2723
  var b = this.el, c = this.body, e = this.field;
2724
  if (c) {
2725
- var d, h = b.clientWidth || 0, g = b.clientHeight || 0, p = c.offsetTop || 0, g = p > g ? 0 : g - p;
2726
- this._h !== g && (this._h = g, c.style.height = String(g) + "px", d = e);
2727
- this._w !== h && (this._w = h, d = e);
2728
  d && d.redraw();
2729
  }
2730
  c = this.length;
2731
- h = 1;
2732
- g = this.nav;
2733
- for (p = 2 === this.dir ? "height" : "width"; 0 !== c--; ) e = this.cells[c], g ? d = 1 : (e.fixed && (e.pos = e.fixed / k(b)[p]()),
2734
- d = h - e.pos, h = e.pos), e.el.style[p] = String(100 * d) + "%", e.redraw(a);
2735
  return this;
2736
  };
2737
  d.contents = function(a, b) {
2738
  var c = this.el, e = this.body;
2739
  if (null == a) return e.innerHTML;
2740
  this.length ? this.clear() : e && (c.removeChild(e), e = null);
2741
- e || (this.body = e = c.appendChild(l.el("", b || "wg-content")), this._h = null,
2742
  (c = this.lang) && this._locale(c, this.rtl, !0));
2743
- "string" === typeof a ? k(e)._html(a) : a && this.append(a);
2744
  this.redraw();
2745
  return this;
2746
  };
@@ -2750,14 +2750,14 @@ if (c) {
2750
  var d = c.editable();
2751
  c.reload(a, b);
2752
  d !== b && this.restyle();
2753
- } else this.length && this.clear(), d = l.el("textarea"), d.setAttribute("wrap", "virtual"),
2754
- d.value = a, this.contents(d), c = n.require("$46", "field.js")._new(d)[b ? "enable" : "disable"](),
2755
  e(this, d), this.field = c, this.restyle();
2756
  this.lang || this.locale("en");
2757
  return c;
2758
  };
2759
  d.locale = function(a) {
2760
- a = n.require("$36", "locale.js").cast(a);
2761
  return this._locale(String(a), a.isRTL());
2762
  };
2763
  d._locale = function(a, b, c) {
@@ -2784,26 +2784,26 @@ b.eachTextarea(a);
2784
  return this;
2785
  };
2786
  d.append = function(a) {
2787
- a && (a.nodeType ? p.init(this.body.appendChild(a)) : p.init(k(a).appendTo(this.body)));
2788
  return this;
2789
  };
2790
  d.prepend = function(a) {
2791
  var b = this.body;
2792
  if (a.nodeType) {
2793
  var c = b.firstChild;
2794
- p.init(c ? b.insertBefore(a, c) : b.appendChild(a));
2795
- } else p.init(k(a).prependTo(b));
2796
  return this;
2797
  };
2798
  d.before = function(a) {
2799
  var b = this.body;
2800
- a.nodeType ? p.init(this.el.insertBefore(a, b)) : p.init(k(a).insertBefore(b));
2801
  return this;
2802
  };
2803
  d.header = function(a, b) {
2804
  if (null == a && null == b) return this.el.getElementsByTagName("header")[0];
2805
- this.t = l.txt(a || "");
2806
- this.el.insertBefore(l.el("header", b), this.body).appendChild(this.t);
2807
  this.redraw();
2808
  return this;
2809
  };
@@ -2818,7 +2818,7 @@ var a = this.t;
2818
  return a && a.nodeValue;
2819
  };
2820
  d.bodyY = function() {
2821
- return v(this.body, this.el);
2822
  };
2823
  d.scrollY = function(a) {
2824
  if (J === a) return this.body.scrollTop;
@@ -2826,7 +2826,7 @@ this.body.scrollTop = a;
2826
  };
2827
  d.tabulate = function(a) {
2828
  var b = this.table;
2829
- b ? b.clear() : b = n.require("$47", "wgtable.js").create(this);
2830
  b.init(a);
2831
  return this.table = b;
2832
  };
@@ -2837,67 +2837,67 @@ return this;
2837
  d.scrollTo = function(a, b) {
2838
  var c, e = this.body;
2839
  c = e.scrollTop;
2840
- var d = v(a, e);
2841
  if (c > d) c = d; else {
2842
- var h = e.clientHeight, d = d + k(a).outerHeight();
2843
- if (h + c < d) c = d - h; else return;
2844
  }
2845
- b ? e.scrollTop = c : k(e).stop(!0).animate({
2846
  scrollTop: c
2847
  }, 250);
2848
  };
2849
  d.navigize = function(a, c) {
2850
  function e(a) {
2851
- var b = h[a], c = f[a], d = k(b.el).show();
2852
  c.addClass("active");
2853
- p = a;
2854
- v.data("idx", a);
2855
  b.fire("wgTabSelect", [ a ]);
2856
  return d;
2857
  }
2858
- var d = this, h = d.cells, g = d.nav, p, f = [];
2859
- g && d.el.removeChild(g);
2860
- var g = d.nav = d.el.insertBefore(l.el("nav", "wg-tabs"), d.body), v = k(g).on("click", function(a) {
2861
- var c = k(a.target).data("idx");
2862
  if (null == c) return !0;
2863
- if (null != p) {
2864
- var g = f[p];
2865
- k(h[p].el).hide();
2866
  g.removeClass("active");
2867
  }
2868
  e(c);
2869
  d.redraw();
2870
  return b(a);
2871
  });
2872
- null == c && (c = v.data("idx") || 0);
2873
  d.each(function(b, c) {
2874
- f[c] = k('<a href="#' + b.id + '"></a>').data("idx", c).text(a[c]).appendTo(v);
2875
  b.pos = 0;
2876
- k(b.el).hide();
2877
  });
2878
- e(h[c] ? c : 0);
2879
  d.lock();
2880
  d.redraw();
2881
  return d;
2882
  };
2883
  d.navigated = function() {
2884
  var a = this.nav;
2885
- if (a) return k(a).data("idx");
2886
  };
2887
  d = null;
2888
  return f;
2889
- }({}, w, A));
2890
- n.register("$24", function(f, d, E) {
2891
- function m(a) {
2892
  var b = [];
2893
  a && (a.saved() || b.push("po-unsaved"), a.fuzzy() ? b.push("po-fuzzy") : a.flagged() && b.push("po-flagged"),
2894
  a.translation() || b.push("po-empty"), a.comment() && b.push("po-comment"));
2895
  return b.join(" ");
2896
  }
2897
- function g(a, b, c) {
2898
- b = k(a.title(b).parentNode);
2899
  var e = b.find("span.lang");
2900
- c ? (c = n.require("$36", "locale.js").cast(c), e.length || (e = k("<span></span>").prependTo(b)),
2901
  e.attr("lang", c.lang).attr("class", c.getIcon() || "lang region region-" + (c.region || "zz").toLowerCase())) : (e.remove(),
2902
  c = "en");
2903
  a.locale(c);
@@ -2913,22 +2913,22 @@ return e;
2913
  function b() {
2914
  this.dirty = 0;
2915
  }
2916
- n.require("$3", "number.js");
2917
- var a = "poUpdate", e = "changing", h = "changed", p = 0, l = 1, v = 2, x = 3, r = 4, q = 5, C, s, y = n.require("$35", "string.js").html, w = n.require("$6", "string.js").sprintf;
2918
  f.extend = function(a) {
2919
  return a.prototype = new b();
2920
  };
2921
  f.localise = function(a) {
2922
- s = a;
2923
  return f;
2924
  };
2925
- var B = function() {
2926
- var a = E.createElement("p");
2927
  return function(b) {
2928
  a.innerHTML = b.replace("src=", "x=");
2929
  return a.textContent.trim() || b.trim();
2930
  };
2931
- }(), u = b.prototype = n.require("$37", "abstract.js").init([ "getListColumns", "getListHeadings", "getListEntry" ], [ "editable", "t" ]);
2932
  u.init = function() {
2933
  this.localise();
2934
  this.editable = {
@@ -2940,14 +2940,14 @@ this.html = !1;
2940
  return this;
2941
  };
2942
  u.localise = function(a) {
2943
- a || (a = s || n.require("$1", "t.js").init());
2944
  var b = [];
2945
- b[p] = a._x("Source text", "Editor") + ":";
2946
- b[x] = a._x("%s translation", "Editor") + ":";
2947
- b[r] = a._x("Context", "Editor") + ":";
2948
  b[q] = a._x("Comments", "Editor") + ":";
2949
- b[l] = a._x("Single", "Editor") + ":";
2950
- b[v] = a._x("Plural", "Editor") + ":";
2951
  b[6] = a._x("Untranslated", "Editor");
2952
  b[7] = a._x("Translated", "Editor");
2953
  b[8] = a._x("Toggle Fuzzy", "Editor");
@@ -2961,22 +2961,22 @@ function b(a) {
2961
  c.redraw(!0, a);
2962
  return !0;
2963
  }
2964
- var c = n.require("$38", "wingrid.js").init(a);
2965
- k(d).on("resize", b);
2966
  this.redraw = b;
2967
- k(a).on("wgFocus wgBlur", function(a, b) {
2968
  a.stopPropagation();
2969
- C = b;
2970
  });
2971
  this.destroy = function() {
2972
  c.destroy();
2973
- k(d).off("resize", b);
2974
  };
2975
  this.rootDiv = a;
2976
  return c;
2977
  };
2978
  u.$ = function() {
2979
- return k(this.rootDiv);
2980
  };
2981
  u.setListCell = function(a) {
2982
  var b = this;
@@ -2996,12 +2996,12 @@ u.setTargetCell = function(a) {
2996
  this.targetCell = a;
2997
  };
2998
  u.next = function(a, b, c) {
2999
- for (var e = this.listTable, d = e.selected(), h = d, g, p = this.po; null != (d = e.next(a, c, d)); ) {
3000
- if (h === d) {
3001
  d = null;
3002
  break;
3003
  }
3004
- if (b && (g = p.row(d), g.translated(0))) continue;
3005
  break;
3006
  }
3007
  null != d && e.select(d, !0);
@@ -3040,16 +3040,16 @@ u.filtered = function() {
3040
  return this.lastSearch || "";
3041
  };
3042
  u.filter = function(a, b) {
3043
- var c, e = this.listTable, d = this.lastFound, h = this.lastSearch;
3044
  if (a) {
3045
- if (h === a) return d || 0;
3046
- if (h && !d && 0 === a.indexOf(h)) return 0;
3047
  c = this.dict.find(a);
3048
  }
3049
- this.lastSearch = h = a;
3050
  this.lastFound = d = c ? c.length : this.po.length;
3051
  c ? e.filter(c) : e.unfilter();
3052
- b || this.fire("poFilter", [ h, d ]);
3053
  return d;
3054
  };
3055
  u.countFiltered = function() {
@@ -3067,8 +3067,8 @@ u.markUnsaved = function(a) {
3067
  var b = this.po.indexOf(a);
3068
  if ((b = this.listTable.tr(b)) && b.length) {
3069
  var c = b[0].className;
3070
- a = c.replace(/(?:^| +)po-[a-z]+/g, "") + " " + m(a);
3071
- a !== c && k(b).attr("class", a);
3072
  }
3073
  };
3074
  u.save = function(a) {
@@ -3082,7 +3082,7 @@ return b;
3082
  u.fire = function(a, b) {
3083
  var c = this.handle;
3084
  if (c && c[a] && (c = c[a].apply(this, b || []), !1 === c)) return !1;
3085
- c = k.Event(a);
3086
  this.$().trigger(c, b);
3087
  return !c.isDefaultPrevented();
3088
  };
@@ -3094,20 +3094,20 @@ u.getSorter = function() {
3094
  return null;
3095
  };
3096
  u.reload = function() {
3097
- var a = this, b, c = a.listCell, e = a.listTable, d = a.po, h = d && d.locale(), g = h && h.isRTL(), p = d && d.length || 0;
3098
  if (!d || !d.row) return c && c.clear().header("Error").contents("Invalid messages list"),
3099
  !1;
3100
- a.targetLocale = h;
3101
- a.lastSearch && (a.lastSearch = "", a.lastFound = p, a.fire("poFilter", [ "", p ]));
3102
  e && (b = e.thead().distribution());
3103
  a.listTable = e = c.tabulate({
3104
  eachCol: function(b) {
3105
- var c, e, d = a.getListColumns(), h = a.getListHeadings();
3106
- for (e in d) c = d[e], b(c, e, h[c]);
3107
  },
3108
  eachRow: function(b) {
3109
  d.each(function(c, e) {
3110
- b(e.idx, a.getListEntry(e), m(e));
3111
  });
3112
  },
3113
  sort: a.getSorter()
@@ -3115,9 +3115,9 @@ sort: a.getSorter()
3115
  var l, c = a.getListColumns();
3116
  for (l in c) e.sortable(c[l]);
3117
  b && e.thead().distribute(b);
3118
- e.tbody().$(g ? "addClass" : "removeClass", [ "is-rtl" ]);
3119
  a.fire("poLoad");
3120
- return !!p;
3121
  };
3122
  u.load = function(a, b) {
3123
  this.po = a;
@@ -3149,27 +3149,27 @@ u.setStatus = function() {
3149
  return null;
3150
  };
3151
  u.setSrcMeta = function(a, b) {
3152
- var e = [], d, h = !1, g = this.$smeta, p = this.labels, l = [], f = a.tags(), v = f && f.length;
3153
- if (d = a.context()) l.push("<span>" + y(p[r]) + "</span>"), l.push("<mark>" + y(d) + "</mark>");
3154
- if (v && this.getTag) for (l.push("<span>Tagged:</span>"); 0 <= --v; ) (d = this.getTag(f[v])) && l.push('<mark class="tag">' + y(d.mod_name) + "</mark>");
3155
  l.length && e.push(l.join(" "));
3156
- if (this.getMono() && (d = a.refs()) && (f = d.split(/\s/), v = f.length)) {
3157
- for (l = []; 0 <= --v; ) d = f[v], l.push("<code>" + y(d) + "</code>");
3158
  e.push('<p class="has-icon icon-file">' + l.join(" ") + "</p>");
3159
  }
3160
- (d = a.notes()) && e.push('<p class="has-icon icon-info">' + y(d, !0) + "</p>");
3161
- e.length ? (g || (g = b.find("div.meta"), g.length || (g = k('<div class="meta"></div>').insertAfter(b.header())),
3162
- c(this, g, "poMeta"), this.$smeta = g), g.html(e.join("\n")).show(), h = !0) : g && g.text() && (g.text("").hide(),
3163
- h = !0);
3164
- return h;
3165
  };
3166
  u.setTrgMeta = function(a, b, c) {
3167
- var e = [], d = !1, h = this.$tmeta;
3168
  b = (a = a.errors(b)) && a.length;
3169
- var g;
3170
- if (b) for (g = 0; g < b; g++) e.push('<p class="has-icon icon-warn">' + y(a[g], !0) + ".</p>");
3171
- e.length ? (h || (h = c.find("div.meta"), h.length || (h = k('<div class="meta"></div>').insertAfter(c.header())),
3172
- this.$tmeta = h), h.html(e.join("\n")).show(), d = !0) : h && h.text() && (h.text("").hide(),
3173
  d = !0);
3174
  return d;
3175
  };
@@ -3182,117 +3182,117 @@ e[0] = a.charAt(0).toUpperCase() + a.substr(1).toLowerCase();
3182
  return e.join(" ");
3183
  }
3184
  function d(a, e) {
3185
- var h = J, k = L[p];
3186
  a.off();
3187
- a.titled() !== k && g(a, k, e || "en");
3188
- k = !1;
3189
- s.setSrcMeta(b, a) && (k = !0);
3190
  if (b.plural()) {
3191
- var k = -1, r = [], q = [], x = a.id + "-", m = b.sourceForms() || e && e.plurals || [ "One", "Other" ], n = m.length;
3192
- if (2 !== n || "=" === m[0].charAt(0) && "=1" !== m[0]) for (;++k < n; ) r[k] = x + String(k),
3193
- q[k] = c(m[k]) + ":"; else r = [ x + "-0", x + "-1" ], q = [ L[l], L[v] ];
3194
- a.splity.apply(a, r);
3195
  a.each(function(a, c) {
3196
- a.header(q[c]).textarea(b.source(null, c), h).setStrf(D).setMode(y).setInvs(B);
3197
  });
3198
  a.lock();
3199
- h && a.each(function(a, b) {
3200
  f(a, b);
3201
  });
3202
- } else k && a.redraw(), a.textarea(b.source(), h).setStrf(D).setMode(y).setInvs(B),
3203
- h && f(a, 0);
3204
  }
3205
  function f(c, d) {
3206
  c.on(e, function(a, c) {
3207
  b.source(c, d);
3208
- 0 === d && s.updateListCell(b, "source");
3209
- s.unsave(b, d);
3210
- }).on(h, function() {
3211
- 0 === d && s.po.reIndex(b);
3212
- s.dict && s.rebuildSearch();
3213
- s.fire(a, [ b ]);
3214
  });
3215
  }
3216
- function k(a, e, d) {
3217
  M && a.eachTextarea(function(a) {
3218
  a.ping();
3219
  });
3220
  a.off();
3221
- var h = e.isKnown() && e.label || "Target", h = w(L[x], h);
3222
- a.titled() !== h && g(a, h, e);
3223
- h = !1;
3224
- !this.sourceCell && s.setSrcMeta(b, a) && (h = !0);
3225
- s.setTrgMeta(b, d, a) && (h = !0);
3226
- s.setStatus(b, d);
3227
- if (b.pluralized()) {
3228
- var p = [], l = [], f = a.id + "-", v = b.targetForms() || e.plurals || [ "One", "Other" ], h = v.length, r = function(a) {
3229
- var b = v[a];
3230
- l.push(b ? c(b, !0) : "Form " + a);
3231
- p.push(f + String(a));
3232
- };
3233
- for (b.each(r); (e = p.length) < h; ) r(e);
3234
- a.splitx.apply(a, p);
3235
  a.each(function(a, c) {
3236
  var e = M && !b.disabled(c);
3237
- a.textarea(b.translation(c), e).setStrf(D).setMode(y).setInvs(B);
3238
- M && m(a, c);
3239
  });
3240
- a.navigize(l, d || null).on("wgTabSelect", function(c, e) {
3241
  var d = M && c.cell.editable();
3242
  d && d.focus();
3243
- s.setTrgMeta(b, e, a);
3244
- s.setStatus(b, e);
3245
- s.fire("poTab", [ e ]);
3246
  });
3247
- } else h && a.redraw(), a.textarea(b.translation(), M && !b.disabled(0)).setStrf(D).setMode(y).setInvs(B),
3248
- M && m(a, 0);
3249
  }
3250
- function m(c, d) {
3251
  c.on(e, function(a, c, e) {
3252
  b.translate(c, d);
3253
- 0 === d && s.updateListCell(b, "target");
3254
- b.fuzzy(d) ? s.fuzzy(!1, b, d) : s.unsave(b, d);
3255
- "" === c ? (s.fire("poEmpty", [ !0, b, d ]), s.setStatus(b, d)) : "" === e && (s.fire("poEmpty", [ !1, b, d ]),
3256
- s.setStatus(b, d));
3257
- }).on(h, function() {
3258
- s.dict && s.rebuildSearch();
3259
- s.fire(a, [ b ]);
3260
  });
3261
  }
3262
- function n(c) {
3263
  c.off();
3264
- var d = L[r];
3265
- c.titled() !== d && (g(c, d), s.setStatus(null));
3266
- c.textarea(b.context(), !0).setMode(y).setInvs(B);
3267
  X && c.on(e, function(a, c) {
3268
  b.context(c);
3269
- s.updateListCell(b, "source");
3270
- s.unsave(b, N);
3271
- }).on(h, function() {
3272
- s.po.reIndex(b);
3273
- s.dict && s.rebuildSearch();
3274
- s.fire(a, [ b ]);
3275
  });
3276
  }
3277
  function u(a) {
3278
  var c = L[q];
3279
- a.titled() !== c && g(a, c);
3280
  a.off().on(e, function(a, c) {
3281
  b.comment(c);
3282
- s.fire("poComment", [ b, c ]);
3283
- s.unsave(b, N);
3284
  }).textarea(b.comment(), !0);
3285
  }
3286
- var s = this, y = s.mode, E = b.isHTML(), B = s.inv || !1, A = this.fmt || null, D = b.format() || null, I = b.is(s.active), N = 0, T = s.sourceCell, S = s.targetCell, U = s.contextCell, V = s.commentCell, M = s.editable.target, J = s.editable.source, X = s.editable.context, O = C, Y = s.sourceLocale, W = s.targetLocale, L = s.labels;
3287
- s.html !== E && (s.html = E, "code" !== s.mode && (y = E ? "html" : "", s.setMode(y)));
3288
- s.active = b;
3289
  T && d(T, Y);
3290
- U && n(U);
3291
- S && W && (N = S.navigated() || 0, k(S, W, N));
3292
  V && u(V);
3293
- O && (O.exists() || (O = O.parent()), (E = O.editable()) && E.focus());
3294
- A !== D && (this.fmt = D);
3295
- I || s.fire("poSelected", [ b, N ]);
3296
  };
3297
  u.unloadActive = function() {
3298
  function a(b) {
@@ -3325,7 +3325,7 @@ var c = this.getListColumns()[b], e = this.po.indexOf(a);
3325
  (e = this.listTable.row(e)) && e.rendered && e.update(c);
3326
  };
3327
  u.cellText = function(a) {
3328
- return (a = -1 !== a.indexOf("<") || -1 !== a.indexOf("&") ? B(a) : a.trim()) || " ";
3329
  };
3330
  u.fuzzy = function(a, b, c) {
3331
  b = b || this.active;
@@ -3405,9 +3405,9 @@ return this;
3405
  };
3406
  u = null;
3407
  return f;
3408
- }({}, w, A));
3409
- n.register("$13", function(f, d, E) {
3410
- function m() {
3411
  this.init()._validate();
3412
  this.sourceLocale = {
3413
  lang: "en",
@@ -3415,38 +3415,38 @@ label: "English",
3415
  plurals: [ "One", "Other" ]
3416
  };
3417
  }
3418
- function g(a) {
3419
- a = k('<button type="button" class="button button-small icon icon-' + a + ' hastip"></button>');
3420
- n.require("$12", "tooltip.js").init(a);
3421
  return a;
3422
  }
3423
  function c(a) {
3424
- return g("cloud").attr("title", a.labels[8] + " (Ctrl-U)").on("click", function(b) {
3425
  b.preventDefault();
3426
  a.focus().fuzzy(!a.fuzzy());
3427
  });
3428
  }
3429
  function b(a) {
3430
- return g("robot").attr("title", a.labels[9] + " (Ctrl-J)").on("click", function(b) {
3431
  b.preventDefault();
3432
  a.fire("poHint");
3433
  });
3434
  }
3435
- d = n.require("$24", "base.js");
3436
  f.init = function(a) {
3437
- var b = new m();
3438
  a = b.setRootCell(a);
3439
- var c = a.splity("po-list", "po-edit"), d = c[0], g = c[1], c = g.splitx("po-trans", "po-comment"), f = c[0], k = c[1].header("Loading.."), c = f.splity("po-source", "po-target"), f = c[0].header("Loading.."), c = c[1].header("Loading..");
3440
  a.distribute([ .34 ]);
3441
  g.distribute([ .8 ]);
3442
  b.setListCell(d);
3443
- b.setSourceCell(f);
3444
  b.setTargetCell(c);
3445
- b.commentCell = k;
3446
  b.editable.source = !1;
3447
  return b;
3448
  };
3449
- d = m.prototype = d.extend(m);
3450
  d.getListHeadings = function() {
3451
  var a = this.t || {
3452
  _x: function(a) {
@@ -3465,9 +3465,9 @@ return a;
3465
  };
3466
  d.getListEntry = function(a) {
3467
  var b = this.cellText, c = [ function() {
3468
- var c, d = b(a.source() || ""), h = a.context();
3469
- return h ? (c = E.createElement("p"), c.appendChild(E.createElement("mark")).innerText = h,
3470
- c.appendChild(E.createTextNode(" " + d)), c) : d;
3471
  } ];
3472
  this.targetLocale && (c[1] = function() {
3473
  return b(a.translation() || "");
@@ -3512,7 +3512,7 @@ return !this._unlocked;
3512
  d.setStatus = function(a) {
3513
  var e = this.$tnav;
3514
  if (null == a) e && (e.remove(), this.$tnav = null); else {
3515
- e || (this.$tnav = e = k("<nav></nav>").append(c(this)).append(b(this)).appendTo(this.targetCell.header()));
3516
  var d = [];
3517
  a.translated() ? a.fuzzy() && d.push("po-fuzzy") : d.push("po-empty");
3518
  e.attr("class", d.join(" "));
@@ -3520,24 +3520,24 @@ e.attr("class", d.join(" "));
3520
  };
3521
  d.getSorter = function() {
3522
  function a(a, c) {
3523
- var d = a.weight(), h = c.weight();
3524
- return d === h ? b(a, c) : d > h ? -1 : 1;
3525
  }
3526
  function b(a, c) {
3527
  return a.hash().localeCompare(c.hash());
3528
  }
3529
  var c = this;
3530
  return function(d) {
3531
- var g = c.po, f = c.locked() ? a : b;
3532
  d.sort(function(a, b) {
3533
- return f(g.row(a), g.row(b));
3534
  });
3535
  };
3536
  };
3537
  return f;
3538
- }({}, w, A));
3539
- n.register("$14", function(f, d, n) {
3540
- var m = {
3541
  copy: 66,
3542
  clear: 75,
3543
  save: 83,
@@ -3547,7 +3547,7 @@ prev: 38,
3547
  enter: 13,
3548
  invis: 73,
3549
  hint: 74
3550
- }, g = {
3551
  38: !0,
3552
  40: !0,
3553
  73: !0
@@ -3583,42 +3583,42 @@ f.init = function(b, a) {
3583
  function e(a) {
3584
  if (a.isDefaultPrevented() || !a.metaKey && !a.ctrlKey) return !0;
3585
  var e = a.which;
3586
- if (!h[e]) return !0;
3587
  var d = c[e];
3588
  if (!d) throw Error("command undefined #" + e);
3589
- if (a.altKey || a.shiftKey && !g[e] || !1 === d(a, b)) return !0;
3590
  a.stopPropagation();
3591
  a.preventDefault();
3592
  return !1;
3593
  }
3594
- var h = {};
3595
- k(a || d).on("keydown", e);
3596
  return {
3597
  add: function(a, b) {
3598
- c[m[a]] = b;
3599
  return this;
3600
  },
3601
  enable: function() {
3602
  var a, b;
3603
- for (b in arguments) a = m[arguments[b]], h[a] = !0;
3604
  return this;
3605
  },
3606
  disable: function() {
3607
- k(a || d).off("keydown", e);
3608
- b = a = h = null;
3609
  }
3610
  };
3611
  };
3612
  return f;
3613
- }({}, w, A));
3614
- n.register("$25", function(f, d, k) {
3615
- function m() {
3616
  this.reIndex([]);
3617
  }
3618
  f.init = function() {
3619
- return new m();
3620
  };
3621
- d = m.prototype;
3622
  d.reIndex = function(d) {
3623
  for (var c = {}, b = -1, a = d.length; ++b < a; ) c[d[b]] = b;
3624
  this.keys = d;
@@ -3667,11 +3667,11 @@ for (var c = -1, b = this.keys, a = this.length; ++c < a; ) d(b[c], this[c], c);
3667
  return this;
3668
  };
3669
  d.sort = function(d) {
3670
- for (var c = -1, b = this.length, a, e = this.keys, h = this.ords, f = []; ++c < b; ) f[c] = [ this[c], e[c] ];
3671
- f.sort(function(a, b) {
3672
  return d(a[0], b[0]);
3673
  });
3674
- for (c = 0; c < b; c++) a = f[c], this[c] = a[0], a = a[1], e[c] = a, h[a] = c;
3675
  return this;
3676
  };
3677
  d.join = function(d) {
@@ -3679,29 +3679,29 @@ return [].join.call(this, d);
3679
  };
3680
  d = null;
3681
  return f;
3682
- }({}, w, A));
3683
- n.register("$26", function(f, d, k) {
3684
- function m(d, c) {
3685
  var b = RegExp("^.{0," + (d - 1) + "}[" + c + "]"), a = RegExp("^[^" + c + "]+");
3686
- return function(c, h) {
3687
- for (var f = c.length, l; f > d; ) {
3688
- l = b.exec(c) || a.exec(c);
3689
- if (null == l) break;
3690
- l = l[0];
3691
- h.push(l);
3692
- l = l.length;
3693
- f -= l;
3694
- c = c.substr(l);
3695
- }
3696
- 0 !== f && h.push(c);
3697
- return h;
3698
  };
3699
  }
3700
  f.create = function(d) {
3701
  function c(a) {
3702
- return l[a] || "\\" + a;
3703
  }
3704
- var b, a, e = /(?:\r\n|[\r\n\v\f\u2028\u2029])/g, h = /[ \r\n]+/g, f = /[\t\v\f\x07\x08\\\"]/g, l = {
3705
  "\t": "\\t",
3706
  "\v": "\\v",
3707
  "\f": "\\f",
@@ -3709,42 +3709,42 @@ var b, a, e = /(?:\r\n|[\r\n\v\f\u2028\u2029])/g, h = /[ \r\n]+/g, f = /[\t\v\f\
3709
  "\b": "\\b"
3710
  };
3711
  if (null == d || isNaN(d = Number(d))) d = 79;
3712
- 0 < d && (b = m(d - 3, " "), a = m(d - 2, "-– \\.,:;\\?!\\)\\]\\}\\>"));
3713
  return {
3714
- pair: function(b, h) {
3715
- if (!h) return b + ' ""';
3716
- h = h.replace(f, c);
3717
- var l = 0;
3718
- h = h.replace(e, function() {
3719
- l++;
3720
  return "\\n\n";
3721
  });
3722
- if (!(l || d && d < h.length + b.length + 3)) return b + ' "' + h + '"';
3723
- var k = [ b + ' "' ], m = h.split("\n");
3724
- if (a) for (var n = -1, y = m.length; ++n < y; ) a(m[n], k); else k = k.concat(m);
3725
- return k.join('"\n"') + '"';
3726
  },
3727
  prefix: function(a, b) {
3728
  var c = a.split(e);
3729
  return b + c.join("\n" + b);
3730
  },
3731
  refs: function(a) {
3732
- a = a.replace(h, " ", a);
3733
  b && (a = b(a, []).join("\n#: "));
3734
  return "#: " + a;
3735
  }
3736
  };
3737
  };
3738
  return f;
3739
- }({}, w, A));
3740
- n.register("$39", function(f, d, k) {
3741
- function m() {
3742
  this.length = 0;
3743
  }
3744
  f.init = function() {
3745
- return new m();
3746
  };
3747
- d = m.prototype;
3748
  d.push = function(d) {
3749
  this[this.length++] = d;
3750
  return this;
@@ -3758,13 +3758,13 @@ for (var c = -1, b = this.length; ++c < b; ) d(c, this[c]);
3758
  return this;
3759
  };
3760
  return f;
3761
- }({}, w, A));
3762
- n.register("$27", function(f, d, k) {
3763
- function m() {}
3764
  f.extend = function(d) {
3765
- return d.prototype = new m();
3766
  };
3767
- d = m.prototype = n.require("$37", "abstract.js").init([ "add", "load" ]);
3768
  d.row = function(d) {
3769
  return this.rows[d];
3770
  };
@@ -3782,7 +3782,7 @@ this.loc = null;
3782
  return d;
3783
  };
3784
  d.locale = function(d) {
3785
- null == d ? d = this.loc : this.loc = d = n.require("$36", "locale.js").cast(d);
3786
  return d;
3787
  };
3788
  d.each = function(d) {
@@ -3820,25 +3820,25 @@ this.rows.sort(d);
3820
  return this;
3821
  };
3822
  d["export"] = function() {
3823
- for (var d = -1, c = this.rows, b = c.length, a = n.require("$39", "list.js").init(); ++d < b; ) a.push(c[d]);
3824
  return a;
3825
  };
3826
  d = null;
3827
  return f;
3828
- }({}, w, A));
3829
- n.register("$28", function(f, d, k) {
3830
- function m(c, b, a) {
3831
  if (null == a) return c[b] || "";
3832
  c[b] = a || "";
3833
  return c;
3834
  }
3835
- function g() {
3836
  this._id = this.id = "";
3837
  }
3838
  f.extend = function(c) {
3839
- return c.prototype = new g();
3840
  };
3841
- d = g.prototype;
3842
  d.flag = function(c, b) {
3843
  var a = this.flg || (this.flg = []);
3844
  if (null != b) a[b] = c; else for (var d = Math.max(a.length, this.src.length, this.msg.length); 0 !== d--; ) a[d] = c;
@@ -3851,7 +3851,7 @@ for (c = b.length; 0 !== c--; ) if (b[c]) return !0;
3851
  return !1;
3852
  };
3853
  d.flags = function() {
3854
- for (var c, b = {}, a = [], d = this.flg || [], h = d.length; 0 !== h--; ) c = d[h],
3855
  b[c] || (b[c] = !0, a.push(c));
3856
  return a;
3857
  };
@@ -3883,7 +3883,7 @@ d.targetForms = function() {
3883
  return this.msgF;
3884
  };
3885
  d.each = function(c) {
3886
- for (var b = -1, a = this.src, d = this.msg, h = Math.max(a.length, d.length); ++b < h; ) c(b, a[b], d[b]);
3887
  return this;
3888
  };
3889
  d.count = function() {
@@ -3922,19 +3922,19 @@ for (c = 0; c < a; c++) if (b[c]) return !1;
3922
  return !0;
3923
  };
3924
  d.comment = function(c) {
3925
- return m(this, "cmt", c);
3926
  };
3927
  d.notes = function(c) {
3928
- return m(this, "xcmt", c);
3929
  };
3930
  d.refs = function(c) {
3931
- return m(this, "rf", c);
3932
  };
3933
  d.format = function(c) {
3934
- return m(this, "fmt", c);
3935
  };
3936
  d.context = function(c) {
3937
- return m(this, "ctx", c);
3938
  };
3939
  d.tags = function() {
3940
  return this.tg;
@@ -3988,9 +3988,9 @@ this.htm = c;
3988
  };
3989
  d = null;
3990
  return f;
3991
- }({}, w, A));
3992
- n.register("$15", function(f, d, k) {
3993
- function m(a) {
3994
  return {
3995
  "Project-Id-Version": "PACKAGE VERSION",
3996
  "Report-Msgid-Bugs-To": "",
@@ -4005,7 +4005,7 @@ Language: "",
4005
  "Content-Transfer-Encoding": "8bit"
4006
  };
4007
  }
4008
- function g(a, b) {
4009
  var c = a || "";
4010
  b && (c += "\0" + b);
4011
  return c;
@@ -4015,12 +4015,12 @@ var b = d.console;
4015
  b && b.error && b.error(a.message || String(a));
4016
  }
4017
  function b(a) {
4018
- return n.require("$26", "format.js").create(a);
4019
  }
4020
  function a(a) {
4021
  this.locale(a);
4022
  this.clear();
4023
- this.head = m(this.now());
4024
  }
4025
  function e(a, b) {
4026
  this.src = [ a || "" ];
@@ -4029,13 +4029,13 @@ this.msg = [ b || "" ];
4029
  f.create = function(b) {
4030
  return new a(b);
4031
  };
4032
- k = n.require("$27", "messages.js").extend(a);
4033
- k.clear = function() {
4034
- this.rows = n.require("$25", "collection.js").init();
4035
  this.length = 0;
4036
  return this;
4037
  };
4038
- k.now = function() {
4039
  function a(b, c) {
4040
  for (var d = String(b); d.length < c; ) d = "0" + d;
4041
  return d;
@@ -4043,14 +4043,14 @@ return d;
4043
  var b = new Date(), c = b.getUTCFullYear(), d = b.getUTCMonth() + 1, e = b.getUTCDate(), f = b.getUTCHours(), b = b.getUTCMinutes();
4044
  return a(c, 4) + "-" + a(d, 2) + "-" + a(e, 2) + " " + a(f, 2) + ":" + a(b, 2) + "+0000";
4045
  };
4046
- k.header = function(a, b) {
4047
  var c = this.head || (this.head = {});
4048
  if (null == b) return this.headers()[a] || "";
4049
  c[a] = b || "";
4050
  return this;
4051
  };
4052
- k.headers = function(a) {
4053
- var b, c = this.now(), d = this.head || (this.head = m(c));
4054
  if (null != a) {
4055
  for (b in a) d[b] = a[b];
4056
  return this;
@@ -4066,11 +4066,11 @@ a[b] || (a[b] = c);
4066
  a["X-Generator"] = "Loco https://localise.biz/";
4067
  return a;
4068
  };
4069
- k.get = function(a, b) {
4070
- var c = g(a, b);
4071
  return this.rows.get(c);
4072
  };
4073
- k.add = function(a, b) {
4074
  a instanceof e || (a = new e(a));
4075
  b && a.context(b);
4076
  var d = a.hash();
@@ -4078,57 +4078,57 @@ this.rows.get(d) ? c("Duplicate message at index " + this.indexOf(a)) : (a.idx =
4078
  this.length = this.rows.length);
4079
  return a;
4080
  };
4081
- k.load = function(a) {
4082
- for (var b = -1, d, f, g, k, q, m, n = (g = this.locale()) && g.nplurals || 2, y = []; ++b < a.length; ) d = a[b],
4083
- null == d.parent ? (f = d.source || d.id, g = d.target || "", k = d.context, f || k ? (q = new e(f, g),
4084
- q._id = d._id, k && q.context(k), d.flag && q.flag(d.flag, 0), d.comment && q.comment(d.comment),
4085
  d.notes && q.notes(d.notes), d.refs && q.refs(d.refs), q.format(d.format), d.message = q,
4086
  this.add(q), d.prev && d.prev[0] && (q.prev(d.prev[0].source, d.prev[0].context),
4087
- d.prev[1] && q._src.push(d.prev[1].source || ""))) : 0 === b && "object" === typeof g && (this.head = g,
4088
- this.headcmt = d.comment)) : y.push(d);
4089
- for (b = -1; ++b < y.length; ) try {
4090
- d = y[b];
4091
  f = d.source || d.id;
4092
  q = a[d.parent] && a[d.parent].message;
4093
  if (!q) throw Error("parent missing for plural " + f);
4094
- m = d.plural;
4095
- 1 === m && q.plural(f);
4096
- m >= n || (d.flag && q.flag(d.flag, m), q.translate(d.target || "", m), d.format && !q.format() && q.format(d.format));
4097
  } catch (w) {
4098
  c(w);
4099
  }
4100
  return this;
4101
  };
4102
- k.wrap = function(a) {
4103
  this.fmtr = b(a);
4104
  return this;
4105
  };
4106
- k.toString = function() {
4107
- var a, c = this.locale(), d = [], f = [], g = this.headers(), k = !c, q = c && c.nplurals || 2, m = this.fmtr || b();
4108
- g[c ? "PO-Revision-Date" : "POT-Creation-Date"] = this.now();
4109
- for (a in g) f.push(a + ": " + g[a]);
4110
  f = new e("", f.join("\n"));
4111
  f.comment(this.headcmt || "");
4112
- k && f.fuzzy(0, !0);
4113
  d.push(f.toString());
4114
  d.push("");
4115
  this.rows.each(function(a, b) {
4116
- a && (d.push(b.cat(m, k, q)), d.push(""));
4117
  });
4118
  return d.join("\n");
4119
  };
4120
- k = n.require("$28", "message.js").extend(e);
4121
- k.prev = function(a, b) {
4122
  this._src = [ a || "" ];
4123
  this._ctx = b;
4124
  };
4125
- k.hash = function() {
4126
- return g(this.source(), this.context());
4127
  };
4128
- k.toString = function() {
4129
  return this.cat(b());
4130
  };
4131
- k.cat = function(a, b, c) {
4132
  var d, e = [], f;
4133
  (f = this.cmt) && e.push(a.prefix(f, "# "));
4134
  (f = this.xcmt) && e.push(a.prefix(f, "#. "));
@@ -4145,7 +4145,7 @@ if (null == this.src[1]) e.push(a.pair("msgstr", b ? "" : this.msg[0])); else fo
4145
  e.push(a.pair("msgid_plural", this.src[1])), f = this.msg || [ "", "" ], c = c || f.length; ++d < c; ) e.push(a.pair("msgstr[" + d + "]", b ? "" : f[d] || ""));
4146
  return e.join("\n");
4147
  };
4148
- k.compare = function(a, b) {
4149
  var c = this.weight(), d = a.weight();
4150
  if (c > d) return 1;
4151
  if (c < d) return -1;
@@ -4157,19 +4157,19 @@ if (c > d) return -1;
4157
  }
4158
  return 0;
4159
  };
4160
- k.copy = function() {
4161
  var a = new e(), b, c;
4162
  for (b in this) this.hasOwnProperty(b) && ((c = this[b]) && c.concat && (c = c.concat()),
4163
  a[b] = c);
4164
  return a;
4165
  };
4166
- k = k = null;
4167
  return f;
4168
- }({}, w, A));
4169
- n.register("$17", function(f, d, n) {
4170
  f.init = function(d, f) {
4171
  function c() {
4172
- return h || (h = k('<div id="loco-po-ref"></div>').dialog({
4173
  dialogClass: "loco-modal loco-modal-wide",
4174
  modal: !0,
4175
  autoOpen: !1,
@@ -4179,45 +4179,45 @@ height: 500
4179
  }));
4180
  }
4181
  function b(a, b, d) {
4182
- a = k("<p></p>").text(d);
4183
  c().dialog("close").html("").dialog("option", "title", "Error").append(a).dialog("open");
4184
  }
4185
  function a(a) {
4186
  var b = a && a.code;
4187
  if (b) {
4188
- for (var d = -1, e = b.length, f = k("<ol></ol>").attr("class", a.type); ++d < e; ) k("<li></li>").html(b[d]).appendTo(f);
4189
  f.find("li").eq(a.line - 1).attr("class", "highlighted");
4190
  c().dialog("close").html("").dialog("option", "title", a.path + ":" + a.line).append(f).dialog("open");
4191
  }
4192
  }
4193
  function e(a) {
4194
  a = a.target;
4195
- var b = k(a).find("li.highlighted")[0], b = Math.max(0, (b && b.offsetTop || 0) - Math.floor(a.clientHeight / 2));
4196
  a.scrollTop = b;
4197
  }
4198
- var h;
4199
  return {
4200
- load: function(h) {
4201
  c().html('<div class="loco-loading"></div>').dialog("option", "title", "Loading..").off("dialogopen").dialog("open").on("dialogopen", e);
4202
- h = k.extend({
4203
- ref: h,
4204
  path: f.popath
4205
  }, f.project || {});
4206
- d.ajax.post("fsReference", h, a, b);
4207
  }
4208
  };
4209
  };
4210
  return f;
4211
- }({}, w, A));
4212
- n.register("$30", function(f, d, k) {
4213
- function m(d) {
4214
  this.api = d;
4215
  this.chars = 0;
4216
  }
4217
  f.create = function(d) {
4218
- return new m(d);
4219
  };
4220
- d = m.prototype;
4221
  d.init = function(d, c) {
4222
  function b(a) {
4223
  var b = {
@@ -4225,25 +4225,28 @@ length: 0,
4225
  html: a.html,
4226
  sources: []
4227
  };
4228
- r.push(b);
4229
- return q[a.html ? 1 : 0] = b;
4230
  }
4231
  function a(a, d) {
4232
- var g = a.source(null, d);
4233
- if (g && (a.untranslated(d) || c)) {
4234
- var r = n[g];
4235
- if (r) r.push(a); else {
4236
- var r = g.length, B = e.isHtml(g), B = q[B ? 1 : 0], u = B.sources;
4237
- if (B.length + r > m || u.length === l) B = b(B), u = B.sources;
4238
- u.push(g);
4239
- n[g] = [ a ];
4240
- B.length += r;
4241
- f += r;
 
4242
  k += 1;
4243
  }
4244
  }
4245
  }
4246
- var e = this.api, f = 0, k = 0, l = 50, m = 5e3, n = {}, r = [], q = [];
 
 
4247
  b({
4248
  html: !1
4249
  });
@@ -4254,12 +4257,13 @@ d.each(function(b, c) {
4254
  a(c, 0);
4255
  a(c, 1);
4256
  });
4257
- q = null;
4258
- this.map = n;
4259
  this.chars = f;
4260
  this.length = k;
4261
- this.batches = r;
4262
  this.locale = d.locale();
 
4263
  };
4264
  d.abort = function() {
4265
  this.state = "abort";
@@ -4267,46 +4271,46 @@ return this;
4267
  };
4268
  d.dispatch = function() {
4269
  function d(a, b) {
4270
- function e(c, d, h) {
4271
- b !== h && (a === d || 1 < c && f.source(null, 1) === a) && (f.translate(b, c),
4272
- m++, y++);
4273
  return m;
4274
  }
4275
  if (!c()) return !1;
4276
  if (!b) return !0;
4277
- var f, h = n[a] || [], g = h.length, l = -1, m;
4278
- for (C++; ++l < g; ) if (f = h[l]) m = 0, f.each(e), m && k("each", [ f ]);
4279
  return !0;
4280
  }
4281
  function c() {
4282
- return "abort" === l.state ? (m && (m.abort(), f()), !1) : !0;
4283
  }
4284
  function b() {
4285
- var b = r.shift(), c;
4286
- b ? (c = b.sources) && c.length ? m.batch(c, q, b.html, d).fail(a).always(e) : e() : f();
4287
  }
4288
  function a() {
4289
- l.abort();
4290
  f();
4291
  }
4292
  function e() {
4293
- s++;
4294
- k("prog", [ s, B ]);
4295
  c() && b();
4296
  }
4297
  function f() {
4298
- m = r = null;
4299
  k("done");
4300
  }
4301
  function k(a, b) {
4302
  for (var c = u[a] || [], d = c.length; 0 <= --d; ) c[d].apply(null, b);
4303
  }
4304
- var l = this, m = l.api, n = l.map, r = l.batches || [], q = l.locale, C = 0, s = 0, y = 0, w = l.length, B = r.length, u = {
4305
  done: [],
4306
  each: [],
4307
  prog: []
4308
  };
4309
- l.state = "";
4310
  b();
4311
  return {
4312
  done: function(a) {
@@ -4324,34 +4328,34 @@ return this;
4324
  stat: function() {
4325
  return {
4326
  todo: function() {
4327
- return Math.max(w - C, 0);
4328
  },
4329
  did: function() {
4330
- return C;
4331
  }
4332
  };
4333
  }
4334
  };
4335
  };
4336
  return f;
4337
- }({}, w, A));
4338
- n.register("$40", {
4339
  nn: [ "no" ]
4340
  });
4341
- n.register("$31", function(f, d, k) {
4342
- function m() {}
4343
- function g(c) {
4344
  c.parseError = function(b) {
4345
  return b && b.code && 200 !== b.code && b.message ? "Error " + b.code + ": " + b.message : "";
4346
  };
4347
  c.batch = function(b, a, d, f) {
4348
- function g(c) {
4349
  for (var d = b.length, e = -1; ++e < d && !1 !== f(b[e], c[e] || "", a); ) ;
4350
  }
4351
  d = d ? "html" : "plain";
4352
- var k = this.toLang(a);
4353
  return c._call({
4354
- url: "https://translate.yandex.net/api/v1.5/tr.json/translate?format=" + d + "&lang=en-" + k,
4355
  method: "POST",
4356
  traditional: !0,
4357
  data: {
@@ -4359,15 +4363,15 @@ key: c.key(),
4359
  text: b
4360
  }
4361
  }).done(function(a, b, d) {
4362
- a && 200 === a.code ? g(a.text || []) : (c.stderr(c.parseError(a) || c.httpError(d)),
4363
- g([]));
4364
  }).fail(function() {
4365
- g([]);
4366
  });
4367
  };
4368
  }
4369
  f.create = function(c) {
4370
- var b = m.prototype = new c();
4371
  b.toString = function() {
4372
  return "Yandex.Translate";
4373
  };
@@ -4379,67 +4383,67 @@ return "https://translate.yandex.com/";
4379
  };
4380
  b.init = function(a) {
4381
  c.prototype.init.call(this, a);
4382
- /^trnsl\./.test(this.key()) && g(this);
4383
  };
4384
  b.toLang = function(a) {
4385
- return this.mapLang(a, n.require("$40", "yandex.json"));
4386
  };
4387
- return new m();
4388
  };
4389
  return f;
4390
- }({}, w, A));
4391
- n.register("$41", {
4392
  zh: [ "zh", "zh-CN", "zh-TW" ],
4393
  he: [ "iw" ],
4394
  jv: [ "jw" ]
4395
  });
4396
- n.register("$32", function(f, d, k) {
4397
- function m() {}
4398
  f.create = function(d) {
4399
- d = m.prototype = new d();
4400
- d.toString = function() {
4401
  return "Google Translate";
4402
  };
4403
- d.getId = function() {
4404
  return "google";
4405
  };
4406
- d.getUrl = function() {
4407
  return "https://translate.google.com/";
4408
  };
4409
- d.parseError = function(c) {
4410
- if (c.error) {
4411
- for (var b = [], a = c.error.errors || [], d = a.length, f = -1; ++f < d; ) b.push(a[f].message || "");
4412
- return "Error " + c.error.code + ": " + b.join(";");
 
 
 
4413
  }
4414
  return "";
4415
- };
4416
- d.batch = function(c, b, a, d) {
4417
- function f(a) {
4418
- for (var h = c.length, g = -1, k; ++g < h && (k = a[g] || {}, !1 !== d(c[g], k.translatedText || "", b)); ) ;
4419
  }
4420
- var g = this;
4421
- a = a ? "html" : "text";
4422
- var k = g.mapLang(b, n.require("$41", "google.json"));
4423
  return g._call({
4424
- url: "https://translation.googleapis.com/language/translate/v2?source=en&target=" + k + "&format=" + a,
4425
  method: "POST",
4426
  traditional: !0,
4427
  data: {
4428
  key: g.key(),
4429
- q: c
4430
  }
4431
  }).done(function(a, b, c) {
4432
- a.data ? f(a.data.translations || []) : (g.stderr(g.parseError(a) || g.httpError(c)),
4433
- f([]));
4434
  }).fail(function() {
4435
- f([]);
4436
  });
4437
  };
4438
- return new m();
4439
  };
4440
  return f;
4441
- }({}, w, A));
4442
- n.register("$42", {
4443
  nn: [ "no" ],
4444
  pt: [ "pt", "pt-pt" ],
4445
  sr: [ "sr-Cyrl", "sr-Latn" ],
@@ -4451,10 +4455,10 @@ zh_HK: [ "zh-Hans" ],
4451
  zh_SG: [ "zh-Hans" ],
4452
  zh_TW: [ "zh-Hant" ]
4453
  });
4454
- n.register("$33", function(f, d, k) {
4455
- function m() {}
4456
  f.create = function(d) {
4457
- d = m.prototype = new d();
4458
  d.toString = function() {
4459
  return "Microsoft Translator text API";
4460
  };
@@ -4469,40 +4473,40 @@ return c && c.error ? c.error.message : "";
4469
  };
4470
  d.batch = function(c, b, a, d) {
4471
  function f(a) {
4472
- for (var h = -1, g; ++h < m && (g = a[h] || {}, g = g.translations || [], g = g[0] || {},
4473
- !1 !== d(c[h], g.text || "", b)); ) ;
4474
  }
4475
- var g = this, k = [], m = c.length, x = -1;
4476
  a = a ? "html" : "plain";
4477
- for (var r = g.mapLang(b, n.require("$42", "ms.json")); ++x < m; ) k.push({
4478
- text: c[x]
4479
  });
4480
- return g._call({
4481
- url: "https://api.cognitive.microsofttranslator.com/translate?api-version=3.0&from=en&to=" + r + "&textType=" + a,
4482
  method: "POST",
4483
- data: JSON.stringify(k),
4484
  headers: {
4485
  "Content-Type": "application/json; charset=UTF-8",
4486
  "Ocp-Apim-Subscription-Key": this.key(),
4487
- "Ocp-Apim-Subscription-Region": g.param("region") || "global"
4488
  }
4489
  }).done(function(a, b, c) {
4490
- a && a.length ? f(a) : (g.stderr(g.parseError(a) || g.httpError(c)), f([]));
4491
  }).fail(function() {
4492
  f([]);
4493
  });
4494
  };
4495
- return new m();
4496
  };
4497
  return f;
4498
- }({}, w, A));
4499
- n.register("$43", {
4500
  pt: [ "pt-PT", "pt-BR" ]
4501
  });
4502
- n.register("$34", function(f, d, k) {
4503
- function m() {}
4504
  f.create = function(d) {
4505
- d = m.prototype = new d();
4506
  d.toString = function() {
4507
  return "DeepL Translator";
4508
  };
@@ -4517,57 +4521,105 @@ return c.message;
4517
  };
4518
  d.batch = function(c, b, a, d) {
4519
  function f(a) {
4520
- for (var h = c.length, g = -1, k; ++g < h && (k = a[g] || {}, !1 !== d(c[g], k.text || "", b)); ) ;
4521
- }
4522
- var g = this;
4523
- a = g.param("url") || "https://api.deepl.com";
4524
- var k = g.mapLang(b, n.require("$43", "deepl.json")), m = b.tone, x = "default";
4525
- null == m && (m = String(b.variant || "").toLowerCase());
4526
- "formal" === m ? x = "more" : "informal" === m && (x = "less");
4527
- return g._call({
4528
- url: g.fixURL(a + "/v2/translate"),
4529
  method: "POST",
4530
  traditional: !0,
4531
  data: {
4532
- source_lang: "EN",
4533
- target_lang: k.toUpperCase(),
4534
- formality: x,
4535
  preserve_formatting: "1",
4536
- auth_key: g.key(),
4537
  text: c
4538
  }
4539
  }).done(function(a, b, c) {
4540
- a.translations ? f(a.translations) : (g.stderr(g.parseError(a) || g.httpError(c)),
4541
  f([]));
4542
  }).fail(function() {
4543
  f([]);
4544
  });
4545
  };
4546
- d.fixURL = function(c) {
4547
- c = c.split("://", 2);
4548
- 1 === c.length && c.unshift("https");
4549
- return c[0] + "://" + c[1].replace(/\/{2,}/g, "/");
4550
  };
4551
- return new m();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4552
  };
4553
  return f;
4554
- }({}, w, A));
4555
- n.register("$18", function(f, d, w) {
4556
- function m() {
4557
  this.inf = {};
4558
  }
4559
- function g() {
4560
  var a = w.createElement("p"), b = /&(#\d+|#x[0-9a-f]|[a-z]+);/i, c = /<[a-z]+\s/i, d, f;
4561
  return {
4562
- sniff: function(g) {
4563
- if (g === d) return f;
4564
- d = g;
4565
- if (b.test(g) || c.test(g)) if (a.innerHTML = g, a.textContent !== g) return f = !0;
4566
  return f = !1;
4567
  }
4568
  };
4569
  }
4570
- var c = m.prototype;
4571
  c.init = function(a) {
4572
  this.inf = a || {};
4573
  };
@@ -4586,6 +4638,9 @@ return this.param("url") || "#";
4586
  c.toString = function() {
4587
  return this.param("name") || this.getId();
4588
  };
 
 
 
4589
  c.stderr = function(a) {
4590
  var b = (d.loco || {}).notices || d.console;
4591
  b && b.error && b.error(String(this) + ": " + String(a));
@@ -4597,14 +4652,22 @@ c.parseError = function() {
4597
  return "";
4598
  };
4599
  c.mapLang = function(a, b) {
4600
- var c = String(a).replace("-", "_"), d = a.lang, f = b[c] || b[d] || [], g = f.length;
4601
- if (0 === g) return d;
4602
- if (1 < g) for (var c = c.toLowerCase(), d = -1, k; ++d < g; ) if (k = f[d], k.toLowerCase().replace("-", "_") === c) return k;
4603
  return f[0];
4604
  };
4605
  c.toLang = function(a) {
4606
  return String(a);
4607
  };
 
 
 
 
 
 
 
 
4608
  c.translate = function(a, b, c) {
4609
  return this.batch([ a ], b, this.isHtml(a), c);
4610
  };
@@ -4615,12 +4678,12 @@ a.cache = !0;
4615
  a.dataType = "json";
4616
  a.error = function(a, c, d) {
4617
  try {
4618
- var f = a.responseText, g = f && n.require("$5", "json.js").parse(f);
4619
- d = g && b.parseError(g) || d;
4620
- } catch (k) {}
4621
  b.stderr(d || b.httpError(a));
4622
  };
4623
- return b.abortable(k.ajax(a));
4624
  };
4625
  c.abortable = function(a) {
4626
  var b = this;
@@ -4634,24 +4697,25 @@ var a = this.$r;
4634
  a && a.abort();
4635
  };
4636
  c.isHtml = function(a) {
4637
- return (b || (b = g())).sniff(a);
4638
  };
4639
  c.createJob = function() {
4640
- return n.require("$30", "job.js").create(this);
4641
  };
4642
  c.batch = function(a, b, c, f) {
4643
  function g(c) {
4644
- for (var d = a.length, h = -1; ++h < d && !1 !== f(a[h], c[h], b); ) ;
4645
  }
4646
- var m = d.loco.ajax;
4647
  c = {
4648
  hook: this.getId(),
4649
  type: c ? "html" : "text",
4650
  locale: this.toLang(b),
 
4651
  sources: a
4652
  };
4653
- var n = k.Deferred();
4654
- this.abortable(m.post("apis", c, function(a) {
4655
  g(a && a.targets || []);
4656
  n.resolve();
4657
  }, function() {
@@ -4663,103 +4727,103 @@ return n.promise();
4663
  f.create = function(a) {
4664
  var b;
4665
  b = a.id;
4666
- b = "yandex" === b ? n.require("$31", "yandex.js").create(m) : "google" === b ? n.require("$32", "google.js").create(m) : "microsoft" === b ? n.require("$33", "ms.js").create(m) : "deepl" === b ? n.require("$34", "deepl.js").create(m) : new m();
4667
  b.init(a);
4668
  return b;
4669
  };
4670
  f.suggest = function(a, b, c, d) {
4671
- var f, g, k = a.length;
4672
- for (f = 0; f < k; f++) g = a[f], g.translate(b, c, d);
4673
  };
4674
  var b;
4675
  return f;
4676
- }({}, w, A));
4677
- n.register("$19", function(f, d, n) {
4678
  f.init = function(f) {
4679
- function g() {
4680
- H || (I.on("click", l), H = k('<div id="loco-fs-creds"></div>').dialog({
4681
  dialogClass: "request-filesystem-credentials-dialog loco-modal",
4682
  minWidth: 580,
4683
  modal: !0,
4684
  autoOpen: !1,
4685
  closeOnEscape: !0
4686
  }).on("change", 'input[name="connection_type"]', function() {
4687
- this.checked && k("#ssh-keys").toggleClass("hidden", "ssh" !== k(this).val());
4688
  }));
4689
  return H;
4690
  }
4691
  function c() {
4692
- Q && (b(k(s)), Q = !1);
4693
- if (B && J) {
4694
- var a = J, c = k(P);
4695
  c.find("span.loco-msg").text(a);
4696
  K || (c.removeClass("jshide").hide().fadeIn(500), K = !0);
4697
- } else K && (b(k(P)), K = !1);
4698
  }
4699
  function b(a) {
4700
  a.slideUp(250).fadeOut(250, function() {
4701
- k(this).addClass("jshide");
4702
  });
4703
  }
4704
  function a() {
4705
- if (B) return H && H.dialog("close"), c(), k(f).find('button[type="submit"]').attr("disabled", !1),
4706
- k(d).triggerHandler("resize"), w && w(!0), !0;
4707
- z && H ? (Q || (k(s).removeClass("jshide").hide().fadeIn(500), Q = !0), K && (b(k(P)),
4708
  K = !1)) : c();
4709
- k(f).find('input[type="submit"]').attr("disabled", !0);
4710
- w && w(!1);
4711
  return !1;
4712
  }
4713
  function e(a) {
4714
  var b, c, d = q || {};
4715
- for (b in d) d.hasOwnProperty(b) && (c = d[b], a[b] ? a[b].value = c : k('<input type="hidden" />').attr("name", b).appendTo(a).val(c));
4716
  }
4717
- function h(a) {
4718
  a.preventDefault();
4719
- a = k(a.target).serializeArray();
4720
- r(a);
4721
- A = !0;
4722
  return !1;
4723
  }
4724
- function p(a) {
4725
  a.preventDefault();
4726
  H.dialog("close");
4727
  return !1;
4728
  }
4729
- function l(a) {
4730
  a.preventDefault();
4731
  H.dialog("open").find('input[name="connection_type"]').change();
4732
  return !1;
4733
  }
4734
- function v(b) {
4735
- B = b.authed;
4736
- y = b.method;
4737
- k(s).find("span.loco-msg").text(b.message || "Something went wrong.");
4738
  J = b.warning || "";
4739
  b.notice && u.notices.info(b.notice);
4740
- if (B) "direct" !== y && (q = b.creds, e(f), A && b.success && u.notices.success(b.success)),
4741
  a(); else if (b.reason) u.notices.info(b.reason); else if (b = b.prompt) {
4742
- var c = g();
4743
- c.html(b).find("form").on("submit", h);
4744
  c.dialog("option", "title", c.find("h2").remove().text());
4745
- c.find("button.cancel-button").show().on("click", p);
4746
  c.find('input[type="submit"]').addClass("button-primary");
4747
  a();
4748
- k(d).triggerHandler("resize");
4749
  } else u.notices.error("Server didn't return credentials, nor a prompt for credentials");
4750
  }
4751
- function x() {
4752
  a();
4753
  }
4754
- function r(a) {
4755
- A = !1;
4756
- u.ajax.setNonce("fsConnect", D).post("fsConnect", a, v, x);
4757
  return a;
4758
  }
4759
- var q, w, s = f, y = null, A = !1, B = !1, u = d.loco, z = f.path.value, F = f.auth.value, D = f["loco-nonce"].value, I = k(s).find("button.button-primary"), P = n.getElementById(s.id + "-warn"), Q = !1, K = !1, J = "", H;
4760
- u.notices.convert(P).stick();
4761
- f.connection_type ? (q = {}, q.connection_type = f.connection_type.value, B = !0) : z && F && r({
4762
- path: z,
4763
  auth: F
4764
  });
4765
  a();
@@ -4778,30 +4842,30 @@ e(b);
4778
  return this;
4779
  },
4780
  connect: function() {
4781
- z = f.path.value;
4782
  F = f.auth.value;
4783
- r(k(f).serializeArray());
4784
  return this;
4785
  },
4786
  listen: function(a) {
4787
- w = a;
4788
- B && a(!0);
4789
  return this;
4790
  },
4791
  authed: function() {
4792
- return B;
4793
  }
4794
  };
4795
  };
4796
  return f;
4797
- }({}, w, A));
4798
- n.register("$20", function(f, d, w) {
4799
- function m(d, f, k, l) {
4800
- f = "n" === k ? c(f) : b(f);
4801
- l && (f = a(f));
4802
- return g([].sort, [ f ])(d);
4803
- }
4804
- function g(a, b) {
4805
  return function(c) {
4806
  a.apply(c, b);
4807
  return c;
@@ -4826,93 +4890,93 @@ return -1 * a(b, c);
4826
  f.init = function(a) {
4827
  function b(a) {
4828
  var c = -1, d = a.length;
4829
- for (k("tr", s).remove(); ++c < d; ) s.appendChild(a[c].$);
4830
  }
4831
  function c(a) {
4832
- r = a ? A.find(a, d) : d.slice(0);
4833
- w && (a = f[w], r = m(r, w, a.type, a.desc));
4834
- b(r);
4835
  }
4836
- var d = [], f = [], g = 0, r, q, w, s = a.getElementsByTagName("tbody")[0], y = a.getElementsByTagName("thead")[0], A = n.require("$10", "fulltext.js").init();
4837
- y && s && (k("th", y).each(function(a, c) {
4838
  var e = c.getAttribute("data-sort-type");
4839
- e && (a = g, k(c).addClass("loco-sort").on("click", function(c) {
4840
  c.preventDefault();
4841
  c = a;
4842
- var e = f[c], g = e.type, n = !(e.desc = !e.desc);
4843
- r = m(r || d.slice(0), c, g, n);
4844
- b(r);
4845
  q && q.removeClass("loco-desc loco-asc");
4846
- q = k(e.$).addClass(n ? "loco-desc" : "loco-asc").removeClass(n ? "loco-asc" : "loco-desc");
4847
  w = c;
4848
  return !1;
4849
- }), f[g] = {
4850
  $: c,
4851
  type: e
4852
  });
4853
- c.hasAttribute("colspan") ? g += Number(c.getAttribute("colspan")) : g++;
4854
- }), k("tr", s).each(function(a, b) {
4855
- var c, e, g, h = [], k = {
4856
  _: a,
4857
  $: b
4858
  }, m = b.getElementsByTagName("td");
4859
  for (e in f) {
4860
  c = m[e];
4861
- (g = c.textContent.replace(/(^\s+|\s+$)/g, "")) && h.push(g);
4862
- c.hasAttribute("data-sort-value") && (g = c.getAttribute("data-sort-value"));
4863
  switch (f[e].type) {
4864
  case "n":
4865
- g = Number(g);
4866
  }
4867
- k[e] = g;
4868
  }
4869
- d[a] = k;
4870
- A.index(a, h);
4871
- }), a = k('form.loco-filter input[type="text"]', a.parentNode), a.length && (a = a[0],
4872
- y = k(a.form), 1 < d.length ? n.require("$11", "LocoTextListener.js").listen(a, c) : y.hide(),
4873
- y.on("submit", function(a) {
4874
  a.preventDefault();
4875
  return !1;
4876
  })));
4877
  };
4878
  return f;
4879
- }({}, w, A));
4880
- var D = w.loco || {}, I = D.conf || {
4881
  $v: [ 0, 0 ]
4882
  };
4883
- w = n.require("$1", "t.js").init();
4884
- A = I.wplang;
4885
- D.version = function(f) {
4886
  return I.$v[f || 0];
4887
  };
4888
- n.require("$2", "html.js");
4889
- n.require("$3", "number.js");
4890
- n.require("$4", "array.js");
4891
- n.require("$5", "json.js");
4892
- D.l10n = w;
4893
- w.load(I.wpl10n);
4894
- A && w.pluraleq(A.pluraleq);
4895
- D.string = n.require("$6", "string.js");
4896
- D.notices = n.require("$7", "notices.js").init(w);
4897
- D.ajax = n.require("$8", "ajax.js").init(I).localise(w);
4898
- D.locale = n.require("$9", "wplocale.js");
4899
- D.fulltext = n.require("$10", "fulltext.js");
4900
- D.watchtext = n.require("$11", "LocoTextListener.js").listen;
4901
- D.tooltip = n.require("$12", "tooltip.js");
4902
- D.po = {
4903
- ed: n.require("$13", "poedit.js"),
4904
- kbd: n.require("$14", "hotkeys.js"),
4905
- init: n.require("$15", "po.js").create,
4906
- ace: n.require("$16", "ace.js").strf("php"),
4907
- ref: n.require("$17", "refs.js")
4908
- };
4909
- D.apis = n.require("$18", "apis.js");
4910
- D.fs = n.require("$19", "fsconn.js");
4911
- k("#loco-admin.wrap table.wp-list-table").each(function(f, d) {
4912
- n.require("$20", "tables.js").init(d);
4913
  });
4914
- D.validate = function(f) {
4915
- return "2.5.5" !== (/^\d+\.\d+\.\d+/.exec(f && f[0] || "") && RegExp.lastMatch) ? (D.notices.warn("admin.js is the wrong version (2.5.5). Please empty all relevant caches and reload this page."),
4916
  !1) : !0;
4917
  };
4918
  })(window, document, window.jQuery);
1
+ (function(y, w, h, J) {
2
+ var p = function() {
3
  function f(d) {
4
  throw Error("Failed to require " + d);
5
  }
6
  var d = {};
7
  return {
8
+ register: function(f, n) {
9
+ d[f] = n;
10
  },
11
+ require: function(h, n) {
12
+ return d[h] || f(n);
13
  },
14
+ include: function(h, n, l) {
15
+ return d[h] || (l ? f(n) : null);
16
  }
17
  };
18
  }();
19
+ p.register("$1", function(f, d, h) {
20
+ function n(l) {
21
+ var c = typeof l;
22
+ if ("string" === c) if (/[^ <>!=()%^&|?:n0-9]/.test(l)) console.error("Invalid plural: " + l); else return new Function("n", "return " + l);
23
+ "function" !== c && (l = function(b) {
24
  return 1 != b;
25
  });
26
+ return l;
27
  }
28
+ f.init = function(l) {
29
  function c(a, b, e) {
30
+ return (a = m[a]) && a[e] ? a[e] : b || "";
31
  }
32
  function b(a) {
33
  return c(a, a, 0);
36
  return c(b + "" + a, a, 0);
37
  }
38
  function e(a, b, e) {
39
+ e = Number(l(e));
40
  isNaN(e) && (e = 0);
41
  return c(a, e ? b : a, e);
42
  }
43
+ l = n(l);
44
+ var m = {};
45
  return {
46
  __: b,
47
  _x: a,
50
  x: a,
51
  n: e,
52
  load: function(a) {
53
+ m = a || {};
54
  return this;
55
  },
56
  pluraleq: function(a) {
57
+ l = n(a);
58
  return this;
59
  }
60
  };
61
  };
62
  return f;
63
+ }({}, y, w));
64
+ p.register("$2", function(f, d, h) {
65
  f.ie = function() {
66
+ var f = !1, l = 0;
67
+ d.attachEvent && d.navigator && /MSIE (\d+)\./.exec(String(navigator.appVersion)) && (l = Number(RegExp.$1),
68
+ f = 11 > l);
69
  return function() {
70
  return f;
71
  };
74
  return f;
75
  };
76
  return f;
77
+ }({}, y, w));
78
+ p.register("$3", function(f, d, h) {
79
+ Number.prototype.format = function(d, l, c) {
80
  d = Math.pow(10, d || 0);
81
  var b = Math.round(d * this) / d;
82
  d = [];
87
  b = d.join(c || ",");
88
  if (a) {
89
  c = a;
90
+ var m;
91
+ for (d = c.length; "0" === c.charAt(--d); ) m = d;
92
+ m && (c = c.substring(0, m));
93
+ (a = c) && (b += (l || ".") + a);
94
  }
95
  return b;
96
  };
97
  Number.prototype.percent = function(d) {
98
+ var l = 0, c = this && d ? 100 * (this / d) : 0;
99
  if (0 === c) return "0";
100
  if (100 === c) return "100";
101
+ if (99 < c) c = Math.min(c, 99.9), d = c.format(++l); else if (.5 > c) {
102
  c = Math.max(c, 1e-4);
103
  do {
104
+ d = c.format(++l);
105
+ } while ("0" === d && 4 > l);
106
  d = d.substr(1);
107
  } else d = c.format(0);
108
  return d;
109
  };
110
  return f;
111
+ }({}, y, w));
112
+ p.register("$4", function(f, d, h) {
113
  Array.prototype.indexOf || (Array.prototype.indexOf = function(d) {
114
  if (null == this) throw new TypeError();
115
+ var l, c = Object(this), b = c.length >>> 0;
116
  if (0 === b) return -1;
117
+ l = 0;
118
+ 1 < arguments.length && (l = Number(arguments[1]), l != l ? l = 0 : 0 != l && Infinity != l && -Infinity != l && (l = (0 < l || -1) * Math.floor(Math.abs(l))));
119
+ if (l >= b) return -1;
120
+ for (l = 0 <= l ? l : Math.max(b - Math.abs(l), 0); l < b; l++) if (l in c && c[l] === d) return l;
121
  return -1;
122
  });
123
  return f;
124
+ }({}, y, w));
125
+ p.register("$5", function(f, d, p) {
126
  d.JSON || (d.JSON = {
127
+ parse: h.parseJSON,
128
  stringify: null
129
  });
130
  return f = d.JSON;
131
+ }({}, y, w));
132
+ p.register("$6", function(f, d, h) {
133
+ f.trim = function(d, l) {
134
+ for (l || (l = " \n"); d && -1 !== l.indexOf(d.substr(0, 1)); ) d = d.substr(1);
135
+ for (;d && -1 !== l.indexOf(d.substr(-1)); ) d = d.substr(0, d.length - 1);
136
  return d;
137
  };
138
  f.sprintf = function(d) {
139
+ var l = 0, c = [].slice.call(arguments, 1);
140
  return d.replace(/%(?:([1-9][0-9]*)\$)?([sud%])/g, function(b, a, e) {
141
+ return "%" === e ? "%" : (a ? c[Number(a) - 1] : c[l++]) || "";
142
  });
143
  };
144
  return f;
145
+ }({}, y, w));
146
+ p.register("$21", function(f, d, h) {
147
+ function n(l) {
148
  return function(c, b) {
149
+ for (var a = c[l] || 0; (c = c.offsetParent) && c !== (b || h.body); ) a += c[l] || 0;
150
  return a;
151
  };
152
  }
153
+ f.top = n("offsetTop");
154
+ f.left = n("offsetLeft");
155
+ f.el = function(l, c) {
156
+ var b = h.createElement(l || "div");
157
  c && (b.className = c);
158
  return b;
159
  };
160
+ f.txt = function(l) {
161
+ return h.createTextNode(l || "");
162
  };
163
  return f;
164
+ }({}, y, w));
165
+ p.register("$7", function(f, d, D) {
166
+ function n(a, b, e) {
167
  function c() {
168
  q();
169
+ v = setTimeout(b, e);
170
  }
171
  function q() {
172
+ v && clearTimeout(v);
173
+ v = null;
174
  }
175
+ var v;
176
  c();
177
+ h(a).on("mouseenter", q).on("mouseleave", c);
178
  return {
179
  die: function() {
180
  q();
181
+ h(a).off("mouseenter mouseleave");
182
  }
183
  };
184
  }
185
+ function l(a, b) {
186
  a.fadeTo(b, 0, function() {
187
  a.slideUp(b, function() {
188
  a.remove();
189
+ h(d).triggerHandler("resize");
190
  });
191
  });
192
  return a;
193
  }
194
  function c(a, b) {
195
  function e(b) {
196
+ k[v] = null;
197
+ l(h(a), 250);
198
  q && q.die();
199
  var c;
200
  if (c = b) b.stopPropagation(), b.preventDefault(), c = !1;
202
  }
203
  function c(b) {
204
  q && q.die();
205
+ return q = n(a, e, b);
206
+ }
207
+ var q, v, m, g = h(a), B = g.find("button");
208
+ 0 === B.length && (g.addClass("is-dismissible"), B = h('<button type="button" class="notice-dismiss"> </a>').appendTo(g));
209
+ B.off("click").on("click", e);
210
+ h(d).triggerHandler("resize");
211
+ z();
212
+ v = k.length;
213
+ k.push(e);
214
  b && (q = c(b));
215
  return {
216
+ link: function(b, v) {
217
+ var e = v || b, c = h(a).find("nav"), e = h("<nav></nav>").append(h("<a></a>").attr("href", b).text(e));
218
+ m ? (m.push(e.html()), c.html(m.join("<span> | </span>"))) : (m = [ e.html() ],
219
+ h(a).addClass("has-nav").append(e));
220
  return this;
221
  },
222
  stick: function() {
223
  q && q.die();
224
  q = null;
225
+ k[v] = null;
226
  return this;
227
  },
228
  slow: function(a) {
232
  };
233
  }
234
  function b(a, b, e) {
235
+ var c = p.require("$21", "dom.js").el;
236
+ a = h('<div class="notice notice-' + a + ' loco-notice inline"></div>').prependTo(h("#loco-notices"));
237
+ var q = h(c("p"));
238
+ e = h(c("span")).text(e);
239
+ b = h(c("strong", "has-icon")).text(b + ": ");
240
  q.append(b).append(e).appendTo(a);
241
  return a;
242
  }
243
+ function a(a, e, q, m) {
244
  a = b(q, e, a).css("opacity", "0").fadeTo(500, 1);
245
+ h(d).triggerHandler("resize");
246
+ return c(a, m);
247
  }
248
  function e(b) {
249
+ return a(b, s, "warning");
250
  }
251
+ function m() {
252
+ h("#loco-notices").find("div.notice").each(function(a, b) {
253
  if (-1 === b.className.indexOf("jshide")) {
254
  var e = -1 === b.className.indexOf("notice-success") ? null : 5e3;
255
  c(b, e);
256
  }
257
  });
258
  }
259
+ var k = [], g = d.console || {
260
  log: function() {}
261
+ }, z = Date.now || function() {
262
  return new Date().getTime();
263
+ }, A, s, q, B;
264
  f.error = function(b) {
265
+ return a(b, A, "error");
266
  };
267
  f.warn = e;
268
  f.info = function(b) {
269
  return a(b, q, "info");
270
  };
271
  f.success = function(b) {
272
+ return a(b, B, "success", 5e3);
273
  };
274
  f.warning = e;
275
  f.log = function() {
276
+ g.log.apply(g, arguments);
277
  };
278
  f.debug = function() {
279
+ (g.debug || g.log).apply(g, arguments);
280
  };
281
  f.clear = function() {
282
+ for (var a = -1, b, e = k, c = e.length; ++a < c; ) (b = e[a]) && b.call && b();
283
+ k = [];
284
  return f;
285
  };
286
  f.create = b;
289
  };
290
  f.convert = c;
291
  f.init = function(a) {
292
+ A = a._("Error");
293
+ s = a._("Warning");
294
  q = a._("Notice");
295
+ B = a._("OK");
296
+ setTimeout(m, 1e3);
297
  return f;
298
  };
299
  return f;
300
+ }({}, y, w));
301
+ p.register("$8", function(f, d, D) {
302
+ function n(a) {
303
+ var b = h("<pre>" + a + "</pre>").text();
304
  b && (b = b.replace(/[\r\n]+/g, "\n").replace(/(^|\n)\s+/g, "$1").replace(/\s+$/, ""));
305
  b || (b = a) || (b = "Blank response from server");
306
  return b;
307
  }
308
+ function l(a) {
309
  return (a = a.split(/[\r\n]/)[0]) ? (a = a.replace(/ +in +\S+ on line \d+/, ""),
310
  a = a.replace(/^[()! ]+Fatal error:\s*/, "")) : t._("Server returned invalid data");
311
  }
325
  function e(a, b, e) {
326
  a.append(b, e);
327
  }
328
+ function m(a, b, e, c) {
329
+ function m(b, c, v) {
330
  if ("abort" !== c) {
331
+ var q = g || {
332
  _: function(a) {
333
  return a;
334
  }
335
+ }, r = b.status || 0, d = b.responseText || "", x = n(d), A = b.getResponseHeader("Content-Type") || "Unknown type", f = b.getResponseHeader("Content-Length") || d.length;
336
+ "success" === c && v ? k.error(v) : (k.error(l(x) + ".\n" + q._("Check console output for debugging information")),
337
+ k.log("Ajax failure for " + a, {
338
+ status: r,
339
  error: c,
340
+ message: v,
341
  output: d
342
+ }), "parsererror" === c && (v = "Response not JSON"), k.log([ q._("Provide the following text when reporting a problem") + ":", "----", "Status " + r + ' "' + (v || q._("Unknown error")) + '" (' + A + " " + f + " bytes)", x, "====" ].join("\n")));
343
+ e && e.call && e(b, c, v);
344
+ z = b;
345
  }
346
  }
347
+ c.url = A;
348
  c.dataType = "json";
349
+ var k = p.require("$7", "notices.js").clear();
350
+ z = null;
351
+ return h.ajax(c).fail(m).done(function(a, e, v) {
352
+ var c = a && a.data, g = a && a.notices, z = g && g.length, l = -1;
353
+ for (!c || a.error ? m(v, e, a && a.error && a.error.message) : b && b(c, e, v); ++l < z; ) k.raise(g[l]);
354
  });
355
  }
356
+ var k = {}, g, z, A = d.ajaxurl || "/wp-admin/admin-ajax.php";
357
  f.init = function(a) {
358
+ k = a.nonces || k;
359
  return f;
360
  };
361
  f.localise = function(a) {
362
+ g = a;
363
  return f;
364
  };
365
  f.xhr = function() {
366
+ return z;
367
  };
368
+ f.strip = n;
369
+ f.parse = l;
370
  f.submit = function(a, b, e) {
371
  function c(a, b) {
372
  b.disabled ? b.setAttribute("data-was-disabled", "true") : b.disabled = !0;
373
  }
374
+ function r(a, b) {
375
  b.getAttribute("data-was-disabled") || (b.disabled = !1);
376
  }
377
+ function k(a) {
378
  a.find(".button-primary").removeClass("loading");
379
+ a.find("button").each(r);
380
+ a.find("input").each(r);
381
+ a.find("select").each(r);
382
+ a.find("textarea").each(r);
383
  a.removeClass("disabled loading");
384
  }
385
+ var g = h(a), z = g.serialize();
386
  (function(a) {
387
  a.find(".button-primary").addClass("loading");
388
  a.find("button").each(c);
390
  a.find("select").each(c);
391
  a.find("textarea").each(c);
392
  a.addClass("disabled loading");
393
+ })(g);
394
+ return m(a.route.value, function(a, e, c) {
395
+ k(g);
396
  b && b(a, e, c);
397
  }, function(a, b, c) {
398
+ k(g);
399
  e && e(a, b, c);
400
  }, {
401
  type: a.method,
402
+ data: z
403
  });
404
  };
405
+ f.post = function(g, q, z, l) {
406
+ var r = !0, G = q || {}, A = k[g] || c(g);
407
+ d.FormData && G instanceof FormData ? (r = !1, q = e) : q = Array.isArray(G) ? a : b;
408
  q(G, "action", "loco_json");
409
+ q(G, "route", g);
410
+ q(G, "loco-nonce", A);
411
+ return m(g, z, l, {
412
  type: "post",
413
  data: G,
414
+ processData: r,
415
+ contentType: r ? "application/x-www-form-urlencoded; charset=UTF-8" : !1
416
  });
417
  };
418
+ f.get = function(a, b, e, g) {
419
  b = b || {};
420
+ var r = k[a] || c(a);
421
  b.action = "loco_json";
422
  b.route = a;
423
+ b["loco-nonce"] = r;
424
+ return m(a, e, g, {
425
  type: "get",
426
  data: b
427
  });
428
  };
429
  f.setNonce = function(a, b) {
430
+ k[a] = b;
431
  return f;
432
  };
433
  return f;
434
+ }({}, y, w));
435
+ p.register("$22", {
436
  arab: 1,
437
  aran: 1,
438
  hebr: 1,
470
  ur: 1,
471
  yi: 1
472
  });
473
+ p.register("$9", function(f, d, h) {
474
+ function n() {}
475
+ var l, c = p.require("$22", "rtl.json");
476
  f.init = function() {
477
+ return new n();
478
  };
479
  f.cast = function(b) {
480
+ return b instanceof n ? b : "string" === typeof b ? f.parse(b) : f.clone(b);
481
  };
482
  f.clone = function(b) {
483
+ var a, e = new n();
484
  for (a in b) e[a] = b[a];
485
  return e;
486
  };
487
  f.parse = function(b) {
488
+ if (!(l || (l = /^([a-z]{2,3})(?:[-_]([a-z]{2}))?(?:[-_]([a-z0-9]{3,8}))?$/i)).exec(b)) return null;
489
+ var a = new n();
490
  a.lang = RegExp.$1.toLowerCase();
491
  if (b = RegExp.$2) a.region = b.toUpperCase();
492
  if (b = RegExp.$3) a.variant = b.toLowerCase();
493
  return a;
494
  };
495
+ d = n.prototype;
496
  d.isValid = function() {
497
  return !!this.lang;
498
  };
508
  return e;
509
  };
510
  d.getIcon = function() {
511
+ for (var b = 3, a, e, c = [ "variant", "region", "lang" ], k = []; 0 !== b--; ) if (a = c[b],
512
+ e = this[a]) k.push(a), k.push(a + "-" + e.toLowerCase());
513
+ return k.join(" ");
514
  };
515
  d.isRTL = function() {
516
  return !!c[String(this.lang).toLowerCase()];
517
  };
518
  d = null;
519
  return f;
520
+ }({}, y, w));
521
+ p.register("$23", {
522
  "á": "a",
523
  "à": "a",
524
  "ă": "a",
930
  "ӣ": "и",
931
  "ӯ": "у"
932
  });
933
+ p.register("$10", function(f, d, h) {
934
  f.init = function() {
935
  function d(a) {
936
+ return g[a] || a;
937
  }
938
+ function l(a, b, e, c) {
939
  b = a.split(b);
940
+ for (var m = b.length; 0 !== m--; ) (a = b[m]) && null == c[a] && (e.push(a), c[a] = !0);
941
  return e;
942
  }
943
  function c(a) {
944
+ return l(String(a || "").toLowerCase().replace(m, d), k, [], {});
945
  }
946
  function b(a, b) {
947
+ for (var c = [], q = {}, g, x = b.length, r = k; 0 !== x--; ) (g = b[x]) && l(String(g || "").toLowerCase().replace(m, d), r, c, q);
948
  e[a] = c;
949
  }
950
  function a(a, b) {
951
+ var c = [], m = -1, g = e, k = g.length, r, l, d, u, v, F, f = a.length, h = b ? !0 : !1;
952
+ a: for (;++m < k; ) if (d = g[m], null != d && (u = d.length)) {
953
+ v = 0;
954
+ b: for (;v < f; v++) {
955
+ F = a[v];
956
+ for (r = 0; r < u; r++) if (l = d[r], 0 === l.indexOf(F)) continue b;
957
  continue a;
958
  }
959
+ c.push(h ? b[m] : m);
960
  }
961
  return c;
962
  }
963
+ var e = [], m = /[^a-z0-9]/g, k = /[\-_\s.?!;:,*^+=~`"(){}<>\[\]\/\\\u00a0\u1680\u180e\u2000-\u206f\u2e00-\u2e7f\u3000-\u303f]+/, g = p.require("$23", "flatten.json");
964
  return {
965
  split: c,
966
  pull: function(b, e) {
990
  };
991
  };
992
  return f;
993
+ }({}, y, w));
994
+ p.register("$11", function(f, d, p) {
995
+ f.listen = function(f, l) {
996
  function c() {
997
+ q[m ? "show" : "hide"]();
998
  }
999
  function b(a) {
1000
+ s && z.setAttribute("size", 2 + a.length);
1001
+ m = a;
1002
  c();
1003
  return a;
1004
  }
1005
  function a() {
1006
+ k = null;
1007
+ l(m);
1008
  }
1009
  function e(e) {
1010
+ var c = z.value;
1011
+ A && c === A && (c = "");
1012
+ c !== m ? (k && clearTimeout(k), b(c), e ? k = setTimeout(a, e) : a()) : k && null == e && (clearTimeout(k),
1013
  a());
1014
  }
1015
+ var m, k, g = 150, z = f instanceof jQuery ? f[0] : f, A = d.attachEvent && z.getAttribute("placeholder"), s = 1 === Number(z.size), q = h('<a href="#clear" tabindex="-1" class="icon clear"><span>clear</span></a>').on("click", function() {
1016
+ z.value = "";
1017
  e();
1018
  return !1;
1019
  });
1020
+ b(z.value);
1021
+ h(z).on("input", function() {
1022
+ e(g);
1023
  return !0;
1024
  }).on("blur focus change", function() {
1025
  e(null);
1028
  c();
1029
  return {
1030
  delay: function(a) {
1031
+ g = a;
1032
  return this;
1033
  },
1034
  ping: function(c) {
1035
+ c ? (k && clearTimeout(k), c = z.value, A && c === A && (c = ""), b(c), a(), c = void 0) : c = e();
1036
  return c;
1037
  },
1038
  val: function(a) {
1039
+ if (null == a) return m;
1040
+ k && clearTimeout(k);
1041
+ z.value = b(a);
1042
  c();
1043
  },
1044
  el: function() {
1045
+ return z;
1046
  },
1047
  blur: function(a) {
1048
+ return h(z).on("blur", a);
1049
  },
1050
  destroy: function() {
1051
+ k && clearTimeout(k);
1052
  }
1053
  };
1054
  };
1055
  return f;
1056
+ }({}, y, w));
1057
+ p.register("$12", function(f, d, p) {
1058
+ function n(b, a) {
1059
+ this.$element = h(b);
1060
  this.options = a;
1061
  this.enabled = !0;
1062
  this.fixTitle();
1065
  var e = {
1066
  fade: !0,
1067
  offset: 5,
1068
+ delayIn: l,
1069
  delayOut: c,
1070
  anchor: b.attr("data-anchor"),
1071
  gravity: b.attr("data-gravity") || "s"
1072
  };
1073
+ a && (e = h.extend({}, e, a));
1074
  b.tipsy(e);
1075
  };
1076
  f.delays = function(b, a) {
1077
+ l = b || 150;
1078
  c = a || 100;
1079
  };
1080
  f.kill = function() {
1081
+ h("div.tipsy").remove();
1082
  };
1083
  f.text = function(b, a) {
1084
  a.data("tipsy").setTitle(b);
1085
  };
1086
+ var l, c;
1087
  f.delays();
1088
+ h(p.body).on("overlayOpened overlayClosing", function(b) {
1089
  f.kill();
1090
  return !0;
1091
  });
1092
+ n.prototype = {
1093
  show: function() {
1094
  var b = this.getTitle();
1095
  if (b && this.enabled) {
1099
  a.remove().css({
1100
  top: 0,
1101
  left: 0
1102
+ }).prependTo(p.body);
1103
+ var b = (b = this.options.anchor) ? this.$element.find(b) : this.$element, b = h.extend({}, b.offset(), {
1104
  width: b[0].offsetWidth,
1105
  height: b[0].offsetHeight
1106
+ }), e = a[0].offsetWidth, c = a[0].offsetHeight, k = "function" == typeof this.options.gravity ? this.options.gravity.call(this.$element[0]) : this.options.gravity, g;
1107
+ switch (k.charAt(0)) {
1108
  case "n":
1109
+ g = {
1110
  top: b.top + b.height + this.options.offset,
1111
  left: b.left + b.width / 2 - e / 2
1112
  };
1113
  break;
1114
 
1115
  case "s":
1116
+ g = {
1117
  top: b.top - c - this.options.offset,
1118
  left: b.left + b.width / 2 - e / 2
1119
  };
1120
  break;
1121
 
1122
  case "e":
1123
+ g = {
1124
  top: b.top + b.height / 2 - c / 2,
1125
  left: b.left - e - this.options.offset
1126
  };
1127
  break;
1128
 
1129
  case "w":
1130
+ g = {
1131
  top: b.top + b.height / 2 - c / 2,
1132
  left: b.left + b.width + this.options.offset
1133
  };
1134
  }
1135
+ 2 == k.length && ("w" == k.charAt(1) ? g.left = b.left + b.width / 2 - 15 : g.left = b.left + b.width / 2 - e + 15);
1136
+ a.css(g).addClass("tipsy-" + k);
1137
+ a.find(".tipsy-arrow")[0].className = "tipsy-arrow tipsy-arrow-" + k.charAt(0);
1138
  this.options.className && a.addClass("function" == typeof this.options.className ? this.options.className.call(this.$element[0]) : this.options.className);
1139
  a.addClass("in");
1140
  }
1160
  if (this.$tip) this.$tip.find(".tipsy-inner")[this.options.html ? "html" : "text"](b);
1161
  },
1162
  tip: function() {
1163
+ this.$tip || (this.$tip = h('<div class="tipsy"></div>').html('<div class="tipsy-arrow"></div><div class="tipsy-inner"></div>'),
1164
  this.$tip.data("tipsy-pointee", this.$element[0]));
1165
  return this.$tip;
1166
  },
1178
  this.enabled = !this.enabled;
1179
  }
1180
  };
1181
+ h.fn.tipsy = function(b) {
1182
  function a(a) {
1183
+ var e = h.data(a, "tipsy");
1184
+ e || (e = new n(a, h.fn.tipsy.elementOptions(a, b)), h.data(a, "tipsy", e));
1185
  return e;
1186
  }
1187
  function e() {
1192
  }, c));
1193
  }
1194
  function c() {
1195
+ var e = a(this), m = b.delayOut;
1196
  e.hoverState = "out";
1197
+ 0 == m ? e.hide() : (e.tip().removeClass("in"), setTimeout(function() {
1198
  "out" == e.hoverState && e.hide();
1199
+ }, m));
1200
  }
1201
+ b = h.extend({}, h.fn.tipsy.defaults, b);
1202
  b.live || this.each(function() {
1203
  a(this);
1204
  });
1205
  if ("manual" != b.trigger) {
1206
+ var k = b.live ? "live" : "bind", g = "hover" == b.trigger ? "mouseleave" : "blur";
1207
+ this[k]("hover" == b.trigger ? "mouseenter" : "focus", e)[k](g, c);
1208
  }
1209
  return this;
1210
  };
1211
+ h.fn.tipsy.defaults = {
1212
  className: null,
1213
  delayIn: 0,
1214
  delayOut: 0,
1223
  trigger: "hover",
1224
  anchor: null
1225
  };
1226
+ h.fn.tipsy.elementOptions = function(b, a) {
1227
+ return h.metadata ? h.extend({}, a, h(b).metadata()) : a;
1228
  };
1229
+ h.fn.tipsy.autoNS = function() {
1230
+ return h(this).offset().top > h(p).scrollTop() + h(d).height() / 2 ? "s" : "n";
1231
  };
1232
+ h.fn.tipsy.autoWE = function() {
1233
+ return h(this).offset().left > h(p).scrollLeft() + h(d).width() / 2 ? "e" : "w";
1234
  };
1235
+ h.fn.tipsy.autoBounds = function(b, a) {
1236
  return function() {
1237
+ var e = a[0], c = 1 < a.length ? a[1] : !1, k = h(p).scrollTop() + b, g = h(p).scrollLeft() + b, l = h(this);
1238
+ l.offset().top < k && (e = "n");
1239
+ l.offset().left < g && (c = "w");
1240
+ h(d).width() + h(p).scrollLeft() - l.offset().left < b && (c = "e");
1241
+ h(d).height() + h(p).scrollTop() - l.offset().top < b && (e = "s");
1242
  return e + (c ? c : "");
1243
  };
1244
  };
1245
  return f;
1246
+ }({}, y, w));
1247
+ p.register("$36", function(f, d, h) {
1248
  "".localeCompare || (String.prototype.localeCompare = function() {
1249
  return 0;
1250
  });
1251
  "".trim || (String.prototype.trim = function() {
1252
+ return p.require("$6", "string.js").trim(this, " \n\r\t");
1253
  });
1254
  f.html = function() {
1255
  function d() {
1256
  b = /[<>&]/g;
1257
  a = /(\r\n|\n|\r)/g;
1258
  e = /(?:https?):\/\/(\S+)/gi;
1259
+ m = location.hostname;
1260
  d = null;
1261
  }
1262
+ function l(a) {
1263
  return "&#" + a.charCodeAt(0) + ";";
1264
  }
1265
  function c(a, b) {
1266
+ return '<a href="' + a + '" target="' + (b.indexOf(m) ? "_blank" : "_top") + '">' + b + "</a>";
1267
  }
1268
+ var b, a, e, m;
1269
+ return function(m, g) {
1270
  d && d();
1271
+ var z = m.replace(b, l);
1272
+ g && (z = z.replace(e, c).replace(a, "<br />"));
1273
+ return z;
1274
  };
1275
  }();
1276
  return f;
1277
+ }({}, y, w));
1278
+ p.register("$37", function(f, d, h) {
1279
+ function n() {}
1280
+ var l, c, b = p.require("$22", "rtl.json");
1281
  f.init = function() {
1282
+ return new n();
1283
  };
1284
  f.cast = function(a) {
1285
+ return a instanceof n ? a : "string" === typeof a ? f.parse(a) : f.clone(a);
1286
  };
1287
  f.clone = function(a) {
1288
+ var b, c = new n();
1289
  for (b in a) c[b] = a[b];
1290
  return c;
1291
  };
1292
  f.parse = function(a) {
1293
+ l || (c = /[-_+]/, l = /^([a-z]{2,3})(?:-([a-z]{4}))?(?:-([a-z]{2}|[0-9]{3}))?(?:-([0-9][a-z0-9]{3,8}|[a-z0-9]{5,8}))?(?:-([a-z]-[-a-z]+))?$/i);
1294
  a = String(a).split(c).join("-");
1295
+ if (!l.exec(a)) return null;
1296
+ var b = new n();
1297
  b.lang = RegExp.$1.toLowerCase();
1298
  if (a = RegExp.$2) b.script = a.charAt(0).toUpperCase() + a.substr(1).toLowerCase();
1299
  if (a = RegExp.$3) b.region = a.toUpperCase();
1301
  if (a = RegExp.$5) b.extension = a;
1302
  return b;
1303
  };
1304
+ d = n.prototype;
1305
  d.isValid = function() {
1306
  return !!this.lang;
1307
  };
1319
  return c;
1320
  };
1321
  d.getIcon = function() {
1322
+ for (var a = 4, b, c, k = [ "variant", "region", "script", "lang" ], g = []; 0 !== a--; ) if (b = k[a],
1323
+ c = this[b]) c.join && (c = c.join("-")), 1 === a && 3 === c.length ? g.push("region-m49") : g = g.concat([ b, b + "-" + c.toLowerCase() ]);
1324
+ return g.join(" ");
1325
  };
1326
  d.isRTL = function() {
1327
  return !!b[String(this.script || this.lang).toLowerCase()];
1328
  };
1329
  d = null;
1330
  return f;
1331
+ }({}, y, w));
1332
+ p.register("$38", function(f, d, h) {
1333
+ function n(a) {
1334
  d.console && console.error && console.error(a);
1335
  }
1336
+ function l() {
1337
+ n("Method not implemented");
1338
  }
1339
  function c() {}
1340
  function b(a) {}
1342
  return "[Undefined]";
1343
  };
1344
  b.prototype._validate = function(a) {
1345
+ var b, m, k = !0;
1346
+ for (b in this) m = this[b], m === l ? (n(a + "." + b + "() must be implemented"),
1347
+ k = !1) : m instanceof c && (n(a + "." + b + " must be defined"), k = !1);
1348
+ return k;
1349
  };
1350
  f.init = function(a, e) {
1351
+ var m, k = new b();
1352
+ if (a) for (m = a.length; 0 !== m--; ) k[a[m]] = l;
1353
+ if (e) for (m = e.length; 0 !== m--; ) k[e[m]] = new c();
1354
+ return k;
1355
  };
1356
  f.validate = function(a) {
1357
  var b = /function (\w+)\(/.exec(a.toString()) ? RegExp.$1 : "";
1358
  a.prototype._validate(b || "Object");
1359
  };
1360
  return f;
1361
+ }({}, y, w));
1362
+ p.register("$50", function(f, d, h) {
1363
+ var n = d.requestAnimationFrame, l = d.cancelAnimationFrame, c = 0;
1364
+ if (!n || !l) for (var b in {
1365
  ms: 1,
1366
  moz: 1,
1367
  webkit: 1,
1368
  o: 1
1369
+ }) if (n = d[b + "RequestAnimationFrame"]) if (l = d[b + "CancelAnimationFrame"] || d[b + "CancelRequestAnimationFrame"]) break;
1370
+ n && l || (n = function(b) {
1371
+ var m = a();
1372
+ timeToCall = Math.max(0, 16 - (m - c));
1373
+ nextTime = m + timeToCall;
1374
  timerId = d.setTimeout(function() {
1375
  b(nextTime);
1376
  }, timeToCall);
1377
  c = nextTime;
1378
  return timerId;
1379
+ }, l = function(a) {
1380
  clearTimeout(a);
1381
  });
1382
  var a = Date.now || function() {
1384
  };
1385
  f.loop = function(a, b) {
1386
  function c() {
1387
+ d = n(c, b);
1388
+ a(g++);
1389
  }
1390
+ var g = 0, d;
1391
  c();
1392
  return {
1393
  stop: function() {
1394
+ d && l(d);
1395
  d = null;
1396
  }
1397
  };
1398
  };
1399
  return f;
1400
+ }({}, y, w));
1401
+ p.register("$47", function(f, d, h) {
1402
+ function n(a, c, e, q) {
1403
  if (b) {
1404
+ var g = e;
1405
  e = function(a) {
1406
+ if ((a.MSPOINTER_TYPE_TOUCH || "touch") === a.pointerType) return g(a);
1407
  };
1408
  }
1409
  a.addEventListener(c, e, q);
1413
  }
1414
  };
1415
  }
1416
+ function l(a) {
1417
  a.preventDefault();
1418
  a.stopPropagation();
1419
  return !1;
1420
  }
1421
+ var c, b = !!d.navigator.msPointerEnabled, a = b ? "MSPointerDown" : "touchstart", e = b ? "MSPointerMove" : "touchmove", m = b ? "MSPointerUp" : "touchend";
1422
  f.ok = function(a) {
1423
+ null == c && (c = "function" === typeof h.body.addEventListener);
1424
  c && a && a(f);
1425
  return c;
1426
  };
1428
  return b;
1429
  };
1430
  f.dragger = function(b, c) {
1431
+ function g(a) {
1432
  b.addEventListener(a, d[a], !1);
1433
  }
1434
  function q(a) {
1436
  }
1437
  var d = {};
1438
  d[a] = function(b) {
1439
+ k(b, function(e, g) {
1440
+ g.type = a;
1441
+ c(b, g, f);
1442
  });
1443
+ g(e);
1444
+ g(m);
1445
  return !0;
1446
  };
1447
+ d[m] = function(a) {
1448
  q(e);
1449
+ q(m);
1450
+ k(a, function(b, e) {
1451
+ e.type = m;
1452
  c(a, e, f);
1453
  });
1454
  return !0;
1455
  };
1456
  d[e] = function(a) {
1457
+ k(a, function(b, g) {
1458
+ g.type = e;
1459
+ c(a, g, f);
1460
  });
1461
+ return l(a);
1462
  };
1463
+ g(a);
1464
  var f = {
1465
  kill: function() {
1466
  q(a);
1467
  q(e);
1468
+ q(m);
1469
  b = f = c = null;
1470
  }
1471
  };
1475
  function q(a) {
1476
  c.addEventListener(a, u[a], !1);
1477
  }
1478
+ function B(a) {
1479
  c.removeEventListener(a, u[a], !1);
1480
  }
1481
+ function x() {
1482
+ r && r.stop();
1483
+ r = null;
1484
  }
1485
+ var r, G, E, u = {}, v = [], F = [], h = [];
1486
  u[a] = function(a) {
1487
  G = !1;
1488
+ x();
1489
+ var b = g();
1490
+ k(a, function(a, c) {
1491
+ v[a] = b;
1492
  F[a] = c.clientX;
1493
+ h[a] = c.clientY;
1494
  });
1495
+ E = c.scrollLeft;
1496
  return !0;
1497
  };
1498
+ u[m] = function(a) {
1499
+ k(a, function(a, b) {
1500
+ var c = g() - v[a], e = F[a] - b.clientX, c = Math.abs(e) / c;
1501
  d(c, e ? 0 > e ? -1 : 1 : 0);
1502
  });
1503
+ E = null;
1504
  return !0;
1505
  };
1506
  u[e] = function(a) {
1507
  var b, e;
1508
+ null == E || k(a, function(a, c) {
1509
  b = F[a] - c.clientX;
1510
+ e = h[a] - c.clientY;
1511
  });
1512
  if (e && Math.abs(e) > Math.abs(b)) return G = !0;
1513
+ b && (G = !0, c.scrollLeft = Math.max(0, E + b));
1514
+ return l(a);
1515
  };
1516
+ if (!b || f) q(a), q(e), q(m), b && (c.className += " mstouch");
1517
  return {
1518
  kill: function() {
1519
+ B(a);
1520
+ B(e);
1521
+ B(m);
1522
+ x();
1523
  },
1524
  swiped: function() {
1525
  return G;
1532
  c.style["-ms-scroll-snap-type"] = "mandatory", c.style["-ms-scroll-chaining"] = "none");
1533
  },
1534
  scroll: function(a, b, e) {
1535
+ x();
1536
+ var v = c.scrollLeft, g = a > v ? 1 : -1, q = Math[1 === g ? "min" : "max"], k = Math.round(16 * b * g);
1537
+ return r = p.require("$50", "fps.js").loop(function(b) {
1538
+ b && (v = Math.max(0, q(a, v + k)), c.scrollLeft = v, a === v && (x(), e && e(v)));
1539
  }, c);
1540
  }
1541
  };
1542
  };
1543
  f.start = function(b, c) {
1544
+ return n(b, a, c, !1);
1545
  };
1546
  f.move = function(a, b) {
1547
+ return n(a, e, b, !1);
1548
  };
1549
  f.end = function(a, b) {
1550
+ return n(a, m, b, !1);
1551
  };
1552
+ var k = f.each = function(a, c) {
1553
+ if (b) (a.MSPOINTER_TYPE_TOUCH || "touch") === a.pointerType && c(0, a); else for (var e = -1, g = (a.originalEvent || a).changedTouches || []; ++e < g.length; ) c(e, g[e]);
1554
+ }, g = Date.now || function() {
1555
  return new Date().getTime();
1556
  };
1557
  return f;
1558
+ }({}, y, w));
1559
+ p.register("$51", function(f, d, p) {
1560
  f.init = function(d) {
1561
+ function l() {
1562
  e.style.top = String(-d.scrollTop) + "px";
1563
  return !0;
1564
  }
1571
  function b(a) {
1572
  return '<span class="x' + a.charCodeAt(0).toString(16) + '">' + a + "</span>";
1573
  }
1574
+ var a = d.parentNode, e = a.insertBefore(p.createElement("div"), d);
1575
+ h(d).on("input", c).on("scroll", l);
1576
+ h(a).addClass("has-mirror");
1577
  e.className = "ta-mirror";
1578
+ var m = d.offsetWidth - d.clientWidth;
1579
+ 2 < m && (e.style.marginRight = String(m - 2) + "px");
1580
  c();
1581
+ l();
1582
  return {
1583
  kill: function() {
1584
+ h(d).off("input", c).off("scroll", l);
1585
  a.removeChild(e);
1586
  e = null;
1587
+ h(a).removeClass("has-mirror");
1588
  }
1589
  };
1590
  };
1591
  return f;
1592
+ }({}, y, w));
1593
+ p.register("$29", function(f, d, h) {
1594
+ function n(b, a) {
1595
+ for (var c = 0, m = -1, k = a && d[a], g = l[b] || [], f = g.length; ++m < f; ) callback = g[m],
1596
+ "function" === typeof callback && (callback(k), c++);
1597
  return c;
1598
  }
1599
+ var l = {}, c;
1600
  f.load = function(b, a, c) {
1601
+ function m() {
1602
  f && (clearTimeout(f), f = null);
1603
+ A && (A.onreadystatechange = null, A = A = A.onload = null);
1604
+ b && (delete l[b], b = null);
1605
  }
1606
+ function k(a, g) {
1607
+ var d = A && A.readyState;
1608
+ if (g || !d || "loaded" === d || "complete" === d) g || n(b, c), m();
1609
  }
1610
+ function g() {
1611
+ if (0 === n(b)) throw Error('Failed to load "' + (c || b) + '"');
1612
+ m();
1613
  }
1614
+ if (c && d[c]) "function" === typeof a && a(d[c]); else if (null != l[b]) l[b].push(a); else {
1615
+ l[b] = [ a ];
1616
+ var f = setTimeout(g, 4e3), A = h.createElement("script");
1617
+ A.setAttribute("src", b);
1618
+ A.setAttribute("async", "true");
1619
+ A.onreadystatechange = k;
1620
+ A.onload = k;
1621
+ A.onerror = g;
1622
+ A.onabort = m;
1623
+ h.getElementsByTagName("head")[0].appendChild(A);
1624
  }
1625
  };
1626
  f.stat = function(b) {
1627
  var a;
1628
  if (!(a = c)) {
1629
+ for (var e, d, k = h.getElementsByTagName("script"), g = -1, l = k.length; ++g < l; ) if (a = k[g].getAttribute("src")) if (e = a.indexOf("/lib/vendor"),
1630
  -1 !== e) {
1631
+ d = a.substr(0, e);
1632
  break;
1633
  }
1634
+ a = c = d || "/static";
1635
  }
1636
  return a + b;
1637
  };
1638
  return f;
1639
+ }({}, y, w));
1640
+ p.register("$16", function(f, d, D) {
1641
+ function n(a, b) {
1642
  a.setReadOnly(!1);
1643
  a.on("change", function(a, c) {
1644
  return b.val(c.getValue());
1650
  return b.blur();
1651
  });
1652
  }
1653
+ function l(a) {
1654
  a.off("change");
1655
  a.off("focus");
1656
  a.off("blur");
1657
  }
1658
  function c(a) {
1659
+ l(a);
1660
  a.setReadOnly(!0);
1661
  a.setHighlightGutterLine(!1);
1662
  a.setHighlightActiveLine(!1);
1665
  function e() {
1666
  this.HighlightRules = d;
1667
  }
1668
+ var d = a(c), q = b.require, m = q("ace/lib/oop");
1669
+ m.inherits(d, q("ace/mode/text_highlight_rules").TextHighlightRules);
1670
+ m.inherits(e, q("ace/mode/text").Mode);
1671
  return new e();
1672
  }
1673
  function a(a) {
1757
  case "auto":
1758
  return /%(?:\d+\$|\([_A-Za-z][_A-Za-z0-9]*\))?(?:[-+0]?\d*(\.\d+)?[duxoefgaDUXOEFGA]|[@scSC%])/;
1759
 
1760
+ case k:
1761
+ return m || "%%";
1762
+ }
1763
+ }
1764
+ var m, k = "auto";
1765
+ f.init = function(a, e, m) {
1766
+ var f, q = !1, B = m || k, x = a.parentNode, r = x.appendChild(D.createElement("div"));
1767
+ h(x).addClass("has-proxy has-ace");
1768
+ p.require("$29", "remote.js").load("https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.1/ace.js", function(d) {
1769
+ if (r) {
1770
+ if (!d) throw Error("Failed to load code editor");
1771
+ f = d.edit(r);
1772
+ var m = f.session, k = f.renderer;
1773
  f.$blockScrolling = Infinity;
1774
  f.setShowInvisibles(q);
1775
  f.setWrapBehavioursEnabled(!1);
1776
  f.setBehavioursEnabled(!1);
1777
  f.setHighlightActiveLine(!1);
1778
+ m.setUseSoftTabs(!1);
1779
+ k.setShowGutter(!0);
1780
+ k.setPadding(10);
1781
+ k.setScrollMargin(8);
1782
+ m.setMode(b(d, B));
1783
  f.setValue(a.value, -1);
1784
+ m.setUseWrapMode(!0);
1785
+ e ? n(f, e) : c(f);
1786
  }
1787
  }, "ace");
1788
  return {
1789
  kill: function() {
1790
+ f && (l(f), f.destroy(), f = null);
1791
+ r && (x.removeChild(r), h(x).removeClass("has-proxy has-ace"), r = null);
1792
  return this;
1793
  },
1794
  disable: function() {
1798
  },
1799
  enable: function(a) {
1800
  e = a;
1801
+ f && n(f, a);
1802
  return this;
1803
  },
1804
  resize: function() {
1815
  return this;
1816
  },
1817
  strf: function(a) {
1818
+ a = a || k;
1819
+ a !== B && (B = a, f && f.session.setMode(b(d.ace, a)));
1820
  return this;
1821
  },
1822
  focus: function() {
1825
  };
1826
  };
1827
  f.strf = function(a, b) {
1828
+ k = a;
1829
+ m = b;
1830
  return f;
1831
  };
1832
  return f;
1833
+ }({}, y, w));
1834
+ p.register("$52", function(f, d, D) {
1835
+ function n(a, b) {
1836
  function c() {
1837
  return b.val(a.getContent());
1838
  }
1846
  });
1847
  a.setMode("design");
1848
  }
1849
+ function l(a) {
1850
  a.off("input");
1851
  a.off("change");
1852
  a.off("focus");
1853
  a.off("blur");
1854
  }
1855
  function c(a) {
1856
+ l(a);
1857
  a.setMode("readonly");
1858
  }
1859
  var b = 0;
1860
  f.load = function(a) {
1861
+ var b = p.require("$29", "remote.js");
1862
  b.load(b.stat("/lib/tinymce.min.js"), a, "tinymce");
1863
  return f;
1864
  };
1865
  f.init = function(a, e) {
1866
  function d(a) {
1867
+ A = a;
1868
+ s = "<p>" === a.substr(0, 3) && "</p>" === a.substr(-4);
1869
  return a.replace(/(<\/?)script/gi, "$1loco:script");
1870
  }
1871
+ function k(a) {
1872
+ g = a;
1873
  a._getContent = a.getContent;
1874
  a.getContent = function(a) {
1875
  a = this._getContent(a);
1876
  a = a.replace(/(<\/?)loco:script/gi, "$1script");
1877
+ if (!s && "<p>" === a.substr(0, 3) && "</p>" === a.substr(-4)) {
1878
  var b = a.substr(3, a.length - 7);
1879
+ if (b === A || -1 === b.indexOf("</p>")) a = b;
1880
  }
1881
  return a;
1882
  };
1884
  a.setContent = function(a, b) {
1885
  return this._setContent(d(a), b);
1886
  };
1887
+ e ? (n(a, e), e.reset()) : c(a);
1888
+ h(x).removeClass("loading");
1889
  }
1890
+ var g, z = !1, A = "", s = !1, q = a.parentNode, B = q.parentNode, x = q.appendChild(D.createElement("div")), r = B.insertBefore(D.createElement("nav"), q);
1891
+ r.id = "_tb" + String(++b);
1892
+ h(q).addClass("has-proxy has-mce");
1893
+ h(x).addClass("mce-content-body loading").html(d(a.value));
1894
  f.load(function(a) {
1895
  if (!a) throw Error("Failed to load HTML editor");
1896
+ x && a.init({
1897
  inline: !0,
1898
+ target: x,
1899
  hidden_input: !1,
1900
  theme: "modern",
1901
  skin: !1,
1902
  plugins: "link lists",
1903
  browser_spellcheck: !0,
1904
  menubar: !1,
1905
+ fixed_toolbar_container: "#" + r.id,
1906
  toolbar: "formatselect | bold italic link unlink | bullist numlist outdent indent",
1907
  block_formats: "Paragraph=p;Heading 1=h1;Heading 2=h2;Heading 3=h4;Heading 4=h4;Heading 5=h5;Heading 6=h6;",
1908
  forced_root_block: "p",
1932
  entities: "38,amp,60,lt,62,gt,160,nbsp",
1933
  entity_encoding: "named",
1934
  keep_styles: !1,
1935
+ init_instance_callback: k
1936
  });
1937
  });
1938
  return {
1939
  val: function(b) {
1940
  b = d(b);
1941
+ null == g ? (a.value = b, h(x).html(b)) : g.getContent() !== b && g.setContent(b);
1942
  e && e.val(b);
1943
  return this;
1944
  },
1945
  kill: function() {
1946
+ g && (e && e.val(g.getContent()), l(g), g.destroy(), g = null);
1947
+ x && (q.removeChild(x), h(q).removeClass("has-proxy has-mce"), x = null);
1948
+ r && (B.removeChild(r), r = null);
1949
  return this;
1950
  },
1951
  enable: function(a) {
1952
  e = a;
1953
+ g && n(g, a);
1954
  return this;
1955
  },
1956
  disable: function() {
1957
+ g && c(g);
1958
  e = null;
1959
  return this;
1960
  },
1961
  focus: function() {
1962
+ g && e && g.focus();
1963
  return this;
1964
  },
1965
  invs: function(a) {
1966
  a = a || !1;
1967
+ z !== a && (z = a, h(q)[a ? "addClass" : "removeClass"]("show-invs"));
1968
  return this;
1969
  }
1970
  };
1971
  };
1972
  return f;
1973
+ }({}, y, w));
1974
+ p.register("$48", function(f, d, D) {
1975
+ function n(b) {
1976
  function a() {
1977
+ l && (f.off("input", e), l = !1);
1978
  }
1979
  function e() {
1980
  var a = b.value;
1981
+ a !== q && (f.trigger("changing", [ a, q ]), q = a);
1982
  }
1983
  function d() {
1984
  e();
1985
+ l && B !== q && f.trigger("changed", [ q ]);
1986
  }
1987
+ function k() {
1988
  c = b;
1989
+ B = q;
1990
+ l || (f.on("input", e), l = !0);
1991
+ f.trigger("editFocus");
1992
+ s.addClass("has-focus");
1993
  return !0;
1994
  }
1995
+ function g() {
1996
  c === b && (c = null);
1997
+ f.trigger("editBlur");
1998
+ s.removeClass("has-focus");
1999
+ l && (d(), a());
2000
  return !0;
2001
  }
2002
+ var l = !1, f = h(b), s = h(b.parentNode), q = b.value, B;
2003
+ f.on("blur", g).on("focus", k);
2004
  return {
2005
  val: function(a) {
2006
+ q !== a && (b.value = a, f.triggerHandler("input"), q = a);
2007
  return !0;
2008
  },
2009
  kill: function() {
2010
  a();
2011
+ f.off("blur", g).off("focus", k);
2012
  },
2013
  fire: function() {
2014
  q = null;
2015
  e();
2016
  },
2017
  ping: d,
2018
+ blur: g,
2019
+ focus: k,
2020
  reset: function() {
2021
+ B = q = b.value;
2022
  }
2023
  };
2024
  }
2025
+ function l(b) {
2026
  this.e = b;
2027
  }
2028
  var c;
2029
  f._new = function(b) {
2030
+ return new l(b);
2031
  };
2032
  f.init = function(b) {
2033
+ var a = new l(b);
2034
  b.disabled ? (b.removeAttribute("disabled"), a.disable()) : b.readOnly ? a.disable() : a.enable();
2035
  return a;
2036
  };
2037
+ TextAreaPrototype = l.prototype;
2038
  TextAreaPrototype.destroy = function() {
2039
  this.unlisten();
2040
  var b = this.p;
2054
  var c = this.l, d = this.p;
2055
  d && d.val(b);
2056
  c && c.val(b);
2057
+ c || a.value === b || (a.value = b, h(a).triggerHandler("input"));
2058
  return this;
2059
  };
2060
  TextAreaPrototype.fire = function() {
2067
  };
2068
  TextAreaPrototype.focus = function() {
2069
  var b = this.p;
2070
+ b ? b.focus() : h(this.e).focus();
2071
  };
2072
  TextAreaPrototype.focused = function() {
2073
  return c && c === this.el;
2101
  TextAreaPrototype.listen = function() {
2102
  var b = this.l;
2103
  b && b.kill();
2104
+ this.l = n(this.e);
2105
  return this;
2106
  };
2107
  TextAreaPrototype.unlisten = function() {
2111
  };
2112
  TextAreaPrototype.setInvs = function(b, a) {
2113
  var c = this.i || !1;
2114
+ if (a || c !== b) this._i && (this._i.kill(), delete this._i), (c = this.p) ? c.invs && c.invs(b) : b && (this._i = p.require("$51", "mirror.js").init(this.e)),
2115
  this.i = b;
2116
  return this;
2117
  };
2120
  };
2121
  TextAreaPrototype.setMode = function(b) {
2122
  var a = this.p, e = this.i || !1;
2123
+ b !== (this.m || "") && (this.m = b, a && a.kill(), this.p = a = "code" === b ? p.require("$16", "ace.js").init(this.e, this.l, this["%"]) : "html" === b ? p.require("$52", "mce.js").init(this.e, this.l) : null,
2124
  this.setInvs(e, !0), c && this.focus());
2125
  return this;
2126
  };
2143
  };
2144
  TextAreaPrototype = null;
2145
  return f;
2146
+ }({}, y, w));
2147
+ p.register("$49", function(f, d, p) {
2148
+ function n(a) {
2149
  var b = d.console;
2150
  b && b.error && b.error(a);
2151
  }
2152
+ function l(a) {
2153
+ var b = p.createElement("div");
2154
  a && b.setAttribute("class", a);
2155
  return b;
2156
  }
2185
  return !1;
2186
  };
2187
  }
2188
+ function m(a, b, c) {
2189
  function e(a) {
2190
+ n("row[" + a + "] disappeared");
2191
  return {
2192
  cellVal: function() {
2193
  return "";
2195
  };
2196
  }
2197
  return function(d) {
2198
+ var g = b || 0, k = c ? -1 : 1, v = a.rows || [];
2199
  d.sort(function(a, b) {
2200
+ return k * (v[a] || e(a)).cellVal(g).localeCompare((v[b] || e(b)).cellVal(g));
2201
  });
2202
  };
2203
  }
2204
+ function k(a) {
2205
  this.w = a;
2206
  }
2207
+ function g(a) {
2208
  this.t = a;
2209
  this.length = 0;
2210
  }
2211
+ function z(a, b, c) {
2212
+ var e = p.createElement("div");
2213
  e.className = c || "";
2214
  this._ = e;
2215
  this.d = b || [];
2216
  this.i = a || 0;
2217
  this.length = b.length;
2218
  }
2219
+ function A(a) {
2220
  this.live = a;
2221
  this.rows = [];
2222
  }
2223
  f.create = function(a) {
2224
+ return new k(a);
2225
  };
2226
+ var s = k.prototype;
2227
+ s.init = function(d) {
2228
+ var g = this.w, k = g.id, m = g.splity(k + "-thead", k + "-tbody"), f = m[0], m = m[1], E = [], u = [], v = [], F = [];
2229
  if (d) this.ds = d, this.idxs = u, this._idxs = null; else if (!(d = this.ds)) throw Error("No datasource");
2230
  f.css.push("wg-thead");
2231
+ m.css.push("wg-tbody");
2232
  d.eachCol(function(a, b, c) {
2233
+ v[a] = k + "-col-" + b;
2234
  F[a] = c || b;
2235
  });
2236
+ for (var N = l(), s = -1, A = v.length, n = l("wg-cols"), p = f.splitx.apply(f, v); ++s < A; ) p[s].header(F[s]),
2237
+ n.appendChild(N.cloneNode(!1)).setAttribute("for", v[s]);
2238
  d.eachRow(function(a, b, c) {
2239
+ E[a] = new z(a, b, c);
2240
  u[a] = a;
2241
  });
2242
+ this.rows = E;
2243
+ this.cols = n;
2244
  this.ww = null;
2245
+ this.root = N = m.body;
2246
  this.head = f;
2247
  f.redraw = c(this);
2248
+ f = m.fixed = p[0].bodyY() || 20;
2249
+ g.lock().resize(f, m);
2250
+ g.css.push("is-table");
2251
+ g.restyle();
2252
+ this.sc ? this._re_sort(A) : d.sort && d.sort(u);
2253
  this.redrawDirty();
2254
  this.render();
2255
+ h(N).attr("tabindex", "-1").on("keydown", e(this)).on("mousedown", b(this)).on("scroll", a(this));
2256
  return this;
2257
  };
2258
+ s.clear = function() {
2259
  for (var a = this.pages || [], b = a.length; 0 !== b--; ) a[b].destroy();
2260
  this.pages = [];
2261
  this.sy = this.mx = this.mn = this.vh = null;
2262
  void 0;
2263
  return this;
2264
  };
2265
+ s.render = function() {
2266
+ for (var a, b, c = [], e = this.rows || [], d = -1, g, k = this.idxs, v = k.length, m = this.idxr = {}, l = this.r, f = this._r, h = this.root, z = this.cols; ++d < v; ) {
2267
+ 0 === d % 100 && (a = z.cloneNode(!0), b = new A(a), b.h = 2200, b.insert(h), c.push(b));
2268
+ g = k[d];
2269
+ m[g] = d;
2270
+ a = e[g];
2271
+ if (null == a) throw Error("Render error, no data at [" + g + "]");
2272
  a.page = b;
2273
  b.rows.push(a);
2274
  }
2281
  this._r = l);
2282
  return this;
2283
  };
2284
+ s.resize = function() {
2285
+ var a = -1, b = this.ww || (this.ww = []), c = this.w, e = c.cells[0], d = e.body.childNodes, g = d.length, k = this.pages || [], v = k.length;
2286
+ for (c.redraw.call(e); ++a < g; ) b[a] = d[a].style.width;
2287
+ if (v) {
2288
  c = this.mx;
2289
+ for (a = this.mn; a <= c; a++) k[a].widths(b);
2290
  this.redrawDirty() && this.redraw();
2291
  }
2292
  };
2293
+ s.redrawDirty = function() {
2294
  var a = !1, b = this.root, c = b.scrollTop, b = b.clientHeight;
2295
  this.sy !== c && (a = !0, this.sy = c);
2296
  this.vh !== b && (a = !0, this.vh = b);
2297
  return a;
2298
  };
2299
+ s.redraw = function() {
2300
+ for (var a = 0, b = -1, c = null, e = null, d = this.ww, g = this.sy, k = this.vh, v = this.mn, m = this.mx, l = Math.max(0, g - 100), g = k + g + 100, f = this.pages || [], h = f.length; ++b < h && !(a > g); ) k = f[b],
2301
+ a += k.height(), a < l || (null === c && (c = b), e = b, k.rendered || k.render(d));
2302
+ if (v !== c) {
2303
+ if (null !== v && c > v) for (b = v; b < c; b++) {
2304
+ k = f[b];
2305
+ if (!k) throw Error("Shit!");
2306
+ k.rendered && k.sleep();
2307
  }
2308
  this.mn = c;
2309
  }
2310
+ if (m !== e) {
2311
+ if (null !== m && e < m) for (b = m; b > e; b--) k = f[b], k.rendered && k.sleep();
2312
  this.mx = e;
2313
  }
2314
  };
2315
+ s.selected = function() {
2316
  return this.r;
2317
  };
2318
+ s.thead = function() {
2319
  return this.w.cells[0];
2320
  };
2321
+ s.tbody = function() {
2322
  return this.w.cells[1];
2323
  };
2324
+ s.tr = function(a) {
2325
  return (a = this.row(a)) ? a.cells() : [];
2326
  };
2327
+ s.row = function(a) {
2328
  return this.rows[a];
2329
  };
2330
+ s.td = function(a, b) {
2331
  return this.tr(a)[b];
2332
  };
2333
+ s.next = function(a, b, c) {
2334
  null == c && (c = this.r || 0);
2335
+ var e = this.idxs, d = e.length, g = (this.idxr || {})[c];
2336
+ for (c = g; c !== (g += a) && !(0 <= g && d > g); ) if (b && d) g = 1 === a ? -1 : d,
2337
  b = !1; else return null;
2338
+ c = e[g];
2339
+ return null == c || null == this.rows[c] ? (n("Bad next: [" + g + "] does not map to data row"),
2340
  null) : c;
2341
  };
2342
+ s.selectNext = function(a, b, c) {
2343
  a = this.next(a, b);
2344
  null != a && this.r !== a && this.select(a, c);
2345
  return this;
2346
  };
2347
+ s.deselect = function(a) {
2348
  var b = this.r;
2349
+ null != b && (this.r = null, h(this.tr(b)).removeClass("selected"), this.w.fire("wgRowDeselect", [ b, a ]));
2350
  return this;
2351
  };
2352
+ s.selectRow = function(a, b) {
2353
  return this.select(this.idxs[a]);
2354
  };
2355
+ s.select = function(a, b) {
2356
  var c = this.rows[a], e = c && c.page;
2357
+ if (!e) return this.deselect(!1), n("Row is filtered out"), this;
2358
  this.deselect(!0);
2359
+ var d, g = this.w.cells[1];
2360
+ e.rendered || (d = e.top(), g.scrollY(d), this.redrawDirty() && this.redraw());
2361
+ if (!c.rendered) return e.rendered || n("Failed to render page"), n("Row [" + c.i + "] not rendered"),
2362
  this;
2363
  e = c.cells();
2364
+ h(e).addClass("selected");
2365
  this.r = a;
2366
+ b || (d = g.scrollY(), h(this.root).focus(), d !== g.scrollY() && g.scrollY(d));
2367
+ g.scrollTo(e[0], !0);
2368
  this.w.fire("wgRowSelect", [ a, c.data() ]);
2369
  return this;
2370
  };
2371
+ s.unfilter = function() {
2372
  this._idxs && (this.idxs = this._sort(this._idxs), this._idxs = null, this.clear().render());
2373
  return this;
2374
  };
2375
+ s.filter = function(a) {
2376
  this._idxs || (this._idxs = this.idxs);
2377
  this.idxs = this._sort(a);
2378
  return this.clear().render();
2379
  };
2380
+ s.each = function(a) {
2381
+ for (var b, c = -1, e = this.rows || [], d = this.idxs || [], g = d.length; ++c < g; ) b = d[c],
2382
  a(e[b], c, b);
2383
  return this;
2384
  };
2385
+ s.sortable = function(a) {
2386
+ var b = this.sc || (this.sc = new g(this));
2387
  b.has(a) || b.add(a);
2388
  return this;
2389
  };
2390
+ s._re_sort = function(a) {
2391
  var b = -1, c = this.sc, e = c.active;
2392
+ for (this.sc = c = new g(this); ++b < a; ) c.add(b);
2393
  e && (b = this.head.indexOf(e.id), -1 === b && (b = Math.min(e.idx, a - 1)), this.sort(b, e.desc));
2394
  return this;
2395
  };
2396
+ s._sort = function(a, b) {
2397
  b ? (this.s = b, b(a)) : (b = this.s) && b(a);
2398
  return a;
2399
  };
2400
+ s.sort = function(a, b) {
2401
+ this._sort(this.idxs, m(this, a, b));
2402
  this.sc.activate(a, b);
2403
  return this;
2404
  };
2405
+ s = null;
2406
+ s = g.prototype;
2407
+ s.has = function(a) {
2408
  return null != this[a];
2409
  };
2410
+ s.add = function(a) {
2411
  var b = this, c = b.t.head.cells[a];
2412
  b[a] = {
2413
  desc: null,
2421
  });
2422
  return b;
2423
  };
2424
+ s.toggle = function(a) {
2425
  this.t.sort(a, !this[a].desc).clear().render();
2426
  return this;
2427
  };
2428
+ s.activate = function(a, b) {
2429
  var c, e;
2430
  c = this.active;
2431
+ var d = this[a], g = this.t.head.cells;
2432
+ c && (e = g[c.idx]) && (e.removeClass(c.css), c !== d && e.restyle());
2433
+ (e = g[a]) ? (d.desc = b, this.active = d, c = "wg-" + (b ? "desc" : "asc"), e.addClass(c).restyle(),
2434
  d.css = c) : this.active = null;
2435
  return this;
2436
  };
2437
+ s = null;
2438
+ s = z.prototype;
2439
+ s.render = function(a) {
2440
  var b, c = [], e = this._, d = this.length;
2441
  if (e) {
2442
  for (this.c = c; 0 !== d--; ) b = e.cloneNode(!1), c[d] = this.update(d, b), b.$index = this.i,
2446
  this.rendered = !0;
2447
  return this;
2448
  };
2449
+ s.update = function(a, b) {
2450
  var c = b || this.c[a] || {}, e = (this.d[a] || function() {})() || " ";
2451
  null == e.innerHTML ? c.textContent = e : c.innerHTML = e.innerHTML;
2452
  return c;
2453
  };
2454
+ s.cells = function() {
2455
  return this.c || [ this._ ];
2456
  };
2457
+ s.data = function() {
2458
  for (var a = -1, b = [], c = this.length; ++a < c; ) b[a] = this.cellVal(a);
2459
  return b;
2460
  };
2461
+ s.destroy = function() {
2462
  this.page = null;
2463
  this.rendered = !1;
2464
  };
2465
+ s.cellVal = function(a) {
2466
  a = this.d[a]() || "";
2467
  return String(a.textContent || a);
2468
  };
2469
+ s = null;
2470
+ s = A.prototype;
2471
+ s.size = function() {
2472
  return this.rows.length;
2473
  };
2474
+ s.insert = function(a) {
2475
+ var b = this.h, c = l("wg-dead");
2476
  c.style.height = String(b) + "px";
2477
  a.appendChild(c);
2478
  return this.dead = c;
2479
  };
2480
+ s.top = function() {
2481
  return (this.rendered ? this.live : this.dead).offsetTop;
2482
  };
2483
+ s.height = function() {
2484
  var a = this.h;
2485
  null == a && (this.h = a = this.rendered ? this.live.firstChild.offsetHeight : this.dead.offsetHight);
2486
+ a || n("row has zero height");
2487
  return a;
2488
  };
2489
+ s.render = function(a) {
2490
+ for (var b, c = -1, e = this.rows, d = e.length, g = this.dead, k = this.live, v = k.childNodes; ++c < d; ) b = e[c],
2491
+ b.rendered || b.render(v);
2492
  d = a.length;
2493
+ for (c = 0; c < d; c++) v[c].style.width = a[c];
2494
+ g.parentNode.replaceChild(k, g);
2495
  this.rendered = !0;
2496
  this.h = null;
2497
  return this;
2498
  };
2499
+ s.sleep = function() {
2500
  var a = this.height(), b = this.live, c = this.dead;
2501
  c.style.height = String(a) + "px";
2502
  b.parentNode.replaceChild(c, b);
2504
  this.h = a;
2505
  return this;
2506
  };
2507
+ s.sleepH = function(a) {
2508
  a *= this.rows.length;
2509
  var b = this.dead;
2510
  b && (b.style.height = String(a) + "px");
2511
  this.rendered || (this.h = a);
2512
  return this;
2513
  };
2514
+ s.widths = function(a) {
2515
  for (var b = this.live.childNodes, c = a.length; 0 !== c--; ) b[c].style.width = a[c];
2516
  return this;
2517
  };
2518
+ s.destroy = function() {
2519
  var a = this.rendered ? this.live : this.dead, b = this.rows, c = b.length;
2520
  for (a.parentNode.removeChild(a); 0 !== c--; ) b[c].destroy();
2521
  };
2522
+ s = null;
2523
  return f;
2524
+ }({}, y, w));
2525
+ p.register("$39", function(f, d, D) {
2526
+ function n(a, b) {
2527
  var c = a.id, e = c && q[c], d = e && e.parent();
2528
  if (!e || !d) return null;
2529
+ var g = d.dir === s, c = g ? "X" : "Y", k = "page" + c, g = g ? A : z, m = g(d.el), c = b["offset" + c], l = d.el, f = l.className;
2530
+ null == c && (c = b[k] - g(a));
2531
+ c && (m += c);
2532
+ l.className = f + " is-resizing";
2533
  return {
2534
  done: function() {
2535
+ l.className = f;
2536
  },
2537
  move: function(a) {
2538
+ d.resize(a[k] - m, e);
2539
  return !0;
2540
  }
2541
  };
2542
  }
2543
+ function l(a, c) {
2544
  function e() {
2545
+ h(D).off("mousemove", d);
2546
+ x && (x.done(), x = null);
2547
  return !0;
2548
  }
2549
  function d(a) {
2550
+ x ? x.move(a) : e();
2551
  return !0;
2552
  }
2553
+ if (x) return !0;
2554
+ x = n(a.target, a);
2555
+ if (!x) return !0;
2556
+ h(D).one("mouseup", e).on("mousemove", d);
2557
  return b(a);
2558
  }
2559
  function c(a, b) {
2560
  var c = b.type;
2561
+ "touchmove" === c ? x && x.move(b) : "touchstart" === c ? x = n(a.target, b) : "touchend" === c && x && (x.done(),
2562
+ x = null);
2563
  }
2564
  function b(a) {
2565
  a.stopPropagation();
2567
  return !1;
2568
  }
2569
  function a(a) {
2570
+ var b = B;
2571
  b && b.redraw();
2572
  a && a.redraw();
2573
+ return B = a;
2574
  }
2575
  function e(b, c) {
2576
+ var e = h(c).on("editFocus", function() {
2577
  e.trigger("wgFocus", [ a(b) ]);
2578
  }).on("editBlur", function() {
2579
  e.trigger("wgBlur", [ a(null) ]);
2580
  });
2581
  }
2582
+ function m(a) {
2583
  var b = a.id, c = a.className;
2584
  this.id = b;
2585
  this.el = a;
2589
  q[b] = this;
2590
  this.clear();
2591
  }
2592
+ var k = p.include("$46", "html.js") || p.include("$2", "html.js", !0), g = p.require("$21", "dom.js"), z = g.top, A = g.left, s = 1, q = {}, B, x = !1;
2593
  f.init = function(a) {
2594
+ var b = new m(a);
2595
  b.redraw();
2596
+ p.require("$47", "touch.js").ok(function(b) {
2597
  b.dragger(a, c);
2598
  });
2599
+ h(a).on("mousedown", l);
2600
  return b;
2601
  };
2602
+ d = m.prototype;
2603
  d.fire = function(a, b) {
2604
+ var c = h.Event(a);
2605
  c.cell = this;
2606
+ h(this.el).trigger(c, b);
2607
  return this;
2608
  };
2609
  d.each = function(a) {
2620
  return this.$("off", arguments);
2621
  };
2622
  d.find = function(a) {
2623
+ return h(this.el).find(a);
2624
  };
2625
  d.$ = function(a, b) {
2626
+ h.fn[a].apply(h(this.el), b);
2627
  return this;
2628
  };
2629
  d.addClass = function(a) {
2639
  return this.pid && q[this.pid];
2640
  };
2641
  d.splitx = function() {
2642
+ return this._split(s, arguments);
2643
  };
2644
  d.splity = function() {
2645
  return this._split(2, arguments);
2646
  };
2647
  d._split = function(a, b) {
2648
  (this.length || this.field) && this.clear();
2649
+ for (var c = -1, e, d = b.length, k = 1 / d, l = 0; ++c < d; ) {
2650
+ e = g.el();
2651
  this.body.appendChild(e);
2652
+ for (var f = e, h = b[c], z = h, s = 1; q[h]; ) h = z + "-" + ++s;
2653
+ f.id = h;
2654
+ e = new m(e);
2655
  e.index = c;
2656
  e.pid = this.id;
2657
  e._locale(this.lang, this.rtl);
2658
+ e.pos = l;
2659
+ l += k;
2660
  this.cells.push(e);
2661
  this.length++;
2662
  }
2671
  a.innerHTML = "";
2672
  this.body = null;
2673
  a.className = this._cn || "";
2674
+ h(a).off();
2675
  return this;
2676
  };
2677
  d.exists = function() {
2678
  return this === q[this.id];
2679
  };
2680
  d.clear = function() {
2681
+ for (var a = this.el, b = this.cells, c = this.field, e = this.body, d = this.nav, m = this.length || 0; 0 !== m--; ) delete q[b[m].destroy().id];
2682
  this.cells = [];
2683
  this.length = 0;
2684
  d && (a.removeChild(d), this.nav = null);
2685
+ e && (c && (k.ie() && h(e).triggerHandler("blur"), c.destroy(), this.field = null),
2686
  this.table && (this.table = null), a === e.parentNode && a.removeChild(e));
2687
+ this.body = a.appendChild(g.el("", "wg-body"));
2688
  this._h = null;
2689
  return this;
2690
  };
2691
  d.resize = function(a, b) {
2692
  if (!b && (b = this.cells[1], !b)) return;
2693
+ var c = b.index, e = this.cells, d = h(this.el)[this.dir === s ? "width" : "height"](), g = e[c + 1], c = e[c - 1];
2694
  pad = (b.body || b.el.firstChild).offsetTop || 0;
2695
+ max = (g ? g.pos * d : d) - pad;
2696
  min = c ? c.pos * d : 0;
2697
  b.pos = Math.min(max, Math.max(min, a)) / d;
2698
  this.redraw();
2699
  return this;
2700
  };
2701
  d.distribute = function(a) {
2702
+ for (var b = -1, c = 0, e, d = this.cells, g = a.length; ++b < g && (e = d[++c]); ) e.pos = Math.max(0, Math.min(1, a[b]));
2703
  this.redraw();
2704
  return this;
2705
  };
2722
  this.restyle();
2723
  var b = this.el, c = this.body, e = this.field;
2724
  if (c) {
2725
+ var d, g = b.clientWidth || 0, k = b.clientHeight || 0, m = c.offsetTop || 0, k = m > k ? 0 : k - m;
2726
+ this._h !== k && (this._h = k, c.style.height = String(k) + "px", d = e);
2727
+ this._w !== g && (this._w = g, d = e);
2728
  d && d.redraw();
2729
  }
2730
  c = this.length;
2731
+ g = 1;
2732
+ k = this.nav;
2733
+ for (m = 2 === this.dir ? "height" : "width"; 0 !== c--; ) e = this.cells[c], k ? d = 1 : (e.fixed && (e.pos = e.fixed / h(b)[m]()),
2734
+ d = g - e.pos, g = e.pos), e.el.style[m] = String(100 * d) + "%", e.redraw(a);
2735
  return this;
2736
  };
2737
  d.contents = function(a, b) {
2738
  var c = this.el, e = this.body;
2739
  if (null == a) return e.innerHTML;
2740
  this.length ? this.clear() : e && (c.removeChild(e), e = null);
2741
+ e || (this.body = e = c.appendChild(g.el("", b || "wg-content")), this._h = null,
2742
  (c = this.lang) && this._locale(c, this.rtl, !0));
2743
+ "string" === typeof a ? h(e)._html(a) : a && this.append(a);
2744
  this.redraw();
2745
  return this;
2746
  };
2750
  var d = c.editable();
2751
  c.reload(a, b);
2752
  d !== b && this.restyle();
2753
+ } else this.length && this.clear(), d = g.el("textarea"), d.setAttribute("wrap", "virtual"),
2754
+ d.value = a, this.contents(d), c = p.require("$48", "field.js")._new(d)[b ? "enable" : "disable"](),
2755
  e(this, d), this.field = c, this.restyle();
2756
  this.lang || this.locale("en");
2757
  return c;
2758
  };
2759
  d.locale = function(a) {
2760
+ a = p.require("$37", "locale.js").cast(a);
2761
  return this._locale(String(a), a.isRTL());
2762
  };
2763
  d._locale = function(a, b, c) {
2784
  return this;
2785
  };
2786
  d.append = function(a) {
2787
+ a && (a.nodeType ? k.init(this.body.appendChild(a)) : k.init(h(a).appendTo(this.body)));
2788
  return this;
2789
  };
2790
  d.prepend = function(a) {
2791
  var b = this.body;
2792
  if (a.nodeType) {
2793
  var c = b.firstChild;
2794
+ k.init(c ? b.insertBefore(a, c) : b.appendChild(a));
2795
+ } else k.init(h(a).prependTo(b));
2796
  return this;
2797
  };
2798
  d.before = function(a) {
2799
  var b = this.body;
2800
+ a.nodeType ? k.init(this.el.insertBefore(a, b)) : k.init(h(a).insertBefore(b));
2801
  return this;
2802
  };
2803
  d.header = function(a, b) {
2804
  if (null == a && null == b) return this.el.getElementsByTagName("header")[0];
2805
+ this.t = g.txt(a || "");
2806
+ this.el.insertBefore(g.el("header", b), this.body).appendChild(this.t);
2807
  this.redraw();
2808
  return this;
2809
  };
2818
  return a && a.nodeValue;
2819
  };
2820
  d.bodyY = function() {
2821
+ return z(this.body, this.el);
2822
  };
2823
  d.scrollY = function(a) {
2824
  if (J === a) return this.body.scrollTop;
2826
  };
2827
  d.tabulate = function(a) {
2828
  var b = this.table;
2829
+ b ? b.clear() : b = p.require("$49", "wgtable.js").create(this);
2830
  b.init(a);
2831
  return this.table = b;
2832
  };
2837
  d.scrollTo = function(a, b) {
2838
  var c, e = this.body;
2839
  c = e.scrollTop;
2840
+ var d = z(a, e);
2841
  if (c > d) c = d; else {
2842
+ var g = e.clientHeight, d = d + h(a).outerHeight();
2843
+ if (g + c < d) c = d - g; else return;
2844
  }
2845
+ b ? e.scrollTop = c : h(e).stop(!0).animate({
2846
  scrollTop: c
2847
  }, 250);
2848
  };
2849
  d.navigize = function(a, c) {
2850
  function e(a) {
2851
+ var b = k[a], c = f[a], d = h(b.el).show();
2852
  c.addClass("active");
2853
+ l = a;
2854
+ z.data("idx", a);
2855
  b.fire("wgTabSelect", [ a ]);
2856
  return d;
2857
  }
2858
+ var d = this, k = d.cells, m = d.nav, l, f = [];
2859
+ m && d.el.removeChild(m);
2860
+ var m = d.nav = d.el.insertBefore(g.el("nav", "wg-tabs"), d.body), z = h(m).on("click", function(a) {
2861
+ var c = h(a.target).data("idx");
2862
  if (null == c) return !0;
2863
+ if (null != l) {
2864
+ var g = f[l];
2865
+ h(k[l].el).hide();
2866
  g.removeClass("active");
2867
  }
2868
  e(c);
2869
  d.redraw();
2870
  return b(a);
2871
  });
2872
+ null == c && (c = z.data("idx") || 0);
2873
  d.each(function(b, c) {
2874
+ f[c] = h('<a href="#' + b.id + '"></a>').data("idx", c).text(a[c]).appendTo(z);
2875
  b.pos = 0;
2876
+ h(b.el).hide();
2877
  });
2878
+ e(k[c] ? c : 0);
2879
  d.lock();
2880
  d.redraw();
2881
  return d;
2882
  };
2883
  d.navigated = function() {
2884
  var a = this.nav;
2885
+ if (a) return h(a).data("idx");
2886
  };
2887
  d = null;
2888
  return f;
2889
+ }({}, y, w));
2890
+ p.register("$24", function(f, d, D) {
2891
+ function n(a) {
2892
  var b = [];
2893
  a && (a.saved() || b.push("po-unsaved"), a.fuzzy() ? b.push("po-fuzzy") : a.flagged() && b.push("po-flagged"),
2894
  a.translation() || b.push("po-empty"), a.comment() && b.push("po-comment"));
2895
  return b.join(" ");
2896
  }
2897
+ function l(a, b, c) {
2898
+ b = h(a.title(b).parentNode);
2899
  var e = b.find("span.lang");
2900
+ c ? (c = p.require("$37", "locale.js").cast(c), e.length || (e = h("<span></span>").prependTo(b)),
2901
  e.attr("lang", c.lang).attr("class", c.getIcon() || "lang region region-" + (c.region || "zz").toLowerCase())) : (e.remove(),
2902
  c = "en");
2903
  a.locale(c);
2913
  function b() {
2914
  this.dirty = 0;
2915
  }
2916
+ p.require("$3", "number.js");
2917
+ var a = "poUpdate", e = "changing", m = "changed", k = 0, g = 1, z = 2, A = 3, s = 4, q = 5, B, x, r = p.require("$36", "string.js").html, y = p.require("$6", "string.js").sprintf;
2918
  f.extend = function(a) {
2919
  return a.prototype = new b();
2920
  };
2921
  f.localise = function(a) {
2922
+ x = a;
2923
  return f;
2924
  };
2925
+ var w = function() {
2926
+ var a = D.createElement("p");
2927
  return function(b) {
2928
  a.innerHTML = b.replace("src=", "x=");
2929
  return a.textContent.trim() || b.trim();
2930
  };
2931
+ }(), u = b.prototype = p.require("$38", "abstract.js").init([ "getListColumns", "getListHeadings", "getListEntry" ], [ "editable", "t" ]);
2932
  u.init = function() {
2933
  this.localise();
2934
  this.editable = {
2940
  return this;
2941
  };
2942
  u.localise = function(a) {
2943
+ a || (a = x || p.require("$1", "t.js").init());
2944
  var b = [];
2945
+ b[k] = a._x("Source text", "Editor") + ":";
2946
+ b[A] = a._x("%s translation", "Editor") + ":";
2947
+ b[s] = a._x("Context", "Editor") + ":";
2948
  b[q] = a._x("Comments", "Editor") + ":";
2949
+ b[g] = a._x("Single", "Editor") + ":";
2950
+ b[z] = a._x("Plural", "Editor") + ":";
2951
  b[6] = a._x("Untranslated", "Editor");
2952
  b[7] = a._x("Translated", "Editor");
2953
  b[8] = a._x("Toggle Fuzzy", "Editor");
2961
  c.redraw(!0, a);
2962
  return !0;
2963
  }
2964
+ var c = p.require("$39", "wingrid.js").init(a);
2965
+ h(d).on("resize", b);
2966
  this.redraw = b;
2967
+ h(a).on("wgFocus wgBlur", function(a, b) {
2968
  a.stopPropagation();
2969
+ B = b;
2970
  });
2971
  this.destroy = function() {
2972
  c.destroy();
2973
+ h(d).off("resize", b);
2974
  };
2975
  this.rootDiv = a;
2976
  return c;
2977
  };
2978
  u.$ = function() {
2979
+ return h(this.rootDiv);
2980
  };
2981
  u.setListCell = function(a) {
2982
  var b = this;
2996
  this.targetCell = a;
2997
  };
2998
  u.next = function(a, b, c) {
2999
+ for (var e = this.listTable, d = e.selected(), g = d, k, m = this.po; null != (d = e.next(a, c, d)); ) {
3000
+ if (g === d) {
3001
  d = null;
3002
  break;
3003
  }
3004
+ if (b && (k = m.row(d), k.translated(0))) continue;
3005
  break;
3006
  }
3007
  null != d && e.select(d, !0);
3040
  return this.lastSearch || "";
3041
  };
3042
  u.filter = function(a, b) {
3043
+ var c, e = this.listTable, d = this.lastFound, g = this.lastSearch;
3044
  if (a) {
3045
+ if (g === a) return d || 0;
3046
+ if (g && !d && 0 === a.indexOf(g)) return 0;
3047
  c = this.dict.find(a);
3048
  }
3049
+ this.lastSearch = g = a;
3050
  this.lastFound = d = c ? c.length : this.po.length;
3051
  c ? e.filter(c) : e.unfilter();
3052
+ b || this.fire("poFilter", [ g, d ]);
3053
  return d;
3054
  };
3055
  u.countFiltered = function() {
3067
  var b = this.po.indexOf(a);
3068
  if ((b = this.listTable.tr(b)) && b.length) {
3069
  var c = b[0].className;
3070
+ a = c.replace(/(?:^| +)po-[a-z]+/g, "") + " " + n(a);
3071
+ a !== c && h(b).attr("class", a);
3072
  }
3073
  };
3074
  u.save = function(a) {
3082
  u.fire = function(a, b) {
3083
  var c = this.handle;
3084
  if (c && c[a] && (c = c[a].apply(this, b || []), !1 === c)) return !1;
3085
+ c = h.Event(a);
3086
  this.$().trigger(c, b);
3087
  return !c.isDefaultPrevented();
3088
  };
3094
  return null;
3095
  };
3096
  u.reload = function() {
3097
+ var a = this, b, c = a.listCell, e = a.listTable, d = a.po, g = d && d.locale(), k = g && g.isRTL(), m = d && d.length || 0;
3098
  if (!d || !d.row) return c && c.clear().header("Error").contents("Invalid messages list"),
3099
  !1;
3100
+ a.targetLocale = g;
3101
+ a.lastSearch && (a.lastSearch = "", a.lastFound = m, a.fire("poFilter", [ "", m ]));
3102
  e && (b = e.thead().distribution());
3103
  a.listTable = e = c.tabulate({
3104
  eachCol: function(b) {
3105
+ var c, e, d = a.getListColumns(), g = a.getListHeadings();
3106
+ for (e in d) c = d[e], b(c, e, g[c]);
3107
  },
3108
  eachRow: function(b) {
3109
  d.each(function(c, e) {
3110
+ b(e.idx, a.getListEntry(e), n(e));
3111
  });
3112
  },
3113
  sort: a.getSorter()
3115
  var l, c = a.getListColumns();
3116
  for (l in c) e.sortable(c[l]);
3117
  b && e.thead().distribute(b);
3118
+ e.tbody().$(k ? "addClass" : "removeClass", [ "is-rtl" ]);
3119
  a.fire("poLoad");
3120
+ return !!m;
3121
  };
3122
  u.load = function(a, b) {
3123
  this.po = a;
3149
  return null;
3150
  };
3151
  u.setSrcMeta = function(a, b) {
3152
+ var e = [], d, g = !1, k = this.$smeta, m = this.labels, l = [], f = a.tags(), z = f && f.length;
3153
+ if (d = a.context()) l.push("<span>" + r(m[s]) + "</span>"), l.push("<mark>" + r(d) + "</mark>");
3154
+ if (z && this.getTag) for (l.push("<span>Tagged:</span>"); 0 <= --z; ) (d = this.getTag(f[z])) && l.push('<mark class="tag">' + r(d.mod_name) + "</mark>");
3155
  l.length && e.push(l.join(" "));
3156
+ if (this.getMono() && (d = a.refs()) && (f = d.split(/\s/), z = f.length)) {
3157
+ for (l = []; 0 <= --z; ) d = f[z], l.push("<code>" + r(d) + "</code>");
3158
  e.push('<p class="has-icon icon-file">' + l.join(" ") + "</p>");
3159
  }
3160
+ (d = a.notes()) && e.push('<p class="has-icon icon-info">' + r(d, !0) + "</p>");
3161
+ e.length ? (k || (k = b.find("div.meta"), k.length || (k = h('<div class="meta"></div>').insertAfter(b.header())),
3162
+ c(this, k, "poMeta"), this.$smeta = k), k.html(e.join("\n")).show(), g = !0) : k && k.text() && (k.text("").hide(),
3163
+ g = !0);
3164
+ return g;
3165
  };
3166
  u.setTrgMeta = function(a, b, c) {
3167
+ var e = [], d = !1, g = this.$tmeta;
3168
  b = (a = a.errors(b)) && a.length;
3169
+ var k;
3170
+ if (b) for (k = 0; k < b; k++) e.push('<p class="has-icon icon-warn">' + r(a[k], !0) + ".</p>");
3171
+ e.length ? (g || (g = c.find("div.meta"), g.length || (g = h('<div class="meta"></div>').insertAfter(c.header())),
3172
+ this.$tmeta = g), g.html(e.join("\n")).show(), d = !0) : g && g.text() && (g.text("").hide(),
3173
  d = !0);
3174
  return d;
3175
  };
3182
  return e.join(" ");
3183
  }
3184
  function d(a, e) {
3185
+ var m = J, h = L[k];
3186
  a.off();
3187
+ a.titled() !== h && l(a, h, e || "en");
3188
+ h = !1;
3189
+ r.setSrcMeta(b, a) && (h = !0);
3190
  if (b.plural()) {
3191
+ var h = -1, s = [], q = [], A = a.id + "-", n = b.sourceForms() || e && e.plurals || [ "One", "Other" ], p = n.length;
3192
+ if (2 !== p || "=" === n[0].charAt(0) && "=1" !== n[0]) for (;++h < p; ) s[h] = A + String(h),
3193
+ q[h] = c(n[h]) + ":"; else s = [ A + "-0", A + "-1" ], q = [ L[g], L[z] ];
3194
+ a.splity.apply(a, s);
3195
  a.each(function(a, c) {
3196
+ a.header(q[c]).textarea(b.source(null, c), m).setStrf(C).setMode(x).setInvs(w);
3197
  });
3198
  a.lock();
3199
+ m && a.each(function(a, b) {
3200
  f(a, b);
3201
  });
3202
+ } else h && a.redraw(), a.textarea(b.source(), m).setStrf(C).setMode(x).setInvs(w),
3203
+ m && f(a, 0);
3204
  }
3205
  function f(c, d) {
3206
  c.on(e, function(a, c) {
3207
  b.source(c, d);
3208
+ 0 === d && r.updateListCell(b, "source");
3209
+ r.unsave(b, d);
3210
+ }).on(m, function() {
3211
+ 0 === d && r.po.reIndex(b);
3212
+ r.dict && r.rebuildSearch();
3213
+ r.fire(a, [ b ]);
3214
  });
3215
  }
3216
+ function h(a, e, d) {
3217
  M && a.eachTextarea(function(a) {
3218
  a.ping();
3219
  });
3220
  a.off();
3221
+ var g = e.isKnown() && e.label || "Target", g = y(L[A], g);
3222
+ a.titled() !== g && l(a, g, e);
3223
+ g = !1;
3224
+ !this.sourceCell && r.setSrcMeta(b, a) && (g = !0);
3225
+ r.setTrgMeta(b, d, a) && (g = !0);
3226
+ r.setStatus(b, d);
3227
+ if (1 !== e.nplurals && b.pluralized()) {
3228
+ var k = [], m = [], f = a.id + "-", z = b.targetForms() || e.plurals || [ "One", "Other" ], g = z.length, s = function(a) {
3229
+ var b = z[a];
3230
+ m.push(b ? c(b, !0) : "Form " + a);
3231
+ k.push(f + String(a));
3232
+ };
3233
+ for (b.each(s); (e = k.length) < g; ) s(e);
3234
+ a.splitx.apply(a, k);
3235
  a.each(function(a, c) {
3236
  var e = M && !b.disabled(c);
3237
+ a.textarea(b.translation(c), e).setStrf(C).setMode(x).setInvs(w);
3238
+ M && n(a, c);
3239
  });
3240
+ a.navigize(m, d || null).on("wgTabSelect", function(c, e) {
3241
  var d = M && c.cell.editable();
3242
  d && d.focus();
3243
+ r.setTrgMeta(b, e, a);
3244
+ r.setStatus(b, e);
3245
+ r.fire("poTab", [ e ]);
3246
  });
3247
+ } else g && a.redraw(), a.textarea(b.translation(), M && !b.disabled(0)).setStrf(C).setMode(x).setInvs(w),
3248
+ M && n(a, 0);
3249
  }
3250
+ function n(c, d) {
3251
  c.on(e, function(a, c, e) {
3252
  b.translate(c, d);
3253
+ 0 === d && r.updateListCell(b, "target");
3254
+ b.fuzzy(d) ? r.fuzzy(!1, b, d) : r.unsave(b, d);
3255
+ "" === c ? (r.fire("poEmpty", [ !0, b, d ]), r.setStatus(b, d)) : "" === e && (r.fire("poEmpty", [ !1, b, d ]),
3256
+ r.setStatus(b, d));
3257
+ }).on(m, function() {
3258
+ r.dict && r.rebuildSearch();
3259
+ r.fire(a, [ b ]);
3260
  });
3261
  }
3262
+ function p(c) {
3263
  c.off();
3264
+ var d = L[s];
3265
+ c.titled() !== d && (l(c, d), r.setStatus(null));
3266
+ c.textarea(b.context(), !0).setMode(x).setInvs(w);
3267
  X && c.on(e, function(a, c) {
3268
  b.context(c);
3269
+ r.updateListCell(b, "source");
3270
+ r.unsave(b, O);
3271
+ }).on(m, function() {
3272
+ r.po.reIndex(b);
3273
+ r.dict && r.rebuildSearch();
3274
+ r.fire(a, [ b ]);
3275
  });
3276
  }
3277
  function u(a) {
3278
  var c = L[q];
3279
+ a.titled() !== c && l(a, c);
3280
  a.off().on(e, function(a, c) {
3281
  b.comment(c);
3282
+ r.fire("poComment", [ b, c ]);
3283
+ r.unsave(b, O);
3284
  }).textarea(b.comment(), !0);
3285
  }
3286
+ var r = this, x = r.mode, D = b.isHTML(), w = r.inv || !1, E = this.fmt || null, C = b.format() || null, I = b.is(r.active), O = 0, T = r.sourceCell, S = r.targetCell, U = r.contextCell, V = r.commentCell, M = r.editable.target, J = r.editable.source, X = r.editable.context, P = B, Y = r.sourceLocale, W = r.targetLocale, L = r.labels;
3287
+ r.html !== D && (r.html = D, "code" !== r.mode && (x = D ? "html" : "", r.setMode(x)));
3288
+ r.active = b;
3289
  T && d(T, Y);
3290
+ U && p(U);
3291
+ S && W && (O = S.navigated() || 0, h(S, W, O));
3292
  V && u(V);
3293
+ P && (P.exists() || (P = P.parent()), (D = P.editable()) && D.focus());
3294
+ E !== C && (this.fmt = C);
3295
+ I || r.fire("poSelected", [ b, O ]);
3296
  };
3297
  u.unloadActive = function() {
3298
  function a(b) {
3325
  (e = this.listTable.row(e)) && e.rendered && e.update(c);
3326
  };
3327
  u.cellText = function(a) {
3328
+ return (a = -1 !== a.indexOf("<") || -1 !== a.indexOf("&") ? w(a) : a.trim()) || " ";
3329
  };
3330
  u.fuzzy = function(a, b, c) {
3331
  b = b || this.active;
3405
  };
3406
  u = null;
3407
  return f;
3408
+ }({}, y, w));
3409
+ p.register("$13", function(f, d, D) {
3410
+ function n() {
3411
  this.init()._validate();
3412
  this.sourceLocale = {
3413
  lang: "en",
3415
  plurals: [ "One", "Other" ]
3416
  };
3417
  }
3418
+ function l(a) {
3419
+ a = h('<button type="button" class="button button-small icon icon-' + a + ' hastip"></button>');
3420
+ p.require("$12", "tooltip.js").init(a);
3421
  return a;
3422
  }
3423
  function c(a) {
3424
+ return l("cloud").attr("title", a.labels[8] + " (Ctrl-U)").on("click", function(b) {
3425
  b.preventDefault();
3426
  a.focus().fuzzy(!a.fuzzy());
3427
  });
3428
  }
3429
  function b(a) {
3430
+ return l("robot").attr("title", a.labels[9] + " (Ctrl-J)").on("click", function(b) {
3431
  b.preventDefault();
3432
  a.fire("poHint");
3433
  });
3434
  }
3435
+ d = p.require("$24", "base.js");
3436
  f.init = function(a) {
3437
+ var b = new n();
3438
  a = b.setRootCell(a);
3439
+ var c = a.splity("po-list", "po-edit"), d = c[0], g = c[1], c = g.splitx("po-trans", "po-comment"), l = c[0], f = c[1].header("Loading.."), c = l.splity("po-source", "po-target"), l = c[0].header("Loading.."), c = c[1].header("Loading..");
3440
  a.distribute([ .34 ]);
3441
  g.distribute([ .8 ]);
3442
  b.setListCell(d);
3443
+ b.setSourceCell(l);
3444
  b.setTargetCell(c);
3445
+ b.commentCell = f;
3446
  b.editable.source = !1;
3447
  return b;
3448
  };
3449
+ d = n.prototype = d.extend(n);
3450
  d.getListHeadings = function() {
3451
  var a = this.t || {
3452
  _x: function(a) {
3465
  };
3466
  d.getListEntry = function(a) {
3467
  var b = this.cellText, c = [ function() {
3468
+ var c, d = b(a.source() || ""), l = a.context();
3469
+ return l ? (c = D.createElement("p"), c.appendChild(D.createElement("mark")).innerText = l,
3470
+ c.appendChild(D.createTextNode(" " + d)), c) : d;
3471
  } ];
3472
  this.targetLocale && (c[1] = function() {
3473
  return b(a.translation() || "");
3512
  d.setStatus = function(a) {
3513
  var e = this.$tnav;
3514
  if (null == a) e && (e.remove(), this.$tnav = null); else {
3515
+ e || (this.$tnav = e = h("<nav></nav>").append(c(this)).append(b(this)).appendTo(this.targetCell.header()));
3516
  var d = [];
3517
  a.translated() ? a.fuzzy() && d.push("po-fuzzy") : d.push("po-empty");
3518
  e.attr("class", d.join(" "));
3520
  };
3521
  d.getSorter = function() {
3522
  function a(a, c) {
3523
+ var d = a.weight(), l = c.weight();
3524
+ return d === l ? b(a, c) : d > l ? -1 : 1;
3525
  }
3526
  function b(a, c) {
3527
  return a.hash().localeCompare(c.hash());
3528
  }
3529
  var c = this;
3530
  return function(d) {
3531
+ var g = c.po, l = c.locked() ? a : b;
3532
  d.sort(function(a, b) {
3533
+ return l(g.row(a), g.row(b));
3534
  });
3535
  };
3536
  };
3537
  return f;
3538
+ }({}, y, w));
3539
+ p.register("$14", function(f, d, p) {
3540
+ var n = {
3541
  copy: 66,
3542
  clear: 75,
3543
  save: 83,
3547
  enter: 13,
3548
  invis: 73,
3549
  hint: 74
3550
+ }, l = {
3551
  38: !0,
3552
  40: !0,
3553
  73: !0
3583
  function e(a) {
3584
  if (a.isDefaultPrevented() || !a.metaKey && !a.ctrlKey) return !0;
3585
  var e = a.which;
3586
+ if (!m[e]) return !0;
3587
  var d = c[e];
3588
  if (!d) throw Error("command undefined #" + e);
3589
+ if (a.altKey || a.shiftKey && !l[e] || !1 === d(a, b)) return !0;
3590
  a.stopPropagation();
3591
  a.preventDefault();
3592
  return !1;
3593
  }
3594
+ var m = {};
3595
+ h(a || d).on("keydown", e);
3596
  return {
3597
  add: function(a, b) {
3598
+ c[n[a]] = b;
3599
  return this;
3600
  },
3601
  enable: function() {
3602
  var a, b;
3603
+ for (b in arguments) a = n[arguments[b]], m[a] = !0;
3604
  return this;
3605
  },
3606
  disable: function() {
3607
+ h(a || d).off("keydown", e);
3608
+ b = a = m = null;
3609
  }
3610
  };
3611
  };
3612
  return f;
3613
+ }({}, y, w));
3614
+ p.register("$25", function(f, d, h) {
3615
+ function n() {
3616
  this.reIndex([]);
3617
  }
3618
  f.init = function() {
3619
+ return new n();
3620
  };
3621
+ d = n.prototype;
3622
  d.reIndex = function(d) {
3623
  for (var c = {}, b = -1, a = d.length; ++b < a; ) c[d[b]] = b;
3624
  this.keys = d;
3667
  return this;
3668
  };
3669
  d.sort = function(d) {
3670
+ for (var c = -1, b = this.length, a, e = this.keys, m = this.ords, k = []; ++c < b; ) k[c] = [ this[c], e[c] ];
3671
+ k.sort(function(a, b) {
3672
  return d(a[0], b[0]);
3673
  });
3674
+ for (c = 0; c < b; c++) a = k[c], this[c] = a[0], a = a[1], e[c] = a, m[a] = c;
3675
  return this;
3676
  };
3677
  d.join = function(d) {
3679
  };
3680
  d = null;
3681
  return f;
3682
+ }({}, y, w));
3683
+ p.register("$26", function(f, d, h) {
3684
+ function n(d, c) {
3685
  var b = RegExp("^.{0," + (d - 1) + "}[" + c + "]"), a = RegExp("^[^" + c + "]+");
3686
+ return function(c, m) {
3687
+ for (var k = c.length, g; k > d; ) {
3688
+ g = b.exec(c) || a.exec(c);
3689
+ if (null == g) break;
3690
+ g = g[0];
3691
+ m.push(g);
3692
+ g = g.length;
3693
+ k -= g;
3694
+ c = c.substr(g);
3695
+ }
3696
+ 0 !== k && m.push(c);
3697
+ return m;
3698
  };
3699
  }
3700
  f.create = function(d) {
3701
  function c(a) {
3702
+ return g[a] || "\\" + a;
3703
  }
3704
+ var b, a, e = /(?:\r\n|[\r\n\v\f\u2028\u2029])/g, m = /[ \r\n]+/g, k = /[\t\v\f\x07\x08\\\"]/g, g = {
3705
  "\t": "\\t",
3706
  "\v": "\\v",
3707
  "\f": "\\f",
3709
  "\b": "\\b"
3710
  };
3711
  if (null == d || isNaN(d = Number(d))) d = 79;
3712
+ 0 < d && (b = n(d - 3, " "), a = n(d - 2, "-– \\.,:;\\?!\\)\\]\\}\\>"));
3713
  return {
3714
+ pair: function(b, g) {
3715
+ if (!g) return b + ' ""';
3716
+ g = g.replace(k, c);
3717
+ var m = 0;
3718
+ g = g.replace(e, function() {
3719
+ m++;
3720
  return "\\n\n";
3721
  });
3722
+ if (!(m || d && d < g.length + b.length + 3)) return b + ' "' + g + '"';
3723
+ var f = [ b + ' "' ], h = g.split("\n");
3724
+ if (a) for (var n = -1, p = h.length; ++n < p; ) a(h[n], f); else f = f.concat(h);
3725
+ return f.join('"\n"') + '"';
3726
  },
3727
  prefix: function(a, b) {
3728
  var c = a.split(e);
3729
  return b + c.join("\n" + b);
3730
  },
3731
  refs: function(a) {
3732
+ a = a.replace(m, " ", a);
3733
  b && (a = b(a, []).join("\n#: "));
3734
  return "#: " + a;
3735
  }
3736
  };
3737
  };
3738
  return f;
3739
+ }({}, y, w));
3740
+ p.register("$40", function(f, d, h) {
3741
+ function n() {
3742
  this.length = 0;
3743
  }
3744
  f.init = function() {
3745
+ return new n();
3746
  };
3747
+ d = n.prototype;
3748
  d.push = function(d) {
3749
  this[this.length++] = d;
3750
  return this;
3758
  return this;
3759
  };
3760
  return f;
3761
+ }({}, y, w));
3762
+ p.register("$27", function(f, d, h) {
3763
+ function n() {}
3764
  f.extend = function(d) {
3765
+ return d.prototype = new n();
3766
  };
3767
+ d = n.prototype = p.require("$38", "abstract.js").init([ "add", "load" ]);
3768
  d.row = function(d) {
3769
  return this.rows[d];
3770
  };
3782
  return d;
3783
  };
3784
  d.locale = function(d) {
3785
+ null == d ? d = this.loc : this.loc = d = p.require("$37", "locale.js").cast(d);
3786
  return d;
3787
  };
3788
  d.each = function(d) {
3820
  return this;
3821
  };
3822
  d["export"] = function() {
3823
+ for (var d = -1, c = this.rows, b = c.length, a = p.require("$40", "list.js").init(); ++d < b; ) a.push(c[d]);
3824
  return a;
3825
  };
3826
  d = null;
3827
  return f;
3828
+ }({}, y, w));
3829
+ p.register("$28", function(f, d, h) {
3830
+ function n(c, b, a) {
3831
  if (null == a) return c[b] || "";
3832
  c[b] = a || "";
3833
  return c;
3834
  }
3835
+ function l() {
3836
  this._id = this.id = "";
3837
  }
3838
  f.extend = function(c) {
3839
+ return c.prototype = new l();
3840
  };
3841
+ d = l.prototype;
3842
  d.flag = function(c, b) {
3843
  var a = this.flg || (this.flg = []);
3844
  if (null != b) a[b] = c; else for (var d = Math.max(a.length, this.src.length, this.msg.length); 0 !== d--; ) a[d] = c;
3851
  return !1;
3852
  };
3853
  d.flags = function() {
3854
+ for (var c, b = {}, a = [], d = this.flg || [], m = d.length; 0 !== m--; ) c = d[m],
3855
  b[c] || (b[c] = !0, a.push(c));
3856
  return a;
3857
  };
3883
  return this.msgF;
3884
  };
3885
  d.each = function(c) {
3886
+ for (var b = -1, a = this.src, d = this.msg, m = Math.max(a.length, d.length); ++b < m; ) c(b, a[b], d[b]);
3887
  return this;
3888
  };
3889
  d.count = function() {
3922
  return !0;
3923
  };
3924
  d.comment = function(c) {
3925
+ return n(this, "cmt", c);
3926
  };
3927
  d.notes = function(c) {
3928
+ return n(this, "xcmt", c);
3929
  };
3930
  d.refs = function(c) {
3931
+ return n(this, "rf", c);
3932
  };
3933
  d.format = function(c) {
3934
+ return n(this, "fmt", c);
3935
  };
3936
  d.context = function(c) {
3937
+ return n(this, "ctx", c);
3938
  };
3939
  d.tags = function() {
3940
  return this.tg;
3988
  };
3989
  d = null;
3990
  return f;
3991
+ }({}, y, w));
3992
+ p.register("$15", function(f, d, h) {
3993
+ function n(a) {
3994
  return {
3995
  "Project-Id-Version": "PACKAGE VERSION",
3996
  "Report-Msgid-Bugs-To": "",
4005
  "Content-Transfer-Encoding": "8bit"
4006
  };
4007
  }
4008
+ function l(a, b) {
4009
  var c = a || "";
4010
  b && (c += "\0" + b);
4011
  return c;
4015
  b && b.error && b.error(a.message || String(a));
4016
  }
4017
  function b(a) {
4018
+ return p.require("$26", "format.js").create(a);
4019
  }
4020
  function a(a) {
4021
  this.locale(a);
4022
  this.clear();
4023
+ this.head = n(this.now());
4024
  }
4025
  function e(a, b) {
4026
  this.src = [ a || "" ];
4029
  f.create = function(b) {
4030
  return new a(b);
4031
  };
4032
+ h = p.require("$27", "messages.js").extend(a);
4033
+ h.clear = function() {
4034
+ this.rows = p.require("$25", "collection.js").init();
4035
  this.length = 0;
4036
  return this;
4037
  };
4038
+ h.now = function() {
4039
  function a(b, c) {
4040
  for (var d = String(b); d.length < c; ) d = "0" + d;
4041
  return d;
4043
  var b = new Date(), c = b.getUTCFullYear(), d = b.getUTCMonth() + 1, e = b.getUTCDate(), f = b.getUTCHours(), b = b.getUTCMinutes();
4044
  return a(c, 4) + "-" + a(d, 2) + "-" + a(e, 2) + " " + a(f, 2) + ":" + a(b, 2) + "+0000";
4045
  };
4046
+ h.header = function(a, b) {
4047
  var c = this.head || (this.head = {});
4048
  if (null == b) return this.headers()[a] || "";
4049
  c[a] = b || "";
4050
  return this;
4051
  };
4052
+ h.headers = function(a) {
4053
+ var b, c = this.now(), d = this.head || (this.head = n(c));
4054
  if (null != a) {
4055
  for (b in a) d[b] = a[b];
4056
  return this;
4066
  a["X-Generator"] = "Loco https://localise.biz/";
4067
  return a;
4068
  };
4069
+ h.get = function(a, b) {
4070
+ var c = l(a, b);
4071
  return this.rows.get(c);
4072
  };
4073
+ h.add = function(a, b) {
4074
  a instanceof e || (a = new e(a));
4075
  b && a.context(b);
4076
  var d = a.hash();
4078
  this.length = this.rows.length);
4079
  return a;
4080
  };
4081
+ h.load = function(a) {
4082
+ for (var b = -1, d, f, l, h, q, n, p = (l = this.locale()) && l.nplurals || 2, r = []; ++b < a.length; ) d = a[b],
4083
+ null == d.parent ? (f = d.source || d.id, l = d.target || "", h = d.context, f || h ? (q = new e(f, l),
4084
+ q._id = d._id, h && q.context(h), d.flag && q.flag(d.flag, 0), d.comment && q.comment(d.comment),
4085
  d.notes && q.notes(d.notes), d.refs && q.refs(d.refs), q.format(d.format), d.message = q,
4086
  this.add(q), d.prev && d.prev[0] && (q.prev(d.prev[0].source, d.prev[0].context),
4087
+ d.prev[1] && q._src.push(d.prev[1].source || ""))) : 0 === b && "object" === typeof l && (this.head = l,
4088
+ this.headcmt = d.comment)) : r.push(d);
4089
+ for (b = -1; ++b < r.length; ) try {
4090
+ d = r[b];
4091
  f = d.source || d.id;
4092
  q = a[d.parent] && a[d.parent].message;
4093
  if (!q) throw Error("parent missing for plural " + f);
4094
+ n = d.plural;
4095
+ 1 === n && q.plural(f);
4096
+ n >= p || (d.flag && q.flag(d.flag, n), q.translate(d.target || "", n), d.format && !q.format() && q.format(d.format));
4097
  } catch (w) {
4098
  c(w);
4099
  }
4100
  return this;
4101
  };
4102
+ h.wrap = function(a) {
4103
  this.fmtr = b(a);
4104
  return this;
4105
  };
4106
+ h.toString = function() {
4107
+ var a, c = this.locale(), d = [], f = [], l = this.headers(), h = !c, n = c && c.nplurals || 2, p = this.fmtr || b();
4108
+ l[c ? "PO-Revision-Date" : "POT-Creation-Date"] = this.now();
4109
+ for (a in l) f.push(a + ": " + l[a]);
4110
  f = new e("", f.join("\n"));
4111
  f.comment(this.headcmt || "");
4112
+ h && f.fuzzy(0, !0);
4113
  d.push(f.toString());
4114
  d.push("");
4115
  this.rows.each(function(a, b) {
4116
+ a && (d.push(b.cat(p, h, n)), d.push(""));
4117
  });
4118
  return d.join("\n");
4119
  };
4120
+ h = p.require("$28", "message.js").extend(e);
4121
+ h.prev = function(a, b) {
4122
  this._src = [ a || "" ];
4123
  this._ctx = b;
4124
  };
4125
+ h.hash = function() {
4126
+ return l(this.source(), this.context());
4127
  };
4128
+ h.toString = function() {
4129
  return this.cat(b());
4130
  };
4131
+ h.cat = function(a, b, c) {
4132
  var d, e = [], f;
4133
  (f = this.cmt) && e.push(a.prefix(f, "# "));
4134
  (f = this.xcmt) && e.push(a.prefix(f, "#. "));
4145
  e.push(a.pair("msgid_plural", this.src[1])), f = this.msg || [ "", "" ], c = c || f.length; ++d < c; ) e.push(a.pair("msgstr[" + d + "]", b ? "" : f[d] || ""));
4146
  return e.join("\n");
4147
  };
4148
+ h.compare = function(a, b) {
4149
  var c = this.weight(), d = a.weight();
4150
  if (c > d) return 1;
4151
  if (c < d) return -1;
4157
  }
4158
  return 0;
4159
  };
4160
+ h.copy = function() {
4161
  var a = new e(), b, c;
4162
  for (b in this) this.hasOwnProperty(b) && ((c = this[b]) && c.concat && (c = c.concat()),
4163
  a[b] = c);
4164
  return a;
4165
  };
4166
+ h = h = null;
4167
  return f;
4168
+ }({}, y, w));
4169
+ p.register("$17", function(f, d, p) {
4170
  f.init = function(d, f) {
4171
  function c() {
4172
+ return m || (m = h('<div id="loco-po-ref"></div>').dialog({
4173
  dialogClass: "loco-modal loco-modal-wide",
4174
  modal: !0,
4175
  autoOpen: !1,
4179
  }));
4180
  }
4181
  function b(a, b, d) {
4182
+ a = h("<p></p>").text(d);
4183
  c().dialog("close").html("").dialog("option", "title", "Error").append(a).dialog("open");
4184
  }
4185
  function a(a) {
4186
  var b = a && a.code;
4187
  if (b) {
4188
+ for (var d = -1, e = b.length, f = h("<ol></ol>").attr("class", a.type); ++d < e; ) h("<li></li>").html(b[d]).appendTo(f);
4189
  f.find("li").eq(a.line - 1).attr("class", "highlighted");
4190
  c().dialog("close").html("").dialog("option", "title", a.path + ":" + a.line).append(f).dialog("open");
4191
  }
4192
  }
4193
  function e(a) {
4194
  a = a.target;
4195
+ var b = h(a).find("li.highlighted")[0], b = Math.max(0, (b && b.offsetTop || 0) - Math.floor(a.clientHeight / 2));
4196
  a.scrollTop = b;
4197
  }
4198
+ var m;
4199
  return {
4200
+ load: function(k) {
4201
  c().html('<div class="loco-loading"></div>').dialog("option", "title", "Loading..").off("dialogopen").dialog("open").on("dialogopen", e);
4202
+ k = h.extend({
4203
+ ref: k,
4204
  path: f.popath
4205
  }, f.project || {});
4206
+ d.ajax.post("fsReference", k, a, b);
4207
  }
4208
  };
4209
  };
4210
  return f;
4211
+ }({}, y, w));
4212
+ p.register("$30", function(f, d, h) {
4213
+ function n(d) {
4214
  this.api = d;
4215
  this.chars = 0;
4216
  }
4217
  f.create = function(d) {
4218
+ return new n(d);
4219
  };
4220
+ d = n.prototype;
4221
  d.init = function(d, c) {
4222
  function b(a) {
4223
  var b = {
4225
  html: a.html,
4226
  sources: []
4227
  };
4228
+ B.push(b);
4229
+ return x[a.html ? 1 : 0] = b;
4230
  }
4231
  function a(a, d) {
4232
+ var l = a.source(null, d);
4233
+ if (l && (a.untranslated(d) || c)) {
4234
+ var u = q[l];
4235
+ if (u) u.push(a); else {
4236
+ var u = l.length, v = e.isHtml(l), v = x[v ? 1 : 0], B = v.sources;
4237
+ if (u > p) g++; else {
4238
+ if (v.length + u > n || B.length === h) v = b(v), B = v.sources;
4239
+ B.push(l);
4240
+ q[l] = [ a ];
4241
+ v.length += u;
4242
+ f += u;
4243
  k += 1;
4244
  }
4245
  }
4246
  }
4247
+ }
4248
+ var e = this.api, f = 0, k = 0, g = 0, h = 50, n = 5e3, p = e.maxChr(), q = {}, B = [], x = [];
4249
+ p && (n = Math.min(n, p));
4250
  b({
4251
  html: !1
4252
  });
4257
  a(c, 0);
4258
  a(c, 1);
4259
  });
4260
+ delete x;
4261
+ this.map = q;
4262
  this.chars = f;
4263
  this.length = k;
4264
+ this.batches = B;
4265
  this.locale = d.locale();
4266
+ g && e.stderr("Strings over " + n + " characters long will be skipped");
4267
  };
4268
  d.abort = function() {
4269
  this.state = "abort";
4271
  };
4272
  d.dispatch = function() {
4273
  function d(a, b) {
4274
+ function e(c, d, g) {
4275
+ b !== g && (a === d || 1 < c && f.source(null, 1) === a) && (f.translate(b, c),
4276
+ m++, r++);
4277
  return m;
4278
  }
4279
  if (!c()) return !1;
4280
  if (!b) return !0;
4281
+ var f, g = n[a] || [], l = g.length, h = -1, m;
4282
+ for (B++; ++h < l; ) if (f = g[h]) m = 0, f.each(e), m && k("each", [ f ]);
4283
  return !0;
4284
  }
4285
  function c() {
4286
+ return "abort" === g.state ? (h && (h.abort(), f()), !1) : !0;
4287
  }
4288
  function b() {
4289
+ var b = p.shift(), c;
4290
+ b ? (c = b.sources) && c.length ? h.batch(c, q, b.html, d).fail(a).always(e) : e() : f();
4291
  }
4292
  function a() {
4293
+ g.abort();
4294
  f();
4295
  }
4296
  function e() {
4297
+ x++;
4298
+ k("prog", [ x, y ]);
4299
  c() && b();
4300
  }
4301
  function f() {
4302
+ h = p = null;
4303
  k("done");
4304
  }
4305
  function k(a, b) {
4306
  for (var c = u[a] || [], d = c.length; 0 <= --d; ) c[d].apply(null, b);
4307
  }
4308
+ var g = this, h = g.api, n = g.map, p = g.batches || [], q = g.locale, B = 0, x = 0, r = 0, w = g.length, y = p.length, u = {
4309
  done: [],
4310
  each: [],
4311
  prog: []
4312
  };
4313
+ g.state = "";
4314
  b();
4315
  return {
4316
  done: function(a) {
4328
  stat: function() {
4329
  return {
4330
  todo: function() {
4331
+ return Math.max(w - B, 0);
4332
  },
4333
  did: function() {
4334
+ return B;
4335
  }
4336
  };
4337
  }
4338
  };
4339
  };
4340
  return f;
4341
+ }({}, y, w));
4342
+ p.register("$41", {
4343
  nn: [ "no" ]
4344
  });
4345
+ p.register("$31", function(f, d, h) {
4346
+ function n() {}
4347
+ function l(c) {
4348
  c.parseError = function(b) {
4349
  return b && b.code && 200 !== b.code && b.message ? "Error " + b.code + ": " + b.message : "";
4350
  };
4351
  c.batch = function(b, a, d, f) {
4352
+ function k(c) {
4353
  for (var d = b.length, e = -1; ++e < d && !1 !== f(b[e], c[e] || "", a); ) ;
4354
  }
4355
  d = d ? "html" : "plain";
4356
+ var g = this.getSrc(), h = this.toLang(a);
4357
  return c._call({
4358
+ url: "https://translate.yandex.net/api/v1.5/tr.json/translate?format=" + d + "&lang=" + g + "-" + h,
4359
  method: "POST",
4360
  traditional: !0,
4361
  data: {
4363
  text: b
4364
  }
4365
  }).done(function(a, b, d) {
4366
+ a && 200 === a.code ? k(a.text || []) : (c.stderr(c.parseError(a) || c.httpError(d)),
4367
+ k([]));
4368
  }).fail(function() {
4369
+ k([]);
4370
  });
4371
  };
4372
  }
4373
  f.create = function(c) {
4374
+ var b = n.prototype = new c();
4375
  b.toString = function() {
4376
  return "Yandex.Translate";
4377
  };
4383
  };
4384
  b.init = function(a) {
4385
  c.prototype.init.call(this, a);
4386
+ /^trnsl\./.test(this.key()) && l(this);
4387
  };
4388
  b.toLang = function(a) {
4389
+ return this.mapLang(a, p.require("$41", "yandex.json"));
4390
  };
4391
+ return new n();
4392
  };
4393
  return f;
4394
+ }({}, y, w));
4395
+ p.register("$42", {
4396
  zh: [ "zh", "zh-CN", "zh-TW" ],
4397
  he: [ "iw" ],
4398
  jv: [ "jw" ]
4399
  });
4400
+ p.register("$32", function(f, d, h) {
4401
+ function n() {}
4402
  f.create = function(d) {
4403
+ var c = n.prototype = new d();
4404
+ c.toString = function() {
4405
  return "Google Translate";
4406
  };
4407
+ c.getId = function() {
4408
  return "google";
4409
  };
4410
+ c.getUrl = function() {
4411
  return "https://translate.google.com/";
4412
  };
4413
+ c.batch = function(b, a, d, f) {
4414
+ function k(d) {
4415
+ var e = b.length, g = -1, k;
4416
+ for (c.parseError = function(a) {
4417
+ if (a.error) {
4418
+ for (var b = [], c = a.error.errors || [], d = c.length, e = -1; ++e < d; ) b.push(c[e].message || "");
4419
+ return "Error " + a.error.code + ": " + b.join(";");
4420
  }
4421
  return "";
4422
+ }; ++g < e && (k = d[g] || {}, !1 !== f(b[g], k.translatedText || "", a)); ) ;
 
 
 
4423
  }
4424
+ var g = this, h = this.getSrc();
4425
+ d = d ? "html" : "text";
4426
+ var l = g.mapLang(a, p.require("$42", "google.json"));
4427
  return g._call({
4428
+ url: "https://translation.googleapis.com/language/translate/v2?source=" + h + "&target=" + l + "&format=" + d,
4429
  method: "POST",
4430
  traditional: !0,
4431
  data: {
4432
  key: g.key(),
4433
+ q: b
4434
  }
4435
  }).done(function(a, b, c) {
4436
+ a.data ? k(a.data.translations || []) : (g.stderr(g.parseError(a) || g.httpError(c)),
4437
+ k([]));
4438
  }).fail(function() {
4439
+ k([]);
4440
  });
4441
  };
4442
+ return new n();
4443
  };
4444
  return f;
4445
+ }({}, y, w));
4446
+ p.register("$43", {
4447
  nn: [ "no" ],
4448
  pt: [ "pt", "pt-pt" ],
4449
  sr: [ "sr-Cyrl", "sr-Latn" ],
4455
  zh_SG: [ "zh-Hans" ],
4456
  zh_TW: [ "zh-Hant" ]
4457
  });
4458
+ p.register("$33", function(f, d, h) {
4459
+ function n() {}
4460
  f.create = function(d) {
4461
+ d = n.prototype = new d();
4462
  d.toString = function() {
4463
  return "Microsoft Translator text API";
4464
  };
4473
  };
4474
  d.batch = function(c, b, a, d) {
4475
  function f(a) {
4476
+ for (var g = -1, k; ++g < l && (k = a[g] || {}, k = k.translations || [], k = k[0] || {},
4477
+ !1 !== d(c[g], k.text || "", b)); ) ;
4478
  }
4479
+ var k = this, g = [], h = k.getSrc(), l = c.length, n = -1;
4480
  a = a ? "html" : "plain";
4481
+ for (var q = k.mapLang(b, p.require("$43", "ms.json")); ++n < l; ) g.push({
4482
+ text: c[n]
4483
  });
4484
+ return k._call({
4485
+ url: "https://api.cognitive.microsofttranslator.com/translate?api-version=3.0&from=" + h + "&to=" + q + "&textType=" + a,
4486
  method: "POST",
4487
+ data: JSON.stringify(g),
4488
  headers: {
4489
  "Content-Type": "application/json; charset=UTF-8",
4490
  "Ocp-Apim-Subscription-Key": this.key(),
4491
+ "Ocp-Apim-Subscription-Region": k.param("region") || "global"
4492
  }
4493
  }).done(function(a, b, c) {
4494
+ a && a.length ? f(a) : (k.stderr(k.parseError(a) || k.httpError(c)), f([]));
4495
  }).fail(function() {
4496
  f([]);
4497
  });
4498
  };
4499
+ return new n();
4500
  };
4501
  return f;
4502
+ }({}, y, w));
4503
+ p.register("$44", {
4504
  pt: [ "pt-PT", "pt-BR" ]
4505
  });
4506
+ p.register("$34", function(f, d, h) {
4507
+ function n() {}
4508
  f.create = function(d) {
4509
+ d = n.prototype = new d();
4510
  d.toString = function() {
4511
  return "DeepL Translator";
4512
  };
4521
  };
4522
  d.batch = function(c, b, a, d) {
4523
  function f(a) {
4524
+ for (var g = c.length, k = -1, h; ++k < g && (h = a[k] || {}, !1 !== d(c[k], h.text || "", b)); ) ;
4525
+ }
4526
+ var k = this;
4527
+ a = this.getSrc();
4528
+ var g = k.param("url") || "https://api.deepl.com", h = k.mapLang(b, p.require("$44", "deepl.json")), l = b.tone, n = "default";
4529
+ null == l && (l = String(b.variant || "").toLowerCase());
4530
+ "formal" === l ? n = "more" : "informal" === l && (n = "less");
4531
+ return k._call({
4532
+ url: k.fixURL(g + "/v2/translate"),
4533
  method: "POST",
4534
  traditional: !0,
4535
  data: {
4536
+ source_lang: a.toUpperCase(),
4537
+ target_lang: h.toUpperCase(),
4538
+ formality: n,
4539
  preserve_formatting: "1",
4540
+ auth_key: k.key(),
4541
  text: c
4542
  }
4543
  }).done(function(a, b, c) {
4544
+ a.translations ? f(a.translations) : (k.stderr(k.parseError(a) || k.httpError(c)),
4545
  f([]));
4546
  }).fail(function() {
4547
  f([]);
4548
  });
4549
  };
4550
+ return new n();
 
 
 
4551
  };
4552
+ return f;
4553
+ }({}, y, w));
4554
+ p.register("$45", {
4555
+ zh: [ "zh", "zh-CN", "zh-TW" ],
4556
+ pt: [ "pt", "pt-PT", "pt-BR" ]
4557
+ });
4558
+ p.register("$35", function(f, d, h) {
4559
+ function n() {}
4560
+ f.create = function(d) {
4561
+ d = n.prototype = new d();
4562
+ d.getUrl = function() {
4563
+ return "https://lecto.ai/?ref=loco";
4564
+ };
4565
+ d.parseError = function(c) {
4566
+ var b = c.details || {}, a = b.message, b = b.texts;
4567
+ return a ? (b && b !== a && (a += "; " + b), a = a.replace(/https?:\/\/(?:[a-z]+\.)?lecto.ai[-\w\/?&=%.+~]*/, function(a) {
4568
+ a += -1 === a.indexOf("?") ? "?" : "&";
4569
+ return a + "ref=loco";
4570
+ }), "Error " + (c.status || "0") + ": " + a) : "";
4571
+ };
4572
+ d.maxChr = function() {
4573
+ return 1e3;
4574
+ };
4575
+ d.batch = function(c, b, a, d) {
4576
+ function f(a) {
4577
+ for (var g = c.length, k = -1, h = (a[0] || {
4578
+ translated: []
4579
+ }).translated || []; ++k < g && (a = h[k] || "", !1 !== d(c[k], a, b)); ) ;
4580
+ }
4581
+ var k = this;
4582
+ a = this.getSrc();
4583
+ var g = k.param("url") || "https://api.lecto.ai", h = k.mapLang(b, p.require("$45", "lecto.json"));
4584
+ return k._call({
4585
+ url: k.fixURL(g + "/v1/translate/text"),
4586
+ method: "POST",
4587
+ data: JSON.stringify({
4588
+ to: [ h ],
4589
+ from: a,
4590
+ texts: c
4591
+ }),
4592
+ headers: {
4593
+ "Content-Type": "application/json; charset=UTF-8",
4594
+ "X-API-Key": k.key(),
4595
+ Accept: "application/json"
4596
+ }
4597
+ }).done(function(a, b, c) {
4598
+ a ? f(a.translations || []) : (k.stderr(k.parseError(a) || k.httpError(c)), f([]));
4599
+ }).fail(function() {
4600
+ f([]);
4601
+ });
4602
+ };
4603
+ return new n();
4604
  };
4605
  return f;
4606
+ }({}, y, w));
4607
+ p.register("$18", function(f, d, w) {
4608
+ function n() {
4609
  this.inf = {};
4610
  }
4611
+ function l() {
4612
  var a = w.createElement("p"), b = /&(#\d+|#x[0-9a-f]|[a-z]+);/i, c = /<[a-z]+\s/i, d, f;
4613
  return {
4614
+ sniff: function(h) {
4615
+ if (h === d) return f;
4616
+ d = h;
4617
+ if (b.test(h) || c.test(h)) if (a.innerHTML = h, a.textContent !== h) return f = !0;
4618
  return f = !1;
4619
  }
4620
  };
4621
  }
4622
+ var c = n.prototype;
4623
  c.init = function(a) {
4624
  this.inf = a || {};
4625
  };
4638
  c.toString = function() {
4639
  return this.param("name") || this.getId();
4640
  };
4641
+ c.getSrc = function() {
4642
+ return this.param("src") || "en";
4643
+ };
4644
  c.stderr = function(a) {
4645
  var b = (d.loco || {}).notices || d.console;
4646
  b && b.error && b.error(String(this) + ": " + String(a));
4652
  return "";
4653
  };
4654
  c.mapLang = function(a, b) {
4655
+ var c = String(a).replace("-", "_"), d = a.lang, f = b[c] || b[d] || [], h = f.length;
4656
+ if (0 === h) return d;
4657
+ if (1 < h) for (var c = c.toLowerCase(), d = -1, l; ++d < h; ) if (l = f[d], l.toLowerCase().replace("-", "_") === c) return l;
4658
  return f[0];
4659
  };
4660
  c.toLang = function(a) {
4661
  return String(a);
4662
  };
4663
+ c.maxChr = function() {
4664
+ return 0;
4665
+ };
4666
+ c.fixURL = function(a) {
4667
+ a = a.split("://", 2);
4668
+ 1 === a.length && a.unshift("https");
4669
+ return a[0] + "://" + a[1].replace(/\/{2,}/g, "/");
4670
+ };
4671
  c.translate = function(a, b, c) {
4672
  return this.batch([ a ], b, this.isHtml(a), c);
4673
  };
4678
  a.dataType = "json";
4679
  a.error = function(a, c, d) {
4680
  try {
4681
+ var f = a.responseText, h = f && p.require("$5", "json.js").parse(f);
4682
+ d = h && b.parseError(h) || d;
4683
+ } catch (l) {}
4684
  b.stderr(d || b.httpError(a));
4685
  };
4686
+ return b.abortable(h.ajax(a));
4687
  };
4688
  c.abortable = function(a) {
4689
  var b = this;
4697
  a && a.abort();
4698
  };
4699
  c.isHtml = function(a) {
4700
+ return (b || (b = l())).sniff(a);
4701
  };
4702
  c.createJob = function() {
4703
+ return p.require("$30", "job.js").create(this);
4704
  };
4705
  c.batch = function(a, b, c, f) {
4706
  function g(c) {
4707
+ for (var d = a.length, g = -1; ++g < d && !1 !== f(a[g], c[g], b); ) ;
4708
  }
4709
+ var l = d.loco.ajax;
4710
  c = {
4711
  hook: this.getId(),
4712
  type: c ? "html" : "text",
4713
  locale: this.toLang(b),
4714
+ source: this.getSrc(),
4715
  sources: a
4716
  };
4717
+ var n = h.Deferred();
4718
+ this.abortable(l.post("apis", c, function(a) {
4719
  g(a && a.targets || []);
4720
  n.resolve();
4721
  }, function() {
4727
  f.create = function(a) {
4728
  var b;
4729
  b = a.id;
4730
+ b = "yandex" === b ? p.require("$31", "yandex.js").create(n) : "google" === b ? p.require("$32", "google.js").create(n) : "microsoft" === b ? p.require("$33", "ms.js").create(n) : "deepl" === b ? p.require("$34", "deepl.js").create(n) : "lecto" === b ? p.require("$35", "lecto.js").create(n) : new n();
4731
  b.init(a);
4732
  return b;
4733
  };
4734
  f.suggest = function(a, b, c, d) {
4735
+ var f, h, l = a.length;
4736
+ for (f = 0; f < l; f++) h = a[f], h.translate(b, c, d);
4737
  };
4738
  var b;
4739
  return f;
4740
+ }({}, y, w));
4741
+ p.register("$19", function(f, d, p) {
4742
  f.init = function(f) {
4743
+ function l() {
4744
+ H || (I.on("click", g), H = h('<div id="loco-fs-creds"></div>').dialog({
4745
  dialogClass: "request-filesystem-credentials-dialog loco-modal",
4746
  minWidth: 580,
4747
  modal: !0,
4748
  autoOpen: !1,
4749
  closeOnEscape: !0
4750
  }).on("change", 'input[name="connection_type"]', function() {
4751
+ this.checked && h("#ssh-keys").toggleClass("hidden", "ssh" !== h(this).val());
4752
  }));
4753
  return H;
4754
  }
4755
  function c() {
4756
+ R && (b(h(x)), R = !1);
4757
+ if (E && J) {
4758
+ var a = J, c = h(Q);
4759
  c.find("span.loco-msg").text(a);
4760
  K || (c.removeClass("jshide").hide().fadeIn(500), K = !0);
4761
+ } else K && (b(h(Q)), K = !1);
4762
  }
4763
  function b(a) {
4764
  a.slideUp(250).fadeOut(250, function() {
4765
+ h(this).addClass("jshide");
4766
  });
4767
  }
4768
  function a() {
4769
+ if (E) return H && H.dialog("close"), c(), h(f).find('button[type="submit"]').attr("disabled", !1),
4770
+ h(d).triggerHandler("resize"), y && y(!0), !0;
4771
+ v && H ? (R || (h(x).removeClass("jshide").hide().fadeIn(500), R = !0), K && (b(h(Q)),
4772
  K = !1)) : c();
4773
+ h(f).find('input[type="submit"]').attr("disabled", !0);
4774
+ y && y(!1);
4775
  return !1;
4776
  }
4777
  function e(a) {
4778
  var b, c, d = q || {};
4779
+ for (b in d) d.hasOwnProperty(b) && (c = d[b], a[b] ? a[b].value = c : h('<input type="hidden" />').attr("name", b).appendTo(a).val(c));
4780
  }
4781
+ function m(a) {
4782
  a.preventDefault();
4783
+ a = h(a.target).serializeArray();
4784
+ s(a);
4785
+ C = !0;
4786
  return !1;
4787
  }
4788
+ function k(a) {
4789
  a.preventDefault();
4790
  H.dialog("close");
4791
  return !1;
4792
  }
4793
+ function g(a) {
4794
  a.preventDefault();
4795
  H.dialog("open").find('input[name="connection_type"]').change();
4796
  return !1;
4797
  }
4798
+ function z(b) {
4799
+ E = b.authed;
4800
+ r = b.method;
4801
+ h(x).find("span.loco-msg").text(b.message || "Something went wrong.");
4802
  J = b.warning || "";
4803
  b.notice && u.notices.info(b.notice);
4804
+ if (E) "direct" !== r && (q = b.creds, e(f), C && b.success && u.notices.success(b.success)),
4805
  a(); else if (b.reason) u.notices.info(b.reason); else if (b = b.prompt) {
4806
+ var c = l();
4807
+ c.html(b).find("form").on("submit", m);
4808
  c.dialog("option", "title", c.find("h2").remove().text());
4809
+ c.find("button.cancel-button").show().on("click", k);
4810
  c.find('input[type="submit"]').addClass("button-primary");
4811
  a();
4812
+ h(d).triggerHandler("resize");
4813
  } else u.notices.error("Server didn't return credentials, nor a prompt for credentials");
4814
  }
4815
+ function w() {
4816
  a();
4817
  }
4818
+ function s(a) {
4819
+ C = !1;
4820
+ u.ajax.setNonce("fsConnect", N).post("fsConnect", a, z, w);
4821
  return a;
4822
  }
4823
+ var q, y, x = f, r = null, C = !1, E = !1, u = d.loco, v = f.path.value, F = f.auth.value, N = f["loco-nonce"].value, I = h(x).find("button.button-primary"), Q = p.getElementById(x.id + "-warn"), R = !1, K = !1, J = "", H;
4824
+ u.notices.convert(Q).stick();
4825
+ f.connection_type ? (q = {}, q.connection_type = f.connection_type.value, E = !0) : v && F && s({
4826
+ path: v,
4827
  auth: F
4828
  });
4829
  a();
4842
  return this;
4843
  },
4844
  connect: function() {
4845
+ v = f.path.value;
4846
  F = f.auth.value;
4847
+ s(h(f).serializeArray());
4848
  return this;
4849
  },
4850
  listen: function(a) {
4851
+ y = a;
4852
+ E && a(!0);
4853
  return this;
4854
  },
4855
  authed: function() {
4856
+ return E;
4857
  }
4858
  };
4859
  };
4860
  return f;
4861
+ }({}, y, w));
4862
+ p.register("$20", function(f, d, w) {
4863
+ function n(d, f, h, g) {
4864
+ f = "n" === h ? c(f) : b(f);
4865
+ g && (f = a(f));
4866
+ return l([].sort, [ f ])(d);
4867
+ }
4868
+ function l(a, b) {
4869
  return function(c) {
4870
  a.apply(c, b);
4871
  return c;
4890
  f.init = function(a) {
4891
  function b(a) {
4892
  var c = -1, d = a.length;
4893
+ for (h("tr", x).remove(); ++c < d; ) x.appendChild(a[c].$);
4894
  }
4895
  function c(a) {
4896
+ s = a ? y.find(a, d) : d.slice(0);
4897
+ w && (a = f[w], s = n(s, w, a.type, a.desc));
4898
+ b(s);
4899
  }
4900
+ var d = [], f = [], l = 0, s, q, w, x = a.getElementsByTagName("tbody")[0], r = a.getElementsByTagName("thead")[0], y = p.require("$10", "fulltext.js").init();
4901
+ r && x && (h("th", r).each(function(a, c) {
4902
  var e = c.getAttribute("data-sort-type");
4903
+ e && (a = l, h(c).addClass("loco-sort").on("click", function(c) {
4904
  c.preventDefault();
4905
  c = a;
4906
+ var e = f[c], k = e.type, l = !(e.desc = !e.desc);
4907
+ s = n(s || d.slice(0), c, k, l);
4908
+ b(s);
4909
  q && q.removeClass("loco-desc loco-asc");
4910
+ q = h(e.$).addClass(l ? "loco-desc" : "loco-asc").removeClass(l ? "loco-asc" : "loco-desc");
4911
  w = c;
4912
  return !1;
4913
+ }), f[l] = {
4914
  $: c,
4915
  type: e
4916
  });
4917
+ c.hasAttribute("colspan") ? l += Number(c.getAttribute("colspan")) : l++;
4918
+ }), h("tr", x).each(function(a, b) {
4919
+ var c, e, h, k = [], l = {
4920
  _: a,
4921
  $: b
4922
  }, m = b.getElementsByTagName("td");
4923
  for (e in f) {
4924
  c = m[e];
4925
+ (h = c.textContent.replace(/(^\s+|\s+$)/g, "")) && k.push(h);
4926
+ c.hasAttribute("data-sort-value") && (h = c.getAttribute("data-sort-value"));
4927
  switch (f[e].type) {
4928
  case "n":
4929
+ h = Number(h);
4930
  }
4931
+ l[e] = h;
4932
  }
4933
+ d[a] = l;
4934
+ y.index(a, k);
4935
+ }), a = h('form.loco-filter input[type="text"]', a.parentNode), a.length && (a = a[0],
4936
+ r = h(a.form), 1 < d.length ? p.require("$11", "LocoTextListener.js").listen(a, c) : r.hide(),
4937
+ r.on("submit", function(a) {
4938
  a.preventDefault();
4939
  return !1;
4940
  })));
4941
  };
4942
  return f;
4943
+ }({}, y, w));
4944
+ var C = y.loco || {}, I = C.conf || {
4945
  $v: [ 0, 0 ]
4946
  };
4947
+ y = p.require("$1", "t.js").init();
4948
+ w = I.wplang;
4949
+ C.version = function(f) {
4950
  return I.$v[f || 0];
4951
  };
4952
+ p.require("$2", "html.js");
4953
+ p.require("$3", "number.js");
4954
+ p.require("$4", "array.js");
4955
+ p.require("$5", "json.js");
4956
+ C.l10n = y;
4957
+ y.load(I.wpl10n);
4958
+ w && y.pluraleq(w.pluraleq);
4959
+ C.string = p.require("$6", "string.js");
4960
+ C.notices = p.require("$7", "notices.js").init(y);
4961
+ C.ajax = p.require("$8", "ajax.js").init(I).localise(y);
4962
+ C.locale = p.require("$9", "wplocale.js");
4963
+ C.fulltext = p.require("$10", "fulltext.js");
4964
+ C.watchtext = p.require("$11", "LocoTextListener.js").listen;
4965
+ C.tooltip = p.require("$12", "tooltip.js");
4966
+ C.po = {
4967
+ ed: p.require("$13", "poedit.js"),
4968
+ kbd: p.require("$14", "hotkeys.js"),
4969
+ init: p.require("$15", "po.js").create,
4970
+ ace: p.require("$16", "ace.js").strf("php"),
4971
+ ref: p.require("$17", "refs.js")
4972
+ };
4973
+ C.apis = p.require("$18", "apis.js");
4974
+ C.fs = p.require("$19", "fsconn.js");
4975
+ h("#loco-admin.wrap table.wp-list-table").each(function(f, d) {
4976
+ p.require("$20", "tables.js").init(d);
4977
  });
4978
+ C.validate = function(f) {
4979
+ return "2.5.6" !== (/^\d+\.\d+\.\d+/.exec(f && f[0] || "") && RegExp.lastMatch) ? (C.notices.warn("admin.js is the wrong version (2.5.6). Please empty all relevant caches and reload this page."),
4980
  !1) : !0;
4981
  };
4982
  })(window, document, window.jQuery);
pub/js/min/editor.js CHANGED
@@ -1,25 +1,27 @@
1
- !function(k, S) {
2
- var C = k.loco, i = C && C.conf, u = document.getElementById("loco-editor-inner");
3
  if (C && i && u) {
4
- var D, r, n, z, h, a, d = !!i.WP_DEBUG, l = C.po.ref && C.po.ref.init(C, i), s = null, c = null, o = i.multipart, t = C.l10n, m = C.string.sprintf, e = i.wpnum && i.wpnum.thousands_sep || ",", T = i.locale, b = C.po.init(T).wrap(i.powrap), p = !T, f = document.getElementById("loco-actions"), g = i.popath, v = i.potpath, y = i.syncmode, w = document.getElementById("loco-fs"), x = w && C.fs.init(w), I = i.readonly, j = !I, M = {}, E = 0, L = {
 
 
5
  my: "top",
6
  at: "top",
7
  of: "#loco-content"
8
  };
9
- !o || k.FormData && k.Blob || (o = !1, C.notices.warn("Your browser doesn't support Ajax file uploads. Falling back to standard postdata")),
10
  l || C.notices.warn("admin.js is out of date. Please empty your browser cache and reload the page.");
11
- var U, P, q = (P = parseInt(S(u).css("min-height") || 0), function() {
12
  var n = function(n, t) {
13
  for (var o = n.offsetTop || 0; (n = n.offsetParent) && n !== t; ) o += n.offsetTop || 0;
14
  return o;
15
- }(u, document.body), t = k.innerHeight, o = Math.max(P, t - n - 20);
16
- U !== o && (u.style.height = String(o) + "px", U = o);
17
  });
18
- q(), S(k).resize(q), u.innerHTML = "", D = C.po.ed.init(u).localise(t), C.po.kbd.init(D).add("save", j ? function() {
19
- D.dirty && G();
20
- } : Q).add("hint", T && j && H || Q).enable("copy", "clear", "enter", "next", "prev", "fuzzy", "save", "invis", "hint");
21
- var B = {
22
- save: j && function(t) {
23
  function o() {
24
  t.disabled = !0;
25
  }
@@ -27,19 +29,19 @@ function n() {
27
  t.disabled = !1;
28
  }
29
  function e() {
30
- n(), S(t).removeClass("loco-loading");
31
  }
32
  return t, D.on("poUnsaved", function() {
33
- n(), S(t).addClass("button-primary");
34
  }).on("poSave", function() {
35
- o(), S(t).removeClass("button-primary");
36
- }), c = S.extend({
37
- path: g
38
- }, i.project || {}), S(t).on("click", function(n) {
39
- return n.preventDefault(), o(), S(t).addClass("loco-loading"), G(e), !1;
40
  }), !0;
41
  },
42
- sync: j && function(t) {
43
  var n = i.project;
44
  if (n) {
45
  function o() {
@@ -49,7 +51,7 @@ function e() {
49
  t.disabled = !1;
50
  }
51
  function a() {
52
- e(), S(t).removeClass("loco-loading");
53
  }
54
  D.on("poUnsaved", function() {
55
  o();
@@ -59,11 +61,11 @@ e();
59
  bundle: n.bundle,
60
  domain: n.domain,
61
  type: p ? "pot" : "po",
62
- path: g || "",
63
- sync: v || "",
64
- mode: y || ""
65
- }, S(t).on("click", function(n) {
66
- return n.preventDefault(), o(), S(t).addClass("loco-loading"), F(a), !1;
67
  }), e();
68
  }
69
  return !0;
@@ -73,12 +75,12 @@ return D.on("poUnsaved", function() {
73
  n.disabled = !1;
74
  }).on("poSave", function() {
75
  n.disabled = !0;
76
- }), S(n).on("click", function(n) {
77
  return n.preventDefault(), location.reload(), !1;
78
  }), !0;
79
  },
80
  invs: function(n) {
81
- var o = S(n);
82
  return n.disabled = !1, D.on("poInvs", function(n, t) {
83
  o[t ? "addClass" : "removeClass"]("inverted");
84
  }), o.on("click", function(n) {
@@ -86,29 +88,29 @@ return n.preventDefault(), D.setInvs(!D.getInvs()), !1;
86
  }), C.tooltip.init(o), !0;
87
  },
88
  code: function(n) {
89
- var o = S(n);
90
  return n.disabled = !1, o.on("click", function(n) {
91
  n.preventDefault();
92
  var t = !D.getMono();
93
  return o[t ? "addClass" : "removeClass"]("inverted"), D.setMono(t), !1;
94
  }), C.tooltip.init(o), !0;
95
  },
96
- source: K,
97
- binary: p ? null : K
98
  };
99
- p ? (B.add = j && function(n) {
100
- return n.disabled = !1, S(n).on("click", function(n) {
101
  n.preventDefault();
102
  var t, o = 1, e = /(\d+)$/;
103
  for (t = "New message"; b.get(t); ) o = e.exec(t) ? Math.max(o, Number(RegExp.$1)) : o,
104
  t = "New message " + ++o;
105
  return D.add(t), !1;
106
  }), !0;
107
- }, B.del = j && function(n) {
108
- return n.disabled = !1, S(n).on("click", function(n) {
109
  return n.preventDefault(), D.del(), !1;
110
  }), !0;
111
- }) : B.auto = function(n) {
112
  function t() {
113
  n.disabled = !1;
114
  }
@@ -116,13 +118,13 @@ return D.on("poUnsaved", function() {
116
  n.disabled = !0;
117
  }).on("poSave poAuto", function() {
118
  t();
119
- }), S(n).on("click", W), t(), !0;
120
- }, S("#loco-editor > nav .button").each(function(n, t) {
121
- var o = t.getAttribute("data-loco"), e = B[o];
122
- e && e(t, o) || S(t).addClass("loco-noop");
123
- }), S(f).on("submit", Q), function(t) {
124
  function e(n) {
125
- S(t.parentNode)[n || null == n ? "removeClass" : "addClass"]("invalid");
126
  }
127
  D.searchable(C.fulltext.init()), t.disabled = !1;
128
  var a = t.value = "", i = C.watchtext(t, function(n) {
@@ -134,61 +136,61 @@ a = i.val(), i.val(t || ""), e(o);
134
  a && D.filter(a);
135
  });
136
  }(document.getElementById("loco-search")), D.on("poUnsaved", function() {
137
- k.onbeforeunload = J;
138
  }).on("poSave", function() {
139
- V(), k.onbeforeunload = null;
140
- }).on("poHint", H).on("poUpdate", V).on("poMeta", function(n, t) {
141
  var o, e, a = (e = "CODE", (o = t).tagName === e ? o : o.getElementsByTagName(e)[0]);
142
  return !a || !l || (l.load(a.textContent), n.preventDefault(), !1);
143
- }), b.load(i.podata), D.load(b), (T = D.targetLocale) ? T.isRTL() && S(u).addClass("trg-rtl") : D.unlock(),
144
- V(), delete C.conf, i = B = null;
145
  }
146
- function N(n) {
147
  return C.l10n._(n);
148
  }
149
- function O(n, t, o) {
150
  return C.l10n.n(n, t, o);
151
  }
152
- function A(n) {
153
  return n.format(0, ".", e);
154
  }
155
- function F(c) {
156
  C.ajax.post("sync", s, function(n) {
157
  var t = [], o = n.pot, e = n.po, a = n.done || {
158
  add: [],
159
  del: [],
160
  fuz: []
161
  }, i = a.add.length, r = a.del.length, l = a.fuz.length, s = a.trn || 0;
162
- b.clear().load(e), D.load(b), i || r || l || s ? (o ? t.push(m(N("Merged from %s"), o)) : t.push(N("Merged from source code")),
163
- i && t.push(m(O("%s new string added", "%s new strings added", i), A(i))), r && t.push(m(O("%s obsolete string removed", "%s obsolete strings removed", r), A(r))),
164
- l && t.push(m(O("%s string marked Fuzzy", "%s strings marked Fuzzy", l), A(l))),
165
- s && t.push(m(O("%s translation copied", "%s translations copied", s), A(s))), S(u).trigger("poUnsaved", []),
166
- V(), d && k.console && function(n, t) {
167
  var o = -1, e = t.add.length;
168
  for (;++o < e; ) n.log(" + " + String(t.add[o]));
169
  for (e = t.del.length, o = 0; o < e; o++) n.log(" - " + String(t.del[o]));
170
  for (e = t.fuz.length, o = 0; o < e; o++) n.log(" ~ " + String(t.fuz[o]));
171
- }(console, a)) : o ? t.push(m(N("Strings up to date with %s"), o)) : t.push(N("Strings up to date with source code")),
172
- C.notices.success(t.join(". ")), S(u).trigger("poMerge", [ n ]), c && c();
173
  }, c);
174
  }
175
- function $() {
176
  return n = n || function() {
177
- for (var n, t = -1, o = [], e = r, a = e.length; ++t < a; ) try {
178
- n = e[t], o.push(C.apis.create(n));
179
  } catch (n) {
180
  C.notices.error(String(n));
181
  }
182
  return o;
183
  }();
184
  }
185
- function R(t) {
186
  var o;
187
  function e() {
188
  return new Date().getTime();
189
  }
190
- p || I ? C.notices.error("Logic error. APIs not available in current mode") : null == r || 0 === r.length || 10 < Math.round((e() - E) / 1e3) ? (a && a.remove(),
191
- a = null, h && h.remove(), h = null, z && z.remove(), r = z = null, o = S('<div><div class="loco-loading"></div></div>').dialog({
192
  dialogClass: "loco-modal loco-modal-no-close",
193
  appendTo: "#loco-admin.wrap",
194
  title: "Loading..",
@@ -197,17 +199,17 @@ autoOpen: !0,
197
  closeOnEscape: !1,
198
  resizable: !1,
199
  draggable: !1,
200
- position: L,
201
  height: 200
202
  }), C.ajax.get("apis", {
203
  locale: String(T)
204
  }, function(n) {
205
- E = e(), 0 === (r = n && n.apis || []).length ? a = _("loco-apis-empty", n.html) : h = _("loco-apis-batch", n.html),
206
  o.remove(), t(r);
207
- })) : (E = e(), t(r));
208
  }
209
- function _(n, t) {
210
- var o = S(t);
211
  return o.attr("id", n), o.dialog({
212
  dialogClass: "loco-modal",
213
  appendTo: "#loco-admin.wrap",
@@ -217,11 +219,11 @@ autoOpen: !1,
217
  closeOnEscape: !0,
218
  resizable: !1,
219
  draggable: !1,
220
- position: L
221
  }), o;
222
  }
223
- function H() {
224
- R(function(n) {
225
  n.length ? function() {
226
  var n = D.current(), t = D.getTargetOffset(), o = n && n.source(null, t), p = 'lang="' + String(T) + '" dir="' + (T.isRTL() ? "RTL" : "LTR") + '"', f = 99;
227
  if (!o) return;
@@ -231,41 +233,41 @@ n.stopPropagation(), o.click(), !1));
231
  var t, o;
232
  }
233
  function a(n, t, o, e) {
234
- var a = e.getId(), i = w[a], r = String(i + 1), l = e.getUrl(), s = N("Use this translation"), c = String(e), u = b && b[a], d = S('<button class="button button-primary"></button>').attr("tabindex", String(1 + f + i)).on("click", function(e, a) {
235
  return function(n) {
236
  n.preventDefault(), n.stopPropagation(), g();
237
  var t = D.current(), o = D.getTargetOffset();
238
  t && t.source(null, o) === e ? (t.translate(a, o), D.focus().reloadMessage(t)) : C.notices.warn("Source changed since suggestion");
239
  };
240
  }(n, t));
241
- d.attr("accesskey", r), 1 < h.length && (s += " (" + r + ")"), d.text(s), u && u.replaceWith(S('<div class="loco-api loco-api-' + a + '"></div>').append(S('<a class="loco-api-credit" target="_blank" tabindex="-1"></a>').attr("href", l).text(c)).append(S("<blockquote " + p + "></blockquote>").text(t || "FAILED")).append(d)),
242
- ++y === m && (v && v.dialog("option", "title", N("Suggested translations") + " — " + o.label),
243
  f += y), 0 === i && d.focus();
244
  }
245
  function g(n) {
246
- v && null == n && v.dialog("close"), b = v = null, S(k).off("keydown", e);
247
  }
248
  function i(e) {
249
  return function(n, t, o) {
250
  a(n, u[e.getId()] = t, o, e);
251
  };
252
  }
253
- var v = (z = z || _("loco-apis-hint", "<div></div>")).html("").append(S('<div class="loco-api"><p>Source text:</p></div>').append(S('<blockquote lang="en"></blockquote>').text(o))).dialog("option", "title", N("Loading suggestions") + "...").off("dialogclose").on("dialogclose", g).dialog("open"), r = n.translation(t);
254
- r && S('<div class="loco-api"><p>Current translation:</p></div>').append(S("<blockquote " + p + "></blockquote>").text(r)).append(S('<button class="button"></button>').attr("tabindex", String(++f)).text(N("Keep this translation")).on("click", function(n) {
255
  n.preventDefault(), g();
256
  })).appendTo(v);
257
- var l, s, h = $(), m = h.length, c = -1, u = M[o] || (M[o] = {}), b = {}, y = 0, w = {};
258
- for (;++c < m; ) l = h[c], v.append((d = l, void 0, x = S('<div class="loco-api loco-api-loading"></div>').text("Calling " + d + " ..."),
259
  b[d.getId()] = x)), s = l.getId(), w[s] = c, u[s] ? a(o, u[s], T, l) : l.translate(o, T, i(l));
260
  var d, x;
261
- S(k).on("keydown", e);
262
- }() : Y();
263
  });
264
  }
265
- function W(n) {
266
- return n.preventDefault(), R(function(n) {
267
  n.length ? function() {
268
- var e, a, i, r = 0, t = !1, l = h.dialog("open"), n = l.find("form"), s = n.find("button.button-primary"), o = S("#loco-job-progress");
269
  function c() {
270
  s[0].disabled = !0;
271
  }
@@ -277,10 +279,10 @@ o.text(n);
277
  }
278
  function p(n) {
279
  var t = function(n) {
280
- for (var t, o = $(), e = o.length, a = -1; ++a < e; ) if ((t = o[a]).getId() === n) return t;
281
  C.notices.error("No " + n + " client");
282
- }(S(n.api).val()), o = n.existing.checked;
283
- d("Calculating...."), (e = t.createJob()).init(b, o), a = t.toString(), d(m(N("%s unique source strings."), A(e.length)) + " " + m(N("%s characters will be sent for translation."), A(e.chars))),
284
  e.length ? s[0].disabled = !1 : c(), i = null;
285
  }
286
  function f(n) {
@@ -289,18 +291,18 @@ D.unsave(n, 0), r++);
289
  }
290
  function g(n, t) {
291
  var o = t ? 100 * n / t : 0;
292
- d(m(N("Translation progress %s%%"), A(o)));
293
  }
294
  function v() {
295
  if (u(), e && i) {
296
  var n = i.todo();
297
- n && C.notices.warn(m(O("Translation job aborted with %s string remaining", "Translation job aborted with %s strings remaining", n), A(n))).slow();
298
  var t = [], o = i.did();
299
- o && t.push(m(O("%1$s string translated via %2$s", "%1$s strings translated via %2$s", o), A(o), a)),
300
- r ? t.push(m(O("%s string updated", "%s strings updated", r), A(r))) : t.push(N("Nothing needed updating")),
301
  C.notices.success(t.join(". ")).slow(), i = e = null;
302
  }
303
- r && (V(), D.rebuildSearch()), l && (l.off("dialogclose").dialog("close"), l = null),
304
  D.fire("poAuto");
305
  }
306
  u(), c(), C.notices.clear(), n.off("submit change"), p(n[0]), n.on("change", function(n) {
@@ -312,43 +314,43 @@ i = e.dispatch().done(v).each(f).prog(g).stat();
312
  }), l.off("dialogclose").on("dialogclose", function() {
313
  e.abort(), l = null, v();
314
  });
315
- }() : Y();
316
  }), !1;
317
  }
318
- function Y() {
319
  a ? a.dialog("open") : C.notices.error("Logic error. Unconfigured API modal missing");
320
  }
321
- function G(t) {
322
- var n = S.extend({
323
  locale: String(b.locale() || "")
324
  }, c || {});
325
- x && x.applyCreds(n), o ? (n = function(n) {
326
  var t, o = new FormData();
327
  for (t in n) n.hasOwnProperty(t) && o.append(t, n[t]);
328
  return o;
329
  }(n)).append("po", new Blob([ String(b) ], {
330
  type: "application/x-gettext"
331
  }), String(n.path).split("/").pop() || "untitled.po") : n.data = String(b), C.ajax.post("save", n, function(n) {
332
- t && t(), D.save(!0), S("#loco-po-modified").text(n.datetime || "[datetime error]");
333
  }, t);
334
  }
335
- function J() {
336
- return N("Your changes will be lost if you continue without saving");
337
  }
338
- function K(o, e) {
339
- return o.disabled = !1, S(o).on("click", function() {
340
- var n = o.form, t = g;
341
  return "binary" === e && (t = t.replace(/\.po$/, ".mo")), n.path.value = t, n.source.value = b.toString(),
342
  !0;
343
  }), !0;
344
  }
345
- function Q(n) {
346
  return n.preventDefault(), !1;
347
  }
348
- function V() {
349
- var n = D.stats(), t = n.t, o = n.f, e = n.u, a = m(O("%s string", "%s strings", t), A(t)), i = [];
350
- T && (a = m(N("%s%% translated"), n.p.replace("%", "")) + ", " + a, o && i.push(m(N("%s fuzzy"), A(o))),
351
- e && i.push(m(N("%s untranslated"), A(e))), i.length && (a += " (" + i.join(", ") + ")")),
352
- S("#loco-po-status").text(a);
353
  }
354
  }(window, window.jQuery);
1
+ !function(S, k) {
2
+ var C = S.loco, i = C && C.conf, u = document.getElementById("loco-editor-inner");
3
  if (C && i && u) {
4
+ var D, r, n, z, h, a, d = !!i.WP_DEBUG, l = C.po.ref && C.po.ref.init(C, i), s = null, c = null, o = i.multipart, t = C.l10n, m = C.string.sprintf, e = i.wpnum && i.wpnum.thousands_sep || ",", T = i.locale, b = C.po.init(T).wrap(i.powrap), p = !T, f = C.locale.clone(i.source || {
5
+ lang: "en"
6
+ }), g = document.getElementById("loco-actions"), v = i.popath, y = i.potpath, w = i.syncmode, x = document.getElementById("loco-fs"), I = x && C.fs.init(x), j = i.readonly, M = !j, E = {}, L = 0, U = {
7
  my: "top",
8
  at: "top",
9
  of: "#loco-content"
10
  };
11
+ !o || S.FormData && S.Blob || (o = !1, C.notices.warn("Your browser doesn't support Ajax file uploads. Falling back to standard postdata")),
12
  l || C.notices.warn("admin.js is out of date. Please empty your browser cache and reload the page.");
13
+ var P, q, B = (q = parseInt(k(u).css("min-height") || 0), function() {
14
  var n = function(n, t) {
15
  for (var o = n.offsetTop || 0; (n = n.offsetParent) && n !== t; ) o += n.offsetTop || 0;
16
  return o;
17
+ }(u, document.body), t = S.innerHeight, o = Math.max(q, t - n - 20);
18
+ P !== o && (u.style.height = String(o) + "px", P = o);
19
  });
20
+ B(), k(S).resize(B), u.innerHTML = "", D = C.po.ed.init(u).localise(t), C.po.kbd.init(D).add("save", M ? function() {
21
+ D.dirty && J();
22
+ } : V).add("hint", T && M && W || V).enable("copy", "clear", "enter", "next", "prev", "fuzzy", "save", "invis", "hint");
23
+ var N = {
24
+ save: M && function(t) {
25
  function o() {
26
  t.disabled = !0;
27
  }
29
  t.disabled = !1;
30
  }
31
  function e() {
32
+ n(), k(t).removeClass("loco-loading");
33
  }
34
  return t, D.on("poUnsaved", function() {
35
+ n(), k(t).addClass("button-primary");
36
  }).on("poSave", function() {
37
+ o(), k(t).removeClass("button-primary");
38
+ }), c = k.extend({
39
+ path: v
40
+ }, i.project || {}), k(t).on("click", function(n) {
41
+ return n.preventDefault(), o(), k(t).addClass("loco-loading"), J(e), !1;
42
  }), !0;
43
  },
44
+ sync: M && function(t) {
45
  var n = i.project;
46
  if (n) {
47
  function o() {
51
  t.disabled = !1;
52
  }
53
  function a() {
54
+ e(), k(t).removeClass("loco-loading");
55
  }
56
  D.on("poUnsaved", function() {
57
  o();
61
  bundle: n.bundle,
62
  domain: n.domain,
63
  type: p ? "pot" : "po",
64
+ path: v || "",
65
+ sync: y || "",
66
+ mode: w || ""
67
+ }, k(t).on("click", function(n) {
68
+ return n.preventDefault(), o(), k(t).addClass("loco-loading"), $(a), !1;
69
  }), e();
70
  }
71
  return !0;
75
  n.disabled = !1;
76
  }).on("poSave", function() {
77
  n.disabled = !0;
78
+ }), k(n).on("click", function(n) {
79
  return n.preventDefault(), location.reload(), !1;
80
  }), !0;
81
  },
82
  invs: function(n) {
83
+ var o = k(n);
84
  return n.disabled = !1, D.on("poInvs", function(n, t) {
85
  o[t ? "addClass" : "removeClass"]("inverted");
86
  }), o.on("click", function(n) {
88
  }), C.tooltip.init(o), !0;
89
  },
90
  code: function(n) {
91
+ var o = k(n);
92
  return n.disabled = !1, o.on("click", function(n) {
93
  n.preventDefault();
94
  var t = !D.getMono();
95
  return o[t ? "addClass" : "removeClass"]("inverted"), D.setMono(t), !1;
96
  }), C.tooltip.init(o), !0;
97
  },
98
+ source: Q,
99
+ binary: p ? null : Q
100
  };
101
+ p ? (N.add = M && function(n) {
102
+ return n.disabled = !1, k(n).on("click", function(n) {
103
  n.preventDefault();
104
  var t, o = 1, e = /(\d+)$/;
105
  for (t = "New message"; b.get(t); ) o = e.exec(t) ? Math.max(o, Number(RegExp.$1)) : o,
106
  t = "New message " + ++o;
107
  return D.add(t), !1;
108
  }), !0;
109
+ }, N.del = M && function(n) {
110
+ return n.disabled = !1, k(n).on("click", function(n) {
111
  return n.preventDefault(), D.del(), !1;
112
  }), !0;
113
+ }) : N.auto = function(n) {
114
  function t() {
115
  n.disabled = !1;
116
  }
118
  n.disabled = !0;
119
  }).on("poSave poAuto", function() {
120
  t();
121
+ }), k(n).on("click", Y), t(), !0;
122
+ }, k("#loco-editor > nav .button").each(function(n, t) {
123
+ var o = t.getAttribute("data-loco"), e = N[o];
124
+ e && e(t, o) || k(t).addClass("loco-noop");
125
+ }), k(g).on("submit", V), function(t) {
126
  function e(n) {
127
+ k(t.parentNode)[n || null == n ? "removeClass" : "addClass"]("invalid");
128
  }
129
  D.searchable(C.fulltext.init()), t.disabled = !1;
130
  var a = t.value = "", i = C.watchtext(t, function(n) {
136
  a && D.filter(a);
137
  });
138
  }(document.getElementById("loco-search")), D.on("poUnsaved", function() {
139
+ S.onbeforeunload = K;
140
  }).on("poSave", function() {
141
+ X(), S.onbeforeunload = null;
142
+ }).on("poHint", W).on("poUpdate", X).on("poMeta", function(n, t) {
143
  var o, e, a = (e = "CODE", (o = t).tagName === e ? o : o.getElementsByTagName(e)[0]);
144
  return !a || !l || (l.load(a.textContent), n.preventDefault(), !1);
145
+ }), b.load(i.podata), D.load(b), (T = D.targetLocale) ? T.isRTL() && k(u).addClass("trg-rtl") : D.unlock(),
146
+ X(), delete C.conf, i = N = null;
147
  }
148
+ function O(n) {
149
  return C.l10n._(n);
150
  }
151
+ function A(n, t, o) {
152
  return C.l10n.n(n, t, o);
153
  }
154
+ function F(n) {
155
  return n.format(0, ".", e);
156
  }
157
+ function $(c) {
158
  C.ajax.post("sync", s, function(n) {
159
  var t = [], o = n.pot, e = n.po, a = n.done || {
160
  add: [],
161
  del: [],
162
  fuz: []
163
  }, i = a.add.length, r = a.del.length, l = a.fuz.length, s = a.trn || 0;
164
+ b.clear().load(e), D.load(b), i || r || l || s ? (o ? t.push(m(O("Merged from %s"), o)) : t.push(O("Merged from source code")),
165
+ i && t.push(m(A("%s new string added", "%s new strings added", i), F(i))), r && t.push(m(A("%s obsolete string removed", "%s obsolete strings removed", r), F(r))),
166
+ l && t.push(m(A("%s string marked Fuzzy", "%s strings marked Fuzzy", l), F(l))),
167
+ s && t.push(m(A("%s translation copied", "%s translations copied", s), F(s))), k(u).trigger("poUnsaved", []),
168
+ X(), d && S.console && function(n, t) {
169
  var o = -1, e = t.add.length;
170
  for (;++o < e; ) n.log(" + " + String(t.add[o]));
171
  for (e = t.del.length, o = 0; o < e; o++) n.log(" - " + String(t.del[o]));
172
  for (e = t.fuz.length, o = 0; o < e; o++) n.log(" ~ " + String(t.fuz[o]));
173
+ }(console, a)) : o ? t.push(m(O("Strings up to date with %s"), o)) : t.push(O("Strings up to date with source code")),
174
+ C.notices.success(t.join(". ")), k(u).trigger("poMerge", [ n ]), c && c();
175
  }, c);
176
  }
177
+ function R() {
178
  return n = n || function() {
179
+ for (var n, t = -1, o = [], e = r, a = e.length, i = String(f); ++t < a; ) try {
180
+ null == (n = e[t]).src && (n.src = i), o.push(C.apis.create(n));
181
  } catch (n) {
182
  C.notices.error(String(n));
183
  }
184
  return o;
185
  }();
186
  }
187
+ function _(t) {
188
  var o;
189
  function e() {
190
  return new Date().getTime();
191
  }
192
+ p || j ? C.notices.error("Logic error. APIs not available in current mode") : null == r || 0 === r.length || 10 < Math.round((e() - L) / 1e3) ? (a && a.remove(),
193
+ a = null, h && h.remove(), h = null, z && z.remove(), r = z = null, o = k('<div><div class="loco-loading"></div></div>').dialog({
194
  dialogClass: "loco-modal loco-modal-no-close",
195
  appendTo: "#loco-admin.wrap",
196
  title: "Loading..",
199
  closeOnEscape: !1,
200
  resizable: !1,
201
  draggable: !1,
202
+ position: U,
203
  height: 200
204
  }), C.ajax.get("apis", {
205
  locale: String(T)
206
  }, function(n) {
207
+ L = e(), 0 === (r = n && n.apis || []).length ? a = H("loco-apis-empty", n.html) : h = H("loco-apis-batch", n.html),
208
  o.remove(), t(r);
209
+ })) : (L = e(), t(r));
210
  }
211
+ function H(n, t) {
212
+ var o = k(t);
213
  return o.attr("id", n), o.dialog({
214
  dialogClass: "loco-modal",
215
  appendTo: "#loco-admin.wrap",
219
  closeOnEscape: !0,
220
  resizable: !1,
221
  draggable: !1,
222
+ position: U
223
  }), o;
224
  }
225
+ function W() {
226
+ _(function(n) {
227
  n.length ? function() {
228
  var n = D.current(), t = D.getTargetOffset(), o = n && n.source(null, t), p = 'lang="' + String(T) + '" dir="' + (T.isRTL() ? "RTL" : "LTR") + '"', f = 99;
229
  if (!o) return;
233
  var t, o;
234
  }
235
  function a(n, t, o, e) {
236
+ var a = e.getId(), i = w[a], r = String(i + 1), l = e.getUrl(), s = O("Use this translation"), c = String(e), u = b && b[a], d = k('<button class="button button-primary"></button>').attr("tabindex", String(1 + f + i)).on("click", function(e, a) {
237
  return function(n) {
238
  n.preventDefault(), n.stopPropagation(), g();
239
  var t = D.current(), o = D.getTargetOffset();
240
  t && t.source(null, o) === e ? (t.translate(a, o), D.focus().reloadMessage(t)) : C.notices.warn("Source changed since suggestion");
241
  };
242
  }(n, t));
243
+ d.attr("accesskey", r), 1 < h.length && (s += " (" + r + ")"), d.text(s), u && u.replaceWith(k('<div class="loco-api loco-api-' + a + '"></div>').append(k('<a class="loco-api-credit" target="_blank" tabindex="-1"></a>').attr("href", l).text(c)).append(k("<blockquote " + p + "></blockquote>").text(t || "FAILED")).append(d)),
244
+ ++y === m && (v && v.dialog("option", "title", O("Suggested translations") + " — " + o.label),
245
  f += y), 0 === i && d.focus();
246
  }
247
  function g(n) {
248
+ v && null == n && v.dialog("close"), b = v = null, k(S).off("keydown", e);
249
  }
250
  function i(e) {
251
  return function(n, t, o) {
252
  a(n, u[e.getId()] = t, o, e);
253
  };
254
  }
255
+ var v = (z = z || H("loco-apis-hint", "<div></div>")).html("").append(k('<div class="loco-api"><p>Source text:</p></div>').append(k('<blockquote lang="en"></blockquote>').text(o))).dialog("option", "title", O("Loading suggestions") + "...").off("dialogclose").on("dialogclose", g).dialog("open"), r = n.translation(t);
256
+ r && k('<div class="loco-api"><p>Current translation:</p></div>').append(k("<blockquote " + p + "></blockquote>").text(r)).append(k('<button class="button"></button>').attr("tabindex", String(++f)).text(O("Keep this translation")).on("click", function(n) {
257
  n.preventDefault(), g();
258
  })).appendTo(v);
259
+ var l, s, h = R(), m = h.length, c = -1, u = E[o] || (E[o] = {}), b = {}, y = 0, w = {};
260
+ for (;++c < m; ) l = h[c], v.append((d = l, void 0, x = k('<div class="loco-api loco-api-loading"></div>').text("Calling " + d + " ..."),
261
  b[d.getId()] = x)), s = l.getId(), w[s] = c, u[s] ? a(o, u[s], T, l) : l.translate(o, T, i(l));
262
  var d, x;
263
+ k(S).on("keydown", e);
264
+ }() : G();
265
  });
266
  }
267
+ function Y(n) {
268
+ return n.preventDefault(), _(function(n) {
269
  n.length ? function() {
270
+ var e, a, i, r = 0, t = !1, l = h.dialog("open"), n = l.find("form"), s = n.find("button.button-primary"), o = k("#loco-job-progress");
271
  function c() {
272
  s[0].disabled = !0;
273
  }
279
  }
280
  function p(n) {
281
  var t = function(n) {
282
+ for (var t, o = R(), e = o.length, a = -1; ++a < e; ) if ((t = o[a]).getId() === n) return t;
283
  C.notices.error("No " + n + " client");
284
+ }(k(n.api).val()), o = n.existing.checked;
285
+ d("Calculating...."), (e = t.createJob()).init(b, o), a = t.toString(), d(m(O("%s unique source strings."), F(e.length)) + " " + m(O("%s characters will be sent for translation."), F(e.chars))),
286
  e.length ? s[0].disabled = !1 : c(), i = null;
287
  }
288
  function f(n) {
291
  }
292
  function g(n, t) {
293
  var o = t ? 100 * n / t : 0;
294
+ d(m(O("Translation progress %s%%"), F(o)));
295
  }
296
  function v() {
297
  if (u(), e && i) {
298
  var n = i.todo();
299
+ n && C.notices.warn(m(A("Translation job aborted with %s string remaining", "Translation job aborted with %s strings remaining", n), F(n))).slow();
300
  var t = [], o = i.did();
301
+ o && t.push(m(A("%1$s string translated via %2$s", "%1$s strings translated via %2$s", o), F(o), a)),
302
+ r ? t.push(m(A("%s string updated", "%s strings updated", r), F(r))) : t.push(O("Nothing needed updating")),
303
  C.notices.success(t.join(". ")).slow(), i = e = null;
304
  }
305
+ r && (X(), D.rebuildSearch()), l && (l.off("dialogclose").dialog("close"), l = null),
306
  D.fire("poAuto");
307
  }
308
  u(), c(), C.notices.clear(), n.off("submit change"), p(n[0]), n.on("change", function(n) {
314
  }), l.off("dialogclose").on("dialogclose", function() {
315
  e.abort(), l = null, v();
316
  });
317
+ }() : G();
318
  }), !1;
319
  }
320
+ function G() {
321
  a ? a.dialog("open") : C.notices.error("Logic error. Unconfigured API modal missing");
322
  }
323
+ function J(t) {
324
+ var n = k.extend({
325
  locale: String(b.locale() || "")
326
  }, c || {});
327
+ I && I.applyCreds(n), o ? (n = function(n) {
328
  var t, o = new FormData();
329
  for (t in n) n.hasOwnProperty(t) && o.append(t, n[t]);
330
  return o;
331
  }(n)).append("po", new Blob([ String(b) ], {
332
  type: "application/x-gettext"
333
  }), String(n.path).split("/").pop() || "untitled.po") : n.data = String(b), C.ajax.post("save", n, function(n) {
334
+ t && t(), D.save(!0), k("#loco-po-modified").text(n.datetime || "[datetime error]");
335
  }, t);
336
  }
337
+ function K() {
338
+ return O("Your changes will be lost if you continue without saving");
339
  }
340
+ function Q(o, e) {
341
+ return o.disabled = !1, k(o).on("click", function() {
342
+ var n = o.form, t = v;
343
  return "binary" === e && (t = t.replace(/\.po$/, ".mo")), n.path.value = t, n.source.value = b.toString(),
344
  !0;
345
  }), !0;
346
  }
347
+ function V(n) {
348
  return n.preventDefault(), !1;
349
  }
350
+ function X() {
351
+ var n = D.stats(), t = n.t, o = n.f, e = n.u, a = m(A("%s string", "%s strings", t), F(t)), i = [];
352
+ T && (a = m(O("%s%% translated"), n.p.replace("%", "")) + ", " + a, o && i.push(m(O("%s fuzzy"), F(o))),
353
+ e && i.push(m(O("%s untranslated"), F(e))), i.length && (a += " (" + i.join(", ") + ")")),
354
+ k("#loco-po-status").text(a);
355
  }
356
  }(window, window.jQuery);
readme.txt CHANGED
@@ -3,8 +3,8 @@ Contributors: timwhitlock
3
  Tags: translation, translators, localization, localisation, l10n, i18n, Gettext, PO, MO, productivity, multilingual, internationalization
4
  Requires at least: 4.1
5
  Requires PHP: 5.2.4
6
- Tested up to: 5.8.1
7
- Stable tag: 2.5.5
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -100,6 +100,14 @@ We don't collect your data or snoop on you. See the [plugin privacy notice](http
100
 
101
  == Changelog ==
102
 
 
 
 
 
 
 
 
 
103
  = 2.5.5 =
104
  * Fixed double file extension vulnerability reported by WordFence
105
  * Better performance when scanning directories for file types
@@ -431,7 +439,7 @@ We don't collect your data or snoop on you. See the [plugin privacy notice](http
431
 
432
  == Upgrade Notice ==
433
 
434
- = 2.5.5 =
435
  * Various improvements and bug fixes
436
 
437
 
3
  Tags: translation, translators, localization, localisation, l10n, i18n, Gettext, PO, MO, productivity, multilingual, internationalization
4
  Requires at least: 4.1
5
  Requires PHP: 5.2.4
6
+ Tested up to: 5.8.3
7
+ Stable tag: 2.5.6
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
100
 
101
  == Changelog ==
102
 
103
+ = 2.5.6 =
104
+ * Added loco_api_provider_source filter
105
+ * Fixed bug loading user preferences saved in older version
106
+ * Refactored file finder to avoid recursive function calls
107
+ * Fixed bug displaying two forms for zero plural languages
108
+ * Added Lecto AI to translation API providers
109
+ * Bumped WordPress version to 5.8.3
110
+
111
  = 2.5.5 =
112
  * Fixed double file extension vulnerability reported by WordFence
113
  * Better performance when scanning directories for file types
439
 
440
  == Upgrade Notice ==
441
 
442
+ = 2.5.6 =
443
  * Various improvements and bug fixes
444
 
445
 
src/admin/config/DebugController.php CHANGED
@@ -64,6 +64,10 @@ class Loco_admin_config_DebugController extends Loco_admin_config_BaseController
64
  if( function_exists('apache_get_modules') && ( $mods = preg_grep('/^mod_/',apache_get_modules() ) ) ){
65
  $versions['Server'] .= ' + '.implode(', ',$mods);
66
  }
 
 
 
 
67
 
68
  // byte code cache (currently only checking for Zend OPcache)
69
  if( function_exists('opcache_get_configuration') && ini_get('opcache.enable') ){
@@ -110,7 +114,7 @@ class Loco_admin_config_DebugController extends Loco_admin_config_BaseController
110
  // Third party API integrations:
111
  $apis = array();
112
  $jsapis = array();
113
- foreach( Loco_api_Providers::export() as $api ){
114
  $apis[] = new Loco_mvc_ViewParams($api);
115
  $jsapis[] = $api;
116
  }
64
  if( function_exists('apache_get_modules') && ( $mods = preg_grep('/^mod_/',apache_get_modules() ) ) ){
65
  $versions['Server'] .= ' + '.implode(', ',$mods);
66
  }
67
+ // Add Xdebug version if installed
68
+ if( extension_loaded('xdebug') ){
69
+ $versions['PHP'] .= ' + Xdebug '. phpversion('xdebug');
70
+ }
71
 
72
  // byte code cache (currently only checking for Zend OPcache)
73
  if( function_exists('opcache_get_configuration') && ini_get('opcache.enable') ){
114
  // Third party API integrations:
115
  $apis = array();
116
  $jsapis = array();
117
+ foreach( Loco_api_Providers::sort( Loco_api_Providers::export() ) as $api ){
118
  $apis[] = new Loco_mvc_ViewParams($api);
119
  $jsapis[] = $api;
120
  }
src/admin/file/EditController.php CHANGED
@@ -48,6 +48,7 @@ class Loco_admin_file_EditController extends Loco_admin_file_BaseController {
48
  public function render(){
49
 
50
  // file must exist for editing
 
51
  $file = $this->get('file');
52
  if( $fail = $this->getFileError($file) ){
53
  return $fail;
@@ -146,6 +147,10 @@ class Loco_admin_file_EditController extends Loco_admin_file_BaseController {
146
  }
147
  }
148
 
 
 
 
 
149
  $settings = Loco_data_Settings::get();
150
 
151
  if( is_null($locale) ){
@@ -171,16 +176,16 @@ class Loco_admin_file_EditController extends Loco_admin_file_BaseController {
171
  'powrap' => (int) $settings->po_width,
172
  'multipart' => (bool) $settings->ajax_files,
173
  'locale' => $locale ? $locale->jsonSerialize() : null,
 
174
  'potpath' => $locale && $potfile ? $potfile->getRelativePath($wp_content) : null,
175
  'syncmode' => $syncmode,
176
  'popath' => $this->get('path'),
177
  'readonly' => $readonly,
178
  'project' => $project ? array (
179
  'bundle' => $bundle->getId(),
180
- 'domain' => (string) $project->getId(),
181
  ) : null,
182
  'nonces' => $this->getNonces($readonly),
183
- 'apis' => $locale && ! $readonly ? Loco_api_Providers::configured() : null,
184
  ) ) );
185
  $this->set( 'ui', new Loco_mvc_ViewParams( array(
186
  // Translators: button for adding a new string when manually editing a POT file
48
  public function render(){
49
 
50
  // file must exist for editing
51
+ /* @var Loco_fs_File $file */
52
  $file = $this->get('file');
53
  if( $fail = $this->getFileError($file) ){
54
  return $fail;
147
  }
148
  }
149
 
150
+ // WordPress source locale is always en_US, but filter allows override for purpose of sending to translation APIs.
151
+ $tag = apply_filters('loco_api_provider_source', 'en', $file->getPath() );
152
+ $source = Loco_Locale::parse($tag);
153
+
154
  $settings = Loco_data_Settings::get();
155
 
156
  if( is_null($locale) ){
176
  'powrap' => (int) $settings->po_width,
177
  'multipart' => (bool) $settings->ajax_files,
178
  'locale' => $locale ? $locale->jsonSerialize() : null,
179
+ 'source' => $source->jsonSerialize(),
180
  'potpath' => $locale && $potfile ? $potfile->getRelativePath($wp_content) : null,
181
  'syncmode' => $syncmode,
182
  'popath' => $this->get('path'),
183
  'readonly' => $readonly,
184
  'project' => $project ? array (
185
  'bundle' => $bundle->getId(),
186
+ 'domain' => $project->getId(),
187
  ) : null,
188
  'nonces' => $this->getNonces($readonly),
 
189
  ) ) );
190
  $this->set( 'ui', new Loco_mvc_ViewParams( array(
191
  // Translators: button for adding a new string when manually editing a POT file
src/ajax/ApisController.php CHANGED
@@ -45,9 +45,8 @@ class Loco_ajax_ApisController extends Loco_mvc_AjaxController {
45
  $hook = (string) $post->hook;
46
 
47
  // API client must be hooked in using loco_api_providers filter
48
- // this normally filters on Loco_api_Providers::export() but should do the same with an empty array.
49
  $config = null;
50
- foreach( apply_filters('loco_api_providers', Loco_api_Providers::builtin() ) as $candidate ){
51
  if( is_array($candidate) && array_key_exists('id',$candidate) && $candidate['id'] === $hook ){
52
  $config = $candidate;
53
  break;
45
  $hook = (string) $post->hook;
46
 
47
  // API client must be hooked in using loco_api_providers filter
 
48
  $config = null;
49
+ foreach( Loco_api_Providers::export() as $candidate ){
50
  if( is_array($candidate) && array_key_exists('id',$candidate) && $candidate['id'] === $hook ){
51
  $config = $candidate;
52
  break;
src/api/Providers.php CHANGED
@@ -42,6 +42,11 @@ abstract class Loco_api_Providers {
42
  'name' => 'Yandex.Translate',
43
  'key' => $settings->offsetGet('yandex_api_key'),
44
  ),
 
 
 
 
 
45
  );
46
  }
47
 
@@ -51,9 +56,7 @@ abstract class Loco_api_Providers {
51
  * @return array[]
52
  */
53
  public static function configured(){
54
- $apis = array_filter( self::export(), array(__CLASS__,'filterConfigured') );
55
- usort( $apis, array(__CLASS__,'compareNames') );
56
- return $apis;
57
  }
58
 
59
 
@@ -71,10 +74,21 @@ abstract class Loco_api_Providers {
71
  * @internal
72
  * @param string[]
73
  * @param string[]
74
- * @return bool
75
  */
76
  private static function compareNames( array $a, array $b ){
77
  return strcasecmp($a['name'],$b['name']);
78
  }
 
 
 
 
 
 
 
 
 
 
 
79
 
80
  }
42
  'name' => 'Yandex.Translate',
43
  'key' => $settings->offsetGet('yandex_api_key'),
44
  ),
45
+ array (
46
+ 'id' => 'lecto',
47
+ 'name' => 'Lecto AI',
48
+ 'key' => $settings->offsetGet('lecto_api_key'),
49
+ ),
50
  );
51
  }
52
 
56
  * @return array[]
57
  */
58
  public static function configured(){
59
+ return self::sort( array_filter( self::export(), array(__CLASS__,'filterConfigured') ) );
 
 
60
  }
61
 
62
 
74
  * @internal
75
  * @param string[]
76
  * @param string[]
77
+ * @return int
78
  */
79
  private static function compareNames( array $a, array $b ){
80
  return strcasecmp($a['name'],$b['name']);
81
  }
82
+
83
+
84
+ /**
85
+ * Sort providers alphabetically
86
+ * @param array
87
+ * @return array
88
+ */
89
+ public static function sort( array $apis ){
90
+ usort( $apis, array(__CLASS__,'compareNames') );
91
+ return $apis;
92
+ }
93
 
94
  }
src/data/Preferences.php CHANGED
@@ -9,7 +9,7 @@ class Loco_data_Preferences extends Loco_data_Serializable {
9
 
10
  /**
11
  * User preference singletons
12
- * @var array
13
  */
14
  private static $current = array();
15
 
@@ -90,9 +90,10 @@ class Loco_data_Preferences extends Loco_data_Serializable {
90
  $data = get_user_meta( $this->user_id, 'loco_prefs', true );
91
  // See comments in Loco_data_Settings
92
  if( is_array($data) ){
93
- $this->setUnserialized($data);
94
  $copy = new Loco_data_Preferences;
95
- $this->exchangeArray( $copy->getArrayCopy() + $this->getArrayCopy() );
 
 
96
  $this->clean();
97
  return true;
98
  }
9
 
10
  /**
11
  * User preference singletons
12
+ * @var Loco_data_Preferences[]
13
  */
14
  private static $current = array();
15
 
90
  $data = get_user_meta( $this->user_id, 'loco_prefs', true );
91
  // See comments in Loco_data_Settings
92
  if( is_array($data) ){
 
93
  $copy = new Loco_data_Preferences;
94
+ $copy->setUnserialized($data);
95
+ $data = $copy->getArrayCopy() + $this->getArrayCopy();
96
+ $this->exchangeArray($data);
97
  $this->clean();
98
  return true;
99
  }
src/data/Settings.php CHANGED
@@ -25,6 +25,7 @@
25
  * @property string $deepl_api_url Base URL for DeepL Translator version
26
  * @property string $google_api_key API key for Google Translate
27
  * @property string $yandex_api_key API key for Yandex.Translate
 
28
  * @property string $microsoft_api_key API key for Microsoft Translator text API
29
  * @property string $microsoft_api_region API region for Microsoft Translator text API
30
  *
@@ -67,6 +68,7 @@ class Loco_data_Settings extends Loco_data_Serializable {
67
  'yandex_api_key' => '',
68
  'microsoft_api_key' => '',
69
  'microsoft_api_region' => 'global',
 
70
  );
71
 
72
 
25
  * @property string $deepl_api_url Base URL for DeepL Translator version
26
  * @property string $google_api_key API key for Google Translate
27
  * @property string $yandex_api_key API key for Yandex.Translate
28
+ * @property string $lecto_api_key API key for Lecto Translation API
29
  * @property string $microsoft_api_key API key for Microsoft Translator text API
30
  * @property string $microsoft_api_region API region for Microsoft Translator text API
31
  *
68
  'yandex_api_key' => '',
69
  'microsoft_api_key' => '',
70
  'microsoft_api_region' => 'global',
71
+ 'lecto_api_key' => '',
72
  );
73
 
74
 
src/fs/FileFinder.php CHANGED
@@ -12,7 +12,7 @@ class Loco_fs_FileFinder implements Iterator, Countable, Loco_fs_FileListInterfa
12
 
13
  /**
14
  * Directories to search, including those descended into
15
- * @var Loco_fs_FileList
16
  */
17
  private $subdir;
18
 
@@ -24,7 +24,7 @@ class Loco_fs_FileFinder implements Iterator, Countable, Loco_fs_FileListInterfa
24
 
25
  /**
26
  * File listing already matched
27
- * @var Loco_fs_FileList
28
  */
29
  private $cache;
30
 
@@ -36,13 +36,13 @@ class Loco_fs_FileFinder implements Iterator, Countable, Loco_fs_FileListInterfa
36
 
37
  /**
38
  * Internal pointer for directory being read
39
- * @var int
40
  */
41
  private $d;
42
 
43
  /**
44
  * Current directory being read
45
- * @var resource
46
  */
47
  private $dir;
48
 
@@ -61,7 +61,7 @@ class Loco_fs_FileFinder implements Iterator, Countable, Loco_fs_FileListInterfa
61
  /**
62
  * Whether currently recursing into subdirectories
63
  * This is switched on and off as each directories is opened
64
- * @var bool
65
  */
66
  private $recursing;
67
 
@@ -74,19 +74,19 @@ class Loco_fs_FileFinder implements Iterator, Countable, Loco_fs_FileListInterfa
74
 
75
  /**
76
  * Registry of followed links by their original path
77
- * @var Loco_fs_FileList
78
  */
79
  private $linked;
80
 
81
  /**
82
  * List of file extensions to filter on and group by
83
- * @var Loco_fs_FileList[]
84
  */
85
  private $exts;
86
 
87
  /**
88
  * List of directory names to exclude from recursion
89
- * @var Loco_fs_File[]
90
  */
91
  private $excluded;
92
 
@@ -330,8 +330,7 @@ class Loco_fs_FileFinder implements Iterator, Countable, Loco_fs_FileListInterfa
330
  * @return Loco_fs_File|null
331
  */
332
  private function read(){
333
- $path = null;
334
- if( is_resource($this->dir) ){
335
  while( $f = readdir($this->dir) ){
336
  // dot-files always excluded
337
  if( '.' === substr($f,0,1) ){
@@ -388,15 +387,18 @@ class Loco_fs_FileFinder implements Iterator, Countable, Loco_fs_FileListInterfa
388
  return $file;
389
  }
390
  $this->close();
 
 
 
 
 
 
 
 
 
 
391
  }
392
- // try next dir if nothing matched in this one
393
- $d = $this->d + 1;
394
- if( isset($this->subdir[$d]) ){
395
- $this->d = $d;
396
- $this->open( $this->subdir[$d] );
397
- return $this->read();
398
- }
399
- // else at end of all available files
400
  $this->cached = true;
401
  return null;
402
  }
@@ -429,7 +431,6 @@ class Loco_fs_FileFinder implements Iterator, Countable, Loco_fs_FileListInterfa
429
  }
430
 
431
 
432
-
433
  /**
434
  * @return Loco_fs_File|null
435
  */
@@ -442,7 +443,6 @@ class Loco_fs_FileFinder implements Iterator, Countable, Loco_fs_FileListInterfa
442
  }
443
 
444
 
445
-
446
  /**
447
  * @return Loco_fs_File|null
448
  */
@@ -454,8 +454,11 @@ class Loco_fs_FileFinder implements Iterator, Countable, Loco_fs_FileListInterfa
454
  return $this->cache[$i];
455
  }
456
  }
457
- else if( $path = $this->read() ){
458
- return $path;
 
 
 
459
  }
460
  // else at end of all directory listings
461
  $this->i = null;
@@ -516,11 +519,11 @@ class Loco_fs_FileFinder implements Iterator, Countable, Loco_fs_FileListInterfa
516
 
517
 
518
  /**
519
- * test whether internal list has been fully cached in memory
 
520
  */
521
  public function isCached(){
522
  return $this->cached;
523
  }
524
 
525
-
526
  }
12
 
13
  /**
14
  * Directories to search, including those descended into
15
+ * @var Loco_fs_FileList|null
16
  */
17
  private $subdir;
18
 
24
 
25
  /**
26
  * File listing already matched
27
+ * @var Loco_fs_FileList|null
28
  */
29
  private $cache;
30
 
36
 
37
  /**
38
  * Internal pointer for directory being read
39
+ * @var int|null
40
  */
41
  private $d;
42
 
43
  /**
44
  * Current directory being read
45
+ * @var resource|null
46
  */
47
  private $dir;
48
 
61
  /**
62
  * Whether currently recursing into subdirectories
63
  * This is switched on and off as each directories is opened
64
+ * @var bool|null
65
  */
66
  private $recursing;
67
 
74
 
75
  /**
76
  * Registry of followed links by their original path
77
+ * @var Loco_fs_FileList|null
78
  */
79
  private $linked;
80
 
81
  /**
82
  * List of file extensions to filter on and group by
83
+ * @var null|Loco_fs_FileList[]
84
  */
85
  private $exts;
86
 
87
  /**
88
  * List of directory names to exclude from recursion
89
+ * @var null|Loco_fs_File[]
90
  */
91
  private $excluded;
92
 
330
  * @return Loco_fs_File|null
331
  */
332
  private function read(){
333
+ while( is_resource($this->dir) ){
 
334
  while( $f = readdir($this->dir) ){
335
  // dot-files always excluded
336
  if( '.' === substr($f,0,1) ){
387
  return $file;
388
  }
389
  $this->close();
390
+ // Advance directory and continue outer loop
391
+ $d = $this->d + 1;
392
+ if( $this->subdir->offsetExists($d) ){
393
+ $this->d = $d;
394
+ $this->open( $this->subdir->offsetGet($d) );
395
+ }
396
+ // else no directories left to search
397
+ else {
398
+ break;
399
+ }
400
  }
401
+ // at end of all available files
 
 
 
 
 
 
 
402
  $this->cached = true;
403
  return null;
404
  }
431
  }
432
 
433
 
 
434
  /**
435
  * @return Loco_fs_File|null
436
  */
443
  }
444
 
445
 
 
446
  /**
447
  * @return Loco_fs_File|null
448
  */
454
  return $this->cache[$i];
455
  }
456
  }
457
+ else {
458
+ $file = $this->read();
459
+ if( $file instanceof Loco_fs_File ) {
460
+ return $file;
461
+ }
462
  }
463
  // else at end of all directory listings
464
  $this->i = null;
519
 
520
 
521
  /**
522
+ * Test whether internal list has been fully cached in memory
523
+ * @return bool
524
  */
525
  public function isCached(){
526
  return $this->cached;
527
  }
528
 
 
529
  }
tpl/admin/config/apis.php CHANGED
@@ -62,6 +62,27 @@ $help = apply_filters('loco_external','https://localise.biz/wordpress/plugin/man
62
  </fieldset>
63
  </td>
64
  </tr><?php
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
65
  // MICROSOFT
66
  $api = $apis['microsoft']?>
67
  <tr>
62
  </fieldset>
63
  </td>
64
  </tr><?php
65
+ // LECTO AI
66
+ $api = $apis['lecto']?>
67
+ <tr>
68
+ <th scope="row"><?php $api->e('name')?></th>
69
+ <td>
70
+ <fieldset>
71
+ <legend class="screen-reader-text">
72
+ <span><?php $ui->e('api_key')?></span>
73
+ </legend>
74
+ <p>
75
+ <label for="loco--lecto_api_key">
76
+ <?php $ui->e('api_key')?>:
77
+ </label>
78
+ <input type="text" size="50" name="api[lecto][key]" id="loco--lecto_api_key" value="<?php $api->e('key')?>" spellcheck="false" />
79
+ </p>
80
+ <p>
81
+ <span class="description"><a href="https://lecto.ai/?ref=loco" target="_blank" tabindex="-1">https://lecto.ai/?ref=loco</a></span>
82
+ </p>
83
+ </fieldset>
84
+ </td>
85
+ </tr><?php
86
  // MICROSOFT
87
  $api = $apis['microsoft']?>
88
  <tr>