diff options
65 files changed, 971 insertions, 514 deletions
diff --git a/addons/resource.language.en_gb/resources/strings.po b/addons/resource.language.en_gb/resources/strings.po index 467345343b..c509e6ffa8 100644 --- a/addons/resource.language.en_gb/resources/strings.po +++ b/addons/resource.language.en_gb/resources/strings.po @@ -14203,7 +14203,6 @@ msgid "Auto update" msgstr "" #. Used as an event log description for add-ons that have been installed/enabled -#: xbmc/addons/AddonInstaller.cpp #: xbmc/addons/AddonManager.cpp msgctxt "#24064" msgid "Add-on enabled" @@ -14303,7 +14302,10 @@ msgctxt "#24083" msgid "Information libraries" msgstr "" -#empty string with id 24084 +#: xbmc/addons/AddonInstaller.cpp +msgctxt "#24084" +msgid "Add-on installed" +msgstr "" #. Used as a text in the progress dialog when installing an add-on #: xbmc/addons/AddonInstaller.cpp @@ -14354,17 +14356,19 @@ msgctxt "#24093" msgid "Checking %s..." msgstr "" -#empty string with id 24094 +#: xbmc/addons/AddonInstaller.cpp +msgctxt "#24094" +msgid "Add-on disabled due to being marked broken in repository." +msgstr "" #: xbmc/addons/GUIDialogAddonInfo.cpp msgctxt "#24095" msgid "Local package cache" msgstr "" -#: xbmc/addons/Repository.cpp #: addons/skin.estuary/1080i/DialogAddonInfo.xml msgctxt "#24096" -msgid "Add-on is incompatible or has been marked broken in repository." +msgid "Add-on has been marked broken in repository." msgstr "" #: xbmc/addons/Repository.cpp diff --git a/addons/skin.estouchy/language/resource.language.en_gb/strings.po b/addons/skin.estouchy/language/resource.language.en_gb/strings.po index d049b46c5f..cf097d4531 100644 --- a/addons/skin.estouchy/language/resource.language.en_gb/strings.po +++ b/addons/skin.estouchy/language/resource.language.en_gb/strings.po @@ -68,7 +68,27 @@ msgctxt "#31016" msgid "Albums" msgstr "" -#empty strings from id 31017 to 31023 +msgctxt "#31017" +msgid "PVR info" +msgstr "" + +msgctxt "#31018" +msgid "Player process info" +msgstr "" + +msgctxt "#31019" +msgid "Video decoder" +msgstr "" + +msgctxt "#31020" +msgid "Pixel format" +msgstr "" + +msgctxt "#31021" +msgid "System memory usage" +msgstr "" + +#empty strings from id 31022 to 31023 msgctxt "#31024" msgid "Page" diff --git a/addons/skin.estouchy/xml/DialogPlayerProcessInfo.xml b/addons/skin.estouchy/xml/DialogPlayerProcessInfo.xml new file mode 100644 index 0000000000..fe72d2d7c0 --- /dev/null +++ b/addons/skin.estouchy/xml/DialogPlayerProcessInfo.xml @@ -0,0 +1,225 @@ +<?xml version="1.0" encoding="UTF-8"?> +<window> + <animation effect="fade" start="0" end="100" time="300">WindowOpen</animation> + <animation effect="fade" start="100" end="0" time="200">WindowClose</animation> + <include>16x9_xPos_Relocation</include> + <onunload>ClearProperty(PlayerPVRInfo,Home)</onunload> + <controls> + <control type="group"> + <posy>80</posy> + <control type="image"> + <posx>10</posx> + <posy>0</posy> + <width>1260</width> + <height>370</height> + <texture border="10">dialogbutton-nofocus.png</texture> + </control> + <control type="group"> + <posx>1200</posx> + <posy>5</posy> + <include>DialogCloseButtonCommons</include> + </control> + <control type="grouplist"> + <posx>52</posx> + <posy>50</posy> + <visible>!String.IsEmpty(Window(Home).Property(PlayerPVRInfo))</visible> + <control type="label"> + <width>800</width> + <height>30</height> + <aligny>bottom</aligny> + <label>$INFO[PVR.ActStreamServiceName,[COLOR blue]$LOCALIZE[19099]:[/COLOR] ]</label> + <font>font25</font> + <shadowcolor>black</shadowcolor> + </control> + <control type="label"> + <width>800</width> + <height>30</height> + <aligny>bottom</aligny> + <label>$INFO[PVR.ActStreamProviderName,[COLOR blue]$LOCALIZE[19101]:[/COLOR] ]</label> + <font>font25</font> + <shadowcolor>black</shadowcolor> + </control> + <control type="label"> + <width>800</width> + <height>30</height> + <aligny>bottom</aligny> + <label>$INFO[PVR.ActStreamClient,[COLOR blue]$LOCALIZE[19012]:[/COLOR] ]</label> + <font>font25</font> + <shadowcolor>black</shadowcolor> + </control> + <control type="label"> + <width>800</width> + <height>30</height> + <aligny>bottom</aligny> + <label>$INFO[PVR.ActStreamDevice,[COLOR blue]$LOCALIZE[19006]:[/COLOR] ]</label> + <font>font25</font> + <shadowcolor>black</shadowcolor> + </control> + <control type="label"> + <width>800</width> + <height>30</height> + <aligny>bottom</aligny> + <label>$INFO[PVR.ActStreamStatus,[COLOR blue]$LOCALIZE[19007]:[/COLOR] ]</label> + <font>font25</font> + <shadowcolor>black</shadowcolor> + </control> + <control type="label"> + <width>800</width> + <height>30</height> + <aligny>bottom</aligny> + <label>$INFO[PVR.ActStreamEncryptionName,[COLOR blue]$LOCALIZE[19015]:[/COLOR] ]</label> + <font>font25</font> + <shadowcolor>black</shadowcolor> + </control> + </control> + <control type="grouplist"> + <posx>850</posx> + <posy>50</posy> + <visible>!String.IsEmpty(Window(Home).Property(PlayerPVRInfo))</visible> + <control type="label"> + <width>400</width> + <height>30</height> + <aligny>bottom</aligny> + <label>$INFO[PVR.ActStreamBer,[COLOR blue]$LOCALIZE[19010]:[/COLOR] ]</label> + <font>font25</font> + <shadowcolor>black</shadowcolor> + </control> + <control type="label"> + <width>400</width> + <height>30</height> + <aligny>bottom</aligny> + <label>$INFO[PVR.ActStreamUnc,[COLOR blue]$LOCALIZE[19011]:[/COLOR] ]</label> + <font>font25</font> + <shadowcolor>black</shadowcolor> + </control> + <control type="label"> + <width>400</width> + <height>30</height> + <aligny>bottom</aligny> + <label>$INFO[PVR.ActStreamMux,[COLOR blue]$LOCALIZE[19100]:[/COLOR] ]</label> + <font>font25</font> + <shadowcolor>black</shadowcolor> + </control> + <control type="label"> + <width>400</width> + <height>30</height> + <aligny>bottom</aligny> + <label>$INFO[PVR.ActStreamSignal,[COLOR blue]$LOCALIZE[19008]:[/COLOR] ]</label> + <font>font25</font> + <shadowcolor>black</shadowcolor> + </control> + <control type="progress"> + <posy>5</posy> + <width>400</width> + <height>18</height> + <info>PVR.ActStreamProgrSignal</info> + </control> + <control type="label"> + <posy>5</posy> + <width>400</width> + <height>30</height> + <aligny>bottom</aligny> + <label>$INFO[PVR.ActStreamSNR,[COLOR blue]$LOCALIZE[19009]:[/COLOR] ]</label> + <font>font25</font> + <shadowcolor>black</shadowcolor> + </control> + <control type="progress"> + <posy>0</posy> + <width>400</width> + <height>18</height> + <info>PVR.ActStreamProgrSNR</info> + </control> + </control> + <control type="grouplist"> + <posx>52</posx> + <posy>20</posy> + <visible>String.IsEmpty(Window(Home).Property(PlayerPVRInfo))</visible> + <control type="label"> + <width>1000</width> + <height>30</height> + <aligny>bottom</aligny> + <label>$INFO[Player.Process(videodecoder),[COLOR blue]$LOCALIZE[31019]:[/COLOR] ]$VAR[VideoHWDecoder, (,)]</label> + <font>font25</font> + <shadowcolor>black</shadowcolor> + <visible>Player.HasVideo</visible> + </control> + <control type="label"> + <width>1000</width> + <height>30</height> + <aligny>bottom</aligny> + <label>$INFO[Player.Process(pixformat),[COLOR blue]$LOCALIZE[31020]:[/COLOR] ]</label> + <font>font25</font> + <shadowcolor>black</shadowcolor> + <visible>Player.HasVideo</visible> + </control> + <control type="label"> + <width>1000</width> + <height>30</height> + <aligny>bottom</aligny> + <label>$INFO[Player.Process(deintmethod),[COLOR blue]$LOCALIZE[16038]:[/COLOR] ]</label> + <font>font25</font> + <shadowcolor>black</shadowcolor> + <visible>Player.HasVideo</visible> + </control> + <control type="label"> + <width>1000</width> + <height>30</height> + <aligny>bottom</aligny> + <label>$INFO[Player.Process(videowidth),[COLOR blue]$LOCALIZE[38031]:[/COLOR] ,x]$INFO[Player.Process(videoheight),, px]$INFO[Player.Process(videodar),$COMMA , AR]$INFO[Player.Process(videofps),$COMMA , FPS]</label> + <font>font25</font> + <shadowcolor>black</shadowcolor> + <visible>Player.HasVideo</visible> + </control> + <control type="label"> + <width>1000</width> + <height>30</height> + <aligny>bottom</aligny> + <label>[COLOR blue]$LOCALIZE[460]:[/COLOR] $INFO[Player.Process(audiochannels),,$COMMA ]$INFO[Player.Process(audiodecoder)]$INFO[Player.Process(audiobitspersample),$COMMA , bits]$INFO[Player.Process(audiosamplerate),$COMMA , Hz]</label> + <font>font25</font> + <shadowcolor>black</shadowcolor> + </control> + <control type="label"> + <width>1000</width> + <height>30</height> + <aligny>bottom</aligny> + <label>$INFO[System.Memory(used.percent),[COLOR blue]$LOCALIZE[31021]:[/COLOR] , ]</label> + <font>font25</font> + <shadowcolor>black</shadowcolor> + </control> + <control type="label"> + <width>1000</width> + <height>60</height> + <aligny>bottom</aligny> + <label>$INFO[System.CpuUsage,[COLOR blue]$LOCALIZE[13271][/COLOR] ]</label> + <font>font25</font> + <shadowcolor>black</shadowcolor> + <wrapmultiline>true</wrapmultiline> + </control> + </control> + <control type="grouplist" id="5550"> + <posx>10</posx> + <posy>300</posy> + <width>1260</width> + <height>130</height> + <align>center</align> + <orientation>horizontal</orientation> + <itemgap>10</itemgap> + <control type="button" id="5552"> + <width>250</width> + <height>60</height> + <include>ButtonInfoDialogsCommonValues</include> + <onclick>ClearProperty(PlayerPVRInfo,Home)</onclick> + <label>$LOCALIZE[31018]</label> + </control> + <control type="button" id="5551"> + <width>250</width> + <height>60</height> + <include>ButtonInfoDialogsCommonValues</include> + <label>$LOCALIZE[31017]</label> + <onclick>SetProperty(PlayerPVRInfo,true,Home)</onclick> + <visible>VideoPlayer.Content(livetv)</visible> + </control> + </control> + </control> + </controls> +</window> diff --git a/addons/skin.estouchy/xml/Includes.xml b/addons/skin.estouchy/xml/Includes.xml index c16c20bc42..4a9b57c4c8 100644 --- a/addons/skin.estouchy/xml/Includes.xml +++ b/addons/skin.estouchy/xml/Includes.xml @@ -83,6 +83,10 @@ <value condition="Player.HasAudio">[B]$INFO[MusicPlayer.Title][/B]</value> <value condition="Player.HasVideo">[B]$INFO[VideoPlayer.Title][/B]</value> </variable> + <variable name="VideoHWDecoder"> + <value condition="Player.Process(videohwdecoder)">HW</value> + <value>SW</value> + </variable> <include name="ScreenWidth"> <include condition="String.IsEqual(Skin.AspectRatio,16:9)">ScreenWidth-16x9</include> @@ -965,7 +969,7 @@ <posx>0</posx> <posy>$PARAM[panel-posy]</posy> <width>350</width> - <height>560</height> + <height>640</height> <onleft>9000</onleft> <onright>50</onright> <onup>9000</onup> @@ -2398,7 +2402,6 @@ <control type="button"> <label>31358</label> <include>MenuButtonCommonValues</include> - <onclick>ActivateWindow(PVROSDChannels)</onclick> <onclick>ActivateWindow(Teletext)</onclick> <visible>VideoPlayer.Content(LiveTV)</visible> </control> @@ -2446,6 +2449,12 @@ <onclick>ActivateWindow(OSDAudioDSPSettings)</onclick> <visible>system.getbool(audiooutput.dspaddonsenabled)</visible> </control> + <control type="button"> + <label>Player info</label> + <include>MenuButtonCommonValues</include> + <onclick>ClearProperty(PopupMenuVisible,Home)</onclick> + <onclick>ActivateWindow(playerprocessinfo)</onclick> + </control> </include> <include name="VideoPlaylistMenu"> <control type="radiobutton" id="20"> diff --git a/addons/skin.estouchy/xml/IncludesPlayerControls.xml b/addons/skin.estouchy/xml/IncludesPlayerControls.xml index b7c594cd93..ad162c1f88 100644 --- a/addons/skin.estouchy/xml/IncludesPlayerControls.xml +++ b/addons/skin.estouchy/xml/IncludesPlayerControls.xml @@ -347,8 +347,8 @@ </control> <include>BottomMenu</include> <include content="PopupMenu"> - <param name="panel-posy">0</param> - <param name="panel-height">560</param> + <param name="panel-posy">-80</param> + <param name="panel-height">640</param> </include> </include> </includes> diff --git a/addons/skin.estuary/xml/Custom_1101_SettingsList.xml b/addons/skin.estuary/xml/Custom_1101_SettingsList.xml index c767bb4e6b..81805648ec 100644 --- a/addons/skin.estuary/xml/Custom_1101_SettingsList.xml +++ b/addons/skin.estuary/xml/Custom_1101_SettingsList.xml @@ -92,6 +92,7 @@ <width>700</width> <include>DialogSettingButton</include> <label>$LOCALIZE[22006]</label> + <label2>$INFO[Player.SubtitleDelay,[B],[/B]]</label2> <onclick>SubtitleDelay</onclick> <enable>VideoPlayer.HasSubtitles + VideoPlayer.SubtitlesEnabled</enable> </control> @@ -99,7 +100,7 @@ <width>700</width> <include>DialogSettingButton</include> <label>$LOCALIZE[31051]</label> - <label2>[B]$INFO[VideoPlayer.SubtitlesLanguage][/B]</label2> + <label2>$INFO[VideoPlayer.SubtitlesLanguage,[B],[/B]]</label2> <onclick>CycleSubtitle</onclick> <enable>VideoPlayer.HasSubtitles + VideoPlayer.SubtitlesEnabled</enable> </control> diff --git a/addons/skin.estuary/xml/DialogGameControllers.xml b/addons/skin.estuary/xml/DialogGameControllers.xml index 0b9128aa18..18cb7892b9 100644 --- a/addons/skin.estuary/xml/DialogGameControllers.xml +++ b/addons/skin.estuary/xml/DialogGameControllers.xml @@ -162,7 +162,7 @@ <include content="DefaultDialogButton"> <param name="width" value="350" /> <param name="id" value="21" /> - <param name="label" value="$LOCALIZE[35019]" /> + <param name="label" value="$LOCALIZE[35013]" /> </include> </control> </control> diff --git a/addons/skin.estuary/xml/DialogKeyboard.xml b/addons/skin.estuary/xml/DialogKeyboard.xml index 9c4bbe71f3..90ff52fc2b 100644 --- a/addons/skin.estuary/xml/DialogKeyboard.xml +++ b/addons/skin.estuary/xml/DialogKeyboard.xml @@ -618,7 +618,6 @@ <top>690</top> <width>1480</width> <height>90</height> - <label>$INFO[ListItem.Label]</label> <font>font37</font> <shadowcolor>text_shadow</shadowcolor> <aligny>center</aligny> @@ -644,7 +643,6 @@ <top>770</top> <width>1480</width> <height>90</height> - <label>$INFO[ListItem.Label]</label> <font>font37</font> <shadowcolor>text_shadow</shadowcolor> <aligny>center</aligny> diff --git a/addons/skin.estuary/xml/DialogNumeric.xml b/addons/skin.estuary/xml/DialogNumeric.xml index 6ccffa7360..35b729d245 100644 --- a/addons/skin.estuary/xml/DialogNumeric.xml +++ b/addons/skin.estuary/xml/DialogNumeric.xml @@ -29,7 +29,6 @@ <width>477</width> <height>80</height> <font>font37</font> - <textcolor>button_focus</textcolor> <align>center</align> <aligny>center</aligny> </control> diff --git a/addons/skin.estuary/xml/DialogPVRInfo.xml b/addons/skin.estuary/xml/DialogPVRInfo.xml index 147cbc84c7..e5560578ba 100644 --- a/addons/skin.estuary/xml/DialogPVRInfo.xml +++ b/addons/skin.estuary/xml/DialogPVRInfo.xml @@ -38,7 +38,7 @@ <onleft>61</onleft> <onright>61</onright> <ondown>9000</ondown> - <onup>49</onup> + <onup>9000</onup> <onclick>SetProperty(TextViewer_Header,$LOCALIZE[207],home)</onclick> <onclick>SetProperty(TextViewer_Text,$ESCINFO[ListItem.Plot],home)</onclick> <onclick>ActivateWindow(1102)</onclick> @@ -63,8 +63,8 @@ <defaultcontrol>5</defaultcontrol> <onleft>9000</onleft> <onright>9000</onright> - <onup>49</onup> - <ondown>49</ondown> + <onup>61</onup> + <ondown>61</ondown> <include content="InfoDialogButton"> <param name="id" value="5" /> <param name="icon" value="icons/infodialogs/launch.png" /> diff --git a/addons/skin.estuary/xml/DialogSeekBar.xml b/addons/skin.estuary/xml/DialogSeekBar.xml index 17709f0cf1..a66a724d36 100644 --- a/addons/skin.estuary/xml/DialogSeekBar.xml +++ b/addons/skin.estuary/xml/DialogSeekBar.xml @@ -1,7 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <window> - <visible>[[Player.Seeking | Player.DisplayAfterSeek | [Player.Paused + !Player.Caching] | Player.Forwarding | Player.Rewinding | Player.ShowInfo | Window.IsActive(fullscreeninfo) | Window.IsActive(videoosd) | Window.IsActive(playerprocessinfo)] + Window.IsActive(fullscreenvideo)] | Window.IsActive(visualisation) | !IsEmpty(Player.SeekNumeric)</visible> + <visible>Player.Seeking | Player.DisplayAfterSeek | [Player.Paused + !Player.Caching] | Player.Forwarding | Player.Rewinding | Player.ShowInfo | Window.IsActive(fullscreeninfo) | Window.IsActive(videoosd) | Window.IsActive(musicosd) | Window.IsActive(playerprocessinfo) | !IsEmpty(Player.SeekNumeric)</visible> <visible>!Window.IsActive(sliderdialog)</visible> + <visible>Window.IsActive(visualisation) | Window.IsActive(fullscreenvideo)</visible> <include>Animation_BottomSlide</include> <depth>DepthOSD</depth> <zorder>0</zorder> @@ -47,7 +48,7 @@ <visible>player.chaptercount</visible> </control> <control type="group"> - <visible>Player.Recording</visible> + <visible>Player.Recording + !PVR.ChannelPreviewActive</visible> <control type="image"> <top>100</top> <left>20</left> diff --git a/addons/skin.estuary/xml/DialogVideoInfo.xml b/addons/skin.estuary/xml/DialogVideoInfo.xml index 8f6c67f75c..99373de0c2 100644 --- a/addons/skin.estuary/xml/DialogVideoInfo.xml +++ b/addons/skin.estuary/xml/DialogVideoInfo.xml @@ -405,8 +405,7 @@ <include content="InfoDialogButton"> <param name="id" value="441" /> <param name="icon" value="icons/infodialogs/cinema.png" /> - <param name="onclick_1" value="Dialog.Close(MovieInformation)" /> - <param name="onclick_2" value="RunScript(script.cinemavision,experience)" /> + <param name="onclick_1" value="RunScript(script.cinemavision,dbtype=$INFO[ListItem.DBType],dbid=$INFO[ListItem.DBID])" /> <param name="label" value="$LOCALIZE[31003]" /> <param name="visible" value="System.HasAddon(script.cinemavision) + [String.IsEqual(ListItem.DBType,movie) | String.IsEqual(ListItem.DBType,tvshow) | String.IsEqual(ListItem.DBType,season) | String.IsEqual(ListItem.DBType,episode)]" /> </include> diff --git a/addons/skin.estuary/xml/Variables.xml b/addons/skin.estuary/xml/Variables.xml index c182e57291..5127de1bed 100644 --- a/addons/skin.estuary/xml/Variables.xml +++ b/addons/skin.estuary/xml/Variables.xml @@ -172,10 +172,6 @@ <value condition="!String.IsEmpty(ListItem.Art(season.poster))">$INFO[ListItem.Art(season.poster)]</value> <value condition="!String.IsEmpty(ListItem.Art(tvshow.poster))">$INFO[ListItem.Art(tvshow.poster)]</value> </variable> - <variable name="ListPosterVar"> - <value condition="ListItem.IsParentFolder">DefaultFolderBackPoster.png</value> - <value>$INFO[ListItem.Art(poster)]</value> - </variable> <variable name="BannerLabel2Var"> <value condition="String.IsEqual(Listitem.DBType,tvshow)">$INFO[ListItem.Property(WatchedEpisodes)]$INFO[ListItem.Property(TotalEpisodes), / ,]</value> <!-- <value>$INFO[ListItem.Year]</value> diff --git a/addons/skin.estuary/xml/View_55_WideList.xml b/addons/skin.estuary/xml/View_55_WideList.xml index c567df747a..462bf0b26b 100644 --- a/addons/skin.estuary/xml/View_55_WideList.xml +++ b/addons/skin.estuary/xml/View_55_WideList.xml @@ -21,7 +21,7 @@ <ondown>55</ondown> <viewtype label="$LOCALIZE[31107]">list</viewtype> <visible>Container.Content(artists) | Container.Content(albums) | Container.Content(songs) | Container.Content(addons) | Container.Content(actors) | Container.Content(directors) | Container.Content(files) | Container.Content(mixed) | Container.Content(musicvideos) | Container.Content(videos) | Container.Content() | Container.Content(episodes) | Container.Content(movies) | Container.Content(tvshows) | Container.Content(seasons) | Container.Content(unknown)</visible> - <focusedlayout height="list_item_height" width="widelist_width" condition="Container.Content(artists) | Container.Content(albums) | Container.Content(actors) | Container.Content(directors) | Container.Content(files) | Container.Content(mixed) | Container.Content(videos) | Container.Content(episodes) | Container.Content(movies) | Container.Content(tvshows) | Container.Content(seasons) | Container.Content(unknown)"> + <focusedlayout height="list_item_height" width="widelist_width" condition="Container.Content(artists) | Container.Content(albums) | Container.Content(actors) | Container.Content(directors) | Container.Content(files) | Container.Content(mixed) | Container.Content(videos) | Container.Content(musicvideos) | Container.Content(episodes) | Container.Content(movies) | Container.Content(tvshows) | Container.Content(seasons) | Container.Content(unknown)"> <control type="image"> <left>0</left> <right>0</right> @@ -37,7 +37,7 @@ <aligny>center</aligny> <label>$INFO[ListItem.Year]</label> <shadowcolor>text_shadow</shadowcolor> - <visible>!Container.Content(tvshows) + !Container.Content(seasons) + !Container.Content(episodes) + !Container.Content(movies) + !Container.Content(videos)</visible> + <visible>!Container.Content(tvshows) + !Container.Content(seasons) + !Container.Content(episodes) + !Container.Content(videos) + !Container.Content(musicvideos) + !Container.Content(movies)</visible> </control> <control type="image"> <left>35</left> @@ -45,7 +45,7 @@ <width>32</width> <height>32</height> <texture>$VAR[ListWatchedIconVar]</texture> - <visible>Container.Content(tvshows) | Container.Content(seasons) | Container.Content(episodes) | Container.Content(movies) | Container.Content(videos) | String.IsEmpty(ListItem.Year)</visible> + <visible>Container.Content(tvshows) | Container.Content(seasons) | Container.Content(episodes) | Container.Content(movies) | Container.Content(videos) | Container.Content(musicvideos) | String.IsEmpty(ListItem.Year)</visible> </control> <control type="label"> <left>105</left> @@ -68,7 +68,7 @@ <shadowcolor>text_shadow</shadowcolor> </control> </focusedlayout> - <itemlayout height="list_item_height" width="widelist_width" condition="Container.Content(artists) | Container.Content(albums) | Container.Content(actors) | Container.Content(directors) | Container.Content(files) | Container.Content(mixed) | Container.Content(videos) | Container.Content(episodes) | Container.Content(movies) | Container.Content(tvshows) | Container.Content(seasons) | Container.Content(unknown)"> + <itemlayout height="list_item_height" width="widelist_width" condition="Container.Content(artists) | Container.Content(albums) | Container.Content(actors) | Container.Content(directors) | Container.Content(files) | Container.Content(mixed) | Container.Content(videos) | Container.Content(musicvideos) | Container.Content(episodes) | Container.Content(movies) | Container.Content(tvshows) | Container.Content(seasons) | Container.Content(unknown)"> <control type="label"> <left>18</left> <top>0</top> @@ -78,7 +78,7 @@ <label>$INFO[ListItem.Year]</label> <textcolor>button_focus</textcolor> <shadowcolor>text_shadow</shadowcolor> - <visible>!Container.Content(tvshows) + !Container.Content(seasons) + !Container.Content(episodes) + !Container.Content(movies) + !Container.Content(videos)</visible> + <visible>!Container.Content(tvshows) + !Container.Content(seasons) + !Container.Content(episodes) + !Container.Content(videos) + !Container.Content(musicvideos) + !Container.Content(movies)</visible> </control> <control type="image"> <left>35</left> @@ -86,7 +86,7 @@ <width>32</width> <height>32</height> <texture colordiffuse="grey">$VAR[ListWatchedIconVar]</texture> - <visible>Container.Content(tvshows) | Container.Content(seasons) | Container.Content(episodes) | Container.Content(movies) | Container.Content(videos) | String.IsEmpty(ListItem.Year)</visible> + <visible>Container.Content(tvshows) | Container.Content(seasons) | Container.Content(episodes) | Container.Content(movies) | Container.Content(videos) | Container.Content(musicvideos) | String.IsEmpty(ListItem.Year)</visible> </control> <control type="label"> <left>105</left> diff --git a/addons/webinterface.default/addon.xml b/addons/webinterface.default/addon.xml index 00fdda01c8..0b5efa6e89 100644 --- a/addons/webinterface.default/addon.xml +++ b/addons/webinterface.default/addon.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <addon id="webinterface.default" - version="2.4.2" + version="2.4.3" name="Kodi web interface - Chorus2" provider-name="jez500, Team Kodi"> <requires> diff --git a/addons/webinterface.default/js/kodi-webinterface.js b/addons/webinterface.default/js/kodi-webinterface.js index 96b78b2df9..c6b54fe626 100644 --- a/addons/webinterface.default/js/kodi-webinterface.js +++ b/addons/webinterface.default/js/kodi-webinterface.js @@ -1,4 +1,4 @@ -/*! Chorus 2 - A web interface for Kodi. Created by Jeremy Graham - built on 28-01-2017 */ +/*! Chorus 2 - A web interface for Kodi. Created by Jeremy Graham - built on 21-02-2017 */ !function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){function c(a){var b=a.length,c=ea.type(a);return"function"===c||ea.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}function d(a,b,c){if(ea.isFunction(b))return ea.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return ea.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(ma.test(b))return ea.filter(b,a,c);b=ea.filter(b,a)}return ea.grep(a,function(a){return ea.inArray(a,b)>=0!==c})}function e(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}function f(a){var b=ua[a]={};return ea.each(a.match(ta)||[],function(a,c){b[c]=!0}),b}function g(){oa.addEventListener?(oa.removeEventListener("DOMContentLoaded",h,!1),a.removeEventListener("load",h,!1)):(oa.detachEvent("onreadystatechange",h),a.detachEvent("onload",h))}function h(){(oa.addEventListener||"load"===event.type||"complete"===oa.readyState)&&(g(),ea.ready())}function i(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(za,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:ya.test(c)?ea.parseJSON(c):c}catch(e){}ea.data(a,b,c)}else c=void 0}return c}function j(a){var b;for(b in a)if(("data"!==b||!ea.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function k(a,b,c,d){if(ea.acceptData(a)){var e,f,g=ea.expando,h=a.nodeType,i=h?ea.cache:a,j=h?a[g]:a[g]&&g;if(j&&i[j]&&(d||i[j].data)||void 0!==c||"string"!=typeof b)return j||(j=h?a[g]=W.pop()||ea.guid++:g),i[j]||(i[j]=h?{}:{toJSON:ea.noop}),("object"==typeof b||"function"==typeof b)&&(d?i[j]=ea.extend(i[j],b):i[j].data=ea.extend(i[j].data,b)),f=i[j],d||(f.data||(f.data={}),f=f.data),void 0!==c&&(f[ea.camelCase(b)]=c),"string"==typeof b?(e=f[b],null==e&&(e=f[ea.camelCase(b)])):e=f,e}}function l(a,b,c){if(ea.acceptData(a)){var d,e,f=a.nodeType,g=f?ea.cache:a,h=f?a[ea.expando]:ea.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){ea.isArray(b)?b=b.concat(ea.map(b,ea.camelCase)):b in d?b=[b]:(b=ea.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;for(;e--;)delete d[b[e]];if(c?!j(d):!ea.isEmptyObject(d))return}(c||(delete g[h].data,j(g[h])))&&(f?ea.cleanData([a],!0):ca.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}function m(){return!0}function n(){return!1}function o(){try{return oa.activeElement}catch(a){}}function p(a){var b=Ka.split("|"),c=a.createDocumentFragment();if(c.createElement)for(;b.length;)c.createElement(b.pop());return c}function q(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==xa?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==xa?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||ea.nodeName(d,b)?f.push(d):ea.merge(f,q(d,b));return void 0===b||b&&ea.nodeName(a,b)?ea.merge([a],f):f}function r(a){Ea.test(a.type)&&(a.defaultChecked=a.checked)}function s(a,b){return ea.nodeName(a,"table")&&ea.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function t(a){return a.type=(null!==ea.find.attr(a,"type"))+"/"+a.type,a}function u(a){var b=Va.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function v(a,b){for(var c,d=0;null!=(c=a[d]);d++)ea._data(c,"globalEval",!b||ea._data(b[d],"globalEval"))}function w(a,b){if(1===b.nodeType&&ea.hasData(a)){var c,d,e,f=ea._data(a),g=ea._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)ea.event.add(b,c,h[c][d])}g.data&&(g.data=ea.extend({},g.data))}}function x(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!ca.noCloneEvent&&b[ea.expando]){e=ea._data(b);for(d in e.events)ea.removeEvent(b,d,e.handle);b.removeAttribute(ea.expando)}"script"===c&&b.text!==a.text?(t(b).text=a.text,u(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),ca.html5Clone&&a.innerHTML&&!ea.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&Ea.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}function y(b,c){var d,e=ea(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:ea.css(e[0],"display");return e.detach(),f}function z(a){var b=oa,c=_a[a];return c||(c=y(a,b),"none"!==c&&c||($a=($a||ea("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=($a[0].contentWindow||$a[0].contentDocument).document,b.write(),b.close(),c=y(a,b),$a.detach()),_a[a]=c),c}function A(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}function B(a,b){if(b in a)return b;for(var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=mb.length;e--;)if(b=mb[e]+c,b in a)return b;return d}function C(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=ea._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&Ca(d)&&(f[g]=ea._data(d,"olddisplay",z(d.nodeName)))):(e=Ca(d),(c&&"none"!==c||!e)&&ea._data(d,"olddisplay",e?c:ea.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function D(a,b,c){var d=ib.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function E(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=ea.css(a,c+Ba[f],!0,e)),d?("content"===c&&(g-=ea.css(a,"padding"+Ba[f],!0,e)),"margin"!==c&&(g-=ea.css(a,"border"+Ba[f]+"Width",!0,e))):(g+=ea.css(a,"padding"+Ba[f],!0,e),"padding"!==c&&(g+=ea.css(a,"border"+Ba[f]+"Width",!0,e)));return g}function F(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=ab(a),g=ca.boxSizing&&"border-box"===ea.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=bb(a,b,f),(0>e||null==e)&&(e=a.style[b]),db.test(e))return e;d=g&&(ca.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+E(a,b,c||(g?"border":"content"),d,f)+"px"}function G(a,b,c,d,e){return new G.prototype.init(a,b,c,d,e)}function H(){return setTimeout(function(){nb=void 0}),nb=ea.now()}function I(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=Ba[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function J(a,b,c){for(var d,e=(tb[b]||[]).concat(tb["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function K(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},n=a.style,o=a.nodeType&&Ca(a),p=ea._data(a,"fxshow");c.queue||(h=ea._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued--,ea.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[n.overflow,n.overflowX,n.overflowY],j=ea.css(a,"display"),k="none"===j?ea._data(a,"olddisplay")||z(a.nodeName):j,"inline"===k&&"none"===ea.css(a,"float")&&(ca.inlineBlockNeedsLayout&&"inline"!==z(a.nodeName)?n.zoom=1:n.display="inline-block")),c.overflow&&(n.overflow="hidden",ca.shrinkWrapBlocks()||l.always(function(){n.overflow=c.overflow[0],n.overflowX=c.overflow[1],n.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],pb.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(o?"hide":"show")){if("show"!==e||!p||void 0===p[d])continue;o=!0}m[d]=p&&p[d]||ea.style(a,d)}else j=void 0;if(ea.isEmptyObject(m))"inline"===("none"===j?z(a.nodeName):j)&&(n.display=j);else{p?"hidden"in p&&(o=p.hidden):p=ea._data(a,"fxshow",{}),f&&(p.hidden=!o),o?ea(a).show():l.done(function(){ea(a).hide()}),l.done(function(){var b;ea._removeData(a,"fxshow");for(b in m)ea.style(a,b,m[b])});for(d in m)g=J(o?p[d]:0,d,l),d in p||(p[d]=g.start,o&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function L(a,b){var c,d,e,f,g;for(c in a)if(d=ea.camelCase(c),e=b[d],f=a[c],ea.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=ea.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function M(a,b,c){var d,e,f=0,g=sb.length,h=ea.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=nb||H(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:ea.extend({},b),opts:ea.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:nb||H(),duration:c.duration,tweens:[],createTween:function(b,c){var d=ea.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(L(k,j.opts.specialEasing);g>f;f++)if(d=sb[f].call(j,a,k,j.opts))return d;return ea.map(k,J,j),ea.isFunction(j.opts.start)&&j.opts.start.call(a,j),ea.fx.timer(ea.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}function N(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(ta)||[];if(ea.isFunction(c))for(;d=f[e++];)"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function O(a,b,c,d){function e(h){var i;return f[h]=!0,ea.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||g||f[j]?g?!(i=j):void 0:(b.dataTypes.unshift(j),e(j),!1)}),i}var f={},g=a===Rb;return e(b.dataTypes[0])||!f["*"]&&e("*")}function P(a,b){var c,d,e=ea.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&ea.extend(!0,a,c),a}function Q(a,b,c){for(var d,e,f,g,h=a.contents,i=a.dataTypes;"*"===i[0];)i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function R(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];for(f=k.shift();f;)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}function S(a,b,c,d){var e;if(ea.isArray(b))ea.each(b,function(b,e){c||Vb.test(a)?d(a,e):S(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==ea.type(b))d(a,b);else for(e in b)S(a+"["+e+"]",b[e],c,d)}function T(){try{return new a.XMLHttpRequest}catch(b){}}function U(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function V(a){return ea.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}var W=[],X=W.slice,Y=W.concat,Z=W.push,$=W.indexOf,_={},aa=_.toString,ba=_.hasOwnProperty,ca={},da="1.11.1",ea=function(a,b){return new ea.fn.init(a,b)},fa=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,ga=/^-ms-/,ha=/-([\da-z])/gi,ia=function(a,b){return b.toUpperCase()};ea.fn=ea.prototype={jquery:da,constructor:ea,selector:"",length:0,toArray:function(){return X.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:X.call(this)},pushStack:function(a){var b=ea.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return ea.each(this,a,b)},map:function(a){return this.pushStack(ea.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(X.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:Z,sort:W.sort,splice:W.splice},ea.extend=ea.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||ea.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(ea.isPlainObject(c)||(b=ea.isArray(c)))?(b?(b=!1,f=a&&ea.isArray(a)?a:[]):f=a&&ea.isPlainObject(a)?a:{},g[d]=ea.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},ea.extend({expando:"jQuery"+(da+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===ea.type(a)},isArray:Array.isArray||function(a){return"array"===ea.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!ea.isArray(a)&&a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==ea.type(a)||a.nodeType||ea.isWindow(a))return!1;try{if(a.constructor&&!ba.call(a,"constructor")&&!ba.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(ca.ownLast)for(b in a)return ba.call(a,b);for(b in a);return void 0===b||ba.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?_[aa.call(a)]||"object":typeof a},globalEval:function(b){b&&ea.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(ga,"ms-").replace(ha,ia)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,d){var e,f=0,g=a.length,h=c(a);if(d){if(h)for(;g>f&&(e=b.apply(a[f],d),e!==!1);f++);else for(f in a)if(e=b.apply(a[f],d),e===!1)break}else if(h)for(;g>f&&(e=b.call(a[f],f,a[f]),e!==!1);f++);else for(f in a)if(e=b.call(a[f],f,a[f]),e===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(fa,"")},makeArray:function(a,b){var d=b||[];return null!=a&&(c(Object(a))?ea.merge(d,"string"==typeof a?[a]:a):Z.call(d,a)),d},inArray:function(a,b,c){var d;if(b){if($)return $.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;)a[e++]=b[d++];if(c!==c)for(;void 0!==b[d];)a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,d){var e,f=0,g=a.length,h=c(a),i=[];if(h)for(;g>f;f++)e=b(a[f],f,d),null!=e&&i.push(e);else for(f in a)e=b(a[f],f,d),null!=e&&i.push(e);return Y.apply([],i)},guid:1,proxy:function(a,b){var c,d,e;return"string"==typeof b&&(e=a[b],b=a,a=e),ea.isFunction(a)?(c=X.call(arguments,2),d=function(){return a.apply(b||this,c.concat(X.call(arguments)))},d.guid=a.guid=a.guid||ea.guid++,d):void 0},now:function(){return+new Date},support:ca}),ea.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){_["[object "+b+"]"]=b.toLowerCase()});var ja=function(a){function b(a,b,c,d){var e,f,g,h,i,j,l,n,o,p;if((b?b.ownerDocument||b:O)!==G&&F(b),b=b||G,c=c||[],!a||"string"!=typeof a)return c;if(1!==(h=b.nodeType)&&9!==h)return[];if(I&&!d){if(e=sa.exec(a))if(g=e[1]){if(9===h){if(f=b.getElementById(g),!f||!f.parentNode)return c;if(f.id===g)return c.push(f),c}else if(b.ownerDocument&&(f=b.ownerDocument.getElementById(g))&&M(b,f)&&f.id===g)return c.push(f),c}else{if(e[2])return _.apply(c,b.getElementsByTagName(a)),c;if((g=e[3])&&v.getElementsByClassName&&b.getElementsByClassName)return _.apply(c,b.getElementsByClassName(g)),c}if(v.qsa&&(!J||!J.test(a))){if(n=l=N,o=b,p=9===h&&a,1===h&&"object"!==b.nodeName.toLowerCase()){for(j=z(a),(l=b.getAttribute("id"))?n=l.replace(ua,"\\$&"):b.setAttribute("id",n),n="[id='"+n+"'] ",i=j.length;i--;)j[i]=n+m(j[i]);o=ta.test(a)&&k(b.parentNode)||b,p=j.join(",")}if(p)try{return _.apply(c,o.querySelectorAll(p)),c}catch(q){}finally{l||b.removeAttribute("id")}}}return B(a.replace(ia,"$1"),b,c,d)}function c(){function a(c,d){return b.push(c+" ")>w.cacheLength&&delete a[b.shift()],a[c+" "]=d}var b=[];return a}function d(a){return a[N]=!0,a}function e(a){var b=G.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function f(a,b){for(var c=a.split("|"),d=a.length;d--;)w.attrHandle[c[d]]=b}function g(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||W)-(~a.sourceIndex||W);if(d)return d;if(c)for(;c=c.nextSibling;)if(c===b)return-1;return a?1:-1}function h(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function i(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function j(a){return d(function(b){return b=+b,d(function(c,d){for(var e,f=a([],c.length,b),g=f.length;g--;)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function k(a){return a&&typeof a.getElementsByTagName!==V&&a}function l(){}function m(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function n(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=Q++;return b.first?function(b,c,f){for(;b=b[d];)if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[P,f];if(g){for(;b=b[d];)if((1===b.nodeType||e)&&a(b,c,g))return!0}else for(;b=b[d];)if(1===b.nodeType||e){if(i=b[N]||(b[N]={}),(h=i[d])&&h[0]===P&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function o(a){return a.length>1?function(b,c,d){for(var e=a.length;e--;)if(!a[e](b,c,d))return!1;return!0}:a[0]}function p(a,c,d){for(var e=0,f=c.length;f>e;e++)b(a,c[e],d);return d}function q(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function r(a,b,c,e,f,g){return e&&!e[N]&&(e=r(e)),f&&!f[N]&&(f=r(f,g)),d(function(d,g,h,i){var j,k,l,m=[],n=[],o=g.length,r=d||p(b||"*",h.nodeType?[h]:h,[]),s=!a||!d&&b?r:q(r,m,a,h,i),t=c?f||(d?a:o||e)?[]:g:s;if(c&&c(s,t,h,i),e)for(j=q(t,n),e(j,[],h,i),k=j.length;k--;)(l=j[k])&&(t[n[k]]=!(s[n[k]]=l));if(d){if(f||a){if(f){for(j=[],k=t.length;k--;)(l=t[k])&&j.push(s[k]=l);f(null,t=[],j,i)}for(k=t.length;k--;)(l=t[k])&&(j=f?ba.call(d,l):m[k])>-1&&(d[j]=!(g[j]=l))}}else t=q(t===g?t.splice(o,t.length):t),f?f(null,g,t,i):_.apply(g,t)})}function s(a){for(var b,c,d,e=a.length,f=w.relative[a[0].type],g=f||w.relative[" "],h=f?1:0,i=n(function(a){return a===b},g,!0),j=n(function(a){return ba.call(b,a)>-1},g,!0),k=[function(a,c,d){return!f&&(d||c!==C)||((b=c).nodeType?i(a,c,d):j(a,c,d))}];e>h;h++)if(c=w.relative[a[h].type])k=[n(o(k),c)];else{if(c=w.filter[a[h].type].apply(null,a[h].matches),c[N]){for(d=++h;e>d&&!w.relative[a[d].type];d++);return r(h>1&&o(k),h>1&&m(a.slice(0,h-1).concat({value:" "===a[h-2].type?"*":""})).replace(ia,"$1"),c,d>h&&s(a.slice(h,d)),e>d&&s(a=a.slice(d)),e>d&&m(a))}k.push(c)}return o(k)}function t(a,c){var e=c.length>0,f=a.length>0,g=function(d,g,h,i,j){var k,l,m,n=0,o="0",p=d&&[],r=[],s=C,t=d||f&&w.find.TAG("*",j),u=P+=null==s?1:Math.random()||.1,v=t.length;for(j&&(C=g!==G&&g);o!==v&&null!=(k=t[o]);o++){if(f&&k){for(l=0;m=a[l++];)if(m(k,g,h)){i.push(k);break}j&&(P=u)}e&&((k=!m&&k)&&n--,d&&p.push(k))}if(n+=o,e&&o!==n){for(l=0;m=c[l++];)m(p,r,g,h);if(d){if(n>0)for(;o--;)p[o]||r[o]||(r[o]=Z.call(i));r=q(r)}_.apply(i,r),j&&!d&&r.length>0&&n+c.length>1&&b.uniqueSort(i)}return j&&(P=u,C=s),p};return e?d(g):g}var u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N="sizzle"+-new Date,O=a.document,P=0,Q=0,R=c(),S=c(),T=c(),U=function(a,b){return a===b&&(E=!0),0},V="undefined",W=1<<31,X={}.hasOwnProperty,Y=[],Z=Y.pop,$=Y.push,_=Y.push,aa=Y.slice,ba=Y.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},ca="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",da="[\\x20\\t\\r\\n\\f]",ea="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",fa=ea.replace("w","w#"),ga="\\["+da+"*("+ea+")(?:"+da+"*([*^$|!~]?=)"+da+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+fa+"))|)"+da+"*\\]",ha=":("+ea+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+ga+")*)|.*)\\)|)",ia=new RegExp("^"+da+"+|((?:^|[^\\\\])(?:\\\\.)*)"+da+"+$","g"),ja=new RegExp("^"+da+"*,"+da+"*"),ka=new RegExp("^"+da+"*([>+~]|"+da+")"+da+"*"),la=new RegExp("="+da+"*([^\\]'\"]*?)"+da+"*\\]","g"),ma=new RegExp(ha),na=new RegExp("^"+fa+"$"),oa={ID:new RegExp("^#("+ea+")"),CLASS:new RegExp("^\\.("+ea+")"),TAG:new RegExp("^("+ea.replace("w","w*")+")"),ATTR:new RegExp("^"+ga),PSEUDO:new RegExp("^"+ha),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+da+"*(even|odd|(([+-]|)(\\d*)n|)"+da+"*(?:([+-]|)"+da+"*(\\d+)|))"+da+"*\\)|)","i"),bool:new RegExp("^(?:"+ca+")$","i"),needsContext:new RegExp("^"+da+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+da+"*((?:-\\d)?\\d*)"+da+"*\\)|)(?=[^-]|$)","i")},pa=/^(?:input|select|textarea|button)$/i,qa=/^h\d$/i,ra=/^[^{]+\{\s*\[native \w/,sa=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ta=/[+~]/,ua=/'|\\/g,va=new RegExp("\\\\([\\da-f]{1,6}"+da+"?|("+da+")|.)","ig"),wa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{_.apply(Y=aa.call(O.childNodes),O.childNodes),Y[O.childNodes.length].nodeType}catch(xa){_={apply:Y.length?function(a,b){$.apply(a,aa.call(b))}:function(a,b){for(var c=a.length,d=0;a[c++]=b[d++];);a.length=c-1}}}v=b.support={},y=b.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},F=b.setDocument=function(a){var b,c=a?a.ownerDocument||a:O,d=c.defaultView;return c!==G&&9===c.nodeType&&c.documentElement?(G=c,H=c.documentElement,I=!y(c),d&&d!==d.top&&(d.addEventListener?d.addEventListener("unload",function(){F()},!1):d.attachEvent&&d.attachEvent("onunload",function(){F()})),v.attributes=e(function(a){return a.className="i",!a.getAttribute("className")}),v.getElementsByTagName=e(function(a){return a.appendChild(c.createComment("")),!a.getElementsByTagName("*").length}),v.getElementsByClassName=ra.test(c.getElementsByClassName)&&e(function(a){return a.innerHTML="<div class='a'></div><div class='a i'></div>",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),v.getById=e(function(a){return H.appendChild(a).id=N,!c.getElementsByName||!c.getElementsByName(N).length}),v.getById?(w.find.ID=function(a,b){if(typeof b.getElementById!==V&&I){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},w.filter.ID=function(a){var b=a.replace(va,wa);return function(a){return a.getAttribute("id")===b}}):(delete w.find.ID,w.filter.ID=function(a){var b=a.replace(va,wa);return function(a){var c=typeof a.getAttributeNode!==V&&a.getAttributeNode("id");return c&&c.value===b}}),w.find.TAG=v.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==V?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){for(;c=f[e++];)1===c.nodeType&&d.push(c);return d}return f},w.find.CLASS=v.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==V&&I?b.getElementsByClassName(a):void 0},K=[],J=[],(v.qsa=ra.test(c.querySelectorAll))&&(e(function(a){a.innerHTML="<select msallowclip=''><option selected=''></option></select>",a.querySelectorAll("[msallowclip^='']").length&&J.push("[*^$]="+da+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||J.push("\\["+da+"*(?:value|"+ca+")"),a.querySelectorAll(":checked").length||J.push(":checked")}),e(function(a){var b=c.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&J.push("name"+da+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||J.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),J.push(",.*:")})),(v.matchesSelector=ra.test(L=H.matches||H.webkitMatchesSelector||H.mozMatchesSelector||H.oMatchesSelector||H.msMatchesSelector))&&e(function(a){v.disconnectedMatch=L.call(a,"div"),L.call(a,"[s!='']:x"),K.push("!=",ha)}),J=J.length&&new RegExp(J.join("|")),K=K.length&&new RegExp(K.join("|")),b=ra.test(H.compareDocumentPosition),M=b||ra.test(H.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)for(;b=b.parentNode;)if(b===a)return!0;return!1},U=b?function(a,b){if(a===b)return E=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!v.sortDetached&&b.compareDocumentPosition(a)===d?a===c||a.ownerDocument===O&&M(O,a)?-1:b===c||b.ownerDocument===O&&M(O,b)?1:D?ba.call(D,a)-ba.call(D,b):0:4&d?-1:1)}:function(a,b){if(a===b)return E=!0,0;var d,e=0,f=a.parentNode,h=b.parentNode,i=[a],j=[b];if(!f||!h)return a===c?-1:b===c?1:f?-1:h?1:D?ba.call(D,a)-ba.call(D,b):0;if(f===h)return g(a,b);for(d=a;d=d.parentNode;)i.unshift(d);for(d=b;d=d.parentNode;)j.unshift(d);for(;i[e]===j[e];)e++;return e?g(i[e],j[e]):i[e]===O?-1:j[e]===O?1:0},c):G},b.matches=function(a,c){return b(a,null,null,c)},b.matchesSelector=function(a,c){if((a.ownerDocument||a)!==G&&F(a),c=c.replace(la,"='$1']"),v.matchesSelector&&I&&(!K||!K.test(c))&&(!J||!J.test(c)))try{var d=L.call(a,c);if(d||v.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return b(c,G,null,[a]).length>0},b.contains=function(a,b){return(a.ownerDocument||a)!==G&&F(a),M(a,b)},b.attr=function(a,b){(a.ownerDocument||a)!==G&&F(a);var c=w.attrHandle[b.toLowerCase()],d=c&&X.call(w.attrHandle,b.toLowerCase())?c(a,b,!I):void 0;return void 0!==d?d:v.attributes||!I?a.getAttribute(b):(d=a.getAttributeNode(b))&&d.specified?d.value:null},b.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},b.uniqueSort=function(a){var b,c=[],d=0,e=0;if(E=!v.detectDuplicates,D=!v.sortStable&&a.slice(0),a.sort(U),E){for(;b=a[e++];)b===a[e]&&(d=c.push(e));for(;d--;)a.splice(c[d],1)}return D=null,a},x=b.getText=function(a){var b,c="",d=0,e=a.nodeType;if(e){if(1===e||9===e||11===e){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=x(a)}else if(3===e||4===e)return a.nodeValue}else for(;b=a[d++];)c+=x(b);return c},w=b.selectors={cacheLength:50,createPseudo:d,match:oa,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(va,wa),a[3]=(a[3]||a[4]||a[5]||"").replace(va,wa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||b.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&b.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return oa.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&ma.test(c)&&(b=z(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(va,wa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=R[a+" "];return b||(b=new RegExp("(^|"+da+")"+a+"("+da+"|$)"))&&R(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==V&&a.getAttribute("class")||"")})},ATTR:function(a,c,d){return function(e){var f=b.attr(e,a);return null==f?"!="===c:c?(f+="","="===c?f===d:"!="===c?f!==d:"^="===c?d&&0===f.indexOf(d):"*="===c?d&&f.indexOf(d)>-1:"$="===c?d&&f.slice(-d.length)===d:"~="===c?(" "+f+" ").indexOf(d)>-1:"|="===c?f===d||f.slice(0,d.length+1)===d+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){for(;p;){for(l=b;l=l[p];)if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){for(k=q[N]||(q[N]={}),j=k[a]||[],n=j[0]===P&&j[1],m=j[0]===P&&j[2],l=n&&q.childNodes[n];l=++n&&l&&l[p]||(m=n=0)||o.pop();)if(1===l.nodeType&&++m&&l===b){k[a]=[P,n,m];break}}else if(s&&(j=(b[N]||(b[N]={}))[a])&&j[0]===P)m=j[1];else for(;(l=++n&&l&&l[p]||(m=n=0)||o.pop())&&((h?l.nodeName.toLowerCase()!==r:1!==l.nodeType)||!++m||(s&&((l[N]||(l[N]={}))[a]=[P,m]),l!==b)););return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,c){var e,f=w.pseudos[a]||w.setFilters[a.toLowerCase()]||b.error("unsupported pseudo: "+a);return f[N]?f(c):f.length>1?(e=[a,a,"",c],w.setFilters.hasOwnProperty(a.toLowerCase())?d(function(a,b){for(var d,e=f(a,c),g=e.length;g--;)d=ba.call(a,e[g]),a[d]=!(b[d]=e[g])}):function(a){return f(a,0,e)}):f}},pseudos:{not:d(function(a){var b=[],c=[],e=A(a.replace(ia,"$1"));return e[N]?d(function(a,b,c,d){for(var f,g=e(a,null,d,[]),h=a.length;h--;)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,d,f){return b[0]=a,e(b,null,f,c),!c.pop()}}),has:d(function(a){return function(c){return b(a,c).length>0}}),contains:d(function(a){return function(b){return(b.textContent||b.innerText||x(b)).indexOf(a)>-1}}),lang:d(function(a){return na.test(a||"")||b.error("unsupported lang: "+a),a=a.replace(va,wa).toLowerCase(),function(b){var c;do if(c=I?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===H},focus:function(a){return a===G.activeElement&&(!G.hasFocus||G.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!w.pseudos.empty(a)},header:function(a){return qa.test(a.nodeName)},input:function(a){return pa.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:j(function(){return[0]}),last:j(function(a,b){return[b-1]}),eq:j(function(a,b,c){return[0>c?c+b:c]}),even:j(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:j(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:j(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:j(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},w.pseudos.nth=w.pseudos.eq;for(u in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})w.pseudos[u]=h(u);for(u in{submit:!0,reset:!0})w.pseudos[u]=i(u);return l.prototype=w.filters=w.pseudos,w.setFilters=new l,z=b.tokenize=function(a,c){var d,e,f,g,h,i,j,k=S[a+" "];if(k)return c?0:k.slice(0);for(h=a,i=[],j=w.preFilter;h;){(!d||(e=ja.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),d=!1,(e=ka.exec(h))&&(d=e.shift(),f.push({value:d,type:e[0].replace(ia," ")}),h=h.slice(d.length));for(g in w.filter)!(e=oa[g].exec(h))||j[g]&&!(e=j[g](e))||(d=e.shift(),f.push({value:d,type:g,matches:e }),h=h.slice(d.length));if(!d)break}return c?h.length:h?b.error(a):S(a,i).slice(0)},A=b.compile=function(a,b){var c,d=[],e=[],f=T[a+" "];if(!f){for(b||(b=z(a)),c=b.length;c--;)f=s(b[c]),f[N]?d.push(f):e.push(f);f=T(a,t(e,d)),f.selector=a}return f},B=b.select=function(a,b,c,d){var e,f,g,h,i,j="function"==typeof a&&a,l=!d&&z(a=j.selector||a);if(c=c||[],1===l.length){if(f=l[0]=l[0].slice(0),f.length>2&&"ID"===(g=f[0]).type&&v.getById&&9===b.nodeType&&I&&w.relative[f[1].type]){if(b=(w.find.ID(g.matches[0].replace(va,wa),b)||[])[0],!b)return c;j&&(b=b.parentNode),a=a.slice(f.shift().value.length)}for(e=oa.needsContext.test(a)?0:f.length;e--&&(g=f[e],!w.relative[h=g.type]);)if((i=w.find[h])&&(d=i(g.matches[0].replace(va,wa),ta.test(f[0].type)&&k(b.parentNode)||b))){if(f.splice(e,1),a=d.length&&m(f),!a)return _.apply(c,d),c;break}}return(j||A(a,l))(d,b,!I,c,ta.test(a)&&k(b.parentNode)||b),c},v.sortStable=N.split("").sort(U).join("")===N,v.detectDuplicates=!!E,F(),v.sortDetached=e(function(a){return 1&a.compareDocumentPosition(G.createElement("div"))}),e(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||f("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),v.attributes&&e(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||f("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),e(function(a){return null==a.getAttribute("disabled")})||f(ca,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),b}(a);ea.find=ja,ea.expr=ja.selectors,ea.expr[":"]=ea.expr.pseudos,ea.unique=ja.uniqueSort,ea.text=ja.getText,ea.isXMLDoc=ja.isXML,ea.contains=ja.contains;var ka=ea.expr.match.needsContext,la=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,ma=/^.[^:#\[\.,]*$/;ea.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?ea.find.matchesSelector(d,a)?[d]:[]:ea.find.matches(a,ea.grep(b,function(a){return 1===a.nodeType}))},ea.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(ea(a).filter(function(){for(b=0;e>b;b++)if(ea.contains(d[b],this))return!0}));for(b=0;e>b;b++)ea.find(a,d[b],c);return c=this.pushStack(e>1?ea.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(d(this,a||[],!1))},not:function(a){return this.pushStack(d(this,a||[],!0))},is:function(a){return!!d(this,"string"==typeof a&&ka.test(a)?ea(a):a||[],!1).length}});var na,oa=a.document,pa=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,qa=ea.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:pa.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||na).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof ea?b[0]:b,ea.merge(this,ea.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:oa,!0)),la.test(c[1])&&ea.isPlainObject(b))for(c in b)ea.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=oa.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return na.find(a);this.length=1,this[0]=d}return this.context=oa,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):ea.isFunction(a)?"undefined"!=typeof na.ready?na.ready(a):a(ea):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),ea.makeArray(a,this))};qa.prototype=ea.fn,na=ea(oa);var ra=/^(?:parents|prev(?:Until|All))/,sa={children:!0,contents:!0,next:!0,prev:!0};ea.extend({dir:function(a,b,c){for(var d=[],e=a[b];e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!ea(e).is(c));)1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),ea.fn.extend({has:function(a){var b,c=ea(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(ea.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=ka.test(a)||"string"!=typeof a?ea(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&ea.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?ea.unique(f):f)},index:function(a){return a?"string"==typeof a?ea.inArray(this[0],ea(a)):ea.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(ea.unique(ea.merge(this.get(),ea(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}}),ea.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return ea.dir(a,"parentNode")},parentsUntil:function(a,b,c){return ea.dir(a,"parentNode",c)},next:function(a){return e(a,"nextSibling")},prev:function(a){return e(a,"previousSibling")},nextAll:function(a){return ea.dir(a,"nextSibling")},prevAll:function(a){return ea.dir(a,"previousSibling")},nextUntil:function(a,b,c){return ea.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return ea.dir(a,"previousSibling",c)},siblings:function(a){return ea.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return ea.sibling(a.firstChild)},contents:function(a){return ea.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:ea.merge([],a.childNodes)}},function(a,b){ea.fn[a]=function(c,d){var e=ea.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=ea.filter(d,e)),this.length>1&&(sa[a]||(e=ea.unique(e)),ra.test(a)&&(e=e.reverse())),this.pushStack(e)}});var ta=/\S+/g,ua={};ea.Callbacks=function(a){a="string"==typeof a?ua[a]||f(a):ea.extend({},a);var b,c,d,e,g,h,i=[],j=!a.once&&[],k=function(f){for(c=a.memory&&f,d=!0,g=h||0,h=0,e=i.length,b=!0;i&&e>g;g++)if(i[g].apply(f[0],f[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,i&&(j?j.length&&k(j.shift()):c?i=[]:l.disable())},l={add:function(){if(i){var d=i.length;!function f(b){ea.each(b,function(b,c){var d=ea.type(c);"function"===d?a.unique&&l.has(c)||i.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=i.length:c&&(h=d,k(c))}return this},remove:function(){return i&&ea.each(arguments,function(a,c){for(var d;(d=ea.inArray(c,i,d))>-1;)i.splice(d,1),b&&(e>=d&&e--,g>=d&&g--)}),this},has:function(a){return a?ea.inArray(a,i)>-1:!(!i||!i.length)},empty:function(){return i=[],e=0,this},disable:function(){return i=j=c=void 0,this},disabled:function(){return!i},lock:function(){return j=void 0,c||l.disable(),this},locked:function(){return!j},fireWith:function(a,c){return!i||d&&!j||(c=c||[],c=[a,c.slice?c.slice():c],b?j.push(c):k(c)),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!d}};return l},ea.extend({Deferred:function(a){var b=[["resolve","done",ea.Callbacks("once memory"),"resolved"],["reject","fail",ea.Callbacks("once memory"),"rejected"],["notify","progress",ea.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return ea.Deferred(function(c){ea.each(b,function(b,f){var g=ea.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&ea.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?ea.extend(a,d):d}},e={};return d.pipe=d.then,ea.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b,c,d,e=0,f=X.call(arguments),g=f.length,h=1!==g||a&&ea.isFunction(a.promise)?g:0,i=1===h?a:ea.Deferred(),j=function(a,c,d){return function(e){c[a]=this,d[a]=arguments.length>1?X.call(arguments):e,d===b?i.notifyWith(c,d):--h||i.resolveWith(c,d)}};if(g>1)for(b=new Array(g),c=new Array(g),d=new Array(g);g>e;e++)f[e]&&ea.isFunction(f[e].promise)?f[e].promise().done(j(e,d,f)).fail(i.reject).progress(j(e,c,b)):--h;return h||i.resolveWith(d,f),i.promise()}});var va;ea.fn.ready=function(a){return ea.ready.promise().done(a),this},ea.extend({isReady:!1,readyWait:1,holdReady:function(a){a?ea.readyWait++:ea.ready(!0)},ready:function(a){if(a===!0?!--ea.readyWait:!ea.isReady){if(!oa.body)return setTimeout(ea.ready);ea.isReady=!0,a!==!0&&--ea.readyWait>0||(va.resolveWith(oa,[ea]),ea.fn.triggerHandler&&(ea(oa).triggerHandler("ready"),ea(oa).off("ready")))}}}),ea.ready.promise=function(b){if(!va)if(va=ea.Deferred(),"complete"===oa.readyState)setTimeout(ea.ready);else if(oa.addEventListener)oa.addEventListener("DOMContentLoaded",h,!1),a.addEventListener("load",h,!1);else{oa.attachEvent("onreadystatechange",h),a.attachEvent("onload",h);var c=!1;try{c=null==a.frameElement&&oa.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!ea.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}g(),ea.ready()}}()}return va.promise(b)};var wa,xa="undefined";for(wa in ea(ca))break;ca.ownLast="0"!==wa,ca.inlineBlockNeedsLayout=!1,ea(function(){var a,b,c,d;c=oa.getElementsByTagName("body")[0],c&&c.style&&(b=oa.createElement("div"),d=oa.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==xa&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",ca.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=oa.createElement("div");if(null==ca.deleteExpando){ca.deleteExpando=!0;try{delete a.test}catch(b){ca.deleteExpando=!1}}a=null}(),ea.acceptData=function(a){var b=ea.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var ya=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,za=/([A-Z])/g;ea.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?ea.cache[a[ea.expando]]:a[ea.expando],!!a&&!j(a)},data:function(a,b,c){return k(a,b,c)},removeData:function(a,b){return l(a,b)},_data:function(a,b,c){return k(a,b,c,!0)},_removeData:function(a,b){return l(a,b,!0)}}),ea.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=ea.data(f),1===f.nodeType&&!ea._data(f,"parsedAttrs"))){for(c=g.length;c--;)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=ea.camelCase(d.slice(5)),i(f,d,e[d])));ea._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){ea.data(this,a)}):arguments.length>1?this.each(function(){ea.data(this,a,b)}):f?i(f,a,ea.data(f,a)):void 0},removeData:function(a){return this.each(function(){ea.removeData(this,a)})}}),ea.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=ea._data(a,b),c&&(!d||ea.isArray(c)?d=ea._data(a,b,ea.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=ea.queue(a,b),d=c.length,e=c.shift(),f=ea._queueHooks(a,b),g=function(){ea.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return ea._data(a,c)||ea._data(a,c,{empty:ea.Callbacks("once memory").add(function(){ea._removeData(a,b+"queue"),ea._removeData(a,c)})})}}),ea.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?ea.queue(this[0],a):void 0===b?this:this.each(function(){var c=ea.queue(this,a,b);ea._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&ea.dequeue(this,a)})},dequeue:function(a){return this.each(function(){ea.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=ea.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};for("string"!=typeof a&&(b=a,a=void 0),a=a||"fx";g--;)c=ea._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var Aa=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,Ba=["Top","Right","Bottom","Left"],Ca=function(a,b){return a=b||a,"none"===ea.css(a,"display")||!ea.contains(a.ownerDocument,a)},Da=ea.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===ea.type(c)){e=!0;for(h in c)ea.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,ea.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(ea(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},Ea=/^(?:checkbox|radio)$/i;!function(){var a=oa.createElement("input"),b=oa.createElement("div"),c=oa.createDocumentFragment();if(b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",ca.leadingWhitespace=3===b.firstChild.nodeType,ca.tbody=!b.getElementsByTagName("tbody").length,ca.htmlSerialize=!!b.getElementsByTagName("link").length,ca.html5Clone="<:nav></:nav>"!==oa.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),ca.appendChecked=a.checked,b.innerHTML="<textarea>x</textarea>",ca.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="<input type='radio' checked='checked' name='t'/>",ca.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,ca.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){ca.noCloneEvent=!1}),b.cloneNode(!0).click()),null==ca.deleteExpando){ca.deleteExpando=!0;try{delete b.test}catch(d){ca.deleteExpando=!1}}}(),function(){var b,c,d=oa.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(ca[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),ca[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var Fa=/^(?:input|select|textarea)$/i,Ga=/^key/,Ha=/^(?:mouse|pointer|contextmenu)|click/,Ia=/^(?:focusinfocus|focusoutblur)$/,Ja=/^([^.]*)(?:\.(.+)|)$/;ea.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=ea._data(a);if(q){for(c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=ea.guid++),(g=q.events)||(g=q.events={}),(k=q.handle)||(k=q.handle=function(a){return typeof ea===xa||a&&ea.event.triggered===a.type?void 0:ea.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(ta)||[""],h=b.length;h--;)f=Ja.exec(b[h])||[],n=p=f[1],o=(f[2]||"").split(".").sort(),n&&(j=ea.event.special[n]||{},n=(e?j.delegateType:j.bindType)||n,j=ea.event.special[n]||{},l=ea.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&ea.expr.match.needsContext.test(e),namespace:o.join(".")},i),(m=g[n])||(m=g[n]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,o,k)!==!1||(a.addEventListener?a.addEventListener(n,k,!1):a.attachEvent&&a.attachEvent("on"+n,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),ea.event.global[n]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=ea.hasData(a)&&ea._data(a);if(q&&(k=q.events)){for(b=(b||"").match(ta)||[""],j=b.length;j--;)if(h=Ja.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){for(l=ea.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=k[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;f--;)g=m[f],!e&&p!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||ea.removeEvent(a,n,q.handle),delete k[n])}else for(n in k)ea.event.remove(a,n+b[j],c,d,!0);ea.isEmptyObject(k)&&(delete q.handle,ea._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,j,k,l,m=[d||oa],n=ba.call(b,"type")?b.type:b,o=ba.call(b,"namespace")?b.namespace.split("."):[];if(h=k=d=d||oa,3!==d.nodeType&&8!==d.nodeType&&!Ia.test(n+ea.event.triggered)&&(n.indexOf(".")>=0&&(o=n.split("."),n=o.shift(),o.sort()),g=n.indexOf(":")<0&&"on"+n,b=b[ea.expando]?b:new ea.Event(n,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=o.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:ea.makeArray(c,[b]),j=ea.event.special[n]||{},e||!j.trigger||j.trigger.apply(d,c)!==!1)){if(!e&&!j.noBubble&&!ea.isWindow(d)){for(i=j.delegateType||n,Ia.test(i+n)||(h=h.parentNode);h;h=h.parentNode)m.push(h),k=h;k===(d.ownerDocument||oa)&&m.push(k.defaultView||k.parentWindow||a)}for(l=0;(h=m[l++])&&!b.isPropagationStopped();)b.type=l>1?i:j.bindType||n,f=(ea._data(h,"events")||{})[b.type]&&ea._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&ea.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=n,!e&&!b.isDefaultPrevented()&&(!j._default||j._default.apply(m.pop(),c)===!1)&&ea.acceptData(d)&&g&&d[n]&&!ea.isWindow(d)){k=d[g],k&&(d[g]=null),ea.event.triggered=n;try{d[n]()}catch(p){}ea.event.triggered=void 0,k&&(d[g]=k)}return b.result}},dispatch:function(a){a=ea.event.fix(a);var b,c,d,e,f,g=[],h=X.call(arguments),i=(ea._data(this,"events")||{})[a.type]||[],j=ea.event.special[a.type]||{};if(h[0]=a,a.delegateTarget=this,!j.preDispatch||j.preDispatch.call(this,a)!==!1){for(g=ea.event.handlers.call(this,a,i),b=0;(e=g[b++])&&!a.isPropagationStopped();)for(a.currentTarget=e.elem,f=0;(d=e.handlers[f++])&&!a.isImmediatePropagationStopped();)(!a.namespace_re||a.namespace_re.test(d.namespace))&&(a.handleObj=d,a.data=d.data,c=((ea.event.special[d.origType]||{}).handle||d.handler).apply(e.elem,h),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()));return j.postDispatch&&j.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?ea(c,this).index(i)>=0:ea.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[ea.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];for(g||(this.fixHooks[e]=g=Ha.test(e)?this.mouseHooks:Ga.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new ea.Event(f),b=d.length;b--;)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||oa),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button,g=b.fromElement;return null==a.pageX&&null!=b.clientX&&(d=a.target.ownerDocument||oa,e=d.documentElement,c=d.body,a.pageX=b.clientX+(e&&e.scrollLeft||c&&c.scrollLeft||0)-(e&&e.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||c&&c.scrollTop||0)-(e&&e.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&g&&(a.relatedTarget=g===a.target?b.toElement:g),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==o()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===o()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return ea.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return ea.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=ea.extend(new ea.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?ea.event.trigger(e,null,b):ea.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},ea.removeEvent=oa.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===xa&&(a[d]=null),a.detachEvent(d,c))},ea.Event=function(a,b){return this instanceof ea.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?m:n):this.type=a,b&&ea.extend(this,b),this.timeStamp=a&&a.timeStamp||ea.now(),void(this[ea.expando]=!0)):new ea.Event(a,b)},ea.Event.prototype={isDefaultPrevented:n,isPropagationStopped:n,isImmediatePropagationStopped:n,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=m,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=m,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=m,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},ea.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){ea.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!ea.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),ca.submitBubbles||(ea.event.special.submit={setup:function(){return ea.nodeName(this,"form")?!1:void ea.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=ea.nodeName(b,"input")||ea.nodeName(b,"button")?b.form:void 0;c&&!ea._data(c,"submitBubbles")&&(ea.event.add(c,"submit._submit",function(a){a._submit_bubble=!0}),ea._data(c,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&ea.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return ea.nodeName(this,"form")?!1:void ea.event.remove(this,"._submit")}}),ca.changeBubbles||(ea.event.special.change={setup:function(){return Fa.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(ea.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),ea.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),ea.event.simulate("change",this,a,!0)})),!1):void ea.event.add(this,"beforeactivate._change",function(a){var b=a.target;Fa.test(b.nodeName)&&!ea._data(b,"changeBubbles")&&(ea.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||ea.event.simulate("change",this.parentNode,a,!0)}),ea._data(b,"changeBubbles",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return ea.event.remove(this,"._change"),!Fa.test(this.nodeName)}}),ca.focusinBubbles||ea.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){ea.event.simulate(b,a.target,ea.event.fix(a),!0)};ea.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=ea._data(d,b);e||d.addEventListener(a,c,!0),ea._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=ea._data(d,b)-1;e?ea._data(d,b,e):(d.removeEventListener(a,c,!0),ea._removeData(d,b))}}}),ea.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(f in a)this.on(f,b,c,a[f],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=n;else if(!d)return this;return 1===e&&(g=d,d=function(a){return ea().off(a),g.apply(this,arguments)},d.guid=g.guid||(g.guid=ea.guid++)),this.each(function(){ea.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,ea(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=n),this.each(function(){ea.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){ea.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?ea.event.trigger(a,b,c,!0):void 0}});var Ka="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",La=/ jQuery\d+="(?:null|\d+)"/g,Ma=new RegExp("<(?:"+Ka+")[\\s/>]","i"),Na=/^\s+/,Oa=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,Pa=/<([\w:]+)/,Qa=/<tbody/i,Ra=/<|&#?\w+;/,Sa=/<(?:script|style|link)/i,Ta=/checked\s*(?:[^=]|=\s*.checked.)/i,Ua=/^$|\/(?:java|ecma)script/i,Va=/^true\/(.*)/,Wa=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,Xa={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:ca.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},Ya=p(oa),Za=Ya.appendChild(oa.createElement("div"));Xa.optgroup=Xa.option,Xa.tbody=Xa.tfoot=Xa.colgroup=Xa.caption=Xa.thead,Xa.th=Xa.td,ea.extend({clone:function(a,b,c){var d,e,f,g,h,i=ea.contains(a.ownerDocument,a);if(ca.html5Clone||ea.isXMLDoc(a)||!Ma.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(Za.innerHTML=a.outerHTML,Za.removeChild(f=Za.firstChild)),!(ca.noCloneEvent&&ca.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||ea.isXMLDoc(a)))for(d=q(f),h=q(a),g=0;null!=(e=h[g]);++g)d[g]&&x(e,d[g]);if(b)if(c)for(h=h||q(a),d=d||q(f),g=0;null!=(e=h[g]);g++)w(e,d[g]);else w(a,f);return d=q(f,"script"),d.length>0&&v(d,!i&&q(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k,l=a.length,m=p(b),n=[],o=0;l>o;o++)if(f=a[o],f||0===f)if("object"===ea.type(f))ea.merge(n,f.nodeType?[f]:f);else if(Ra.test(f)){for(h=h||m.appendChild(b.createElement("div")),i=(Pa.exec(f)||["",""])[1].toLowerCase(),k=Xa[i]||Xa._default,h.innerHTML=k[1]+f.replace(Oa,"<$1></$2>")+k[2],e=k[0];e--;)h=h.lastChild;if(!ca.leadingWhitespace&&Na.test(f)&&n.push(b.createTextNode(Na.exec(f)[0])),!ca.tbody)for(f="table"!==i||Qa.test(f)?"<table>"!==k[1]||Qa.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;e--;)ea.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j);for(ea.merge(n,h.childNodes),h.textContent="";h.firstChild;)h.removeChild(h.firstChild);h=m.lastChild}else n.push(b.createTextNode(f));for(h&&m.removeChild(h),ca.appendChecked||ea.grep(q(n,"input"),r),o=0;f=n[o++];)if((!d||-1===ea.inArray(f,d))&&(g=ea.contains(f.ownerDocument,f),h=q(m.appendChild(f),"script"),g&&v(h),c))for(e=0;f=h[e++];)Ua.test(f.type||"")&&c.push(f);return h=null,m},cleanData:function(a,b){for(var c,d,e,f,g=0,h=ea.expando,i=ea.cache,j=ca.deleteExpando,k=ea.event.special;null!=(c=a[g]);g++)if((b||ea.acceptData(c))&&(e=c[h],f=e&&i[e])){if(f.events)for(d in f.events)k[d]?ea.event.remove(c,d):ea.removeEvent(c,d,f.handle);i[e]&&(delete i[e],j?delete c[h]:typeof c.removeAttribute!==xa?c.removeAttribute(h):c[h]=null,W.push(e))}}}),ea.fn.extend({text:function(a){return Da(this,function(a){return void 0===a?ea.text(this):this.empty().append((this[0]&&this[0].ownerDocument||oa).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=s(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=s(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?ea.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||ea.cleanData(q(c)),c.parentNode&&(b&&ea.contains(c.ownerDocument,c)&&v(q(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){for(1===a.nodeType&&ea.cleanData(q(a,!1));a.firstChild;)a.removeChild(a.firstChild);a.options&&ea.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return ea.clone(this,a,b)})},html:function(a){return Da(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(La,""):void 0;if("string"==typeof a&&!Sa.test(a)&&(ca.htmlSerialize||!Ma.test(a))&&(ca.leadingWhitespace||!Na.test(a))&&!Xa[(Pa.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Oa,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(ea.cleanData(q(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,ea.cleanData(q(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=Y.apply([],a);var c,d,e,f,g,h,i=0,j=this.length,k=this,l=j-1,m=a[0],n=ea.isFunction(m);if(n||j>1&&"string"==typeof m&&!ca.checkClone&&Ta.test(m))return this.each(function(c){var d=k.eq(c);n&&(a[0]=m.call(this,c,d.html())),d.domManip(a,b)});if(j&&(h=ea.buildFragment(a,this[0].ownerDocument,!1,this),c=h.firstChild,1===h.childNodes.length&&(h=c),c)){for(f=ea.map(q(h,"script"),t),e=f.length;j>i;i++)d=h,i!==l&&(d=ea.clone(d,!0,!0),e&&ea.merge(f,q(d,"script"))),b.call(this[i],d,i);if(e)for(g=f[f.length-1].ownerDocument,ea.map(f,u),i=0;e>i;i++)d=f[i],Ua.test(d.type||"")&&!ea._data(d,"globalEval")&&ea.contains(g,d)&&(d.src?ea._evalUrl&&ea._evalUrl(d.src):ea.globalEval((d.text||d.textContent||d.innerHTML||"").replace(Wa,"")));h=c=null}return this}}),ea.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){ea.fn[a]=function(a){for(var c,d=0,e=[],f=ea(a),g=f.length-1;g>=d;d++)c=d===g?this:this.clone(!0),ea(f[d])[b](c),Z.apply(e,c.get());return this.pushStack(e)}});var $a,_a={};!function(){var a;ca.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,c,d;return c=oa.getElementsByTagName("body")[0],c&&c.style?(b=oa.createElement("div"),d=oa.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==xa&&(b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",b.appendChild(oa.createElement("div")).style.width="5px",a=3!==b.offsetWidth),c.removeChild(d),a):void 0}}();var ab,bb,cb=/^margin/,db=new RegExp("^("+Aa+")(?!px)[a-z%]+$","i"),eb=/^(top|right|bottom|left)$/;a.getComputedStyle?(ab=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)},bb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||ab(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||ea.contains(a.ownerDocument,a)||(g=ea.style(a,b)),db.test(g)&&cb.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)), void 0===g?g:g+""}):oa.documentElement.currentStyle&&(ab=function(a){return a.currentStyle},bb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||ab(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),db.test(g)&&!eb.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"}),function(){function b(){var b,c,d,e;c=oa.getElementsByTagName("body")[0],c&&c.style&&(b=oa.createElement("div"),d=oa.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),b.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",f=g=!1,i=!0,a.getComputedStyle&&(f="1%"!==(a.getComputedStyle(b,null)||{}).top,g="4px"===(a.getComputedStyle(b,null)||{width:"4px"}).width,e=b.appendChild(oa.createElement("div")),e.style.cssText=b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",e.style.marginRight=e.style.width="0",b.style.width="1px",i=!parseFloat((a.getComputedStyle(e,null)||{}).marginRight)),b.innerHTML="<table><tr><td></td><td>t</td></tr></table>",e=b.getElementsByTagName("td"),e[0].style.cssText="margin:0;border:0;padding:0;display:none",h=0===e[0].offsetHeight,h&&(e[0].style.display="",e[1].style.display="none",h=0===e[0].offsetHeight),c.removeChild(d))}var c,d,e,f,g,h,i;c=oa.createElement("div"),c.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",e=c.getElementsByTagName("a")[0],d=e&&e.style,d&&(d.cssText="float:left;opacity:.5",ca.opacity="0.5"===d.opacity,ca.cssFloat=!!d.cssFloat,c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",ca.clearCloneStyle="content-box"===c.style.backgroundClip,ca.boxSizing=""===d.boxSizing||""===d.MozBoxSizing||""===d.WebkitBoxSizing,ea.extend(ca,{reliableHiddenOffsets:function(){return null==h&&b(),h},boxSizingReliable:function(){return null==g&&b(),g},pixelPosition:function(){return null==f&&b(),f},reliableMarginRight:function(){return null==i&&b(),i}}))}(),ea.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var fb=/alpha\([^)]*\)/i,gb=/opacity\s*=\s*([^)]*)/,hb=/^(none|table(?!-c[ea]).+)/,ib=new RegExp("^("+Aa+")(.*)$","i"),jb=new RegExp("^([+-])=("+Aa+")","i"),kb={position:"absolute",visibility:"hidden",display:"block"},lb={letterSpacing:"0",fontWeight:"400"},mb=["Webkit","O","Moz","ms"];ea.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":ca.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=ea.camelCase(b),i=a.style;if(b=ea.cssProps[h]||(ea.cssProps[h]=B(i,h)),g=ea.cssHooks[b]||ea.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=jb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(ea.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||ea.cssNumber[h]||(c+="px"),ca.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=ea.camelCase(b);return b=ea.cssProps[h]||(ea.cssProps[h]=B(a.style,h)),g=ea.cssHooks[b]||ea.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=bb(a,b,d)),"normal"===f&&b in lb&&(f=lb[b]),""===c||c?(e=parseFloat(f),c===!0||ea.isNumeric(e)?e||0:f):f}}),ea.each(["height","width"],function(a,b){ea.cssHooks[b]={get:function(a,c,d){return c?hb.test(ea.css(a,"display"))&&0===a.offsetWidth?ea.swap(a,kb,function(){return F(a,b,d)}):F(a,b,d):void 0},set:function(a,c,d){var e=d&&ab(a);return D(a,c,d?E(a,b,d,ca.boxSizing&&"border-box"===ea.css(a,"boxSizing",!1,e),e):0)}}}),ca.opacity||(ea.cssHooks.opacity={get:function(a,b){return gb.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=ea.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===ea.trim(f.replace(fb,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=fb.test(f)?f.replace(fb,e):f+" "+e)}}),ea.cssHooks.marginRight=A(ca.reliableMarginRight,function(a,b){return b?ea.swap(a,{display:"inline-block"},bb,[a,"marginRight"]):void 0}),ea.each({margin:"",padding:"",border:"Width"},function(a,b){ea.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+Ba[d]+b]=f[d]||f[d-2]||f[0];return e}},cb.test(a)||(ea.cssHooks[a+b].set=D)}),ea.fn.extend({css:function(a,b){return Da(this,function(a,b,c){var d,e,f={},g=0;if(ea.isArray(b)){for(d=ab(a),e=b.length;e>g;g++)f[b[g]]=ea.css(a,b[g],!1,d);return f}return void 0!==c?ea.style(a,b,c):ea.css(a,b)},a,b,arguments.length>1)},show:function(){return C(this,!0)},hide:function(){return C(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){Ca(this)?ea(this).show():ea(this).hide()})}}),ea.Tween=G,G.prototype={constructor:G,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(ea.cssNumber[c]?"":"px")},cur:function(){var a=G.propHooks[this.prop];return a&&a.get?a.get(this):G.propHooks._default.get(this)},run:function(a){var b,c=G.propHooks[this.prop];return this.options.duration?this.pos=b=ea.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):G.propHooks._default.set(this),this}},G.prototype.init.prototype=G.prototype,G.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=ea.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){ea.fx.step[a.prop]?ea.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[ea.cssProps[a.prop]]||ea.cssHooks[a.prop])?ea.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},G.propHooks.scrollTop=G.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},ea.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},ea.fx=G.prototype.init,ea.fx.step={};var nb,ob,pb=/^(?:toggle|show|hide)$/,qb=new RegExp("^(?:([+-])=|)("+Aa+")([a-z%]*)$","i"),rb=/queueHooks$/,sb=[K],tb={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=qb.exec(b),f=e&&e[3]||(ea.cssNumber[a]?"":"px"),g=(ea.cssNumber[a]||"px"!==f&&+d)&&qb.exec(ea.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,ea.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};ea.Animation=ea.extend(M,{tweener:function(a,b){ea.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],tb[c]=tb[c]||[],tb[c].unshift(b)},prefilter:function(a,b){b?sb.unshift(a):sb.push(a)}}),ea.speed=function(a,b,c){var d=a&&"object"==typeof a?ea.extend({},a):{complete:c||!c&&b||ea.isFunction(a)&&a,duration:a,easing:c&&b||b&&!ea.isFunction(b)&&b};return d.duration=ea.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in ea.fx.speeds?ea.fx.speeds[d.duration]:ea.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){ea.isFunction(d.old)&&d.old.call(this),d.queue&&ea.dequeue(this,d.queue)},d},ea.fn.extend({fadeTo:function(a,b,c,d){return this.filter(Ca).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=ea.isEmptyObject(a),f=ea.speed(b,c,d),g=function(){var b=M(this,ea.extend({},a),f);(e||ea._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=ea.timers,g=ea._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&rb.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&ea.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=ea._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=ea.timers,g=d?d.length:0;for(c.finish=!0,ea.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),ea.each(["toggle","show","hide"],function(a,b){var c=ea.fn[b];ea.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(I(b,!0),a,d,e)}}),ea.each({slideDown:I("show"),slideUp:I("hide"),slideToggle:I("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){ea.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),ea.timers=[],ea.fx.tick=function(){var a,b=ea.timers,c=0;for(nb=ea.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||ea.fx.stop(),nb=void 0},ea.fx.timer=function(a){ea.timers.push(a),a()?ea.fx.start():ea.timers.pop()},ea.fx.interval=13,ea.fx.start=function(){ob||(ob=setInterval(ea.fx.tick,ea.fx.interval))},ea.fx.stop=function(){clearInterval(ob),ob=null},ea.fx.speeds={slow:600,fast:200,_default:400},ea.fn.delay=function(a,b){return a=ea.fx?ea.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a,b,c,d,e;b=oa.createElement("div"),b.setAttribute("className","t"),b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=oa.createElement("select"),e=c.appendChild(oa.createElement("option")),a=b.getElementsByTagName("input")[0],d.style.cssText="top:1px",ca.getSetAttribute="t"!==b.className,ca.style=/top/.test(d.getAttribute("style")),ca.hrefNormalized="/a"===d.getAttribute("href"),ca.checkOn=!!a.value,ca.optSelected=e.selected,ca.enctype=!!oa.createElement("form").enctype,c.disabled=!0,ca.optDisabled=!e.disabled,a=oa.createElement("input"),a.setAttribute("value",""),ca.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),ca.radioValue="t"===a.value}();var ub=/\r/g;ea.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=ea.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,ea(this).val()):a,null==e?e="":"number"==typeof e?e+="":ea.isArray(e)&&(e=ea.map(e,function(a){return null==a?"":a+""})),b=ea.valHooks[this.type]||ea.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=ea.valHooks[e.type]||ea.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(ub,""):null==c?"":c)}}}),ea.extend({valHooks:{option:{get:function(a){var b=ea.find.attr(a,"value");return null!=b?b:ea.trim(ea.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],(c.selected||i===e)&&(ca.optDisabled?!c.disabled:null===c.getAttribute("disabled"))&&(!c.parentNode.disabled||!ea.nodeName(c.parentNode,"optgroup"))){if(b=ea(c).val(),f)return b;g.push(b)}return g},set:function(a,b){for(var c,d,e=a.options,f=ea.makeArray(b),g=e.length;g--;)if(d=e[g],ea.inArray(ea.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),ea.each(["radio","checkbox"],function(){ea.valHooks[this]={set:function(a,b){return ea.isArray(b)?a.checked=ea.inArray(ea(a).val(),b)>=0:void 0}},ca.checkOn||(ea.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var vb,wb,xb=ea.expr.attrHandle,yb=/^(?:checked|selected)$/i,zb=ca.getSetAttribute,Ab=ca.input;ea.fn.extend({attr:function(a,b){return Da(this,ea.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){ea.removeAttr(this,a)})}}),ea.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===xa?ea.prop(a,b,c):(1===f&&ea.isXMLDoc(a)||(b=b.toLowerCase(),d=ea.attrHooks[b]||(ea.expr.match.bool.test(b)?wb:vb)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=ea.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void ea.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(ta);if(f&&1===a.nodeType)for(;c=f[e++];)d=ea.propFix[c]||c,ea.expr.match.bool.test(c)?Ab&&zb||!yb.test(c)?a[d]=!1:a[ea.camelCase("default-"+c)]=a[d]=!1:ea.attr(a,c,""),a.removeAttribute(zb?c:d)},attrHooks:{type:{set:function(a,b){if(!ca.radioValue&&"radio"===b&&ea.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),wb={set:function(a,b,c){return b===!1?ea.removeAttr(a,c):Ab&&zb||!yb.test(c)?a.setAttribute(!zb&&ea.propFix[c]||c,c):a[ea.camelCase("default-"+c)]=a[c]=!0,c}},ea.each(ea.expr.match.bool.source.match(/\w+/g),function(a,b){var c=xb[b]||ea.find.attr;xb[b]=Ab&&zb||!yb.test(b)?function(a,b,d){var e,f;return d||(f=xb[b],xb[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,xb[b]=f),e}:function(a,b,c){return c?void 0:a[ea.camelCase("default-"+b)]?b.toLowerCase():null}}),Ab&&zb||(ea.attrHooks.value={set:function(a,b,c){return ea.nodeName(a,"input")?void(a.defaultValue=b):vb&&vb.set(a,b,c)}}),zb||(vb={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},xb.id=xb.name=xb.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},ea.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:vb.set},ea.attrHooks.contenteditable={set:function(a,b,c){vb.set(a,""===b?!1:b,c)}},ea.each(["width","height"],function(a,b){ea.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),ca.style||(ea.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var Bb=/^(?:input|select|textarea|button|object)$/i,Cb=/^(?:a|area)$/i;ea.fn.extend({prop:function(a,b){return Da(this,ea.prop,a,b,arguments.length>1)},removeProp:function(a){return a=ea.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),ea.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!ea.isXMLDoc(a),f&&(b=ea.propFix[b]||b,e=ea.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=ea.find.attr(a,"tabindex");return b?parseInt(b,10):Bb.test(a.nodeName)||Cb.test(a.nodeName)&&a.href?0:-1}}}}),ca.hrefNormalized||ea.each(["href","src"],function(a,b){ea.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),ca.optSelected||(ea.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),ea.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){ea.propFix[this.toLowerCase()]=this}),ca.enctype||(ea.propFix.enctype="encoding");var Db=/[\t\r\n\f]/g;ea.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(ea.isFunction(a))return this.each(function(b){ea(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(ta)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(Db," "):" ")){for(f=0;e=b[f++];)d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=ea.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(ea.isFunction(a))return this.each(function(b){ea(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(ta)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(Db," "):"")){for(f=0;e=b[f++];)for(;d.indexOf(" "+e+" ")>=0;)d=d.replace(" "+e+" "," ");g=a?ea.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):ea.isFunction(a)?this.each(function(c){ea(this).toggleClass(a.call(this,c,this.className,b),b)}):this.each(function(){if("string"===c)for(var b,d=0,e=ea(this),f=a.match(ta)||[];b=f[d++];)e.hasClass(b)?e.removeClass(b):e.addClass(b);else(c===xa||"boolean"===c)&&(this.className&&ea._data(this,"__className__",this.className),this.className=this.className||a===!1?"":ea._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(Db," ").indexOf(b)>=0)return!0;return!1}}),ea.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){ea.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),ea.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var Eb=ea.now(),Fb=/\?/,Gb=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;ea.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=ea.trim(b+"");return e&&!ea.trim(e.replace(Gb,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():ea.error("Invalid JSON: "+b)},ea.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||ea.error("Invalid XML: "+b),c};var Hb,Ib,Jb=/#.*$/,Kb=/([?&])_=[^&]*/,Lb=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Mb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Nb=/^(?:GET|HEAD)$/,Ob=/^\/\//,Pb=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Qb={},Rb={},Sb="*/".concat("*");try{Ib=location.href}catch(Tb){Ib=oa.createElement("a"),Ib.href="",Ib=Ib.href}Hb=Pb.exec(Ib.toLowerCase())||[],ea.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ib,type:"GET",isLocal:Mb.test(Hb[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Sb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":ea.parseJSON,"text xml":ea.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?P(P(a,ea.ajaxSettings),b):P(ea.ajaxSettings,a)},ajaxPrefilter:N(Qb),ajaxTransport:N(Rb),ajax:function(a,b){function c(a,b,c,d){var e,k,r,s,u,w=b;2!==t&&(t=2,h&&clearTimeout(h),j=void 0,g=d||"",v.readyState=a>0?4:0,e=a>=200&&300>a||304===a,c&&(s=Q(l,v,c)),s=R(l,s,v,e),e?(l.ifModified&&(u=v.getResponseHeader("Last-Modified"),u&&(ea.lastModified[f]=u),u=v.getResponseHeader("etag"),u&&(ea.etag[f]=u)),204===a||"HEAD"===l.type?w="nocontent":304===a?w="notmodified":(w=s.state,k=s.data,r=s.error,e=!r)):(r=w,(a||!w)&&(w="error",0>a&&(a=0))),v.status=a,v.statusText=(b||w)+"",e?o.resolveWith(m,[k,w,v]):o.rejectWith(m,[v,w,r]),v.statusCode(q),q=void 0,i&&n.trigger(e?"ajaxSuccess":"ajaxError",[v,l,e?k:r]),p.fireWith(m,[v,w]),i&&(n.trigger("ajaxComplete",[v,l]),--ea.active||ea.event.trigger("ajaxStop")))}"object"==typeof a&&(b=a,a=void 0),b=b||{};var d,e,f,g,h,i,j,k,l=ea.ajaxSetup({},b),m=l.context||l,n=l.context&&(m.nodeType||m.jquery)?ea(m):ea.event,o=ea.Deferred(),p=ea.Callbacks("once memory"),q=l.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!k)for(k={};b=Lb.exec(g);)k[b[1].toLowerCase()]=b[2];b=k[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?g:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(l.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return j&&j.abort(b),c(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,l.url=((a||l.url||Ib)+"").replace(Jb,"").replace(Ob,Hb[1]+"//"),l.type=b.method||b.type||l.method||l.type,l.dataTypes=ea.trim(l.dataType||"*").toLowerCase().match(ta)||[""],null==l.crossDomain&&(d=Pb.exec(l.url.toLowerCase()),l.crossDomain=!(!d||d[1]===Hb[1]&&d[2]===Hb[2]&&(d[3]||("http:"===d[1]?"80":"443"))===(Hb[3]||("http:"===Hb[1]?"80":"443")))),l.data&&l.processData&&"string"!=typeof l.data&&(l.data=ea.param(l.data,l.traditional)),O(Qb,l,b,v),2===t)return v;i=l.global,i&&0===ea.active++&&ea.event.trigger("ajaxStart"),l.type=l.type.toUpperCase(),l.hasContent=!Nb.test(l.type),f=l.url,l.hasContent||(l.data&&(f=l.url+=(Fb.test(f)?"&":"?")+l.data,delete l.data),l.cache===!1&&(l.url=Kb.test(f)?f.replace(Kb,"$1_="+Eb++):f+(Fb.test(f)?"&":"?")+"_="+Eb++)),l.ifModified&&(ea.lastModified[f]&&v.setRequestHeader("If-Modified-Since",ea.lastModified[f]),ea.etag[f]&&v.setRequestHeader("If-None-Match",ea.etag[f])),(l.data&&l.hasContent&&l.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",l.contentType),v.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+("*"!==l.dataTypes[0]?", "+Sb+"; q=0.01":""):l.accepts["*"]);for(e in l.headers)v.setRequestHeader(e,l.headers[e]);if(l.beforeSend&&(l.beforeSend.call(m,v,l)===!1||2===t))return v.abort();u="abort";for(e in{success:1,error:1,complete:1})v[e](l[e]);if(j=O(Rb,l,b,v)){v.readyState=1,i&&n.trigger("ajaxSend",[v,l]),l.async&&l.timeout>0&&(h=setTimeout(function(){v.abort("timeout")},l.timeout));try{t=1,j.send(r,c)}catch(w){if(!(2>t))throw w;c(-1,w)}}else c(-1,"No Transport");return v},getJSON:function(a,b,c){return ea.get(a,b,c,"json")},getScript:function(a,b){return ea.get(a,void 0,b,"script")}}),ea.each(["get","post"],function(a,b){ea[b]=function(a,c,d,e){return ea.isFunction(c)&&(e=e||d,d=c,c=void 0),ea.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),ea.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){ea.fn[b]=function(a){return this.on(b,a)}}),ea._evalUrl=function(a){return ea.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},ea.fn.extend({wrapAll:function(a){if(ea.isFunction(a))return this.each(function(b){ea(this).wrapAll(a.call(this,b))});if(this[0]){var b=ea(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){for(var a=this;a.firstChild&&1===a.firstChild.nodeType;)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return ea.isFunction(a)?this.each(function(b){ea(this).wrapInner(a.call(this,b))}):this.each(function(){var b=ea(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=ea.isFunction(a);return this.each(function(c){ea(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){ea.nodeName(this,"body")||ea(this).replaceWith(this.childNodes)}).end()}}),ea.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!ca.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||ea.css(a,"display"))},ea.expr.filters.visible=function(a){return!ea.expr.filters.hidden(a)};var Ub=/%20/g,Vb=/\[\]$/,Wb=/\r?\n/g,Xb=/^(?:submit|button|image|reset|file)$/i,Yb=/^(?:input|select|textarea|keygen)/i;ea.param=function(a,b){var c,d=[],e=function(a,b){b=ea.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=ea.ajaxSettings&&ea.ajaxSettings.traditional),ea.isArray(a)||a.jquery&&!ea.isPlainObject(a))ea.each(a,function(){e(this.name,this.value)});else for(c in a)S(c,a[c],b,e);return d.join("&").replace(Ub,"+")},ea.fn.extend({serialize:function(){return ea.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=ea.prop(this,"elements");return a?ea.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!ea(this).is(":disabled")&&Yb.test(this.nodeName)&&!Xb.test(a)&&(this.checked||!Ea.test(a))}).map(function(a,b){var c=ea(this).val();return null==c?null:ea.isArray(c)?ea.map(c,function(a){return{name:b.name,value:a.replace(Wb,"\r\n")}}):{name:b.name,value:c.replace(Wb,"\r\n")}}).get()}}),ea.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&T()||U()}:T;var Zb=0,$b={},_b=ea.ajaxSettings.xhr();a.ActiveXObject&&ea(a).on("unload",function(){for(var a in $b)$b[a](void 0,!0)}),ca.cors=!!_b&&"withCredentials"in _b,_b=ca.ajax=!!_b,_b&&ea.ajaxTransport(function(a){if(!a.crossDomain||ca.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Zb;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete $b[g],b=void 0,f.onreadystatechange=ea.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=$b[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}}),ea.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return ea.globalEval(a),a}}}),ea.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),ea.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=oa.head||ea("head")[0]||oa.documentElement;return{send:function(d,e){b=oa.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var ac=[],bc=/(=)\?(?=&|$)|\?\?/;ea.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=ac.pop()||ea.expando+"_"+Eb++;return this[a]=!0,a}}),ea.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(bc.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&bc.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=ea.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(bc,"$1"+e):b.jsonp!==!1&&(b.url+=(Fb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||ea.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,ac.push(e)),g&&ea.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),ea.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||oa;var d=la.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=ea.buildFragment([a],b,e),e&&e.length&&ea(e).remove(),ea.merge([],d.childNodes))};var cc=ea.fn.load;ea.fn.load=function(a,b,c){if("string"!=typeof a&&cc)return cc.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=ea.trim(a.slice(h,a.length)),a=a.slice(0,h)),ea.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&ea.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?ea("<div>").append(ea.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},ea.expr.filters.animated=function(a){return ea.grep(ea.timers,function(b){return a===b.elem}).length};var dc=a.document.documentElement;ea.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=ea.css(a,"position"),l=ea(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=ea.css(a,"top"),i=ea.css(a,"left"),j=("absolute"===k||"fixed"===k)&&ea.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),ea.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},ea.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){ea.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,ea.contains(b,e)?(typeof e.getBoundingClientRect!==xa&&(d=e.getBoundingClientRect()),c=V(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===ea.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),ea.nodeName(a[0],"html")||(c=a.offset()),c.top+=ea.css(a[0],"borderTopWidth",!0),c.left+=ea.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-ea.css(d,"marginTop",!0),left:b.left-c.left-ea.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||dc;a&&!ea.nodeName(a,"html")&&"static"===ea.css(a,"position");)a=a.offsetParent;return a||dc})}}),ea.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);ea.fn[a]=function(d){return Da(this,function(a,d,e){var f=V(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?ea(f).scrollLeft():e,c?e:ea(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),ea.each(["top","left"],function(a,b){ea.cssHooks[b]=A(ca.pixelPosition,function(a,c){return c?(c=bb(a,b),db.test(c)?ea(a).position()[b]+"px":c):void 0})}),ea.each({Height:"height",Width:"width"},function(a,b){ea.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){ea.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return Da(this,function(b,c,d){var e;return ea.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement, @@ -10,12 +10,12 @@ code:-3,message:"Type missmatch"},badResponseId:{code:-4,message:"Bad response I return function(){this.meridian=a.slice(0,1).toLowerCase()}},timezone:function(a){return function(){var b=a.replace(/[^\d\+\-]/g,"");b.length?this.timezoneOffset=Number(b):this.timezone=a.toLowerCase()}},day:function(a){var b=a[0];return function(){this.day=Number(b.match(/\d+/)[0])}},month:function(a){return function(){this.month=3==a.length?"jan feb mar apr may jun jul aug sep oct nov dec".indexOf(a)/4:Number(a)-1}},year:function(a){return function(){var c=Number(a);this.year=a.length>2?c:c+(c+2e3<b.twoDigitYearMax?2e3:1900)}},rday:function(a){return function(){switch(a){case"yesterday":this.days=-1;break;case"tomorrow":this.days=1;break;case"today":this.days=0;break;case"now":this.days=0,this.now=!0}}},finishExact:function(b){b=b instanceof Array?b:[b];for(var c=0;c<b.length;c++)b[c]&&b[c].call(this);var d=new Date;if(!this.hour&&!this.minute||this.month||this.year||this.day||(this.day=d.getDate()),this.year||(this.year=d.getFullYear()),this.month||0===this.month||(this.month=d.getMonth()),this.day||(this.day=1),this.hour||(this.hour=0),this.minute||(this.minute=0),this.second||(this.second=0),this.meridian&&this.hour&&("p"==this.meridian&&this.hour<12?this.hour=this.hour+12:"a"==this.meridian&&12==this.hour&&(this.hour=0)),this.day>a.getDaysInMonth(this.year,this.month))throw new RangeError(this.day+" is not a valid value for days.");var e=new Date(this.year,this.month,this.day,this.hour,this.minute,this.second);return this.timezone?e.set({timezone:this.timezone}):this.timezoneOffset&&e.set({timezoneOffset:this.timezoneOffset}),e},finish:function(b){if(b=b instanceof Array?c(b):[b],0===b.length)return null;for(var d=0;d<b.length;d++)"function"==typeof b[d]&&b[d].call(this);var e=a.today();if(this.now&&!this.unit&&!this.operator)return new Date;this.now&&(e=new Date);var f,g,h,i=!!(this.days&&null!==this.days||this.orient||this.operator);if(h="past"==this.orient||"subtract"==this.operator?-1:1,this.now||-1=="hour minute second".indexOf(this.unit)||e.setTimeToNow(),(this.month||0===this.month)&&-1!="year day hour minute second".indexOf(this.unit)&&(this.value=this.month+1,this.month=null,i=!0),!i&&this.weekday&&!this.day&&!this.days){var j=Date[this.weekday]();this.day=j.getDate(),this.month||(this.month=j.getMonth()),this.year=j.getFullYear()}if(i&&this.weekday&&"month"!=this.unit&&(this.unit="day",f=a.getDayNumberFromName(this.weekday)-e.getDay(),g=7,this.days=f?(f+h*g)%g:h*g),this.month&&"day"==this.unit&&this.operator&&(this.value=this.month+1,this.month=null),null!=this.value&&null!=this.month&&null!=this.year&&(this.day=1*this.value),this.month&&!this.day&&this.value&&(e.set({day:1*this.value}),i||(this.day=1*this.value)),this.month||!this.value||"month"!=this.unit||this.now||(this.month=this.value,i=!0),i&&(this.month||0===this.month)&&"year"!=this.unit&&(this.unit="month",f=this.month-e.getMonth(),g=12,this.months=f?(f+h*g)%g:h*g,this.month=null),this.unit||(this.unit="day"),!this.value&&this.operator&&null!==this.operator&&this[this.unit+"s"]&&null!==this[this.unit+"s"]?this[this.unit+"s"]=this[this.unit+"s"]+("add"==this.operator?1:-1)+(this.value||0)*h:(null==this[this.unit+"s"]||null!=this.operator)&&(this.value||(this.value=1),this[this.unit+"s"]=this.value*h),this.meridian&&this.hour&&("p"==this.meridian&&this.hour<12?this.hour=this.hour+12:"a"==this.meridian&&12==this.hour&&(this.hour=0)),this.weekday&&!this.day&&!this.days){var j=Date[this.weekday]();this.day=j.getDate(),j.getMonth()!==e.getMonth()&&(this.month=j.getMonth())}return!this.month&&0!==this.month||this.day||(this.day=1),this.orient||this.operator||"week"!=this.unit||!this.value||this.day||this.month?(i&&this.timezone&&this.day&&this.days&&(this.day=this.days),i?e.add(this):e.set(this)):Date.today().setWeek(this.value)}};var d,e=a.Parsing.Operators,f=a.Grammar,g=a.Translator;f.datePartDelimiter=e.rtoken(/^([\s\-\.\,\/\x27]+)/),f.timePartDelimiter=e.stoken(":"),f.whiteSpace=e.rtoken(/^\s*/),f.generalDelimiter=e.rtoken(/^(([\s\,]|at|@|on)+)/);var h={};f.ctoken=function(a){var c=h[a];if(!c){for(var d=b.regexPatterns,f=a.split(/\s+/),g=[],i=0;i<f.length;i++)g.push(e.replace(e.rtoken(d[f[i]]),f[i]));c=h[a]=e.any.apply(null,g)}return c},f.ctoken2=function(a){return e.rtoken(b.regexPatterns[a])},f.h=e.cache(e.process(e.rtoken(/^(0[0-9]|1[0-2]|[1-9])/),g.hour)),f.hh=e.cache(e.process(e.rtoken(/^(0[0-9]|1[0-2])/),g.hour)),f.H=e.cache(e.process(e.rtoken(/^([0-1][0-9]|2[0-3]|[0-9])/),g.hour)),f.HH=e.cache(e.process(e.rtoken(/^([0-1][0-9]|2[0-3])/),g.hour)),f.m=e.cache(e.process(e.rtoken(/^([0-5][0-9]|[0-9])/),g.minute)),f.mm=e.cache(e.process(e.rtoken(/^[0-5][0-9]/),g.minute)),f.s=e.cache(e.process(e.rtoken(/^([0-5][0-9]|[0-9])/),g.second)),f.ss=e.cache(e.process(e.rtoken(/^[0-5][0-9]/),g.second)),f.hms=e.cache(e.sequence([f.H,f.m,f.s],f.timePartDelimiter)),f.t=e.cache(e.process(f.ctoken2("shortMeridian"),g.meridian)),f.tt=e.cache(e.process(f.ctoken2("longMeridian"),g.meridian)),f.z=e.cache(e.process(e.rtoken(/^((\+|\-)\s*\d\d\d\d)|((\+|\-)\d\d\:?\d\d)/),g.timezone)),f.zz=e.cache(e.process(e.rtoken(/^((\+|\-)\s*\d\d\d\d)|((\+|\-)\d\d\:?\d\d)/),g.timezone)),f.zzz=e.cache(e.process(f.ctoken2("timezone"),g.timezone)),f.timeSuffix=e.each(e.ignore(f.whiteSpace),e.set([f.tt,f.zzz])),f.time=e.each(e.optional(e.ignore(e.stoken("T"))),f.hms,f.timeSuffix),f.d=e.cache(e.process(e.each(e.rtoken(/^([0-2]\d|3[0-1]|\d)/),e.optional(f.ctoken2("ordinalSuffix"))),g.day)),f.dd=e.cache(e.process(e.each(e.rtoken(/^([0-2]\d|3[0-1])/),e.optional(f.ctoken2("ordinalSuffix"))),g.day)),f.ddd=f.dddd=e.cache(e.process(f.ctoken("sun mon tue wed thu fri sat"),function(a){return function(){this.weekday=a}})),f.M=e.cache(e.process(e.rtoken(/^(1[0-2]|0\d|\d)/),g.month)),f.MM=e.cache(e.process(e.rtoken(/^(1[0-2]|0\d)/),g.month)),f.MMM=f.MMMM=e.cache(e.process(f.ctoken("jan feb mar apr may jun jul aug sep oct nov dec"),g.month)),f.y=e.cache(e.process(e.rtoken(/^(\d\d?)/),g.year)),f.yy=e.cache(e.process(e.rtoken(/^(\d\d)/),g.year)),f.yyy=e.cache(e.process(e.rtoken(/^(\d\d?\d?\d?)/),g.year)),f.yyyy=e.cache(e.process(e.rtoken(/^(\d\d\d\d)/),g.year)),d=function(){return e.each(e.any.apply(null,arguments),e.not(f.ctoken2("timeContext")))},f.day=d(f.d,f.dd),f.month=d(f.M,f.MMM),f.year=d(f.yyyy,f.yy),f.orientation=e.process(f.ctoken("past future"),function(a){return function(){this.orient=a}}),f.operator=e.process(f.ctoken("add subtract"),function(a){return function(){this.operator=a}}),f.rday=e.process(f.ctoken("yesterday tomorrow today now"),g.rday),f.unit=e.process(f.ctoken("second minute hour day week month year"),function(a){return function(){this.unit=a}}),f.value=e.process(e.rtoken(/^\d\d?(st|nd|rd|th)?/),function(a){return function(){this.value=a.replace(/\D/g,"")}}),f.expression=e.set([f.rday,f.operator,f.value,f.unit,f.orientation,f.ddd,f.MMM]),d=function(){return e.set(arguments,f.datePartDelimiter)},f.mdy=d(f.ddd,f.month,f.day,f.year),f.ymd=d(f.ddd,f.year,f.month,f.day),f.dmy=d(f.ddd,f.day,f.month,f.year),f.date=function(a){return(f[b.dateElementOrder]||f.mdy).call(this,a)},f.format=e.process(e.many(e.any(e.process(e.rtoken(/^(dd?d?d?|MM?M?M?|yy?y?y?|hh?|HH?|mm?|ss?|tt?|zz?z?)/),function(b){if(f[b])return f[b];throw a.Parsing.Exception(b)}),e.process(e.rtoken(/^[^dMyhHmstz]+/),function(a){return e.ignore(e.stoken(a))}))),function(a){return e.process(e.each.apply(null,a),g.finishExact)});var i={},j=function(a){return i[a]=i[a]||f.format(a)[0]};f.formats=function(a){if(a instanceof Array){for(var b=[],c=0;c<a.length;c++)b.push(j(a[c]));return e.any.apply(null,b)}return j(a)},f._formats=f.formats(['"yyyy-MM-ddTHH:mm:ssZ"',"yyyy-MM-ddTHH:mm:ssZ","yyyy-MM-ddTHH:mm:ssz","yyyy-MM-ddTHH:mm:ss","yyyy-MM-ddTHH:mmZ","yyyy-MM-ddTHH:mmz","yyyy-MM-ddTHH:mm","ddd, MMM dd, yyyy H:mm:ss tt","ddd MMM d yyyy HH:mm:ss zzz","MMddyyyy","ddMMyyyy","Mddyyyy","ddMyyyy","Mdyyyy","dMyyyy","yyyy","Mdyy","dMyy","d"]),f._start=e.process(e.set([f.date,f.time,f.expression],f.generalDelimiter,f.whiteSpace),g.finish),f.start=function(a){try{var b=f._formats.call({},a);if(0===b[1].length)return b}catch(c){}return f._start.call({},a)},a._parse=a.parse,a.parse=function(b){var c=null;if(!b)return null;if(b instanceof Date)return b;try{c=a.Grammar.start.call({},b.replace(/^\s*(\S*(\s+\S+)*)\s*$/,"$1"))}catch(d){return null}return 0===c[1].length?c[0]:null},a.getParseFunction=function(b){var c=a.Grammar.formats(b);return function(a){var b=null;try{b=c.call({},a)}catch(d){return null}return 0===b[1].length?b[0]:null}},a.parseExact=function(b,c){return a.getParseFunction(c)(b)}}(),function(a,b){function c(a){return l.PF.compile(a||"nplurals=2; plural=(n != 1);")}function d(a,b){this._key=a,this._i18n=b}var e=Array.prototype,f=Object.prototype,g=e.slice,h=f.hasOwnProperty,i=e.forEach,j={},k={forEach:function(a,b,c){var d,e,f;if(null!==a)if(i&&a.forEach===i)a.forEach(b,c);else if(a.length===+a.length){for(d=0,e=a.length;e>d;d++)if(d in a&&b.call(c,a[d],d,a)===j)return}else for(f in a)if(h.call(a,f)&&b.call(c,a[f],f,a)===j)return},extend:function(a){return this.forEach(g.call(arguments,1),function(b){for(var c in b)a[c]=b[c]}),a}},l=function(a){if(this.defaults={locale_data:{messages:{"":{domain:"messages",lang:"en",plural_forms:"nplurals=2; plural=(n != 1);"}}},domain:"messages",debug:!1},this.options=k.extend({},this.defaults,a),this.textdomain(this.options.domain),a.domain&&!this.options.locale_data[this.options.domain])throw new Error("Text domain set to non-existent domain: `"+a.domain+"`")};l.context_delimiter=String.fromCharCode(4),k.extend(d.prototype,{onDomain:function(a){return this._domain=a,this},withContext:function(a){return this._context=a,this},ifPlural:function(a,b){return this._val=a,this._pkey=b,this},fetch:function(a){return"[object Array]"!={}.toString.call(a)&&(a=[].slice.call(arguments,0)),(a&&a.length?l.sprintf:function(a){return a})(this._i18n.dcnpgettext(this._domain,this._context,this._key,this._pkey,this._val),a)}}),k.extend(l.prototype,{translate:function(a){return new d(a,this)},textdomain:function(a){return a?void(this._textdomain=a):this._textdomain},gettext:function(a){return this.dcnpgettext.call(this,b,b,a)},dgettext:function(a,c){return this.dcnpgettext.call(this,a,b,c)},dcgettext:function(a,c){return this.dcnpgettext.call(this,a,b,c)},ngettext:function(a,c,d){return this.dcnpgettext.call(this,b,b,a,c,d)},dngettext:function(a,c,d,e){return this.dcnpgettext.call(this,a,b,c,d,e)},dcngettext:function(a,c,d,e){return this.dcnpgettext.call(this,a,b,c,d,e)},pgettext:function(a,c){return this.dcnpgettext.call(this,b,a,c)},dpgettext:function(a,b,c){return this.dcnpgettext.call(this,a,b,c)},dcpgettext:function(a,b,c){return this.dcnpgettext.call(this,a,b,c)},npgettext:function(a,c,d,e){return this.dcnpgettext.call(this,b,a,c,d,e)},dnpgettext:function(a,b,c,d,e){return this.dcnpgettext.call(this,a,b,c,d,e)},dcnpgettext:function(a,b,d,e,f){e=e||d,a=a||this._textdomain;var g;if(!this.options)return g=new l,g.dcnpgettext.call(g,void 0,void 0,d,e,f);if(!this.options.locale_data)throw new Error("No locale data provided.");if(!this.options.locale_data[a])throw new Error("Domain `"+a+"` was not found.");if(!this.options.locale_data[a][""])throw new Error("No locale meta information provided.");if(!d)throw new Error("No translation key found.");var h,i,j,k=b?b+l.context_delimiter+d:d,m=this.options.locale_data,n=m[a],o=(m.messages||this.defaults.locale_data.messages)[""],p=n[""].plural_forms||n[""]["Plural-Forms"]||n[""]["plural-forms"]||o.plural_forms||o["Plural-Forms"]||o["plural-forms"];if(void 0===f)j=0;else{if("number"!=typeof f&&(f=parseInt(f,10),isNaN(f)))throw new Error("The number that was passed in is not a number.");j=c(p)(f)}if(!n)throw new Error("No domain named `"+a+"` could be found.");return h=n[k],!h||j>h.length?(this.options.missing_key_callback&&this.options.missing_key_callback(k,a),i=[d,e],this.options.debug===!0&&console.log(i[c(p)(f)]),i[c()(f)]):(i=h[j],i?i:(i=[d,e],i[c()(f)]))}});var m=function(){function a(a){return Object.prototype.toString.call(a).slice(8,-1).toLowerCase()}function b(a,b){for(var c=[];b>0;c[--b]=a);return c.join("")}var c=function(){return c.cache.hasOwnProperty(arguments[0])||(c.cache[arguments[0]]=c.parse(arguments[0])),c.format.call(null,c.cache[arguments[0]],arguments)};return c.format=function(c,d){var e,f,g,h,i,j,k,l=1,n=c.length,o="",p=[];for(f=0;n>f;f++)if(o=a(c[f]),"string"===o)p.push(c[f]);else if("array"===o){if(h=c[f],h[2])for(e=d[l],g=0;g<h[2].length;g++){if(!e.hasOwnProperty(h[2][g]))throw m('[sprintf] property "%s" does not exist',h[2][g]);e=e[h[2][g]]}else e=h[1]?d[h[1]]:d[l++];if(/[^s]/.test(h[8])&&"number"!=a(e))throw m("[sprintf] expecting number but found %s",a(e));switch(("undefined"==typeof e||null===e)&&(e=""),h[8]){case"b":e=e.toString(2);break;case"c":e=String.fromCharCode(e);break;case"d":e=parseInt(e,10);break;case"e":e=h[7]?e.toExponential(h[7]):e.toExponential();break;case"f":e=h[7]?parseFloat(e).toFixed(h[7]):parseFloat(e);break;case"o":e=e.toString(8);break;case"s":e=(e=String(e))&&h[7]?e.substring(0,h[7]):e;break;case"u":e=Math.abs(e);break;case"x":e=e.toString(16);break;case"X":e=e.toString(16).toUpperCase()}e=/[def]/.test(h[8])&&h[3]&&e>=0?"+"+e:e,j=h[4]?"0"==h[4]?"0":h[4].charAt(1):" ",k=h[6]-String(e).length,i=h[6]?b(j,k):"",p.push(h[5]?e+i:i+e)}return p.join("")},c.cache={},c.parse=function(a){for(var b=a,c=[],d=[],e=0;b;){if(null!==(c=/^[^\x25]+/.exec(b)))d.push(c[0]);else if(null!==(c=/^\x25{2}/.exec(b)))d.push("%");else{if(null===(c=/^\x25(?:([1-9]\d*)\$|\(([^\)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/.exec(b)))throw"[sprintf] huh?";if(c[2]){e|=1;var f=[],g=c[2],h=[];if(null===(h=/^([a-z_][a-z_\d]*)/i.exec(g)))throw"[sprintf] huh?";for(f.push(h[1]);""!==(g=g.substring(h[0].length));)if(null!==(h=/^\.([a-z_][a-z_\d]*)/i.exec(g)))f.push(h[1]);else{if(null===(h=/^\[(\d+)\]/.exec(g)))throw"[sprintf] huh?";f.push(h[1])}c[2]=f}else e|=2;if(3===e)throw"[sprintf] mixing positional and named placeholders is not (yet) supported";d.push(c)}b=b.substring(c[0].length)}return d},c}(),n=function(a,b){return b.unshift(a),m.apply(null,b)};l.parse_plural=function(a,b){return a=a.replace(/n/g,b),l.parse_expression(a)},l.sprintf=function(a,b){return"[object Array]"=={}.toString.call(b)?n(a,[].slice.call(b)):m.apply(this,[].slice.call(arguments))},l.prototype.sprintf=function(){return l.sprintf.apply(this,arguments)},l.PF={},l.PF.parse=function(a){var b=l.PF.extractPluralExpr(a);return l.PF.parser.parse.call(l.PF.parser,b)},l.PF.compile=function(a){function b(a){return a===!0?1:a?a:0}var c=l.PF.parse(a);return function(a){return b(l.PF.interpreter(c)(a))}},l.PF.interpreter=function(a){return function(b){switch(a.type){case"GROUP":return l.PF.interpreter(a.expr)(b);case"TERNARY":return l.PF.interpreter(a.expr)(b)?l.PF.interpreter(a.truthy)(b):l.PF.interpreter(a.falsey)(b);case"OR":return l.PF.interpreter(a.left)(b)||l.PF.interpreter(a.right)(b);case"AND":return l.PF.interpreter(a.left)(b)&&l.PF.interpreter(a.right)(b);case"LT":return l.PF.interpreter(a.left)(b)<l.PF.interpreter(a.right)(b);case"GT":return l.PF.interpreter(a.left)(b)>l.PF.interpreter(a.right)(b);case"LTE":return l.PF.interpreter(a.left)(b)<=l.PF.interpreter(a.right)(b);case"GTE":return l.PF.interpreter(a.left)(b)>=l.PF.interpreter(a.right)(b);case"EQ":return l.PF.interpreter(a.left)(b)==l.PF.interpreter(a.right)(b);case"NEQ":return l.PF.interpreter(a.left)(b)!=l.PF.interpreter(a.right)(b);case"MOD":return l.PF.interpreter(a.left)(b)%l.PF.interpreter(a.right)(b);case"VAR":return b;case"NUM":return a.val;default:throw new Error("Invalid Token found.")}}},l.PF.extractPluralExpr=function(a){a=a.replace(/^\s\s*/,"").replace(/\s\s*$/,""),/;\s*$/.test(a)||(a=a.concat(";"));var b,c=/nplurals\=(\d+);/,d=/plural\=(.*);/,e=a.match(c),f={};if(!(e.length>1))throw new Error("nplurals not found in plural_forms string: "+a);if(f.nplurals=e[1],a=a.replace(c,""),b=a.match(d),!(b&&b.length>1))throw new Error("`plural` expression not found: "+a);return b[1]},l.PF.parser=function(){var a={trace:function(){},yy:{},symbols_:{error:2,expressions:3,e:4,EOF:5,"?":6,":":7,"||":8,"&&":9,"<":10,"<=":11,">":12,">=":13,"!=":14,"==":15,"%":16,"(":17,")":18,n:19,NUMBER:20,$accept:0,$end:1},terminals_:{2:"error",5:"EOF",6:"?",7:":",8:"||",9:"&&",10:"<",11:"<=",12:">",13:">=",14:"!=",15:"==",16:"%",17:"(",18:")",19:"n",20:"NUMBER"},productions_:[0,[3,2],[4,5],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,1],[4,1]],performAction:function(a,b,c,d,e,f,g){var h=f.length-1;switch(e){case 1:return{type:"GROUP",expr:f[h-1]};case 2:this.$={type:"TERNARY",expr:f[h-4],truthy:f[h-2],falsey:f[h]};break;case 3:this.$={type:"OR",left:f[h-2],right:f[h]};break;case 4:this.$={type:"AND",left:f[h-2],right:f[h]};break;case 5:this.$={type:"LT",left:f[h-2],right:f[h]};break;case 6:this.$={type:"LTE",left:f[h-2],right:f[h]};break;case 7:this.$={type:"GT",left:f[h-2],right:f[h]};break;case 8:this.$={type:"GTE",left:f[h-2],right:f[h]};break;case 9:this.$={type:"NEQ",left:f[h-2],right:f[h]};break;case 10:this.$={type:"EQ",left:f[h-2],right:f[h]};break;case 11:this.$={type:"MOD",left:f[h-2],right:f[h]};break;case 12:this.$={type:"GROUP",expr:f[h-1]};break;case 13:this.$={type:"VAR"};break;case 14:this.$={type:"NUM",val:Number(a)}}},table:[{3:1,4:2,17:[1,3],19:[1,4],20:[1,5]},{1:[3]},{5:[1,6],6:[1,7],8:[1,8],9:[1,9],10:[1,10],11:[1,11],12:[1,12],13:[1,13],14:[1,14],15:[1,15],16:[1,16]},{4:17,17:[1,3],19:[1,4],20:[1,5]},{5:[2,13],6:[2,13],7:[2,13],8:[2,13],9:[2,13],10:[2,13],11:[2,13],12:[2,13],13:[2,13],14:[2,13],15:[2,13],16:[2,13],18:[2,13]},{5:[2,14],6:[2,14],7:[2,14],8:[2,14],9:[2,14],10:[2,14],11:[2,14],12:[2,14],13:[2,14],14:[2,14],15:[2,14],16:[2,14],18:[2,14]},{1:[2,1]},{4:18,17:[1,3],19:[1,4],20:[1,5]},{4:19,17:[1,3],19:[1,4],20:[1,5]},{4:20,17:[1,3],19:[1,4],20:[1,5]},{4:21,17:[1,3],19:[1,4],20:[1,5]},{4:22,17:[1,3],19:[1,4],20:[1,5]},{4:23,17:[1,3],19:[1,4],20:[1,5]},{4:24,17:[1,3],19:[1,4],20:[1,5]},{4:25,17:[1,3],19:[1,4],20:[1,5]},{4:26,17:[1,3],19:[1,4],20:[1,5]},{4:27,17:[1,3],19:[1,4],20:[1,5]},{6:[1,7],8:[1,8],9:[1,9],10:[1,10],11:[1,11],12:[1,12],13:[1,13],14:[1,14],15:[1,15],16:[1,16],18:[1,28]},{6:[1,7],7:[1,29],8:[1,8],9:[1,9],10:[1,10],11:[1,11],12:[1,12],13:[1,13],14:[1,14],15:[1,15],16:[1,16]},{5:[2,3],6:[2,3],7:[2,3],8:[2,3],9:[1,9],10:[1,10],11:[1,11],12:[1,12],13:[1,13],14:[1,14],15:[1,15],16:[1,16],18:[2,3]},{5:[2,4],6:[2,4],7:[2,4],8:[2,4],9:[2,4],10:[1,10],11:[1,11],12:[1,12],13:[1,13],14:[1,14],15:[1,15],16:[1,16],18:[2,4]},{5:[2,5],6:[2,5],7:[2,5],8:[2,5],9:[2,5],10:[2,5],11:[2,5],12:[2,5],13:[2,5],14:[2,5],15:[2,5],16:[1,16],18:[2,5]},{5:[2,6],6:[2,6],7:[2,6],8:[2,6],9:[2,6],10:[2,6],11:[2,6],12:[2,6],13:[2,6],14:[2,6],15:[2,6],16:[1,16],18:[2,6]},{5:[2,7],6:[2,7],7:[2,7],8:[2,7],9:[2,7],10:[2,7],11:[2,7],12:[2,7],13:[2,7],14:[2,7],15:[2,7],16:[1,16],18:[2,7]},{5:[2,8],6:[2,8],7:[2,8],8:[2,8],9:[2,8],10:[2,8],11:[2,8],12:[2,8],13:[2,8],14:[2,8],15:[2,8],16:[1,16],18:[2,8]},{5:[2,9],6:[2,9],7:[2,9],8:[2,9],9:[2,9],10:[2,9],11:[2,9],12:[2,9],13:[2,9],14:[2,9],15:[2,9],16:[1,16],18:[2,9]},{5:[2,10],6:[2,10],7:[2,10],8:[2,10],9:[2,10],10:[2,10],11:[2,10],12:[2,10],13:[2,10],14:[2,10],15:[2,10],16:[1,16],18:[2,10]},{5:[2,11],6:[2,11],7:[2,11],8:[2,11],9:[2,11],10:[2,11],11:[2,11],12:[2,11],13:[2,11],14:[2,11],15:[2,11],16:[2,11],18:[2,11]},{5:[2,12],6:[2,12],7:[2,12],8:[2,12],9:[2,12],10:[2,12],11:[2,12],12:[2,12],13:[2,12],14:[2,12],15:[2,12],16:[2,12],18:[2,12]},{4:30,17:[1,3],19:[1,4],20:[1,5]},{5:[2,2],6:[1,7],7:[2,2],8:[1,8],9:[1,9],10:[1,10],11:[1,11],12:[1,12],13:[1,13],14:[1,14],15:[1,15],16:[1,16],18:[2,2]}],defaultActions:{6:[2,1]},parseError:function(a,b){throw new Error(a)},parse:function(a){function b(a){e.length=e.length-2*a,f.length=f.length-a,g.length=g.length-a}function c(){var a;return a=d.lexer.lex()||1,"number"!=typeof a&&(a=d.symbols_[a]||a),a}var d=this,e=[0],f=[null],g=[],h=this.table,i="",j=0,k=0,l=0,m=2,n=1;this.lexer.setInput(a),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,"undefined"==typeof this.lexer.yylloc&&(this.lexer.yylloc={});var o=this.lexer.yylloc;g.push(o),"function"==typeof this.yy.parseError&&(this.parseError=this.yy.parseError);for(var p,q,r,s,t,u,v,w,x,y={};;){if(r=e[e.length-1],this.defaultActions[r]?s=this.defaultActions[r]:(null==p&&(p=c()),s=h[r]&&h[r][p]),"undefined"==typeof s||!s.length||!s[0]){if(!l){x=[];for(u in h[r])this.terminals_[u]&&u>2&&x.push("'"+this.terminals_[u]+"'");var z="";z=this.lexer.showPosition?"Parse error on line "+(j+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+x.join(", ")+", got '"+this.terminals_[p]+"'":"Parse error on line "+(j+1)+": Unexpected "+(1==p?"end of input":"'"+(this.terminals_[p]||p)+"'"),this.parseError(z,{text:this.lexer.match,token:this.terminals_[p]||p,line:this.lexer.yylineno,loc:o,expected:x})}if(3==l){if(p==n)throw new Error(z||"Parsing halted.");k=this.lexer.yyleng,i=this.lexer.yytext,j=this.lexer.yylineno,o=this.lexer.yylloc,p=c()}for(;;){if(m.toString()in h[r])break;if(0==r)throw new Error(z||"Parsing halted.");b(1),r=e[e.length-1]}q=p,p=m,r=e[e.length-1],s=h[r]&&h[r][m],l=3}if(s[0]instanceof Array&&s.length>1)throw new Error("Parse Error: multiple actions possible at state: "+r+", token: "+p);switch(s[0]){case 1:e.push(p),f.push(this.lexer.yytext),g.push(this.lexer.yylloc),e.push(s[1]),p=null,q?(p=q,q=null):(k=this.lexer.yyleng,i=this.lexer.yytext,j=this.lexer.yylineno,o=this.lexer.yylloc,l>0&&l--);break;case 2:if(v=this.productions_[s[1]][1],y.$=f[f.length-v],y._$={first_line:g[g.length-(v||1)].first_line,last_line:g[g.length-1].last_line,first_column:g[g.length-(v||1)].first_column,last_column:g[g.length-1].last_column},t=this.performAction.call(y,i,k,j,this.yy,s[1],f,g),"undefined"!=typeof t)return t;v&&(e=e.slice(0,-1*v*2),f=f.slice(0,-1*v),g=g.slice(0,-1*v)),e.push(this.productions_[s[1]][0]),f.push(y.$),g.push(y._$),w=h[e[e.length-2]][e[e.length-1]],e.push(w);break;case 3:return!0}}return!0}},b=function(){var a={EOF:1,parseError:function(a,b){if(!this.yy.parseError)throw new Error(a);this.yy.parseError(a,b)},setInput:function(a){return this._input=a,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this},input:function(){var a=this._input[0];this.yytext+=a,this.yyleng++,this.match+=a,this.matched+=a;var b=a.match(/\n/);return b&&this.yylineno++,this._input=this._input.slice(1),a},unput:function(a){return this._input=a+this._input,this},more:function(){return this._more=!0,this},pastInput:function(){var a=this.matched.substr(0,this.matched.length-this.match.length);return(a.length>20?"...":"")+a.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var a=this.match;return a.length<20&&(a+=this._input.substr(0,20-a.length)),(a.substr(0,20)+(a.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var a=this.pastInput(),b=new Array(a.length+1).join("-");return a+this.upcomingInput()+"\n"+b+"^"},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var a,b,c;this._more||(this.yytext="",this.match="");for(var d=this._currentRules(),e=0;e<d.length;e++)if(b=this._input.match(this.rules[d[e]]))return c=b[0].match(/\n.*/g),c&&(this.yylineno+=c.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:c?c[c.length-1].length-1:this.yylloc.last_column+b[0].length},this.yytext+=b[0],this.match+=b[0],this.matches=b,this.yyleng=this.yytext.length,this._more=!1,this._input=this._input.slice(b[0].length),this.matched+=b[0],a=this.performAction.call(this,this.yy,this,d[e],this.conditionStack[this.conditionStack.length-1]),a?a:void 0;return""===this._input?this.EOF:void this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var a=this.next();return"undefined"!=typeof a?a:this.lex()},begin:function(a){this.conditionStack.push(a)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(a){this.begin(a)}};return a.performAction=function(a,b,c,d){switch(c){case 0:break;case 1:return 20;case 2:return 19;case 3:return 8;case 4:return 9;case 5:return 6;case 6:return 7;case 7:return 11;case 8:return 13;case 9:return 10;case 10:return 12;case 11:return 14;case 12:return 15;case 13:return 16;case 14:return 17;case 15:return 18;case 16:return 5;case 17:return"INVALID"}},a.rules=[/^\s+/,/^[0-9]+(\.[0-9]+)?\b/,/^n\b/,/^\|\|/,/^&&/,/^\?/,/^:/,/^<=/,/^>=/,/^</,/^>/,/^!=/,/^==/,/^%/,/^\(/,/^\)/,/^$/,/^./],a.conditions={INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17],inclusive:!0}},a}();return a.lexer=b,a}(),"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=l),exports.Jed=l):("function"==typeof define&&define.amd&&define(function(){return l}),a.Jed=l)}(this),function(a){function b(a){return{jsonrpc:"2.0",method:a.method||"",params:a.params||{},id:g++}}function c(c){var d=a.isArray(c)?c.map(b):b(c);return JSON.stringify(d)}function d(a){return a.sort(e)}function e(a,b){return a.id<b.id?-1:1}function f(b,e){var f=new a.Deferred;e=e||{};var g=e.success||h,i=e.error||h;delete e.success,delete e.error;var j=a.isArray(b),k=a.extend({url:(j?b[0].url:b.url)||a.jsonrpc.defaultUrl,contentType:"application/json",dataType:"text",dataFilter:function(a,b){return JSON.parse(a)},type:"POST",processData:!1,data:c(b),success:function(a){if(j){var b=d(a);return g(b),void f.resolve(b)}if(a.hasOwnProperty("error"))return i(a.error),void f.reject(a.error);if(a.hasOwnProperty("result"))return g(a.result),void f.resolve(a.result);throw"Invalid response returned"},error:function(a,b,c){var d=null;if("timeout"===c)d={status:b,code:-32e3,message:"Request Timeout",data:null};else try{var e=JSON.parse(a.responseText);d=e.error}catch(g){d={status:b,code:-32603,message:c,data:a.responseText}}i(d),f.reject(d)}},e);return a.ajax(k),f.promise()}var g=1,h=function(){};a.extend({jsonrpc:f}),a.jsonrpc.defaultUrl="/jsonrpc"}(jQuery),!function(a,b,c,d){var e=a(b);a.fn.lazyload=function(f){function g(){var b=0;i.each(function(){var c=a(this);if(!j.skip_invisible||c.is(":visible"))if(a.abovethetop(this,j)||a.leftofbegin(this,j));else if(a.belowthefold(this,j)||a.rightoffold(this,j)){if(++b>j.failure_limit)return!1}else c.trigger("appear"),b=0})}var h,i=this,j={threshold:0,failure_limit:0,event:"scroll",effect:"show",container:b,data_attribute:"original",skip_invisible:!0,appear:null,load:null,placeholder:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC"};return f&&(d!==f.failurelimit&&(f.failure_limit=f.failurelimit,delete f.failurelimit),d!==f.effectspeed&&(f.effect_speed=f.effectspeed,delete f.effectspeed),a.extend(j,f)),h=j.container===d||j.container===b?e:a(j.container),0===j.event.indexOf("scroll")&&h.bind(j.event,function(){return g()}),this.each(function(){var b=this,c=a(b);b.loaded=!1,(c.attr("src")===d||c.attr("src")===!1)&&c.is("img")&&c.attr("src",j.placeholder),c.one("appear",function(){if(!this.loaded){if(j.appear){var d=i.length;j.appear.call(b,d,j)}a("<img />").bind("load",function(){var d=c.attr("data-"+j.data_attribute);c.hide(),c.is("img")?c.attr("src",d):c.css("background-image","url('"+d+"')"),c[j.effect](j.effect_speed),b.loaded=!0;var e=a.grep(i,function(a){return!a.loaded});if(i=a(e),j.load){var f=i.length;j.load.call(b,f,j)}}).attr("src",c.attr("data-"+j.data_attribute))}}),0!==j.event.indexOf("scroll")&&c.bind(j.event,function(){b.loaded||c.trigger("appear")})}),e.bind("resize",function(){g()}),/(?:iphone|ipod|ipad).*os 5/gi.test(navigator.appVersion)&&e.bind("pageshow",function(b){b.originalEvent&&b.originalEvent.persisted&&i.each(function(){a(this).trigger("appear")})}),a(c).ready(function(){g()}),this},a.belowthefold=function(c,f){var g;return g=f.container===d||f.container===b?(b.innerHeight?b.innerHeight:e.height())+e.scrollTop():a(f.container).offset().top+a(f.container).height(),g<=a(c).offset().top-f.threshold},a.rightoffold=function(c,f){var g;return g=f.container===d||f.container===b?e.width()+e.scrollLeft():a(f.container).offset().left+a(f.container).width(),g<=a(c).offset().left-f.threshold},a.abovethetop=function(c,f){var g;return g=f.container===d||f.container===b?e.scrollTop():a(f.container).offset().top,g>=a(c).offset().top+f.threshold+a(c).height()},a.leftofbegin=function(c,f){var g;return g=f.container===d||f.container===b?e.scrollLeft():a(f.container).offset().left,g>=a(c).offset().left+f.threshold+a(c).width()},a.inviewport=function(b,c){return!(a.rightoffold(b,c)||a.leftofbegin(b,c)||a.belowthefold(b,c)||a.abovethetop(b,c))},a.extend(a.expr[":"],{"below-the-fold":function(b){return a.belowthefold(b,{threshold:0})},"above-the-top":function(b){return!a.belowthefold(b,{threshold:0})},"right-of-screen":function(b){return a.rightoffold(b,{threshold:0})},"left-of-screen":function(b){return!a.rightoffold(b,{threshold:0})},"in-viewport":function(b){return a.inviewport(b,{threshold:0})},"above-the-fold":function(b){return!a.belowthefold(b,{threshold:0})},"right-of-fold":function(b){return a.rightoffold(b,{threshold:0})},"left-of-fold":function(b){return!a.rightoffold(b,{threshold:0})}})}(jQuery,window,document),function(a){"use strict";function b(a,b){return Math.round(a/b)*b}function c(a){return"number"==typeof a&&!isNaN(a)&&isFinite(a)}function d(a){var b=Math.pow(10,7);return Number((Math.round(a*b)/b).toFixed(7))}function e(a,b,c){a.addClass(b),setTimeout(function(){a.removeClass(b)},c)}function f(a){return Math.max(Math.min(a,100),0)}function g(b){return a.isArray(b)?b:[b]}function h(a){var b=a.split(".");return b.length>1?b[1].length:0}function i(a,b){return 100/(b-a)}function j(a,b){return 100*b/(a[1]-a[0])}function k(a,b){return j(a,a[0]<0?b+Math.abs(a[0]):b-a[0])}function l(a,b){return b*(a[1]-a[0])/100+a[0]}function m(a,b){for(var c=1;a>=b[c];)c+=1;return c}function n(a,b,c){if(c>=a.slice(-1)[0])return 100;var d,e,f,g,h=m(c,a);return d=a[h-1],e=a[h],f=b[h-1],g=b[h],f+k([d,e],c)/i(f,g)}function o(a,b,c){if(c>=100)return a.slice(-1)[0];var d,e,f,g,h=m(c,b);return d=a[h-1],e=a[h],f=b[h-1],g=b[h],l([d,e],(c-f)*i(f,g))}function p(a,c,d,e){if(100===e)return e;var f,g,h=m(e,a);return d?(f=a[h-1],g=a[h],e-f>(g-f)/2?g:f):c[h-1]?a[h-1]+b(e-a[h-1],c[h-1]):e}function q(a,b,d){var e;if("number"==typeof b&&(b=[b]),"[object Array]"!==Object.prototype.toString.call(b))throw new Error("noUiSlider: 'range' contains invalid value.");if(e="min"===a?0:"max"===a?100:parseFloat(a),!c(e)||!c(b[0]))throw new Error("noUiSlider: 'range' value isn't numeric.");d.xPct.push(e),d.xVal.push(b[0]),e?d.xSteps.push(isNaN(b[1])?!1:b[1]):isNaN(b[1])||(d.xSteps[0]=b[1])}function r(a,b,c){return b?void(c.xSteps[a]=j([c.xVal[a],c.xVal[a+1]],b)/i(c.xPct[a],c.xPct[a+1])):!0}function s(a,b,c,d){this.xPct=[],this.xVal=[],this.xSteps=[d||!1],this.xNumSteps=[!1],this.snap=b,this.direction=c;var e,f=[];for(e in a)a.hasOwnProperty(e)&&f.push([a[e],e]);for(f.sort(function(a,b){return a[0]-b[0]}),e=0;e<f.length;e++)q(f[e][1],f[e][0],this);for(this.xNumSteps=this.xSteps.slice(0),e=0;e<this.xNumSteps.length;e++)r(e,this.xNumSteps[e],this)}function t(a,b){if(!c(b))throw new Error("noUiSlider: 'step' is not numeric.");a.singleStep=b}function u(b,c){if("object"!=typeof c||a.isArray(c))throw new Error("noUiSlider: 'range' is not an object.");if(void 0===c.min||void 0===c.max)throw new Error("noUiSlider: Missing 'min' or 'max' in 'range'.");b.spectrum=new s(c,b.snap,b.dir,b.singleStep)}function v(b,c){if(c=g(c),!a.isArray(c)||!c.length||c.length>2)throw new Error("noUiSlider: 'start' option is incorrect."); b.handles=c.length,b.start=c}function w(a,b){if(a.snap=b,"boolean"!=typeof b)throw new Error("noUiSlider: 'snap' option must be a boolean.")}function x(a,b){if(a.animate=b,"boolean"!=typeof b)throw new Error("noUiSlider: 'animate' option must be a boolean.")}function y(a,b){if("lower"===b&&1===a.handles)a.connect=1;else if("upper"===b&&1===a.handles)a.connect=2;else if(b===!0&&2===a.handles)a.connect=3;else{if(b!==!1)throw new Error("noUiSlider: 'connect' option doesn't match handle count.");a.connect=0}}function z(a,b){switch(b){case"horizontal":a.ort=0;break;case"vertical":a.ort=1;break;default:throw new Error("noUiSlider: 'orientation' option is invalid.")}}function A(a,b){if(!c(b))throw new Error("noUiSlider: 'margin' option must be numeric.");if(a.margin=a.spectrum.getMargin(b),!a.margin)throw new Error("noUiSlider: 'margin' option is only supported on linear sliders.")}function B(a,b){if(!c(b))throw new Error("noUiSlider: 'limit' option must be numeric.");if(a.limit=a.spectrum.getMargin(b),!a.limit)throw new Error("noUiSlider: 'limit' option is only supported on linear sliders.")}function C(a,b){switch(b){case"ltr":a.dir=0;break;case"rtl":a.dir=1,a.connect=[0,2,1,3][a.connect];break;default:throw new Error("noUiSlider: 'direction' option was not recognized.")}}function D(a,b){if("string"!=typeof b)throw new Error("noUiSlider: 'behaviour' must be a string containing options.");var c=b.indexOf("tap")>=0,d=b.indexOf("drag")>=0,e=b.indexOf("fixed")>=0,f=b.indexOf("snap")>=0;a.events={tap:c||f,drag:d,fixed:e,snap:f}}function E(a,b){if(a.format=b,"function"==typeof b.to&&"function"==typeof b.from)return!0;throw new Error("noUiSlider: 'format' requires 'to' and 'from' methods.")}function F(b){var c,d={margin:0,limit:0,animate:!0,format:V};return c={step:{r:!1,t:t},start:{r:!0,t:v},connect:{r:!0,t:y},direction:{r:!0,t:C},snap:{r:!1,t:w},animate:{r:!1,t:x},range:{r:!0,t:u},orientation:{r:!1,t:z},margin:{r:!1,t:A},limit:{r:!1,t:B},behaviour:{r:!0,t:D},format:{r:!1,t:E}},b=a.extend({connect:!1,direction:"ltr",behaviour:"tap",orientation:"horizontal"},b),a.each(c,function(a,c){if(void 0===b[a]){if(c.r)throw new Error("noUiSlider: '"+a+"' is required.");return!0}c.t(d,b[a])}),d.style=d.ort?"top":"left",d}function G(a,b,c){var d=a+b[0],e=a+b[1];return c?(0>d&&(e+=Math.abs(d)),e>100&&(d-=e-100),[f(d),f(e)]):[d,e]}function H(a){a.preventDefault();var b,c,d=0===a.type.indexOf("touch"),e=0===a.type.indexOf("mouse"),f=0===a.type.indexOf("pointer"),g=a;return 0===a.type.indexOf("MSPointer")&&(f=!0),a.originalEvent&&(a=a.originalEvent),d&&(b=a.changedTouches[0].pageX,c=a.changedTouches[0].pageY),(e||f)&&(f||void 0!==window.pageXOffset||(window.pageXOffset=document.documentElement.scrollLeft,window.pageYOffset=document.documentElement.scrollTop),b=a.clientX+window.pageXOffset,c=a.clientY+window.pageYOffset),g.points=[b,c],g.cursor=e,g}function I(b,c){var d=a("<div><div/></div>").addClass(U[2]),e=["-lower","-upper"];return b&&e.reverse(),d.children().addClass(U[3]+" "+U[3]+e[c]),d}function J(a,b,c){switch(a){case 1:b.addClass(U[7]),c[0].addClass(U[6]);break;case 3:c[1].addClass(U[6]);case 2:c[0].addClass(U[7]);case 0:b.addClass(U[6])}}function K(a,b,c){var d,e=[];for(d=0;a>d;d+=1)e.push(I(b,d).appendTo(c));return e}function L(b,c,d){return d.addClass([U[0],U[8+b],U[4+c]].join(" ")),a("<div/>").appendTo(d).addClass(U[1])}function M(b,c,d){function i(){return C[["width","height"][c.ort]]()}function j(a){var b,c=[E.val()];for(b=0;b<a.length;b+=1)E.trigger(a[b],c)}function k(a){return 1===a.length?a[0]:c.dir?a.reverse():a}function l(a){return function(b,c){E.val([a?null:c,a?c:null],!0)}}function m(b){var c=a.inArray(b,N);E[0].linkAPI&&E[0].linkAPI[b]&&E[0].linkAPI[b].change(M[c],D[c].children(),E)}function n(b,d){var e=a.inArray(b,N);return d&&d.appendTo(D[e].children()),c.dir&&c.handles>1&&(e=1===e?0:1),l(e)}function o(){var a,b;for(a=0;a<N.length;a+=1)this.linkAPI&&this.linkAPI[b=N[a]]&&this.linkAPI[b].reconfirm(b)}function p(a,b,d,e){return a=a.replace(/\s/g,S+" ")+S,b.on(a,function(a){return E.attr("disabled")?!1:E.hasClass(U[14])?!1:(a=H(a),a.calcPoint=a.points[c.ort],void d(a,e))})}function q(a,b){var c,d=b.handles||D,e=!1,f=100*(a.calcPoint-b.start)/i(),g=d[0][0]!==D[0][0]?1:0;c=G(f,b.positions,d.length>1),e=v(d[0],c[g],1===d.length),d.length>1&&(e=v(d[1],c[g?0:1],!1)||e),e&&j(["slide"])}function r(b){a("."+U[15]).removeClass(U[15]),b.cursor&&a("body").css("cursor","").off(S),Q.off(S),E.removeClass(U[12]),j(["set","change"])}function s(b,c){1===c.handles.length&&c.handles[0].children().addClass(U[15]),b.stopPropagation(),p(T.move,Q,q,{start:b.calcPoint,handles:c.handles,positions:[F[0],F[D.length-1]]}),p(T.end,Q,r,null),b.cursor&&(a("body").css("cursor",a(b.target).css("cursor")),D.length>1&&E.addClass(U[12]),a("body").on("selectstart"+S,!1))}function t(b){var d,f=b.calcPoint,g=0;b.stopPropagation(),a.each(D,function(){g+=this.offset()[c.style]}),g=g/2>f||1===D.length?0:1,f-=C.offset()[c.style],d=100*f/i(),c.events.snap||e(E,U[14],300),v(D[g],d),j(["slide","set","change"]),c.events.snap&&s(b,{handles:[D[g]]})}function u(a){var b,c;if(!a.fixed)for(b=0;b<D.length;b+=1)p(T.start,D[b].children(),s,{handles:[D[b]]});a.tap&&p(T.start,C,t,{handles:D}),a.drag&&(c=C.find("."+U[7]).addClass(U[10]),a.fixed&&(c=c.add(C.children().not(c).children())),p(T.start,c,s,{handles:D}))}function v(a,b,d){var e=a[0]!==D[0][0]?1:0,g=F[0]+c.margin,h=F[1]-c.margin,i=F[0]+c.limit,j=F[1]-c.limit;return D.length>1&&(b=e?Math.max(b,g):Math.min(b,h)),d!==!1&&c.limit&&D.length>1&&(b=e?Math.min(b,i):Math.max(b,j)),b=I.getStep(b),b=f(parseFloat(b.toFixed(7))),b===F[e]?!1:(a.css(c.style,b+"%"),a.is(":first-child")&&a.toggleClass(U[17],b>50),F[e]=b,M[e]=I.fromStepping(b),m(N[e]),!0)}function w(a,b){var d,e,f;for(c.limit&&(a+=1),d=0;a>d;d+=1)e=d%2,f=b[e],null!==f&&f!==!1&&("number"==typeof f&&(f=String(f)),f=c.format.from(f),(f===!1||isNaN(f)||v(D[e],I.toStepping(f),d===3-c.dir)===!1)&&m(N[e]))}function x(a){if(E[0].LinkIsEmitting)return this;var b,d=g(a);return c.dir&&c.handles>1&&d.reverse(),c.animate&&-1!==F[0]&&e(E,U[14],300),b=D.length>1?3:1,1===d.length&&(b=1),w(b,d),j(["set"]),this}function y(){var a,b=[];for(a=0;a<c.handles;a+=1)b[a]=c.format.to(M[a]);return k(b)}function z(){return a(this).off(S).removeClass(U.join(" ")).empty(),delete this.LinkUpdate,delete this.LinkConfirm,delete this.LinkDefaultFormatter,delete this.LinkDefaultFlag,delete this.reappend,delete this.vGet,delete this.vSet,delete this.getCurrentStep,delete this.getInfo,delete this.destroy,d}function A(){var b=a.map(F,function(a,b){var c=I.getApplicableStep(a),d=h(String(c[2])),e=M[b],f=100===a?null:c[2],g=Number((e-c[2]).toFixed(d)),i=0===a?null:g>=c[1]?c[2]:c[0]||!1;return[[i,f]]});return k(b)}function B(){return d}var C,D,E=a(b),F=[-1,-1],I=c.spectrum,M=[],N=["lower","upper"].slice(0,c.handles);if(c.dir&&N.reverse(),b.LinkUpdate=m,b.LinkConfirm=n,b.LinkDefaultFormatter=c.format,b.LinkDefaultFlag="lower",b.reappend=o,E.hasClass(U[0]))throw new Error("Slider was already initialized.");C=L(c.dir,c.ort,E),D=K(c.handles,c.dir,C),J(c.connect,E,D),u(c.events),b.vSet=x,b.vGet=y,b.destroy=z,b.getCurrentStep=A,b.getOriginalOptions=B,b.getInfo=function(){return[I,c.style,c.ort]},E.val(c.start)}function N(a){var b=F(a,this);return this.each(function(){M(this,b,a)})}function O(b){return this.each(function(){if(!this.destroy)return void a(this).noUiSlider(b);var c=a(this).val(),d=this.destroy(),e=a.extend({},d,b);a(this).noUiSlider(e),this.reappend(),d.start===e.start&&a(this).val(c)})}function P(){return this[0][arguments.length?"vSet":"vGet"].apply(this[0],arguments)}var Q=a(document),R=a.fn.val,S=".nui",T=window.navigator.pointerEnabled?{start:"pointerdown",move:"pointermove",end:"pointerup"}:window.navigator.msPointerEnabled?{start:"MSPointerDown",move:"MSPointerMove",end:"MSPointerUp"}:{start:"mousedown touchstart",move:"mousemove touchmove",end:"mouseup touchend"},U=["noUi-target","noUi-base","noUi-origin","noUi-handle","noUi-horizontal","noUi-vertical","noUi-background","noUi-connect","noUi-ltr","noUi-rtl","noUi-dragable","","noUi-state-drag","","noUi-state-tap","noUi-active","","noUi-stacking"];s.prototype.getMargin=function(a){return 2===this.xPct.length?j(this.xVal,a):!1},s.prototype.toStepping=function(a){return a=n(this.xVal,this.xPct,a),this.direction&&(a=100-a),a},s.prototype.fromStepping=function(a){return this.direction&&(a=100-a),d(o(this.xVal,this.xPct,a))},s.prototype.getStep=function(a){return this.direction&&(a=100-a),a=p(this.xPct,this.xSteps,this.snap,a),this.direction&&(a=100-a),a},s.prototype.getApplicableStep=function(a){var b=m(a,this.xPct),c=100===a?2:1;return[this.xNumSteps[b-2],this.xVal[b-c],this.xNumSteps[b-c]]},s.prototype.convert=function(a){return this.getStep(this.toStepping(a))};var V={to:function(a){return a.toFixed(2)},from:Number};a.fn.val=function(b){function c(a){return a.hasClass(U[0])?P:R}if(!arguments.length){var d=a(this[0]);return c(d).call(d)}var e=a.isFunction(b);return this.each(function(d){var f=b,g=a(this);e&&(f=b.call(this,d,g.val())),c(g).call(g,f)})},a.fn.noUiSlider=function(a,b){switch(a){case"step":return this[0].getCurrentStep();case"options":return this[0].getOriginalOptions()}return(b?O:N).call(this,a)}}(window.jQuery||window.Zepto),function(a){"use strict";"object"==typeof exports?a(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],a):a(jQuery)}(function(a){"use strict";var b=function(a){if(a=a||"once","string"!=typeof a)throw new Error("The jQuery Once id parameter must be a string");return a};a.fn.once=function(c){var d="jquery-once-"+b(c);return this.filter(function(){return a(this).data(d)!==!0}).data(d,!0)},a.fn.removeOnce=function(a){return this.findOnce(a).removeData("jquery-once-"+b(a))},a.fn.findOnce=function(c){var d="jquery-once-"+b(c);return this.filter(function(){return a(this).data(d)===!0})}}),function(a){var b=a(window);a.fn.visible=function(a,c,d){if(!(this.length<1)){var e=this.length>1?this.eq(0):this,f=e.get(0),g=b.width(),h=b.height(),d=d?d:"both",i=c===!0?f.offsetWidth*f.offsetHeight:!0;if("function"==typeof f.getBoundingClientRect){var j=f.getBoundingClientRect(),k=j.top>=0&&j.top<h,l=j.bottom>0&&j.bottom<=h,m=j.left>=0&&j.left<g,n=j.right>0&&j.right<=g,o=a?k||l:k&&l,p=a?m||n:m&&n;if("both"===d)return i&&o&&p;if("vertical"===d)return i&&o;if("horizontal"===d)return i&&p}else{var q=b.scrollTop(),r=q+h,s=b.scrollLeft(),t=s+g,u=e.offset(),v=u.top,w=v+e.height(),x=u.left,y=x+e.width(),z=a===!0?w:v,A=a===!0?v:w,B=a===!0?y:x,C=a===!0?x:y;if("both"===d)return!!i&&r>=A&&z>=q&&t>=C&&B>=s;if("vertical"===d)return!!i&&r>=A&&z>=q;if("horizontal"===d)return!!i&&t>=C&&B>=s}}}}(jQuery),window.JST||(window.JST={});var prettyPrint=function(){var a={el:function(b,c){var d,e=document.createElement(b);if(c=a.merge({},c),c&&c.style){c.style;a.applyCSS(e,c.style),delete c.style}for(d in c)c.hasOwnProperty(d)&&(e[d]=c[d]);return e},applyCSS:function(a,b){for(var c in b)if(b.hasOwnProperty(c))try{a.style[c]=b[c]}catch(d){}},txt:function(a){return document.createTextNode(a)},row:function(b,c,d){d=d||"td";var e,f=a.count(b,null)+1,g=a.el("tr"),h={style:a.getStyles(d,c),colSpan:f,onmouseover:function(){var b=this.parentNode.childNodes;a.forEach(b,function(b){"td"===b.nodeName.toLowerCase()&&a.applyCSS(b,a.getStyles("td_hover",c))})},onmouseout:function(){var b=this.parentNode.childNodes;a.forEach(b,function(b){"td"===b.nodeName.toLowerCase()&&a.applyCSS(b,a.getStyles("td",c))})}};return a.forEach(b,function(b){null!==b&&(e=a.el(d,h),b.nodeType?e.appendChild(b):e.innerHTML=a.shorten(b.toString()),g.appendChild(e))}),g},hRow:function(b,c){return a.row(b,c,"th")},table:function(b,c){b=b||[];var d={thead:{style:a.getStyles("thead",c)},tbody:{style:a.getStyles("tbody",c)},table:{style:a.getStyles("table",c)}},e=a.el("table",d.table),f=a.el("thead",d.thead),g=a.el("tbody",d.tbody);return b.length&&(e.appendChild(f),f.appendChild(a.hRow(b,c))),e.appendChild(g),{node:e,tbody:g,thead:f,appendChild:function(a){this.tbody.appendChild(a)},addRow:function(b,d,e){return this.appendChild(a.row.call(a,b,d||c,e)),this}}},shorten:function(a){return a},htmlentities:function(a){return a.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")},merge:function(b,c){"object"!=typeof b&&(b={});for(var d in c)if(c.hasOwnProperty(d)){var e=c[d];if("object"==typeof e){b[d]=a.merge(b[d],e);continue}b[d]=e}for(var f=2,g=arguments.length;g>f;f++)a.merge(b,arguments[f]);return b},count:function(a,b){for(var c=0,d=0,e=a.length;e>d;d++)a[d]===b&&c++;return c},thead:function(a){return a.getElementsByTagName("thead")[0]},forEach:function(a,b,c){c||(c=b);for(var d=a.length,e=-1;++e<d&&c(a[e],e,a)!==!1;);return!0},type:function(a){try{if(null===a)return"null";if(void 0===a)return"undefined";var b=Object.prototype.toString.call(a).match(/\s(.+?)\]/)[1].toLowerCase();return a.nodeType?1===a.nodeType?"domelement":"domnode":/^(string|number|array|regexp|function|date|boolean)$/.test(b)?b:"object"==typeof a?a.jquery&&"string"==typeof a.jquery?"jquery":"object":a===window||a===document?"object":"default"}catch(c){return"default"}},within:function(a){return{is:function(b){for(var c in a)if(a[c]===b)return c;return""}}},common:{circRef:function(c,d,e){return a.expander("[POINTS BACK TO <strong>"+d+"</strong>]","Click to show this item anyway",function(){this.parentNode.appendChild(b(c,{maxDepth:1}))})},depthReached:function(c,d){return a.expander("[DEPTH REACHED]","Click to show this item anyway",function(){try{this.parentNode.appendChild(b(c,{maxDepth:1}))}catch(d){this.parentNode.appendChild(a.table(["ERROR OCCURED DURING OBJECT RETRIEVAL"],"error").addRow([d.message]).node)}})}},getStyles:function(c,d){return d=b.settings.styles[d]||{},a.merge({},b.settings.styles["default"][c],d[c])},expander:function(b,c,d){return a.el("a",{innerHTML:a.shorten(b)+' <b style="visibility:hidden;">[+]</b>',title:c,onmouseover:function(){this.getElementsByTagName("b")[0].style.visibility="visible"},onmouseout:function(){this.getElementsByTagName("b")[0].style.visibility="hidden"},onclick:function(){return this.style.display="none",d.call(this),!1},style:{cursor:"pointer"}})},stringify:function(b){var c,d=a.type(b),e=!0;if("array"===d)return c="[",a.forEach(b,function(b,d){c+=(0===d?"":", ")+a.stringify(b)}),c+"]";if("object"==typeof b){c="{";for(var f in b)b.hasOwnProperty(f)&&(c+=(e?"":", ")+f+":"+a.stringify(b[f]),e=!1);return c+"}"}return"regexp"===d?"/"+b.source+"/":"string"===d?'"'+b.replace(/"/g,'\\"')+'"':b.toString()},headerGradient:function(){var a=document.createElement("canvas");if(!a.getContext)return"";var b=a.getContext("2d");a.height=30,a.width=1;var c=b.createLinearGradient(0,0,0,30);c.addColorStop(0,"rgba(0,0,0,0)"),c.addColorStop(1,"rgba(0,0,0,0.25)"),b.fillStyle=c,b.fillRect(0,0,1,30);var d=a.toDataURL&&a.toDataURL();return"url("+(d||"")+")"}()},b=function(c,d){d=d||{};var e=a.merge({},b.config,d),f=a.el("div"),g=(b.config,0),h={},i=!1;b.settings=e;var j={string:function(b){return a.txt('"'+a.shorten(b.replace(/"/g,'\\"'))+'"')},number:function(b){return a.txt(b)},regexp:function(b){var c=a.table(["RegExp",null],"regexp"),d=a.table(),f=a.expander("/"+b.source+"/","Click to show more",function(){this.parentNode.appendChild(c.node)});return d.addRow(["g",b.global]).addRow(["i",b.ignoreCase]).addRow(["m",b.multiline]),c.addRow(["source","/"+b.source+"/"]).addRow(["flags",d.node]).addRow(["lastIndex",b.lastIndex]),e.expanded?c.node:f},domelement:function(b,c){var d=a.table(["DOMElement",null],"domelement"),f=["id","className","innerHTML","src","href"],g=b.nodeName||"";return d.addRow(["tag","<"+g.toLowerCase()+">"]),a.forEach(f,function(c){b[c]&&d.addRow([c,a.htmlentities(b[c])])}),e.expanded?d.node:a.expander("DOMElement ("+g.toLowerCase()+")","Click to show more",function(){this.parentNode.appendChild(d.node)})},domnode:function(b){var c=a.table(["DOMNode",null],"domelement"),d=a.htmlentities((b.data||"UNDEFINED").replace(/\n/g,"\\n"));return c.addRow(["nodeType",b.nodeType+" ("+b.nodeName+")"]).addRow(["data",d]),e.expanded?c.node:a.expander("DOMNode","Click to show more",function(){this.parentNode.appendChild(c.node)})},jquery:function(a,b,c){return j.array(a,b,c,!0)},object:function(b,c,d){var f=a.within(h).is(b);if(f)return a.common.circRef(b,f,e);if(h[d||"TOP"]=b,c===e.maxDepth)return a.common.depthReached(b,e);var g=a.table(["Object",null],"object"),k=!0;for(var l in b)if(!b.hasOwnProperty||b.hasOwnProperty(l)){var m=b[l],n=a.type(m);k=!1;try{g.addRow([l,j[n](m,c+1,l)],n)}catch(o){window.console&&window.console.log&&console.log(o.message)}}k?g.addRow(["<small>[empty]</small>"]):g.thead.appendChild(a.hRow(["key","value"],"colHeader"));var p=e.expanded||i?g.node:a.expander(a.stringify(b),"Click to show more",function(){this.parentNode.appendChild(g.node)});return i=!0,p},array:function(b,c,d,f){var g=a.within(h).is(b);if(g)return a.common.circRef(b,g);if(h[d||"TOP"]=b,c===e.maxDepth)return a.common.depthReached(b);var i=f?"jQuery":"Array",k=a.table([i+"("+b.length+")",null],f?"jquery":i.toLowerCase()),l=!0,m=0;return f&&k.addRow(["selector",b.selector]),a.forEach(b,function(d,f){return e.maxArray>=0&&++m>e.maxArray?(k.addRow([f+".."+(b.length-1),j[a.type(d)]("...",c+1,f)]),!1):(l=!1,void k.addRow([f,j[a.type(d)](d,c+1,f)]))}),f||(l?k.addRow(["<small>[empty]</small>"]):k.thead.appendChild(a.hRow(["index","value"],"colHeader"))),e.expanded?k.node:a.expander(a.stringify(b),"Click to show more",function(){this.parentNode.appendChild(k.node)})},"function":function(b,c,d){var f=a.within(h).is(b);if(f)return a.common.circRef(b,f);h[d||"TOP"]=b;var g=a.table(["Function",null],"function"),i=(a.table(["Arguments"]),b.toString().match(/\((.+?)\)/)),j=b.toString().match(/\(.*?\)\s+?\{?([\S\s]+)/)[1].replace(/\}?$/,"");return g.addRow(["arguments",i?i[1].replace(/[^\w_,\s]/g,""):"<small>[none/native]</small>"]).addRow(["body",j]),e.expanded?g.node:a.expander("function(){...}","Click to see more about this function.",function(){this.parentNode.appendChild(g.node)})},date:function(b){var c=a.table(["Date",null],"date"),d=b.toString().split(/\s/);return c.addRow(["Time",d[4]]).addRow(["Date",d.slice(0,4).join("-")]),e.expanded?c.node:a.expander("Date (timestamp): "+ +b,"Click to see a little more info about this date",function(){this.parentNode.appendChild(c.node)})},"boolean":function(b){return a.txt(b.toString().toUpperCase())},undefined:function(){return a.txt("UNDEFINED")},"null":function(){return a.txt("NULL")},"default":function(){return a.txt("prettyPrint: TypeNotFound Error")}};return f.appendChild(j[e.forceObject?"object":a.type(c)](c,g)),f};return b.config={expanded:!0,forceObject:!1,maxDepth:3,maxArray:-1,styles:{array:{th:{backgroundColor:"#A4C18B",color:"white"}},"function":{th:{backgroundColor:"#D82525"}},regexp:{th:{backgroundColor:"#E2F3FB",color:"#000"}},object:{th:{backgroundColor:"#8DA3AD"}},jquery:{th:{backgroundColor:"#FBF315"}},error:{th:{backgroundColor:"red",color:"yellow"}},domelement:{th:{backgroundColor:"#F3801E"}},date:{th:{backgroundColor:"#A725D8"}},colHeader:{th:{backgroundColor:"#EEE",color:"#aaa",textTransform:"uppercase",fontSize:"80%",padding:"2px 5px"}},"default":{table:{borderCollapse:"collapse",width:"100%"},td:{padding:"5px",fontSize:"12px",backgroundColor:"rgba(255,255,255,0.5)",color:"#222",border:"1px solid #ddd",verticalAlign:"top",fontFamily:'"Consolas","Lucida Console",Courier,mono',whiteSpace:"nowrap"},td_hover:{},th:{padding:"5px",fontSize:"12px",backgroundColor:"#222",color:"#EEE",textAlign:"left",border:"1px solid #ddd",verticalAlign:"top",fontFamily:'"Consolas","Lucida Console",Courier,mono',backgroundRepeat:"repeat-x"}}}},b}();!function(a){"use strict";"function"==typeof define&&define.amd?define(a):"undefined"!=typeof module&&"undefined"!=typeof module.exports?module.exports=a():"undefined"!=typeof Package?Sortable=a():window.Sortable=a()}(function(){"use strict";function a(a,b){this.el=a,this.options=b=b||{};var d={group:Math.random(),sort:!0,disabled:!1,store:null,handle:null,scroll:!0,scrollSensitivity:30,scrollSpeed:10,draggable:/[uo]l/i.test(a.nodeName)?"li":">*",ghostClass:"sortable-ghost",ignore:"a, img",filter:null,animation:0,setData:function(a,b){a.setData("Text",b.textContent)},dropBubble:!1,dragoverBubble:!1};for(var e in d)!(e in b)&&(b[e]=d[e]);var g=b.group;g&&"object"==typeof g||(g=b.group={name:g}),["pull","put"].forEach(function(a){a in g||(g[a]=!0)}),M.forEach(function(d){b[d]=c(this,b[d]||N),f(a,d.substr(2).toLowerCase(),b[d])},this),b.groups=" "+g.name+(g.put.join?" "+g.put.join(" "):"")+" ",a[F]=b;for(var h in this)"_"===h.charAt(0)&&(this[h]=c(this,this[h]));f(a,"mousedown",this._onTapStart),f(a,"touchstart",this._onTapStart),f(a,"dragover",this),f(a,"dragenter",this),Q.push(this._onDragOver),b.store&&this.sort(b.store.get(this))}function b(a){s&&s.state!==a&&(i(s,"display",a?"none":""),!a&&s.state&&t.insertBefore(s,q),s.state=a)}function c(a,b){var c=P.call(arguments,2);return b.bind?b.bind.apply(b,[a].concat(c)):function(){return b.apply(a,c.concat(P.call(arguments)))}}function d(a,b,c){if(a){c=c||H,b=b.split(".");var d=b.shift().toUpperCase(),e=new RegExp("\\s("+b.join("|")+")\\s","g");do if(">*"===d&&a.parentNode===c||(""===d||a.nodeName.toUpperCase()==d)&&(!b.length||((" "+a.className+" ").match(e)||[]).length==b.length))return a;while(a!==c&&(a=a.parentNode))}return null}function e(a){a.dataTransfer.dropEffect="move",a.preventDefault()}function f(a,b,c){a.addEventListener(b,c,!1)}function g(a,b,c){a.removeEventListener(b,c,!1)}function h(a,b,c){if(a)if(a.classList)a.classList[c?"add":"remove"](b);else{var d=(" "+a.className+" ").replace(/\s+/g," ").replace(" "+b+" ","");a.className=d+(c?" "+b:"")}}function i(a,b,c){var d=a&&a.style;if(d){if(void 0===c)return H.defaultView&&H.defaultView.getComputedStyle?c=H.defaultView.getComputedStyle(a,""):a.currentStyle&&(c=a.currentStyle),void 0===b?c:c[b];b in d||(b="-webkit-"+b),d[b]=c+("string"==typeof c?"":"px")}}function j(a,b,c){if(a){var d=a.getElementsByTagName(b),e=0,f=d.length;if(c)for(;f>e;e++)c(d[e],e);return d}return[]}function k(a){a.draggable=!1}function l(){K=!1}function m(a,b){var c=a.lastElementChild,d=c.getBoundingClientRect();return b.clientY-(d.top+d.height)>5&&c}function n(a){for(var b=a.tagName+a.className+a.src+a.href+a.textContent,c=b.length,d=0;c--;)d+=b.charCodeAt(c);return d.toString(36)}function o(a){for(var b=0;a&&(a=a.previousElementSibling);)"TEMPLATE"!==a.nodeName.toUpperCase()&&b++;return b}function p(a,b){var c,d;return function(){void 0===c&&(c=arguments,d=this,setTimeout(function(){1===c.length?a.call(d,c[0]):a.apply(d,c),c=void 0},b))}}var q,r,s,t,u,v,w,x,y,z,A,B,C,D,E={},F="Sortable"+(new Date).getTime(),G=window,H=G.document,I=G.parseInt,J=!!("draggable"in H.createElement("div")),K=!1,L=function(a,b,c,d,e,f){var g=H.createEvent("Event");g.initEvent(b,!0,!0),g.item=c||a,g.from=d||a,g.clone=s,g.oldIndex=e,g.newIndex=f,a.dispatchEvent(g)},M="onAdd onUpdate onRemove onStart onEnd onFilter onSort".split(" "),N=function(){},O=Math.abs,P=[].slice,Q=[],R=p(function(a,b,c){if(c&&b.scroll){var d,e,f,g,h=b.scrollSensitivity,i=b.scrollSpeed,j=a.clientX,k=a.clientY,l=window.innerWidth,m=window.innerHeight;if(w!==c&&(v=b.scroll,w=c,v===!0)){v=c;do if(v.offsetWidth<v.scrollWidth||v.offsetHeight<v.scrollHeight)break;while(v=v.parentNode)}v&&(d=v,e=v.getBoundingClientRect(),f=(O(e.right-j)<=h)-(O(e.left-j)<=h),g=(O(e.bottom-k)<=h)-(O(e.top-k)<=h)),f||g||(f=(h>=l-j)-(h>=j),g=(h>=m-k)-(h>=k),(f||g)&&(d=G)),(E.vx!==f||E.vy!==g||E.el!==d)&&(E.el=d,E.vx=f,E.vy=g,clearInterval(E.pid),d&&(E.pid=setInterval(function(){d===G?G.scrollTo(G.scrollX+f*i,G.scrollY+g*i):(g&&(d.scrollTop+=g*i),f&&(d.scrollLeft+=f*i))},24)))}},30);return a.prototype={constructor:a,_dragStarted:function(){t&&q&&(h(q,this.options.ghostClass,!0),a.active=this,L(t,"start",q,t,z))},_onTapStart:function(a){var b=a.type,c=a.touches&&a.touches[0],e=(c||a).target,g=e,h=this.options,i=this.el,l=h.filter;if(!("mousedown"===b&&0!==a.button||h.disabled)&&(e=d(e,h.draggable,i))){if(z=o(e),"function"==typeof l){if(l.call(this,a,e,this))return L(g,"filter",e,i,z),void a.preventDefault()}else if(l&&(l=l.split(",").some(function(a){return a=d(g,a.trim(),i),a?(L(a,"filter",e,i,z),!0):void 0})))return void a.preventDefault();if((!h.handle||d(g,h.handle,i))&&e&&!q&&e.parentNode===i){C=a,t=this.el,q=e,u=q.nextSibling,B=this.options.group,q.draggable=!0,h.ignore.split(",").forEach(function(a){j(e,a.trim(),k)}),c&&(C={target:e,clientX:c.clientX,clientY:c.clientY},this._onDragStart(C,"touch"),a.preventDefault()),f(H,"mouseup",this._onDrop),f(H,"touchend",this._onDrop),f(H,"touchcancel",this._onDrop),f(q,"dragend",this),f(t,"dragstart",this._onDragStart),J||this._onDragStart(C,!0);try{H.selection?H.selection.empty():window.getSelection().removeAllRanges()}catch(m){}}}},_emulateDragOver:function(){if(D){i(r,"display","none");var a=H.elementFromPoint(D.clientX,D.clientY),b=a,c=" "+this.options.group.name,d=Q.length;if(b)do{if(b[F]&&b[F].groups.indexOf(c)>-1){for(;d--;)Q[d]({clientX:D.clientX,clientY:D.clientY,target:a,rootEl:b});break}a=b}while(b=b.parentNode);i(r,"display","")}},_onTouchMove:function(a){if(C){var b=a.touches?a.touches[0]:a,c=b.clientX-C.clientX,d=b.clientY-C.clientY,e=a.touches?"translate3d("+c+"px,"+d+"px,0)":"translate("+c+"px,"+d+"px)";D=b,i(r,"webkitTransform",e),i(r,"mozTransform",e),i(r,"msTransform",e),i(r,"transform",e),a.preventDefault()}},_onDragStart:function(a,b){var c=a.dataTransfer,d=this.options;if(this._offUpEvents(),"clone"==B.pull&&(s=q.cloneNode(!0),i(s,"display","none"),t.insertBefore(s,q)),b){var e,g=q.getBoundingClientRect(),h=i(q);r=q.cloneNode(!0),i(r,"top",g.top-I(h.marginTop,10)),i(r,"left",g.left-I(h.marginLeft,10)),i(r,"width",g.width),i(r,"height",g.height),i(r,"opacity","0.8"),i(r,"position","fixed"),i(r,"zIndex","100000"),t.appendChild(r),e=r.getBoundingClientRect(),i(r,"width",2*g.width-e.width),i(r,"height",2*g.height-e.height),"touch"===b?(f(H,"touchmove",this._onTouchMove),f(H,"touchend",this._onDrop),f(H,"touchcancel",this._onDrop)):(f(H,"mousemove",this._onTouchMove),f(H,"mouseup",this._onDrop)),this._loopId=setInterval(this._emulateDragOver,150)}else c&&(c.effectAllowed="move",d.setData&&d.setData.call(this,c,q)),f(H,"drop",this);setTimeout(this._dragStarted,0)},_onDragOver:function(a){var c,e,f,g=this.el,h=this.options,j=h.group,k=j.put,n=B===j,o=h.sort;if(q&&(void 0!==a.preventDefault&&(a.preventDefault(),!h.dragoverBubble&&a.stopPropagation()),B&&!h.disabled&&(n?o||(f=!t.contains(q)):B.pull&&k&&(B.name===j.name||k.indexOf&&~k.indexOf(B.name)))&&(void 0===a.rootEl||a.rootEl===this.el))){if(R(a,h,this.el),K)return;if(c=d(a.target,h.draggable,g),e=q.getBoundingClientRect(),f)return b(!0),void(s||u?t.insertBefore(q,s||u):o||t.appendChild(q));if(0===g.children.length||g.children[0]===r||g===a.target&&(c=m(g,a))){if(c){if(c.animated)return;v=c.getBoundingClientRect()}b(n),g.appendChild(q),this._animate(e,q),c&&this._animate(v,c)}else if(c&&!c.animated&&c!==q&&void 0!==c.parentNode[F]){x!==c&&(x=c,y=i(c));var p,v=c.getBoundingClientRect(),w=v.right-v.left,z=v.bottom-v.top,A=/left|right|inline/.test(y.cssFloat+y.display),C=c.offsetWidth>q.offsetWidth,D=c.offsetHeight>q.offsetHeight,E=(A?(a.clientX-v.left)/w:(a.clientY-v.top)/z)>.5,G=c.nextElementSibling;K=!0,setTimeout(l,30),b(n),p=A?c.previousElementSibling===q&&!C||E&&C:G!==q&&!D||E&&D,p&&!G?g.appendChild(q):c.parentNode.insertBefore(q,p?G:c),this._animate(e,q),this._animate(v,c)}}},_animate:function(a,b){var c=this.options.animation;if(c){var d=b.getBoundingClientRect();i(b,"transition","none"),i(b,"transform","translate3d("+(a.left-d.left)+"px,"+(a.top-d.top)+"px,0)"),b.offsetWidth,i(b,"transition","all "+c+"ms"),i(b,"transform","translate3d(0,0,0)"),clearTimeout(b.animated),b.animated=setTimeout(function(){i(b,"transition",""),i(b,"transform",""),b.animated=!1},c)}},_offUpEvents:function(){g(H,"mouseup",this._onDrop),g(H,"touchmove",this._onTouchMove),g(H,"touchend",this._onDrop),g(H,"touchcancel",this._onDrop)},_onDrop:function(b){var c=this.el,d=this.options;clearInterval(this._loopId),clearInterval(E.pid),g(H,"drop",this),g(H,"mousemove",this._onTouchMove),g(c,"dragstart",this._onDragStart),this._offUpEvents(),b&&(b.preventDefault(),!d.dropBubble&&b.stopPropagation(),r&&r.parentNode.removeChild(r),q&&(g(q,"dragend",this),k(q),h(q,this.options.ghostClass,!1),t!==q.parentNode?(A=o(q),L(q.parentNode,"sort",q,t,z,A),L(t,"sort",q,t,z,A),L(q,"add",q,t,z,A),L(t,"remove",q,t,z,A)):(s&&s.parentNode.removeChild(s),q.nextSibling!==u&&(A=o(q),L(t,"update",q,t,z,A),L(t,"sort",q,t,z,A))),a.active&&L(t,"end",q,t,z,A)),t=q=r=u=s=v=w=C=D=x=y=B=a.active=null,this.save())},handleEvent:function(a){var b=a.type;"dragover"===b||"dragenter"===b?(this._onDragOver(a),e(a)):("drop"===b||"dragend"===b)&&this._onDrop(a)},toArray:function(){for(var a,b=[],c=this.el.children,e=0,f=c.length;f>e;e++)a=c[e],d(a,this.options.draggable,this.el)&&b.push(a.getAttribute("data-id")||n(a));return b},sort:function(a){var b={},c=this.el;this.toArray().forEach(function(a,e){var f=c.children[e];d(f,this.options.draggable,c)&&(b[a]=f)},this),a.forEach(function(a){b[a]&&(c.removeChild(b[a]),c.appendChild(b[a]))})},save:function(){var a=this.options.store;a&&a.set(this)},closest:function(a,b){return d(a,b||this.options.draggable,this.el)},option:function(a,b){var c=this.options;return void 0===b?c[a]:void(c[a]=b)},destroy:function(){var a=this.el,b=this.options;M.forEach(function(c){g(a,c.substr(2).toLowerCase(),b[c])}),g(a,"mousedown",this._onTapStart),g(a,"touchstart",this._onTapStart),g(a,"dragover",this),g(a,"dragenter",this),Array.prototype.forEach.call(a.querySelectorAll("[draggable]"),function(a){a.removeAttribute("draggable")}),Q.splice(Q.indexOf(this._onDragOver),1),this._onDrop(),this.el=null}},a.utils={on:f,off:g,css:i,find:j,bind:c,is:function(a,b){return!!d(a,b,a)},throttle:p,closest:d,toggleClass:h,dispatchEvent:L,index:o},a.version="1.1.1",a.create=function(b,c){return new a(b,c)},a}),function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):a(jQuery)}(function(a){"use strict";a.fn.sortable=function(b){var c;return this.each(function(){var d=a(this),e=d.data("sortable");if(e||!(b instanceof Object)&&b||(e=new Sortable(this,b),d.data("sortable",e)),e){if("widget"===b)return e;"destroy"===b?(e.destroy(),d.removeData("sortable")):b in e&&(c=e[e].apply(e,[].slice.call(arguments,1)))}}),void 0===c?this:c}});var XBBCODE=function(){function a(){i=[];var a,b,c;for(a in h)if(h.hasOwnProperty(a)){for("*"===a?i.push("\\"+a):(i.push(a),h[a].noParse&&u.push(a)),h[a].validChildLookup={},h[a].validParentLookup={},h[a].restrictParentsTo=h[a].restrictParentsTo||[],h[a].restrictChildrenTo=h[a].restrictChildrenTo||[],c=h[a].restrictChildrenTo.length,b=0;c>b;b++)h[a].validChildLookup[h[a].restrictChildrenTo[b]]=!0;for(c=h[a].restrictParentsTo.length,b=0;c>b;b++)h[a].validParentLookup[h[a].restrictParentsTo[b]]=!0}j=new RegExp("<bbcl=([0-9]+) ("+i.join("|")+")([ =][^>]*?)?>((?:.|[\\r\\n])*?)<bbcl=\\1 /\\2>","gi"),k=new RegExp("\\[("+i.join("|")+")([ =][^\\]]*?)?\\]([^\\[]*?)\\[/\\1\\]","gi"),l=new RegExp("\\[("+u.join("|")+")([ =][^\\]]*?)?\\]([\\s\\S]*?)\\[/\\1\\]","gi"),function(){for(var a=[],b=0;b<i.length;b++)"\\*"!==i[b]&&a.push("/"+i[b]);m=new RegExp("(\\[)((?:"+i.join("|")+")(?:[ =][^\\]]*?)?)(\\])","gi"),n=new RegExp("(\\[)("+a.join("|")+")(\\])","gi")}()}function b(a,c,d,e,f,g,k){k=k||[],d++;var l,m,n,o,p=new RegExp("(<bbcl="+d+" )("+i.join("|")+")([ =>])","gi"),q=new RegExp("(<bbcl="+d+" )("+i.join("|")+")([ =>])","i"),r=g.match(p)||[],s=h[a]||{};for(p.lastIndex=0,r||(g=""),n=0;n<r.length;n++)q.lastIndex=0,o=r[n].match(q)[2].toLowerCase(),s&&s.restrictChildrenTo&&s.restrictChildrenTo.length>0&&(s.validChildLookup[o]||(m='The tag "'+o+'" is not allowed as a child of the tag "'+a+'".',k.push(m))),l=h[o]||{},l.restrictParentsTo.length>0&&(l.validParentLookup[a]||(m='The tag "'+a+'" is not allowed as a parent of the tag "'+o+'".', k.push(m)));return g=g.replace(j,function(a,c,d,e,f){return k=b(d.toLowerCase(),a,c,d,e,f,k),a}),k}function c(a){return a=a.replace(/\<([^\>][^\>]*?)\>/gi,function(a,b){var c=b.match(/^bbcl=([0-9]+) /);return null===c?"<bbcl=0 "+b+">":"<"+b.replace(/^(bbcl=)([0-9]+)/,function(a,b,c){return b+(parseInt(c,10)+1)})+">"})}function d(a){return a.replace(/<bbcl=[0-9]+ \/\*>/gi,"").replace(/<bbcl=[0-9]+ /gi,"[").replace(/>/gi,"]")}function e(a){var b=a.text;return b=b.replace(j,v)}function f(a){for(a=a.replace(/\[(?!\*[ =\]]|list([ =][^\]]*)?\]|\/list[\]])/gi,"<"),a=a.replace(/\[(?=list([ =][^\]]*)?\]|\/list[\]])/gi,">");a!==(a=a.replace(/>list([ =][^\]]*)?\]([^>]*?)(>\/list])/gi,function(a,b,c){for(var d=a;d!==(d=d.replace(/\[\*\]([^\[]*?)(\[\*\]|>\/list])/i,function(a,b,c){return c=">/list]"===c.toLowerCase()?"</*]</list]":"</*][*]","<*]"+b+c})););return d=d.replace(/>/g,"<")})););return a=a.replace(/</g,"[")}function g(a){for(;a!==(a=a.replace(k,function(a,b,d,e){return a=a.replace(/\[/g,"<"),a=a.replace(/\]/g,">"),c(a)})););return a}var h,i,j,k,l,m,n,o={},p=/^(?:https?|file|c):(?:\/{1,3}|\\{1})[-a-zA-Z0-9:;@#%&()~_?\+=\/\\\.]*$/,q=/^(?:aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen)$/,r=/^#?[a-fA-F0-9]{6}$/,s=/[^\s@]+@[^\s@]+\.[^\s@]+/,t=/^([a-z][a-z0-9_]+|"[a-z][a-z0-9_\s]+")$/i,u=[];h={b:{openTag:function(a,b){return'<span class="xbbcode-b">'},closeTag:function(a,b){return"</span>"}},bbcode:{openTag:function(a,b){return""},closeTag:function(a,b){return""}},center:{openTag:function(a,b){return'<span class="xbbcode-center">'},closeTag:function(a,b){return"</span>"}},code:{openTag:function(a,b){return'<span class="xbbcode-code">'},closeTag:function(a,b){return"</span>"},noParse:!0},color:{openTag:function(a,b){var c=a.substr(1).toLowerCase()||"black";return q.lastIndex=0,r.lastIndex=0,q.test(c)||(r.test(c)?"#"!==c.substr(0,1)&&(c="#"+c):c="black"),'<span style="color:'+c+'">'},closeTag:function(a,b){return"</span>"}},email:{openTag:function(a,b){var c;return c=a?a.substr(1):b.replace(/<.*?>/g,""),s.lastIndex=0,s.test(c)?'<a href="mailto:'+c+'">':"<a>"},closeTag:function(a,b){return"</a>"}},face:{openTag:function(a,b){var c=a.substr(1)||"inherit";return t.lastIndex=0,t.test(c)||(c="inherit"),'<span style="font-family:'+c+'">'},closeTag:function(a,b){return"</span>"}},font:{openTag:function(a,b){var c=a.substr(1)||"inherit";return t.lastIndex=0,t.test(c)||(c="inherit"),'<span style="font-family:'+c+'">'},closeTag:function(a,b){return"</span>"}},i:{openTag:function(a,b){return'<span class="xbbcode-i">'},closeTag:function(a,b){return"</span>"}},img:{openTag:function(a,b){var c=b;return p.lastIndex=0,p.test(c)||(c=""),'<img src="'+c+'" />'},closeTag:function(a,b){return""},displayContent:!1},justify:{openTag:function(a,b){return'<span class="xbbcode-justify">'},closeTag:function(a,b){return"</span>"}},large:{openTag:function(a,b){var a=a||"",c=a.substr(1)||"inherit";return q.lastIndex=0,r.lastIndex=0,q.test(c)||(r.test(c)?"#"!==c.substr(0,1)&&(c="#"+c):c="inherit"),'<span class="xbbcode-size-36" style="color:'+c+'">'},closeTag:function(a,b){return"</span>"}},left:{openTag:function(a,b){return'<span class="xbbcode-left">'},closeTag:function(a,b){return"</span>"}},li:{openTag:function(a,b){return"<li>"},closeTag:function(a,b){return"</li>"},restrictParentsTo:["list","ul","ol"]},list:{openTag:function(a,b){return"<ul>"},closeTag:function(a,b){return"</ul>"},restrictChildrenTo:["*","li"]},noparse:{openTag:function(a,b){return""},closeTag:function(a,b){return""},noParse:!0},ol:{openTag:function(a,b){return"<ol>"},closeTag:function(a,b){return"</ol>"},restrictChildrenTo:["*","li"]},php:{openTag:function(a,b){return'<span class="xbbcode-code">'},closeTag:function(a,b){return"</span>"},noParse:!0},quote:{openTag:function(a,b){return'<blockquote class="xbbcode-blockquote">'},closeTag:function(a,b){return"</blockquote>"}},right:{openTag:function(a,b){return'<span class="xbbcode-right">'},closeTag:function(a,b){return"</span>"}},s:{openTag:function(a,b){return'<span class="xbbcode-s">'},closeTag:function(a,b){return"</span>"}},size:{openTag:function(a,b){var c=parseInt(a.substr(1),10)||0;return(4>c||c>40)&&(c=14),'<span class="xbbcode-size-'+c+'">'},closeTag:function(a,b){return"</span>"}},small:{openTag:function(a,b){var a=a||"",c=a.substr(1)||"inherit";return q.lastIndex=0,r.lastIndex=0,q.test(c)||(r.test(c)?"#"!==c.substr(0,1)&&(c="#"+c):c="inherit"),'<span class="xbbcode-size-10" style="color:'+c+'">'},closeTag:function(a,b){return"</span>"}},sub:{openTag:function(a,b){return"<sub>"},closeTag:function(a,b){return"</sub>"}},sup:{openTag:function(a,b){return"<sup>"},closeTag:function(a,b){return"</sup>"}},table:{openTag:function(a,b){return'<table class="xbbcode-table">'},closeTag:function(a,b){return"</table>"},restrictChildrenTo:["tbody","thead","tfoot","tr"]},tbody:{openTag:function(a,b){return"<tbody>"},closeTag:function(a,b){return"</tbody>"},restrictChildrenTo:["tr"],restrictParentsTo:["table"]},tfoot:{openTag:function(a,b){return"<tfoot>"},closeTag:function(a,b){return"</tfoot>"},restrictChildrenTo:["tr"],restrictParentsTo:["table"]},thead:{openTag:function(a,b){return'<thead class="xbbcode-thead">'},closeTag:function(a,b){return"</thead>"},restrictChildrenTo:["tr"],restrictParentsTo:["table"]},td:{openTag:function(a,b){return'<td class="xbbcode-td">'},closeTag:function(a,b){return"</td>"},restrictParentsTo:["tr"]},th:{openTag:function(a,b){return'<th class="xbbcode-th">'},closeTag:function(a,b){return"</th>"},restrictParentsTo:["tr"]},tr:{openTag:function(a,b){return'<tr class="xbbcode-tr">'},closeTag:function(a,b){return"</tr>"},restrictChildrenTo:["td","th"],restrictParentsTo:["table","tbody","tfoot","thead"]},u:{openTag:function(a,b){return'<span class="xbbcode-u">'},closeTag:function(a,b){return"</span>"}},ul:{openTag:function(a,b){return"<ul>"},closeTag:function(a,b){return"</ul>"},restrictChildrenTo:["*","li"]},url:{openTag:function(a,b){var c;return c=a?a.substr(1):b.replace(/<.*?>/g,""),p.lastIndex=0,p.test(c)||(c="#"),'<a href="'+c+'">'},closeTag:function(a,b){return"</a>"}},"*":{openTag:function(a,b){return"<li>"},closeTag:function(a,b){return"</li>"},restrictParentsTo:["list","ul","ol"]}},a();var v=function(a,b,c,e,f){c=c.toLowerCase();var g=h[c].noParse?d(f):f.replace(j,v),i=h[c].openTag(e,g),k=h[c].closeTag(e,g);return h[c].displayContent===!1&&(g=""),i+g+k};return o.tags=function(){return h},o.addTags=function(b){var c;for(c in b)h[c]=b[c];a()},o.process=function(a){var c={html:"",error:!1},d=[];for(a.text=a.text.replace(/</g,"<"),a.text=a.text.replace(/>/g,">"),a.text=a.text.replace(m,function(a,b,c,d){return"<"+c+">"}),a.text=a.text.replace(n,function(a,b,c,d){return"<"+c+">"}),a.text=a.text.replace(/\[/g,"["),a.text=a.text.replace(/\]/g,"]"),a.text=a.text.replace(/</g,"["),a.text=a.text.replace(/>/g,"]");a.text!==(a.text=a.text.replace(l,function(a,b,c,d){return d=d.replace(/\[/g,"["),d=d.replace(/\]/g,"]"),c=c||"",d=d||"","["+b+c+"]"+d+"[/"+b+"]"})););return a.text=f(a.text),a.text=g(a.text),d=b("bbcode",a.text,-1,"","",a.text),c.html=e(a),(-1!==c.html.indexOf("[")||-1!==c.html.indexOf("]"))&&d.push("Some tags appear to be misaligned."),a.removeMisalignedTags&&(c.html=c.html.replace(/\[.*?\]/g,"")),a.addInLineBreaks&&(c.html='<div style="white-space:pre;">'+c.html+"</div>"),c.html=c.html.replace("[","["),c.html=c.html.replace("]","]"),c.error=0!==d.length,c.errorQueue=d,c},o}();+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=this.unpin=this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.1",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return c>e?"top":!1;if("bottom"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:"bottom":a-d>=e+g?!1:"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=i?"top":null!=d&&i+j>=a-d?"bottom":!1},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=a("body").height();"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.1",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.1",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active"));a&&this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.1",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c="prev"==a?-1:1,d=this.getItemIndex(b),e=(d+c)%this.$items.length;return this.$items.eq(e)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i="next"==b?"first":"last",j=this;if(!f.length){if(!this.options.wrap)return;f=this.$element.find(".item")[i]()}if(f.hasClass("active"))return this.sliding=!1;var k=f[0],l=a.Event("slide.bs.carousel",{relatedTarget:k,direction:h});if(this.$element.trigger(l),!l.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var m=a(this.$indicators.children()[this.getItemIndex(f)]);m&&m.addClass("active")}var n=a.Event("slid.bs.carousel",{relatedTarget:k,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),j.sliding=!1,setTimeout(function(){j.$element.trigger(n)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(n)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&"show"==b&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a(this.options.trigger).filter('[href="#'+b.id+'"], [data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.1",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0,trigger:'[data-toggle="collapse"]'},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.find("> .panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":a.extend({},e.data(),{trigger:this});c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){b&&3===b.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=c(d),f={relatedTarget:this};e.hasClass("open")&&(e.trigger(b=a.Event("hide.bs.dropdown",f)),b.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger("hidden.bs.dropdown",f)))}))}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.1",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger("shown.bs.dropdown",h)}return!1}},g.prototype.keydown=function(b){if(/(38|40|27|32)/.test(b.which)&&!/input|textarea/i.test(b.target.tagName)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var e=c(d),g=e.hasClass("open");if(!g&&27!=b.which||g&&27==b.which)return 27==b.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.divider):visible a",i=e.find('[role="menu"]'+h+', [role="listbox"]'+h);if(i.length){var j=i.index(b.target);38==b.which&&j>0&&j--,40==b.which&&j<i.length-1&&j++,~j||(j=0),i.eq(j).trigger("focus")}}}};var h=a.fn.dropdown;a.fn.dropdown=d,a.fn.dropdown.Constructor=g,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=h,this},a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",f,g.prototype.toggle).on("keydown.bs.dropdown.data-api",f,g.prototype.keydown).on("keydown.bs.dropdown.data-api",'[role="menu"]',g.prototype.keydown).on("keydown.bs.dropdown.data-api",'[role="listbox"]',g.prototype.keydown)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION="3.3.1",c.TRANSITION_DURATION=150,c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a"),f=a.Event("hide.bs.tab",{relatedTarget:b[0]}),g=a.Event("show.bs.tab",{relatedTarget:e[0]});if(e.trigger(f),b.trigger(g),!g.isDefaultPrevented()&&!f.isDefaultPrevented()){var h=a(d);this.activate(b.closest("li"),c),this.activate(h,h.parent(),function(){e.trigger({type:"hidden.bs.tab",relatedTarget:b[0]}),b.trigger({type:"shown.bs.tab",relatedTarget:e[0]})})}}},c.prototype.activate=function(b,d,e){function f(){g.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(c,d){var e=a.proxy(this.process,this);this.$body=a("body"),this.$scrollElement=a(a(c).is("body")?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",e),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.1",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b="offset",c=0;a.isWindow(this.$scrollElement[0])||(b="position",c=this.$scrollElement.scrollTop()),this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight();var d=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[b]().top+c,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){d.offsets.push(this[0]),d.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b<e[0])return this.activeTarget=null,this.clear();for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,this.clear();var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")},b.prototype.clear=function(){a(this.selector).parentsUntil(this.options.target,".active").removeClass("active")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on("load.bs.scrollspy.data-api",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},c.DEFAULTS,e.data(),"object"==typeof b&&b);f||e.data("bs.modal",f=new c(this,g)),"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$backdrop=this.isShown=null,this.scrollbarWidth=0,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};c.VERSION="3.3.1",c.TRANSITION_DURATION=300,c.BACKDROP_TRANSITION_DURATION=150,c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var d=this,e=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(e),this.isShown||e.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.setScrollbar(),this.$body.addClass("modal-open"),this.escape(),this.resize(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var e=a.support.transition&&d.$element.hasClass("fade");d.$element.parent().length||d.$element.appendTo(d.$body),d.$element.show().scrollTop(0),d.options.backdrop&&d.adjustBackdrop(),d.adjustDialog(),e&&d.$element[0].offsetWidth,d.$element.addClass("in").attr("aria-hidden",!1),d.enforceFocus();var f=a.Event("shown.bs.modal",{relatedTarget:b});e?d.$element.find(".modal-dialog").one("bsTransitionEnd",function(){d.$element.trigger("focus").trigger(f)}).emulateTransitionEnd(c.TRANSITION_DURATION):d.$element.trigger("focus").trigger(f)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),this.resize(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(c.TRANSITION_DURATION):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger("focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.modal")},c.prototype.resize=function(){this.isShown?a(window).on("resize.bs.modal",a.proxy(this.handleUpdate,this)):a(window).off("resize.bs.modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$body.removeClass("modal-open"),a.resetAdjustments(),a.resetScrollbar(),a.$element.trigger("hidden.bs.modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var d=this,e=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var f=a.support.transition&&e;if(this.$backdrop=a('<div class="modal-backdrop '+e+'" />').prependTo(this.$element).on("click.dismiss.bs.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),f&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"), -!b)return;f?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var g=function(){d.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",g).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):g()}else b&&b()},c.prototype.handleUpdate=function(){this.options.backdrop&&this.adjustBackdrop(),this.adjustDialog()},c.prototype.adjustBackdrop=function(){this.$backdrop.css("height",0).css("height",this.$element[0].scrollHeight)},c.prototype.adjustDialog=function(){var a=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){this.bodyIsOverflowing=document.body.scrollHeight>document.documentElement.clientHeight,this.scrollbarWidth=this.measureScrollbar()},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.bodyIsOverflowing&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right","")},c.prototype.measureScrollbar=function(){var a=document.createElement("div");a.className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof b&&b,g=f&&f.selector;(e||"destroy"!=b)&&(g?(e||d.data("bs.tooltip",e={}),e[g]||(e[g]=new c(this,f))):e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};c.VERSION="3.3.1",c.TRANSITION_DURATION=150,c.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(this.options.viewport.selector||this.options.viewport);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c&&c.$tip&&c.$tip.is(":visible")?void(c.hoverState="in"):(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.options.container?a(this.options.container):this.$element.parent(),p=this.getPosition(o);h="bottom"==h&&k.bottom+m>p.bottom?"top":"top"==h&&k.top-m<p.top?"bottom":"right"==h&&k.right+l>p.width?"left":"left"==h&&k.left-l<p.left?"right":h,f.removeClass(n).addClass(h)}var q=this.getCalculatedOffset(h,k,l,m);this.applyPlacement(q,h);var r=function(){var a=e.hoverState;e.$element.trigger("shown.bs."+e.type),e.hoverState=null,"out"==a&&e.leave(e)};a.support.transition&&this.$tip.hasClass("fade")?f.one("bsTransitionEnd",r).emulateTransitionEnd(c.TRANSITION_DURATION):r()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),b.top=b.top+g,b.left=b.left+h,a.offset.setOffset(d[0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),d.addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;"top"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=/top|bottom/.test(c),m=l?2*k.left-e+i:2*k.top-f+j,n=l?"offsetWidth":"offsetHeight";d.offset(b),this.replaceArrow(m,d[0][n],l)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c?"left":"top",50*(1-a/b)+"%").css(c?"top":"left","")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},c.prototype.hide=function(b){function d(){"in"!=e.hoverState&&f.detach(),e.$element.removeAttr("aria-describedby").trigger("hidden.bs."+e.type),b&&b()}var e=this,f=this.tip(),g=a.Event("hide.bs."+this.type);return this.$element.trigger(g),g.isDefaultPrevented()?void 0:(f.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?f.one("bsTransitionEnd",d).emulateTransitionEnd(c.TRANSITION_DURATION):d(),this.hoverState=null,this)},c.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[0],d="BODY"==c.tagName,e=c.getBoundingClientRect();null==e.width&&(e=a.extend({},e,{width:e.right-e.left,height:e.bottom-e.top}));var f=d?{top:0,left:0}:b.offset(),g={scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop()},h=d?{width:a(window).width(),height:a(window).height()}:null;return a.extend({},e,g,h,f)},c.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:0,left:0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h<g.top?e.top=g.top-h:i>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j<g.left?e.left=g.left-j:k>g.width&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type)})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b,g=f&&f.selector;(e||"destroy"!=b)&&(g?(e||d.data("bs.popover",e={}),e[g]||(e[g]=new c(this,f))):e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.1",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},c.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),function(a){function b(a){return"undefined"==typeof a.which?!0:"number"==typeof a.which&&a.which>0?!a.ctrlKey&&!a.metaKey&&!a.altKey&&8!=a.which:!1}a.expr[":"].notmdproc=function(b){return a(b).data("mdproc")?!1:!0},a.material={options:{input:!0,ripples:!0,checkbox:!0,togglebutton:!0,radio:!0,arrive:!0,autofill:!0,withRipples:[".btn:not(.btn-link)",".card-image",".navbar a:not(.withoutripple)",".dropdown-menu a",".nav-tabs a:not(.withoutripple)",".withripple"].join(","),inputElements:"input.form-control, textarea.form-control, select.form-control",checkboxElements:".checkbox > label > input[type=checkbox]",togglebuttonElements:".togglebutton > label > input[type=checkbox]",radioElements:".radio > label > input[type=radio]"},checkbox:function(b){a(b?b:this.options.checkboxElements).filter(":notmdproc").data("mdproc",!0).after("<span class=ripple></span><span class=check></span>")},togglebutton:function(b){a(b?b:this.options.togglebuttonElements).filter(":notmdproc").data("mdproc",!0).after("<span class=toggle></span>")},radio:function(b){a(b?b:this.options.radioElements).filter(":notmdproc").data("mdproc",!0).after("<span class=circle></span><span class=check></span>")},input:function(c){a(c?c:this.options.inputElements).filter(":notmdproc").data("mdproc",!0).each(function(){var b=a(this);if(b.wrap("<div class=form-control-wrapper></div>"),b.after("<span class=material-input></span>"),b.hasClass("floating-label")){var c=b.attr("placeholder");b.attr("placeholder",null).removeClass("floating-label"),b.after("<div class=floating-label>"+c+"</div>")}if(b.attr("data-hint")&&b.after("<div class=hint>"+b.attr("data-hint")+"</div>"),(null===b.val()||"undefined"==b.val()||""===b.val())&&b.addClass("empty"),b.parent().next().is("[type=file]")){b.parent().addClass("fileinput");var d=b.parent().next().detach();b.after(d)}}),a(document).on("change",".checkbox input[type=checkbox]",function(){a(this).blur()}).on("keydown paste",".form-control",function(c){b(c)&&a(this).removeClass("empty")}).on("keyup change",".form-control",function(){var b=a(this);""===b.val()&&b[0].checkValidity()?b.addClass("empty"):b.removeClass("empty")}).on("focus",".form-control-wrapper.fileinput",function(){a(this).find("input").addClass("focus")}).on("blur",".form-control-wrapper.fileinput",function(){a(this).find("input").removeClass("focus")}).on("change",".form-control-wrapper.fileinput [type=file]",function(){var b="";a.each(a(this)[0].files,function(a,c){console.log(c),b+=c.name+", "}),b=b.substring(0,b.length-2),b?a(this).prev().removeClass("empty"):a(this).prev().addClass("empty"),a(this).prev().val(b)})},ripples:function(b){a(b?b:this.options.withRipples).ripples()},autofill:function(){var b=setInterval(function(){a("input[type!=checkbox]").each(function(){a(this).val()&&a(this).val()!==a(this).attr("value")&&a(this).trigger("change")})},100);setTimeout(function(){clearInterval(b)},1e4);var c;a(document).on("focus","input",function(){var b=a(this).parents("form").find("input").not("[type=file]");c=setInterval(function(){b.each(function(){a(this).val()!==a(this).attr("value")&&a(this).trigger("change")})},100)}).on("blur","input",function(){clearInterval(c)})},init:function(){a.ripples&&this.options.ripples&&this.ripples(),this.options.input&&this.input(),this.options.checkbox&&this.checkbox(),this.options.togglebutton&&this.togglebutton(),this.options.radio&&this.radio(),this.options.autofill&&this.autofill(),document.arrive&&this.options.arrive&&(a(document).arrive(this.options.inputElements,function(){a.material.input(a(this))}),a(document).arrive(this.options.checkboxElements,function(){a.material.checkbox(a(this))}),a(document).arrive(this.options.radioElements,function(){a.material.radio(a(this))}),a(document).arrive(this.options.togglebuttonElements,function(){a.material.togglebutton(a(this))}))}}}(jQuery),function(a,b,c,d){"use strict";function e(b,c){g=this,this.element=a(b),this.options=a.extend({},h,c),this._defaults=h,this._name=f,this.init()}var f="ripples",g=null,h={};e.prototype.init=function(){var c=this.element;c.on("mousedown touchstart",function(d){if(g.isTouch()&&"mousedown"===d.type)return!1;c.find(".ripple-wrapper").length||c.append('<div class="ripple-wrapper"></div>');var e=c.children(".ripple-wrapper"),f=g.getRelY(e,d),h=g.getRelX(e,d);if(f||h){var i=g.getRipplesColor(),j=a("<div></div>");j.addClass("ripple").css({left:h,top:f,"background-color":i}),e.append(j),function(){return b.getComputedStyle(j[0]).opacity}(),g.rippleOn(j),setTimeout(function(){g.rippleEnd(j)},500),c.on("mouseup mouseleave touchend",function(){j.data("mousedown","off"),"off"===j.data("animating")&&g.rippleOut(j)})}})},e.prototype.getNewSize=function(a){var b=this.element;return Math.max(b.outerWidth(),b.outerHeight())/a.outerWidth()*2.5},e.prototype.getRelX=function(a,b){var c=a.offset();return g.isTouch()?(b=b.originalEvent,1!==b.touches.length?b.touches[0].pageX-c.left:!1):b.pageX-c.left},e.prototype.getRelY=function(a,b){var c=a.offset();return g.isTouch()?(b=b.originalEvent,1!==b.touches.length?b.touches[0].pageY-c.top:!1):b.pageY-c.top},e.prototype.getRipplesColor=function(){var a,c=this.element;return a=this.options&&this.options.color?this.options.color:c.data("ripple-color")?c.data("ripple-color"):b.getComputedStyle(c[0]).color},e.prototype.hasTransitionSupport=function(){var a=c.body||c.documentElement,b=a.style,e=b.transition!==d||b.WebkitTransition!==d||b.MozTransition!==d||b.MsTransition!==d||b.OTransition!==d;return e},e.prototype.isTouch=function(){return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)},e.prototype.rippleEnd=function(a){a.data("animating","off"),"off"===a.data("mousedown")&&g.rippleOut(a)},e.prototype.rippleOut=function(a){a.off(),g.hasTransitionSupport()?a.addClass("ripple-out"):a.animate({opacity:0},100,function(){a.trigger("transitionend")}),a.on("transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd",function(){a.remove()})},e.prototype.rippleOn=function(a){var b=g.getNewSize(a),c=this.element;g.hasTransitionSupport()?a.css({"-ms-transform":"scale("+b+")","-moz-transform":"scale("+b+")","-webkit-transform":"scale("+b+")",transform:"scale("+b+")"}).addClass("ripple-on").data("animating","on").data("mousedown","on"):a.animate({width:2*Math.max(c.outerWidth(),c.outerHeight()),height:2*Math.max(c.outerWidth(),c.outerHeight()),"margin-left":-1*Math.max(c.outerWidth(),c.outerHeight()),"margin-top":-1*Math.max(c.outerWidth(),c.outerHeight()),opacity:.2},500,function(){a.trigger("transitionend")})},a.fn.ripples=function(b){return this.each(function(){a.data(this,"plugin_"+f)||a.data(this,"plugin_"+f,new e(this,b))})}}(jQuery,window,document),function(a){function b(a){return"undefined"!=typeof a&&null!==a?!0:!1}a(document).ready(function(){a("body").append("<div id=snackbar-container/>")}),a(document).on("click","[data-toggle=snackbar]",function(){a(this).snackbar("toggle")}).on("click","#snackbar-container .snackbar",function(){a(this).snackbar("hide")}),a.snackbar=function(c){if(b(c)&&c===Object(c)){var d;d=b(c.id)?a("#"+c.id):a("<div/>").attr("id","snackbar"+Date.now()).attr("class","snackbar");var e=d.hasClass("snackbar-opened");b(c.style)?d.attr("class","snackbar "+c.style):d.attr("class","snackbar"),c.timeout=b(c.timeout)?c.timeout:3e3,b(c.content)&&(d.find(".snackbar-content").length?d.find(".snackbar-content").text(c.content):d.prepend("<span class=snackbar-content>"+c.content+"</span>")),b(c.id)?d.insertAfter("#snackbar-container .snackbar:last-child"):d.appendTo("#snackbar-container"),b(c.action)&&"toggle"==c.action&&(e?c.action="hide":c.action="show");var f=Date.now();d.data("animationId1",f),setTimeout(function(){d.data("animationId1")===f&&(b(c.action)&&"show"!=c.action?b(c.action)&&"hide"==c.action&&d.removeClass("snackbar-opened"):d.addClass("snackbar-opened"))},50);var g=Date.now();return d.data("animationId2",g),0!==c.timeout&&setTimeout(function(){d.data("animationId2")===g&&d.removeClass("snackbar-opened")},c.timeout),d}return!1},a.fn.snackbar=function(c){var d={};if(this.hasClass("snackbar"))return d.id=this.attr("id"),("show"===c||"hide"===c||"toggle"==c)&&(d.action=c),a.snackbar(d);b(c)&&"show"!==c&&"hide"!==c&&"toggle"!=c||(d={content:a(this).attr("data-content"),style:a(this).attr("data-style"),timeout:a(this).attr("data-timeout")}),b(c)&&(d.id=this.attr("data-snackbar-id"),("show"===c||"hide"===c||"toggle"==c)&&(d.action=c));var e=a.snackbar(d);return this.attr("data-snackbar-id",e.attr("id")),e}}(jQuery),function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){if(!d)var d={map:function(a,b){var c={};return b?a.map(function(a,d){return c.index=d,b.call(c,a)}):a.slice()},naturalOrder:function(a,b){return b>a?-1:a>b?1:0},sum:function(a,b){var c={};return a.reduce(b?function(a,d,e){return c.index=e,a+b.call(c,d)}:function(a,b){return a+b},0)},max:function(a,b){return Math.max.apply(null,b?d.map(a,b):a)}};var e=function(){function a(a,b,c){return(a<<2*j)+(b<<j)+c}function b(a){function b(){c.sort(a),d=!0}var c=[],d=!1;return{push:function(a){c.push(a),d=!1},peek:function(a){return d||b(),void 0===a&&(a=c.length-1),c[a]},pop:function(){return d||b(),c.pop()},size:function(){return c.length},map:function(a){return c.map(a)},debug:function(){return d||b(),c}}}function c(a,b,c,d,e,f,g){var h=this;h.r1=a,h.r2=b,h.g1=c,h.g2=d,h.b1=e,h.b2=f,h.histo=g}function e(){this.vboxes=new b(function(a,b){return d.naturalOrder(a.vbox.count()*a.vbox.volume(),b.vbox.count()*b.vbox.volume())})}function f(b){var c,d,e,f,g=1<<3*j,h=new Array(g);return b.forEach(function(b){d=b[0]>>k,e=b[1]>>k,f=b[2]>>k,c=a(d,e,f),h[c]=(h[c]||0)+1}),h}function g(a,b){var d,e,f,g=1e6,h=0,i=1e6,j=0,l=1e6,m=0;return a.forEach(function(a){d=a[0]>>k,e=a[1]>>k,f=a[2]>>k,g>d?g=d:d>h&&(h=d),i>e?i=e:e>j&&(j=e),l>f?l=f:f>m&&(m=f)}),new c(g,h,i,j,l,m,b)}function h(b,c){function e(a){var b,d,e,f,g,h=a+"1",i=a+"2",k=0;for(j=c[h];j<=c[i];j++)if(p[j]>o/2){for(e=c.copy(),f=c.copy(),b=j-c[h],d=c[i]-j,g=d>=b?Math.min(c[i]-1,~~(j+d/2)):Math.max(c[h],~~(j-1-b/2));!p[g];)g++;for(k=q[g];!k&&p[g-1];)k=q[--g];return e[i]=g,f[h]=e[i]+1,[e,f]}}if(c.count()){var f=c.r2-c.r1+1,g=c.g2-c.g1+1,h=c.b2-c.b1+1,i=d.max([f,g,h]);if(1==c.count())return[c.copy()];var j,k,l,m,n,o=0,p=[],q=[];if(i==f)for(j=c.r1;j<=c.r2;j++){for(m=0,k=c.g1;k<=c.g2;k++)for(l=c.b1;l<=c.b2;l++)n=a(j,k,l),m+=b[n]||0;o+=m,p[j]=o}else if(i==g)for(j=c.g1;j<=c.g2;j++){for(m=0,k=c.r1;k<=c.r2;k++)for(l=c.b1;l<=c.b2;l++)n=a(k,j,l),m+=b[n]||0;o+=m,p[j]=o}else for(j=c.b1;j<=c.b2;j++){for(m=0,k=c.r1;k<=c.r2;k++)for(l=c.g1;l<=c.g2;l++)n=a(k,l,j),m+=b[n]||0;o+=m,p[j]=o}return p.forEach(function(a,b){q[b]=o-a}),e(i==f?"r":i==g?"g":"b")}}function i(a,c){function i(a,b){for(var c,d=1,e=0;l>e;)if(c=a.pop(),c.count()){var f=h(j,c),g=f[0],i=f[1];if(!g)return;if(a.push(g),i&&(a.push(i),d++),d>=b)return;if(e++>l)return}else a.push(c),e++}if(!a.length||2>c||c>256)return!1;var j=f(a),k=0;j.forEach(function(){k++});var n=g(a,j),o=new b(function(a,b){return d.naturalOrder(a.count(),b.count())});o.push(n),i(o,m*c);for(var p=new b(function(a,b){return d.naturalOrder(a.count()*a.volume(),b.count()*b.volume())});o.size();)p.push(o.pop());i(p,c-p.size());for(var q=new e;p.size();)q.push(p.pop());return q}var j=5,k=8-j,l=1e3,m=.75;return c.prototype={volume:function(a){var b=this;return(!b._volume||a)&&(b._volume=(b.r2-b.r1+1)*(b.g2-b.g1+1)*(b.b2-b.b1+1)),b._volume},count:function(b){var c=this,d=c.histo;if(!c._count_set||b){var e,f,g,h=0;for(e=c.r1;e<=c.r2;e++)for(f=c.g1;f<=c.g2;f++)for(g=c.b1;g<=c.b2;g++)index=a(e,f,g),h+=d[index]||0;c._count=h,c._count_set=!0}return c._count},copy:function(){var a=this;return new c(a.r1,a.r2,a.g1,a.g2,a.b1,a.b2,a.histo)},avg:function(b){var c=this,d=c.histo;if(!c._avg||b){var e,f,g,h,i,k=0,l=1<<8-j,m=0,n=0,o=0;for(f=c.r1;f<=c.r2;f++)for(g=c.g1;g<=c.g2;g++)for(h=c.b1;h<=c.b2;h++)i=a(f,g,h),e=d[i]||0,k+=e,m+=e*(f+.5)*l,n+=e*(g+.5)*l,o+=e*(h+.5)*l;k?c._avg=[~~(m/k),~~(n/k),~~(o/k)]:c._avg=[~~(l*(c.r1+c.r2+1)/2),~~(l*(c.g1+c.g2+1)/2),~~(l*(c.b1+c.b2+1)/2)]}return c._avg},contains:function(a){var b=this,c=a[0]>>k;return gval=a[1]>>k,bval=a[2]>>k,c>=b.r1&&c<=b.r2&&gval>=b.g1&&gval<=b.g2&&bval>=b.b1&&bval<=b.b2}},e.prototype={push:function(a){this.vboxes.push({vbox:a,color:a.avg()})},palette:function(){return this.vboxes.map(function(a){return a.color})},size:function(){return this.vboxes.size()},map:function(a){for(var b=this.vboxes,c=0;c<b.size();c++)if(b.peek(c).vbox.contains(a))return b.peek(c).color;return this.nearest(a)},nearest:function(a){for(var b,c,d,e=this.vboxes,f=0;f<e.size();f++)c=Math.sqrt(Math.pow(a[0]-e.peek(f).color[0],2)+Math.pow(a[1]-e.peek(f).color[1],2)+Math.pow(a[2]-e.peek(f).color[2],2)),(b>c||void 0===b)&&(b=c,d=e.peek(f).color);return d},forcebw:function(){var a=this.vboxes;a.sort(function(a,b){return d.naturalOrder(d.sum(a.color),d.sum(b.color))});var b=a[0].color;b[0]<5&&b[1]<5&&b[2]<5&&(a[0].color=[0,0,0]);var c=a.length-1,e=a[c].color;e[0]>251&&e[1]>251&&e[2]>251&&(a[c].color=[255,255,255])}},{quantize:i}}();b.exports=e.quantize},{}],2:[function(a,b,c){(function(){var b,c,d,e=function(a,b){return function(){return a.apply(b,arguments)}},f=[].slice;window.Swatch=c=function(){function a(a,b){this.rgb=a,this.population=b}return a.prototype.hsl=void 0,a.prototype.rgb=void 0,a.prototype.population=1,a.yiq=0,a.prototype.getHsl=function(){return this.hsl?this.hsl:this.hsl=d.rgbToHsl(this.rgb[0],this.rgb[1],this.rgb[2])},a.prototype.getPopulation=function(){return this.population},a.prototype.getRgb=function(){return this.rgb},a.prototype.getHex=function(){return"#"+((1<<24)+(this.rgb[0]<<16)+(this.rgb[1]<<8)+this.rgb[2]).toString(16).slice(1,7)},a.prototype.getTitleTextColor=function(){return this._ensureTextColors(),this.yiq<200?"#fff":"#000"},a.prototype.getBodyTextColor=function(){return this._ensureTextColors(),this.yiq<150?"#fff":"#000"},a.prototype._ensureTextColors=function(){return this.yiq?void 0:this.yiq=(299*this.rgb[0]+587*this.rgb[1]+114*this.rgb[2])/1e3},a}(),window.Vibrant=d=function(){function d(a,d,f){this.swatches=e(this.swatches,this);var g,h,i,j,k,l,m,n,o,p,q,r;for("undefined"==typeof d&&(d=64),"undefined"==typeof f&&(f=5),m=new b(a),n=m.getImageData(),q=n.data,p=m.getPixelCount(),h=[],l=0;p>l;)o=4*l,r=q[o+0],k=q[o+1],i=q[o+2],g=q[o+3],g>=125&&(r>250&&k>250&&i>250||h.push([r,k,i])),l+=f;j=this.quantize(h,d),this._swatches=j.vboxes.map(function(a){return function(a){return new c(a.color,a.vbox.count())}}(this)),this.maxPopulation=this.findMaxPopulation,this.generateVarationColors(),this.generateEmptySwatches(),m.removeCanvas()}return d.prototype.quantize=a("quantize"),d.prototype._swatches=[],d.prototype.TARGET_DARK_LUMA=.26,d.prototype.MAX_DARK_LUMA=.45,d.prototype.MIN_LIGHT_LUMA=.55,d.prototype.TARGET_LIGHT_LUMA=.74,d.prototype.MIN_NORMAL_LUMA=.3,d.prototype.TARGET_NORMAL_LUMA=.5,d.prototype.MAX_NORMAL_LUMA=.7,d.prototype.TARGET_MUTED_SATURATION=.3,d.prototype.MAX_MUTED_SATURATION=.4,d.prototype.TARGET_VIBRANT_SATURATION=1,d.prototype.MIN_VIBRANT_SATURATION=.35,d.prototype.WEIGHT_SATURATION=3,d.prototype.WEIGHT_LUMA=6,d.prototype.WEIGHT_POPULATION=1,d.prototype.VibrantSwatch=void 0,d.prototype.MutedSwatch=void 0,d.prototype.DarkVibrantSwatch=void 0,d.prototype.DarkMutedSwatch=void 0,d.prototype.LightVibrantSwatch=void 0,d.prototype.LightMutedSwatch=void 0,d.prototype.HighestPopulation=0,d.prototype.generateVarationColors=function(){return this.VibrantSwatch=this.findColorVariation(this.TARGET_NORMAL_LUMA,this.MIN_NORMAL_LUMA,this.MAX_NORMAL_LUMA,this.TARGET_VIBRANT_SATURATION,this.MIN_VIBRANT_SATURATION,1),this.LightVibrantSwatch=this.findColorVariation(this.TARGET_LIGHT_LUMA,this.MIN_LIGHT_LUMA,1,this.TARGET_VIBRANT_SATURATION,this.MIN_VIBRANT_SATURATION,1),this.DarkVibrantSwatch=this.findColorVariation(this.TARGET_DARK_LUMA,0,this.MAX_DARK_LUMA,this.TARGET_VIBRANT_SATURATION,this.MIN_VIBRANT_SATURATION,1),this.MutedSwatch=this.findColorVariation(this.TARGET_NORMAL_LUMA,this.MIN_NORMAL_LUMA,this.MAX_NORMAL_LUMA,this.TARGET_MUTED_SATURATION,0,this.MAX_MUTED_SATURATION),this.LightMutedSwatch=this.findColorVariation(this.TARGET_LIGHT_LUMA,this.MIN_LIGHT_LUMA,1,this.TARGET_MUTED_SATURATION,0,this.MAX_MUTED_SATURATION),this.DarkMutedSwatch=this.findColorVariation(this.TARGET_DARK_LUMA,0,this.MAX_DARK_LUMA,this.TARGET_MUTED_SATURATION,0,this.MAX_MUTED_SATURATION)},d.prototype.generateEmptySwatches=function(){var a;return void 0===this.VibrantSwatch&&void 0!==this.DarkVibrantSwatch&&(a=this.DarkVibrantSwatch.getHsl(),a[2]=this.TARGET_NORMAL_LUMA,this.VibrantSwatch=new c(d.hslToRgb(a[0],a[1],a[2]),0)),void 0===this.DarkVibrantSwatch&&void 0!==this.VibrantSwatch?(a=this.VibrantSwatch.getHsl(),a[2]=this.TARGET_DARK_LUMA,this.DarkVibrantSwatch=new c(d.hslToRgb(a[0],a[1],a[2]),0)):void 0},d.prototype.findMaxPopulation=function(){var a,b,c,d,e;for(c=0,d=this._swatches,a=0,b=d.length;b>a;a++)e=d[a],c=Math.max(c,e.getPopulation());return c},d.prototype.findColorVariation=function(a,b,c,d,e,f){var g,h,i,j,k,l,m,n,o;for(j=void 0,k=0,l=this._swatches,g=0,h=l.length;h>g;g++)n=l[g],m=n.getHsl()[1],i=n.getHsl()[2],m>=e&&f>=m&&i>=b&&c>=i&&!this.isAlreadySelected(n)&&(o=this.createComparisonValue(m,d,i,a,n.getPopulation(),this.HighestPopulation),(void 0===j||o>k)&&(j=n,k=o));return j},d.prototype.createComparisonValue=function(a,b,c,d,e,f){return this.weightedMean(this.invertDiff(a,b),this.WEIGHT_SATURATION,this.invertDiff(c,d),this.WEIGHT_LUMA,e/f,this.WEIGHT_POPULATION)},d.prototype.invertDiff=function(a,b){return 1-Math.abs(a-b)},d.prototype.weightedMean=function(){var a,b,c,d,e,g;for(e=1<=arguments.length?f.call(arguments,0):[],b=0,c=0,a=0;a<e.length;)d=e[a],g=e[a+1],b+=d*g,c+=g,a+=2;return b/c},d.prototype.swatches=function(){return{Vibrant:this.VibrantSwatch,Muted:this.MutedSwatch,DarkVibrant:this.DarkVibrantSwatch,DarkMuted:this.DarkMutedSwatch,LightVibrant:this.LightVibrantSwatch,LightMuted:this.LightMuted}},d.prototype.isAlreadySelected=function(a){return this.VibrantSwatch===a||this.DarkVibrantSwatch===a||this.LightVibrantSwatch===a||this.MutedSwatch===a||this.DarkMutedSwatch===a||this.LightMutedSwatch===a},d.rgbToHsl=function(a,b,c){var d,e,f,g,h,i;if(a/=255,b/=255,c/=255,g=Math.max(a,b,c),h=Math.min(a,b,c),e=void 0,i=void 0,f=(g+h)/2,g===h)e=i=0;else{switch(d=g-h,i=f>.5?d/(2-g-h):d/(g+h),g){case a:e=(b-c)/d+(c>b?6:0);break;case b:e=(c-a)/d+2;break;case c:e=(a-b)/d+4}e/=6}return[e,i,f]},d.hslToRgb=function(a,b,c){var d,e,f,g,h,i;return i=void 0,e=void 0,d=void 0,f=function(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+(b-a)*(2/3-c)*6:a},0===b?i=e=d=c:(h=.5>c?c*(1+b):c+b-c*b,g=2*c-h,i=f(g,h,a+1/3),e=f(g,h,a),d=f(g,h,a-1/3)),[255*i,255*e,255*d]},d}(),window.CanvasImage=b=function(){function a(a){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),document.body.appendChild(this.canvas),this.width=this.canvas.width=a.width,this.height=this.canvas.height=a.height,this.context.drawImage(a,0,0,this.width,this.height)}return a.prototype.clear=function(){return this.context.clearRect(0,0,this.width,this.height)},a.prototype.update=function(a){return this.context.putImageData(a,0,0)},a.prototype.getPixelCount=function(){return this.width*this.height},a.prototype.getImageData=function(){return this.context.getImageData(0,0,this.width,this.height)},a.prototype.removeCanvas=function(){return this.canvas.parentNode.removeChild(this.canvas)},a}()}).call(this)},{quantize:1}]},{},[2]),function(a,b){"use strict";function c(c,d){function e(a){return qa.preferFlash&&ja&&!qa.ignoreFlash&&qa.flash[a]!==b&&qa.flash[a]}function f(a){return function(b){var c,d=this._s; -return d&&d._a?c=a.call(this,b):(d&&d.id?qa._wD(d.id+": Ignoring "+b.type):qa._wD(va+"Ignoring "+b.type),c=null),c}}this.setupOptions={url:c||null,flashVersion:8,debugMode:!0,debugFlash:!1,useConsole:!0,consoleOnly:!0,waitForWindowLoad:!1,bgColor:"#ffffff",useHighPerformance:!1,flashPollingInterval:null,html5PollingInterval:null,flashLoadTimeout:1e3,wmode:null,allowScriptAccess:"always",useFlashBlock:!1,useHTML5Audio:!0,html5Test:/^(probably|maybe)$/i,preferFlash:!1,noSWFCache:!1,idPrefix:"sound"},this.defaultOptions={autoLoad:!1,autoPlay:!1,from:null,loops:1,onid3:null,onload:null,whileloading:null,onplay:null,onpause:null,onresume:null,whileplaying:null,onposition:null,onstop:null,onfailure:null,onfinish:null,multiShot:!0,multiShotEvents:!1,position:null,pan:0,stream:!0,to:null,type:null,usePolicyFile:!1,volume:100},this.flash9Options={isMovieStar:null,usePeakData:!1,useWaveformData:!1,useEQData:!1,onbufferchange:null,ondataerror:null},this.movieStarOptions={bufferTime:3,serverURL:null,onconnect:null,duration:null},this.audioFormats={mp3:{type:['audio/mpeg; codecs="mp3"',"audio/mpeg","audio/mp3","audio/MPA","audio/mpa-robust"],required:!0},mp4:{related:["aac","m4a","m4b"],type:['audio/mp4; codecs="mp4a.40.2"',"audio/aac","audio/x-m4a","audio/MP4A-LATM","audio/mpeg4-generic"],required:!1},ogg:{type:["audio/ogg; codecs=vorbis"],required:!1},opus:{type:["audio/ogg; codecs=opus","audio/opus"],required:!1},wav:{type:['audio/wav; codecs="1"',"audio/wav","audio/wave","audio/x-wav"],required:!1}},this.movieID="sm2-container",this.id=d||"sm2movie",this.debugID="soundmanager-debug",this.debugURLParam=/([#?&])debug=1/i,this.versionNumber="V2.97a.20140901",this.version=null,this.movieURL=null,this.altURL=null,this.swfLoaded=!1,this.enabled=!1,this.oMC=null,this.sounds={},this.soundIDs=[],this.muted=!1,this.didFlashBlock=!1,this.filePattern=null,this.filePatterns={flash8:/\.mp3(\?.*)?$/i,flash9:/\.mp3(\?.*)?$/i},this.features={buffering:!1,peakData:!1,waveformData:!1,eqData:!1,movieStar:!1},this.sandbox={type:null,types:{remote:"remote (domain-based) rules",localWithFile:"local with file access (no internet access)",localWithNetwork:"local with network (internet access only, no local access)",localTrusted:"local, trusted (local+internet access)"},description:null,noRemote:null,noLocal:null},this.html5={usingFlash:null},this.flash={},this.html5Only=!1,this.ignoreFlash=!1;var g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,$,_,aa,ba,ca,da,ea,fa,ga,ha,ia,ja,ka,la,ma,na,oa,pa,qa=this,ra=null,sa=null,ta="soundManager",ua=ta+": ",va="HTML5::",wa=navigator.userAgent,xa=a.location.href.toString(),ya=document,za=[],Aa=!0,Ba=!1,Ca=!1,Da=!1,Ea=!1,Fa=!1,Ga=0,Ha=["log","info","warn","error"],Ia=8,Ja=null,Ka=null,La=!1,Ma=!1,Na=0,Oa=null,Pa=[],Qa=null,Ra=Array.prototype.slice,Sa=!1,Ta=0,Ua=wa.match(/(ipad|iphone|ipod)/i),Va=wa.match(/android/i),Wa=wa.match(/msie/i),Xa=wa.match(/webkit/i),Ya=wa.match(/safari/i)&&!wa.match(/chrome/i),Za=wa.match(/opera/i),$a=wa.match(/(mobile|pre\/|xoom)/i)||Ua||Va,_a=!xa.match(/usehtml5audio/i)&&!xa.match(/sm2\-ignorebadua/i)&&Ya&&!wa.match(/silk/i)&&wa.match(/OS X 10_6_([3-7])/i),ab=a.console!==b&&console.log!==b,bb=ya.hasFocus!==b?ya.hasFocus():null,cb=Ya&&(ya.hasFocus===b||!ya.hasFocus()),db=!cb,eb=/(mp3|mp4|mpa|m4a|m4b)/i,fb=1e3,gb="about:blank",hb="data:audio/wave;base64,/UklGRiYAAABXQVZFZm10IBAAAAABAAEARKwAAIhYAQACABAAZGF0YQIAAAD//w==",ib=ya.location?ya.location.protocol.match(/http/i):null,jb=ib?"":"http://",kb=/^\s*audio\/(?:x-)?(?:mpeg4|aac|flv|mov|mp4||m4v|m4a|m4b|mp4v|3gp|3g2)\s*(?:$|;)/i,lb=["mpeg4","aac","flv","mov","mp4","m4v","f4v","m4a","m4b","mp4v","3gp","3g2"],mb=new RegExp("\\.("+lb.join("|")+")(\\?.*)?$","i");this.mimePattern=/^\s*audio\/(?:x-)?(?:mp(?:eg|3))\s*(?:$|;)/i,this.useAltURL=!ib,R={swfBox:"sm2-object-box",swfDefault:"movieContainer",swfError:"swf_error",swfTimedout:"swf_timedout",swfLoaded:"swf_loaded",swfUnblocked:"swf_unblocked",sm2Debug:"sm2_debug",highPerf:"high_performance",flashDebug:"flash_debug"},this.hasHTML5=function(){try{return Audio!==b&&(Za&&opera!==b&&opera.version()<10?new Audio(null):new Audio).canPlayType!==b}catch(a){return!1}}(),this.setup=function(a){var c=!qa.url;return a!==b&&Da&&Qa&&qa.ok()&&(a.flashVersion!==b||a.url!==b||a.html5Test!==b)&&V(O("setupLate")),q(a),a&&(c&&F&&a.url!==b&&qa.beginDelayedInit(),F||a.url===b||"complete"!==ya.readyState||setTimeout(D,1)),qa},this.ok=function(){return Qa?Da&&!Ea:qa.useHTML5Audio&&qa.hasHTML5},this.supported=this.ok,this.getMovie=function(b){return h(b)||ya[b]||a[b]},this.createSound=function(a,c){function d(){return h=T(h),qa.sounds[h.id]=new g(h),qa.soundIDs.push(h.id),qa.sounds[h.id]}var e,f,h,i=null;if(e=ta+".createSound(): ",f=e+O(Da?"notOK":"notReady"),!Da||!qa.ok())return V(f),!1;if(c!==b&&(a={id:a,url:c}),h=p(a),h.url=$(h.url),void 0===h.id&&(h.id=qa.setupOptions.idPrefix+Ta++),h.id.toString().charAt(0).match(/^[0-9]$/)&&qa._wD(e+O("badID",h.id),2),qa._wD(e+h.id+(h.url?" ("+h.url+")":""),1),W(h.id,!0))return qa._wD(e+h.id+" exists",1),qa.sounds[h.id];if(ba(h))i=d(),qa._wD(h.id+": Using HTML5"),i._setup_html5(h);else{if(qa.html5Only)return qa._wD(h.id+": No HTML5 support for this sound, and no Flash. Exiting."),d();if(qa.html5.usingFlash&&h.url&&h.url.match(/data\:/i))return qa._wD(h.id+": data: URIs not supported via Flash. Exiting."),d();l>8&&(null===h.isMovieStar&&(h.isMovieStar=!!(h.serverURL||(h.type?h.type.match(kb):!1)||h.url&&h.url.match(mb))),h.isMovieStar&&(qa._wD(e+"using MovieStar handling"),h.loops>1&&n("noNSLoop"))),h=U(h,e),i=d(),8===l?sa._createSound(h.id,h.loops||1,h.usePolicyFile):(sa._createSound(h.id,h.url,h.usePeakData,h.useWaveformData,h.useEQData,h.isMovieStar,h.isMovieStar?h.bufferTime:!1,h.loops||1,h.serverURL,h.duration||null,h.autoPlay,!0,h.autoLoad,h.usePolicyFile),h.serverURL||(i.connected=!0,h.onconnect&&h.onconnect.apply(i))),h.serverURL||!h.autoLoad&&!h.autoPlay||i.load(h)}return!h.serverURL&&h.autoPlay&&i.play(),i},this.destroySound=function(a,b){if(!W(a))return!1;var c,d=qa.sounds[a];for(d._iO={},d.stop(),d.unload(),c=0;c<qa.soundIDs.length;c++)if(qa.soundIDs[c]===a){qa.soundIDs.splice(c,1);break}return b||d.destruct(!0),d=null,delete qa.sounds[a],!0},this.load=function(a,b){return W(a)?qa.sounds[a].load(b):!1},this.unload=function(a){return W(a)?qa.sounds[a].unload():!1},this.onPosition=function(a,b,c,d){return W(a)?qa.sounds[a].onposition(b,c,d):!1},this.onposition=this.onPosition,this.clearOnPosition=function(a,b,c){return W(a)?qa.sounds[a].clearOnPosition(b,c):!1},this.play=function(a,b){var c=null,d=b&&!(b instanceof Object);if(!Da||!qa.ok())return V(ta+".play(): "+O(Da?"notOK":"notReady")),!1;if(W(a,d))d&&(b={url:b});else{if(!d)return!1;d&&(b={url:b}),b&&b.url&&(qa._wD(ta+'.play(): Attempting to create "'+a+'"',1),b.id=a,c=qa.createSound(b).play())}return null===c&&(c=qa.sounds[a].play(b)),c},this.start=this.play,this.setPosition=function(a,b){return W(a)?qa.sounds[a].setPosition(b):!1},this.stop=function(a){return W(a)?(qa._wD(ta+".stop("+a+")",1),qa.sounds[a].stop()):!1},this.stopAll=function(){var a;qa._wD(ta+".stopAll()",1);for(a in qa.sounds)qa.sounds.hasOwnProperty(a)&&qa.sounds[a].stop()},this.pause=function(a){return W(a)?qa.sounds[a].pause():!1},this.pauseAll=function(){var a;for(a=qa.soundIDs.length-1;a>=0;a--)qa.sounds[qa.soundIDs[a]].pause()},this.resume=function(a){return W(a)?qa.sounds[a].resume():!1},this.resumeAll=function(){var a;for(a=qa.soundIDs.length-1;a>=0;a--)qa.sounds[qa.soundIDs[a]].resume()},this.togglePause=function(a){return W(a)?qa.sounds[a].togglePause():!1},this.setPan=function(a,b){return W(a)?qa.sounds[a].setPan(b):!1},this.setVolume=function(a,b){return W(a)?qa.sounds[a].setVolume(b):!1},this.mute=function(a){var b=0;if(a instanceof String&&(a=null),a)return W(a)?(qa._wD(ta+'.mute(): Muting "'+a+'"'),qa.sounds[a].mute()):!1;for(qa._wD(ta+".mute(): Muting all sounds"),b=qa.soundIDs.length-1;b>=0;b--)qa.sounds[qa.soundIDs[b]].mute();return qa.muted=!0,!0},this.muteAll=function(){qa.mute()},this.unmute=function(a){var b;if(a instanceof String&&(a=null),a)return W(a)?(qa._wD(ta+'.unmute(): Unmuting "'+a+'"'),qa.sounds[a].unmute()):!1;for(qa._wD(ta+".unmute(): Unmuting all sounds"),b=qa.soundIDs.length-1;b>=0;b--)qa.sounds[qa.soundIDs[b]].unmute();return qa.muted=!1,!0},this.unmuteAll=function(){qa.unmute()},this.toggleMute=function(a){return W(a)?qa.sounds[a].toggleMute():!1},this.getMemoryUse=function(){var a=0;return sa&&8!==l&&(a=parseInt(sa._getMemoryUse(),10)),a},this.disable=function(c){var d;if(c===b&&(c=!1),Ea)return!1;for(Ea=!0,n("shutdown",1),d=qa.soundIDs.length-1;d>=0;d--)L(qa.sounds[qa.soundIDs[d]]);return o(c),ha.remove(a,"load",u),!0},this.canPlayMIME=function(a){var b;return qa.hasHTML5&&(b=ca({type:a})),!b&&Qa&&(b=a&&qa.ok()?!!((l>8?a.match(kb):null)||a.match(qa.mimePattern)):null),b},this.canPlayURL=function(a){var b;return qa.hasHTML5&&(b=ca({url:a})),!b&&Qa&&(b=a&&qa.ok()?!!a.match(qa.filePattern):null),b},this.canPlayLink=function(a){return a.type!==b&&a.type&&qa.canPlayMIME(a.type)?!0:qa.canPlayURL(a.href)},this.getSoundById=function(a,b){if(!a)return null;var c=qa.sounds[a];return c||b||qa._wD(ta+'.getSoundById(): Sound "'+a+'" not found.',2),c},this.onready=function(b,c){var d="onready",e=!1;if("function"!=typeof b)throw O("needFunction",d);return Da&&qa._wD(O("queue",d)),c||(c=a),s(d,b,c),t(),e=!0,e},this.ontimeout=function(b,c){var d="ontimeout",e=!1;if("function"!=typeof b)throw O("needFunction",d);return Da&&qa._wD(O("queue",d)),c||(c=a),s(d,b,c),t({type:d}),e=!0,e},this._writeDebug=function(a,c){var d,e,f="soundmanager-debug";return qa.debugMode?ab&&qa.useConsole&&(c&&"object"==typeof c?console.log(a,c):Ha[c]!==b?console[Ha[c]](a):console.log(a),qa.consoleOnly)?!0:(d=h(f))?(e=ya.createElement("div"),++Ga%2===0&&(e.className="sm2-alt"),c=c===b?0:parseInt(c,10),e.appendChild(ya.createTextNode(a)),c&&(c>=2&&(e.style.fontWeight="bold"),3===c&&(e.style.color="#ff3333")),d.insertBefore(e,d.firstChild),d=null,!0):!1:!1},-1!==xa.indexOf("sm2-debug=alert")&&(this._writeDebug=function(b){a.alert(b)}),this._wD=this._writeDebug,this._debug=function(){var a,b;for(n("currentObj",1),a=0,b=qa.soundIDs.length;b>a;a++)qa.sounds[qa.soundIDs[a]]._debug()},this.reboot=function(b,c){qa.soundIDs.length&&qa._wD("Destroying "+qa.soundIDs.length+" SMSound object"+(1!==qa.soundIDs.length?"s":"")+"...");var d,e,f;for(d=qa.soundIDs.length-1;d>=0;d--)qa.sounds[qa.soundIDs[d]].destruct();if(sa)try{Wa&&(Ka=sa.innerHTML),Ja=sa.parentNode.removeChild(sa)}catch(g){n("badRemove",2)}if(Ka=Ja=Qa=sa=null,qa.enabled=F=Da=La=Ma=Ba=Ca=Ea=Sa=qa.swfLoaded=!1,qa.soundIDs=[],qa.sounds={},Ta=0,b)za=[];else for(d in za)if(za.hasOwnProperty(d))for(e=0,f=za[d].length;f>e;e++)za[d][e].fired=!1;return c||qa._wD(ta+": Rebooting..."),qa.html5={usingFlash:null},qa.flash={},qa.html5Only=!1,qa.ignoreFlash=!1,a.setTimeout(function(){C(),c||qa.beginDelayedInit()},20),qa},this.reset=function(){return n("reset"),qa.reboot(!0,!0)},this.getMoviePercent=function(){return sa&&"PercentLoaded"in sa?sa.PercentLoaded():null},this.beginDelayedInit=function(){Fa=!0,D(),setTimeout(function(){return Ma?!1:(H(),B(),Ma=!0,!0)},20),v()},this.destruct=function(){qa._wD(ta+".destruct()"),qa.disable(!0)},g=function(a){var c,d,e,f,g,h,i,j,k,o,q=this,r=!1,s=[],t=0,u=null;k={duration:null,time:null},this.id=a.id,this.sID=this.id,this.url=a.url,this.options=p(a),this.instanceOptions=this.options,this._iO=this.instanceOptions,this.pan=this.options.pan,this.volume=this.options.volume,this.isHTML5=!1,this._a=null,o=this.url?!1:!0,this.id3={},this._debug=function(){qa._wD(q.id+": Merged options:",q.options)},this.load=function(a){var c,d=null;if(a!==b?q._iO=p(a,q.options):(a=q.options,q._iO=a,u&&u!==q.url&&(n("manURL"),q._iO.url=q.url,q.url=null)),q._iO.url||(q._iO.url=q.url),q._iO.url=$(q._iO.url),q.instanceOptions=q._iO,c=q._iO,qa._wD(q.id+": load ("+c.url+")"),!c.url&&!q.url)return qa._wD(q.id+": load(): url is unassigned. Exiting.",2),q;if(q.isHTML5||8!==l||q.url||c.autoPlay||qa._wD(q.id+": Flash 8 load() limitation: Wait for onload() before calling play().",1),c.url===q.url&&0!==q.readyState&&2!==q.readyState)return n("onURL",1),3===q.readyState&&c.onload&&pa(q,function(){c.onload.apply(q,[!!q.duration])}),q;if(q.loaded=!1,q.readyState=1,q.playState=0,q.id3={},ba(c))d=q._setup_html5(c),d._called_load?qa._wD(q.id+": Ignoring request to load again"):(q._html5_canplay=!1,q.url!==c.url&&(qa._wD(n("manURL")+": "+c.url),q._a.src=c.url,q.setPosition(0)),q._a.autobuffer="auto",q._a.preload="auto",q._a._called_load=!0);else{if(qa.html5Only)return qa._wD(q.id+": No flash support. Exiting."),q;if(q._iO.url&&q._iO.url.match(/data\:/i))return qa._wD(q.id+": data: URIs not supported via Flash. Exiting."),q;try{q.isHTML5=!1,q._iO=U(T(c)),q._iO.autoPlay&&(q._iO.position||q._iO.from)&&(qa._wD(q.id+": Disabling autoPlay because of non-zero offset case"),q._iO.autoPlay=!1),c=q._iO,8===l?sa._load(q.id,c.url,c.stream,c.autoPlay,c.usePolicyFile):sa._load(q.id,c.url,!!c.stream,!!c.autoPlay,c.loops||1,!!c.autoLoad,c.usePolicyFile)}catch(e){n("smError",2),m("onload",!1),I({type:"SMSOUND_LOAD_JS_EXCEPTION",fatal:!0})}}return q.url=c.url,q},this.unload=function(){return 0!==q.readyState&&(qa._wD(q.id+": unload()"),q.isHTML5?(f(),q._a&&(q._a.pause(),u=ea(q._a))):8===l?sa._unload(q.id,gb):sa._unload(q.id),c()),q},this.destruct=function(a){qa._wD(q.id+": Destruct"),q.isHTML5?(f(),q._a&&(q._a.pause(),ea(q._a),Sa||e(),q._a._s=null,q._a=null)):(q._iO.onfailure=null,sa._destroySound(q.id)),a||qa.destroySound(q.id,!0)},this.play=function(a,c){var d,e,f,i,k,m,n,s=!0,t=null;if(d=q.id+": play(): ",c=c===b?!0:c,a||(a={}),q.url&&(q._iO.url=q.url),q._iO=p(q._iO,q.options),q._iO=p(a,q._iO),q._iO.url=$(q._iO.url),q.instanceOptions=q._iO,!q.isHTML5&&q._iO.serverURL&&!q.connected)return q.getAutoPlay()||(qa._wD(d+" Netstream not connected yet - setting autoPlay"),q.setAutoPlay(!0)),q;if(ba(q._iO)&&(q._setup_html5(q._iO),g()),1!==q.playState||q.paused||(e=q._iO.multiShot,e?qa._wD(d+"Already playing (multi-shot)",1):(qa._wD(d+"Already playing (one-shot)",1),q.isHTML5&&q.setPosition(q._iO.position),t=q)),null!==t)return t;if(a.url&&a.url!==q.url&&(q.readyState||q.isHTML5||8!==l||!o?q.load(q._iO):o=!1),q.loaded?qa._wD(d.substr(0,d.lastIndexOf(":"))):0===q.readyState?(qa._wD(d+"Attempting to load"),q.isHTML5||qa.html5Only?q.isHTML5?q.load(q._iO):(qa._wD(d+"Unsupported type. Exiting."),t=q):(q._iO.autoPlay=!0,q.load(q._iO)),q.instanceOptions=q._iO):2===q.readyState?(qa._wD(d+"Could not load - exiting",2),t=q):qa._wD(d+"Loading - attempting to play..."),null!==t)return t;if(!q.isHTML5&&9===l&&q.position>0&&q.position===q.duration&&(qa._wD(d+"Sound at end, resetting to position:0"),a.position=0),q.paused&&q.position>=0&&(!q._iO.serverURL||q.position>0))qa._wD(d+"Resuming from paused state",1),q.resume();else{if(q._iO=p(a,q._iO),(!q.isHTML5&&null!==q._iO.position&&q._iO.position>0||null!==q._iO.from&&q._iO.from>0||null!==q._iO.to)&&0===q.instanceCount&&0===q.playState&&!q._iO.serverURL){if(i=function(){q._iO=p(a,q._iO),q.play(q._iO)},q.isHTML5&&!q._html5_canplay?(qa._wD(d+"Beginning load for non-zero offset case"),q.load({_oncanplay:i}),t=!1):q.isHTML5||q.loaded||q.readyState&&2===q.readyState||(qa._wD(d+"Preloading for non-zero offset case"),q.load({onload:i}),t=!1),null!==t)return t;q._iO=j()}(!q.instanceCount||q._iO.multiShotEvents||q.isHTML5&&q._iO.multiShot&&!Sa||!q.isHTML5&&l>8&&!q.getAutoPlay())&&q.instanceCount++,q._iO.onposition&&0===q.playState&&h(q),q.playState=1,q.paused=!1,q.position=q._iO.position===b||isNaN(q._iO.position)?0:q._iO.position,q.isHTML5||(q._iO=U(T(q._iO))),q._iO.onplay&&c&&(q._iO.onplay.apply(q),r=!0),q.setVolume(q._iO.volume,!0),q.setPan(q._iO.pan,!0),q.isHTML5?q.instanceCount<2?(g(),f=q._setup_html5(),q.setPosition(q._iO.position),f.play()):(qa._wD(q.id+": Cloning Audio() for instance #"+q.instanceCount+"..."),k=new Audio(q._iO.url),m=function(){ha.remove(k,"ended",m),q._onfinish(q),ea(k),k=null},n=function(){ha.remove(k,"canplay",n);try{k.currentTime=q._iO.position/fb}catch(a){V(q.id+": multiShot play() failed to apply position of "+q._iO.position/fb)}k.play()},ha.add(k,"ended",m),void 0!==q._iO.volume&&(k.volume=Math.max(0,Math.min(1,q._iO.volume/100))),q.muted&&(k.muted=!0),q._iO.position?ha.add(k,"canplay",n):k.play()):(s=sa._start(q.id,q._iO.loops||1,9===l?q.position:q.position/fb,q._iO.multiShot||!1),9!==l||s||(qa._wD(d+"No sound hardware, or 32-sound ceiling hit",2),q._iO.onplayerror&&q._iO.onplayerror.apply(q)))}return q},this.start=this.play,this.stop=function(a){var b,c=q._iO;return 1===q.playState&&(qa._wD(q.id+": stop()"),q._onbufferchange(0),q._resetOnPosition(0),q.paused=!1,q.isHTML5||(q.playState=0),i(),c.to&&q.clearOnPosition(c.to),q.isHTML5?q._a&&(b=q.position,q.setPosition(0),q.position=b,q._a.pause(),q.playState=0,q._onTimer(),f()):(sa._stop(q.id,a),c.serverURL&&q.unload()),q.instanceCount=0,q._iO={},c.onstop&&c.onstop.apply(q)),q},this.setAutoPlay=function(a){qa._wD(q.id+": Autoplay turned "+(a?"on":"off")),q._iO.autoPlay=a,q.isHTML5||(sa._setAutoPlay(q.id,a),a&&(q.instanceCount||1!==q.readyState||(q.instanceCount++,qa._wD(q.id+": Incremented instance count to "+q.instanceCount))))},this.getAutoPlay=function(){return q._iO.autoPlay},this.setPosition=function(a){a===b&&(a=0);var c,d,e=q.isHTML5?Math.max(a,0):Math.min(q.duration||q._iO.duration,Math.max(a,0));if(q.position=e,d=q.position/fb,q._resetOnPosition(q.position),q._iO.position=e,q.isHTML5){if(q._a){if(q._html5_canplay){if(q._a.currentTime!==d){qa._wD(q.id+": setPosition("+d+")");try{q._a.currentTime=d,(0===q.playState||q.paused)&&q._a.pause()}catch(f){qa._wD(q.id+": setPosition("+d+") failed: "+f.message,2)}}}else if(d)return qa._wD(q.id+": setPosition("+d+"): Cannot seek yet, sound not ready",2),q;q.paused&&q._onTimer(!0)}}else c=9===l?q.position:d,q.readyState&&2!==q.readyState&&sa._setPosition(q.id,c,q.paused||!q.playState,q._iO.multiShot);return q},this.pause=function(a){return q.paused||0===q.playState&&1!==q.readyState?q:(qa._wD(q.id+": pause()"),q.paused=!0,q.isHTML5?(q._setup_html5().pause(),f()):(a||a===b)&&sa._pause(q.id,q._iO.multiShot),q._iO.onpause&&q._iO.onpause.apply(q),q)},this.resume=function(){var a=q._iO;return q.paused?(qa._wD(q.id+": resume()"),q.paused=!1,q.playState=1,q.isHTML5?(q._setup_html5().play(),g()):(a.isMovieStar&&!a.serverURL&&q.setPosition(q.position),sa._pause(q.id,a.multiShot)),!r&&a.onplay?(a.onplay.apply(q),r=!0):a.onresume&&a.onresume.apply(q),q):q},this.togglePause=function(){return qa._wD(q.id+": togglePause()"),0===q.playState?(q.play({position:9!==l||q.isHTML5?q.position/fb:q.position}),q):(q.paused?q.resume():q.pause(),q)},this.setPan=function(a,c){return a===b&&(a=0),c===b&&(c=!1),q.isHTML5||sa._setPan(q.id,a),q._iO.pan=a,c||(q.pan=a,q.options.pan=a),q},this.setVolume=function(a,c){return a===b&&(a=100),c===b&&(c=!1),q.isHTML5?q._a&&(qa.muted&&!q.muted&&(q.muted=!0,q._a.muted=!0),q._a.volume=Math.max(0,Math.min(1,a/100))):sa._setVolume(q.id,qa.muted&&!q.muted||q.muted?0:a),q._iO.volume=a,c||(q.volume=a,q.options.volume=a),q},this.mute=function(){return q.muted=!0,q.isHTML5?q._a&&(q._a.muted=!0):sa._setVolume(q.id,0),q},this.unmute=function(){q.muted=!1;var a=q._iO.volume!==b;return q.isHTML5?q._a&&(q._a.muted=!1):sa._setVolume(q.id,a?q._iO.volume:q.options.volume),q},this.toggleMute=function(){return q.muted?q.unmute():q.mute()},this.onPosition=function(a,c,d){return s.push({position:parseInt(a,10),method:c,scope:d!==b?d:q,fired:!1}),q},this.onposition=this.onPosition,this.clearOnPosition=function(a,b){var c;if(a=parseInt(a,10),isNaN(a))return!1;for(c=0;c<s.length;c++)a===s[c].position&&(b&&b!==s[c].method||(s[c].fired&&t--,s.splice(c,1)))},this._processOnPosition=function(){var a,b,c=s.length;if(!c||!q.playState||t>=c)return!1;for(a=c-1;a>=0;a--)b=s[a],!b.fired&&q.position>=b.position&&(b.fired=!0,t++,b.method.apply(b.scope,[b.position]),c=s.length);return!0},this._resetOnPosition=function(a){var b,c,d=s.length;if(!d)return!1;for(b=d-1;b>=0;b--)c=s[b],c.fired&&a<=c.position&&(c.fired=!1,t--);return!0},j=function(){var a,b,c=q._iO,d=c.from,e=c.to;return b=function(){qa._wD(q.id+': "To" time of '+e+" reached."),q.clearOnPosition(e,b),q.stop()},a=function(){qa._wD(q.id+': Playing "from" '+d),null===e||isNaN(e)||q.onPosition(e,b)},null===d||isNaN(d)||(c.position=d,c.multiShot=!1,a()),c},h=function(){var a,b=q._iO.onposition;if(b)for(a in b)b.hasOwnProperty(a)&&q.onPosition(parseInt(a,10),b[a])},i=function(){var a,b=q._iO.onposition;if(b)for(a in b)b.hasOwnProperty(a)&&q.clearOnPosition(parseInt(a,10))},g=function(){q.isHTML5&&X(q)},f=function(){q.isHTML5&&Y(q)},c=function(a){a||(s=[],t=0),r=!1,q._hasTimer=null,q._a=null,q._html5_canplay=!1,q.bytesLoaded=null,q.bytesTotal=null,q.duration=q._iO&&q._iO.duration?q._iO.duration:null,q.durationEstimate=null,q.buffered=[],q.eqData=[],q.eqData.left=[],q.eqData.right=[],q.failures=0,q.isBuffering=!1,q.instanceOptions={},q.instanceCount=0,q.loaded=!1,q.metadata={},q.readyState=0,q.muted=!1,q.paused=!1,q.peakData={left:0,right:0},q.waveformData={left:[],right:[]},q.playState=0,q.position=null,q.id3={}},c(),this._onTimer=function(a){var b,c,d=!1,e={};return q._hasTimer||a?(q._a&&(a||(q.playState>0||1===q.readyState)&&!q.paused)&&(b=q._get_html5_duration(),b!==k.duration&&(k.duration=b,q.duration=b,d=!0),q.durationEstimate=q.duration,c=q._a.currentTime*fb||0,c!==k.time&&(k.time=c,d=!0),(d||a)&&q._whileplaying(c,e,e,e,e)),d):void 0},this._get_html5_duration=function(){var a=q._iO,b=q._a&&q._a.duration?q._a.duration*fb:a&&a.duration?a.duration:null,c=b&&!isNaN(b)&&b!==1/0?b:null;return c},this._apply_loop=function(a,b){!a.loop&&b>1&&qa._wD("Note: Native HTML5 looping is infinite.",1),a.loop=b>1?"loop":""},this._setup_html5=function(a){var b,e=p(q._iO,a),f=Sa?ra:q._a,g=decodeURI(e.url);if(Sa?g===decodeURI(ia)&&(b=!0):g===decodeURI(u)&&(b=!0),f){if(f._s)if(Sa)f._s&&f._s.playState&&!b&&f._s.stop();else if(!Sa&&g===decodeURI(u))return q._apply_loop(f,e.loops),f;b||(u&&c(!1),f.src=e.url,q.url=e.url,u=e.url,ia=e.url,f._called_load=!1)}else e.autoLoad||e.autoPlay?(q._a=new Audio(e.url),q._a.load()):q._a=Za&&opera.version()<10?new Audio(null):new Audio,f=q._a,f._called_load=!1,Sa&&(ra=f);return q.isHTML5=!0,q._a=f,f._s=q,d(),q._apply_loop(f,e.loops),e.autoLoad||e.autoPlay?q.load():(f.autobuffer=!1,f.preload="auto"),f},d=function(){function a(a,b,c){return q._a?q._a.addEventListener(a,b,c||!1):null}if(q._a._added_events)return!1;var b;q._a._added_events=!0;for(b in ma)ma.hasOwnProperty(b)&&a(b,ma[b]);return!0},e=function(){function a(a,b,c){return q._a?q._a.removeEventListener(a,b,c||!1):null}var b;qa._wD(q.id+": Removing event listeners"),q._a._added_events=!1;for(b in ma)ma.hasOwnProperty(b)&&a(b,ma[b])},this._onload=function(a){var b,c=!!a||!q.isHTML5&&8===l&&q.duration;return b=q.id+": ",qa._wD(b+(c?"onload()":"Failed to load / invalid sound?"+(q.duration?" -":" Zero-length duration reported.")+" ("+q.url+")"),c?1:2),c||q.isHTML5||(qa.sandbox.noRemote===!0&&qa._wD(b+O("noNet"),1),qa.sandbox.noLocal===!0&&qa._wD(b+O("noLocal"),1)),q.loaded=c,q.readyState=c?3:2,q._onbufferchange(0),q._iO.onload&&pa(q,function(){q._iO.onload.apply(q,[c])}),!0},this._onbufferchange=function(a){return 0===q.playState?!1:a&&q.isBuffering||!a&&!q.isBuffering?!1:(q.isBuffering=1===a,q._iO.onbufferchange&&(qa._wD(q.id+": Buffer state change: "+a),q._iO.onbufferchange.apply(q,[a])),!0)},this._onsuspend=function(){return q._iO.onsuspend&&(qa._wD(q.id+": Playback suspended"),q._iO.onsuspend.apply(q)),!0},this._onfailure=function(a,b,c){q.failures++,qa._wD(q.id+": Failure ("+q.failures+"): "+a),q._iO.onfailure&&1===q.failures?q._iO.onfailure(a,b,c):qa._wD(q.id+": Ignoring failure")},this._onwarning=function(a,b,c){q._iO.onwarning&&q._iO.onwarning(a,b,c)},this._onfinish=function(){var a=q._iO.onfinish;q._onbufferchange(0),q._resetOnPosition(0),q.instanceCount&&(q.instanceCount--,q.instanceCount||(i(),q.playState=0,q.paused=!1,q.instanceCount=0,q.instanceOptions={},q._iO={},f(),q.isHTML5&&(q.position=0)),(!q.instanceCount||q._iO.multiShotEvents)&&a&&(qa._wD(q.id+": onfinish()"),pa(q,function(){a.apply(q)})))},this._whileloading=function(a,b,c,d){var e=q._iO;q.bytesLoaded=a,q.bytesTotal=b,q.duration=Math.floor(c),q.bufferLength=d,q.isHTML5||e.isMovieStar?q.durationEstimate=q.duration:e.duration?q.durationEstimate=q.duration>e.duration?q.duration:e.duration:q.durationEstimate=parseInt(q.bytesTotal/q.bytesLoaded*q.duration,10),q.isHTML5||(q.buffered=[{start:0,end:q.duration}]),(3!==q.readyState||q.isHTML5)&&e.whileloading&&e.whileloading.apply(q)},this._whileplaying=function(a,c,d,e,f){var g,h=q._iO;return isNaN(a)||null===a?!1:(q.position=Math.max(0,a),q._processOnPosition(),!q.isHTML5&&l>8&&(h.usePeakData&&c!==b&&c&&(q.peakData={left:c.leftPeak,right:c.rightPeak}),h.useWaveformData&&d!==b&&d&&(q.waveformData={left:d.split(","),right:e.split(",")}),h.useEQData&&f!==b&&f&&f.leftEQ&&(g=f.leftEQ.split(","),q.eqData=g,q.eqData.left=g,f.rightEQ!==b&&f.rightEQ&&(q.eqData.right=f.rightEQ.split(",")))),1===q.playState&&(q.isHTML5||8!==l||q.position||!q.isBuffering||q._onbufferchange(0),h.whileplaying&&h.whileplaying.apply(q)),!0)},this._oncaptiondata=function(a){qa._wD(q.id+": Caption data received."),q.captiondata=a,q._iO.oncaptiondata&&q._iO.oncaptiondata.apply(q,[a])},this._onmetadata=function(a,b){qa._wD(q.id+": Metadata received.");var c,d,e={};for(c=0,d=a.length;d>c;c++)e[a[c]]=b[c];q.metadata=e,console.log("updated metadata",q.metadata),q._iO.onmetadata&&q._iO.onmetadata.call(q,q.metadata)},this._onid3=function(a,b){qa._wD(q.id+": ID3 data received.");var c,d,e=[];for(c=0,d=a.length;d>c;c++)e[a[c]]=b[c];q.id3=p(q.id3,e),q._iO.onid3&&q._iO.onid3.apply(q)},this._onconnect=function(a){a=1===a,qa._wD(q.id+": "+(a?"Connected.":"Failed to connect? - "+q.url),a?1:2),q.connected=a,a&&(q.failures=0,W(q.id)&&(q.getAutoPlay()?q.play(b,q.getAutoPlay()):q._iO.autoLoad&&q.load()),q._iO.onconnect&&q._iO.onconnect.apply(q,[a]))},this._ondataerror=function(a){q.playState>0&&(qa._wD(q.id+": Data error: "+a),q._iO.ondataerror&&q._iO.ondataerror.apply(q))},this._debug()},G=function(){return ya.body||ya.getElementsByTagName("div")[0]},h=function(a){return ya.getElementById(a)},p=function(a,c){var d,e,f=a||{};d=c===b?qa.defaultOptions:c;for(e in d)d.hasOwnProperty(e)&&f[e]===b&&("object"!=typeof d[e]||null===d[e]?f[e]=d[e]:f[e]=p(f[e],d[e]));return f},pa=function(b,c){b.isHTML5||8!==l?c():a.setTimeout(c,0)},r={onready:1,ontimeout:1,defaultOptions:1,flash9Options:1,movieStarOptions:1},q=function(a,c){var d,e=!0,f=c!==b,g=qa.setupOptions,h=r;if(a===b){e=[];for(d in g)g.hasOwnProperty(d)&&e.push(d);for(d in h)h.hasOwnProperty(d)&&("object"==typeof qa[d]?e.push(d+": {...}"):qa[d]instanceof Function?e.push(d+": function() {...}"):e.push(d));return qa._wD(O("setup",e.join(", "))),!1}for(d in a)if(a.hasOwnProperty(d))if("object"!=typeof a[d]||null===a[d]||a[d]instanceof Array||a[d]instanceof RegExp)f&&h[c]!==b?qa[c][d]=a[d]:g[d]!==b?(qa.setupOptions[d]=a[d],qa[d]=a[d]):h[d]===b?(V(O(qa[d]===b?"setupUndef":"setupError",d),2),e=!1):qa[d]instanceof Function?qa[d].apply(qa,a[d]instanceof Array?a[d]:[a[d]]):qa[d]=a[d];else{if(h[d]!==b)return q(a[d],d);V(O(qa[d]===b?"setupUndef":"setupError",d),2),e=!1}return e},ha=function(){function b(a){var b=Ra.call(a),c=b.length;return f?(b[1]="on"+b[1],c>3&&b.pop()):3===c&&b.push(!1),b}function c(a,b){var c=a.shift(),d=[g[b]];f?c[d](a[0],a[1]):c[d].apply(c,a)}function d(){c(b(arguments),"add")}function e(){c(b(arguments),"remove")}var f=a.attachEvent,g={add:f?"attachEvent":"addEventListener",remove:f?"detachEvent":"removeEventListener"};return{add:d,remove:e}}(),ma={abort:f(function(){qa._wD(this._s.id+": abort")}),canplay:f(function(){var a,c=this._s;if(c._html5_canplay)return!0;if(c._html5_canplay=!0,qa._wD(c.id+": canplay"),c._onbufferchange(0),a=c._iO.position===b||isNaN(c._iO.position)?null:c._iO.position/fb,this.currentTime!==a){qa._wD(c.id+": canplay: Setting position to "+a);try{this.currentTime=a}catch(d){qa._wD(c.id+": canplay: Setting position of "+a+" failed: "+d.message,2)}}c._iO._oncanplay&&c._iO._oncanplay()}),canplaythrough:f(function(){var a=this._s;a.loaded||(a._onbufferchange(0),a._whileloading(a.bytesLoaded,a.bytesTotal,a._get_html5_duration()),a._onload(!0))}),durationchange:f(function(){var a,b=this._s;a=b._get_html5_duration(),isNaN(a)||a===b.duration||(qa._wD(this._s.id+": durationchange ("+a+")"+(b.duration?", previously "+b.duration:"")),b.durationEstimate=b.duration=a)}),ended:f(function(){var a=this._s;qa._wD(a.id+": ended"),a._onfinish()}),error:f(function(){qa._wD(this._s.id+": HTML5 error, code "+this.error.code),this._s._onload(!1)}),loadeddata:f(function(){var a=this._s;qa._wD(a.id+": loadeddata"),a._loaded||Ya||(a.duration=a._get_html5_duration())}),loadedmetadata:f(function(){qa._wD(this._s.id+": loadedmetadata")}),loadstart:f(function(){qa._wD(this._s.id+": loadstart"),this._s._onbufferchange(1)}),play:f(function(){this._s._onbufferchange(0)}),playing:f(function(){qa._wD(this._s.id+": playing "+String.fromCharCode(9835)),this._s._onbufferchange(0)}),progress:f(function(a){var b,c,d,e=this._s,f=0,g="progress"===a.type,h=a.target.buffered,i=a.loaded||0,j=a.total||1;if(e.buffered=[],h&&h.length){for(b=0,c=h.length;c>b;b++)e.buffered.push({start:h.start(b)*fb,end:h.end(b)*fb});if(f=(h.end(0)-h.start(0))*fb,i=Math.min(1,f/(a.target.duration*fb)),g&&h.length>1){for(d=[],c=h.length,b=0;c>b;b++)d.push(a.target.buffered.start(b)*fb+"-"+a.target.buffered.end(b)*fb);qa._wD(this._s.id+": progress, timeRanges: "+d.join(", "))}g&&!isNaN(i)&&qa._wD(this._s.id+": progress, "+Math.floor(100*i)+"% loaded")}isNaN(i)||(e._whileloading(i,j,e._get_html5_duration()),i&&j&&i===j&&ma.canplaythrough.call(this,a))}),ratechange:f(function(){qa._wD(this._s.id+": ratechange")}),suspend:f(function(a){var b=this._s;qa._wD(this._s.id+": suspend"),ma.progress.call(this,a),b._onsuspend()}),stalled:f(function(){qa._wD(this._s.id+": stalled")}),timeupdate:f(function(){this._s._onTimer()}),waiting:f(function(){var a=this._s;qa._wD(this._s.id+": waiting"),a._onbufferchange(1)})},ba=function(a){var b;return b=a&&(a.type||a.url||a.serverURL)?a.serverURL||a.type&&e(a.type)?!1:a.type?ca({type:a.type}):ca({url:a.url})||qa.html5Only||a.url.match(/data\:/i):!1},ea=function(a){var b;return a&&(b=Ya?gb:qa.html5.canPlayType("audio/wav")?hb:gb,a.src=b,void 0!==a._called_unload&&(a._called_load=!1)),Sa&&(ia=null),b},ca=function(a){if(!qa.useHTML5Audio||!qa.hasHTML5)return!1;var c,d,f,g,h=a.url||null,i=a.type||null,j=qa.audioFormats;if(i&&qa.html5[i]!==b)return qa.html5[i]&&!e(i);if(!da){da=[];for(g in j)j.hasOwnProperty(g)&&(da.push(g),j[g].related&&(da=da.concat(j[g].related)));da=new RegExp("\\.("+da.join("|")+")(\\?.*)?$","i")}return f=h?h.toLowerCase().match(da):null,f&&f.length?f=f[1]:i?(d=i.indexOf(";"),f=(-1!==d?i.substr(0,d):i).substr(6)):c=!1,f&&qa.html5[f]!==b?c=qa.html5[f]&&!e(f):(i="audio/"+f,c=qa.html5.canPlayType({type:i}),qa.html5[f]=c,c=c&&qa.html5[i]&&!e(i)),c},ga=function(){function a(a){var b,c,d=!1,e=!1;if(!g||"function"!=typeof g.canPlayType)return d;if(a instanceof Array){for(f=0,c=a.length;c>f;f++)(qa.html5[a[f]]||g.canPlayType(a[f]).match(qa.html5Test))&&(e=!0,qa.html5[a[f]]=!0,qa.flash[a[f]]=!!a[f].match(eb));d=e}else b=g&&"function"==typeof g.canPlayType?g.canPlayType(a):!1,d=!(!b||!b.match(qa.html5Test));return d}if(!qa.useHTML5Audio||!qa.hasHTML5)return qa.html5.usingFlash=!0,Qa=!0,!1;var c,d,e,f,g=Audio!==b?Za&&opera.version()<10?new Audio(null):new Audio:null,h={};e=qa.audioFormats;for(c in e)if(e.hasOwnProperty(c)&&(d="audio/"+c,h[c]=a(e[c].type),h[d]=h[c],c.match(eb)?(qa.flash[c]=!0,qa.flash[d]=!0):(qa.flash[c]=!1,qa.flash[d]=!1),e[c]&&e[c].related))for(f=e[c].related.length-1;f>=0;f--)h["audio/"+e[c].related[f]]=h[c],qa.html5[e[c].related[f]]=h[c],qa.flash[e[c].related[f]]=h[c];return h.canPlayType=g?a:null, -qa.html5=p(qa.html5,h),qa.html5.usingFlash=aa(),Qa=qa.html5.usingFlash,!0},A={notReady:"Unavailable - wait until onready() has fired.",notOK:"Audio support is not available.",domError:ta+"exception caught while appending SWF to DOM.",spcWmode:"Removing wmode, preventing known SWF loading issue(s)",swf404:ua+"Verify that %s is a valid path.",tryDebug:"Try "+ta+".debugFlash = true for more security details (output goes to SWF.)",checkSWF:"See SWF output for more debug info.",localFail:ua+"Non-HTTP page ("+ya.location.protocol+" URL?) Review Flash player security settings for this special case:\nhttp://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html\nMay need to add/allow path, e.g. c:/sm2/ or /users/me/sm2/",waitFocus:ua+"Special case: Waiting for SWF to load with window focus...",waitForever:ua+"Waiting indefinitely for Flash (will recover if unblocked)...",waitSWF:ua+"Waiting for 100% SWF load...",needFunction:ua+"Function object expected for %s",badID:'Sound ID "%s" should be a string, starting with a non-numeric character',currentObj:ua+"_debug(): Current sound objects",waitOnload:ua+"Waiting for window.onload()",docLoaded:ua+"Document already loaded",onload:ua+"initComplete(): calling soundManager.onload()",onloadOK:ta+".onload() complete",didInit:ua+"init(): Already called?",secNote:"Flash security note: Network/internet URLs will not load due to security restrictions. Access can be configured via Flash Player Global Security Settings Page: http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html",badRemove:ua+"Failed to remove Flash node.",shutdown:ta+".disable(): Shutting down",queue:ua+"Queueing %s handler",smError:"SMSound.load(): Exception: JS-Flash communication failed, or JS error.",fbTimeout:"No flash response, applying ."+R.swfTimedout+" CSS...",fbLoaded:"Flash loaded",fbHandler:ua+"flashBlockHandler()",manURL:"SMSound.load(): Using manually-assigned URL",onURL:ta+".load(): current URL already assigned.",badFV:ta+'.flashVersion must be 8 or 9. "%s" is invalid. Reverting to %s.',as2loop:"Note: Setting stream:false so looping can work (flash 8 limitation)",noNSLoop:"Note: Looping not implemented for MovieStar formats",needfl9:"Note: Switching to flash 9, required for MP4 formats.",mfTimeout:"Setting flashLoadTimeout = 0 (infinite) for off-screen, mobile flash case",needFlash:ua+"Fatal error: Flash is needed to play some required formats, but is not available.",gotFocus:ua+"Got window focus.",policy:"Enabling usePolicyFile for data access",setup:ta+".setup(): allowed parameters: %s",setupError:ta+'.setup(): "%s" cannot be assigned with this method.',setupUndef:ta+'.setup(): Could not find option "%s"',setupLate:ta+".setup(): url, flashVersion and html5Test property changes will not take effect until reboot().",noURL:ua+"Flash URL required. Call soundManager.setup({url:...}) to get started.",sm2Loaded:"SoundManager 2: Ready. "+String.fromCharCode(10003),reset:ta+".reset(): Removing event callbacks",mobileUA:"Mobile UA detected, preferring HTML5 by default.",globalHTML5:"Using singleton HTML5 Audio() pattern for this device."},O=function(){var a,b,c,d,e;if(a=Ra.call(arguments),d=a.shift(),e=A&&A[d]?A[d]:"",e&&a&&a.length)for(b=0,c=a.length;c>b;b++)e=e.replace("%s",a[b]);return e},T=function(a){return 8===l&&a.loops>1&&a.stream&&(n("as2loop"),a.stream=!1),a},U=function(a,b){return a&&!a.usePolicyFile&&(a.onid3||a.usePeakData||a.useWaveformData||a.useEQData)&&(qa._wD((b||"")+O("policy")),a.usePolicyFile=!0),a},V=function(a){ab&&console.warn!==b?console.warn(a):qa._wD(a)},i=function(){return!1},L=function(a){var b;for(b in a)a.hasOwnProperty(b)&&"function"==typeof a[b]&&(a[b]=i);b=null},M=function(a){a===b&&(a=!1),(Ea||a)&&qa.disable(a)},N=function(a){var b,c=null;if(a)if(a.match(/\.swf(\?.*)?$/i)){if(c=a.substr(a.toLowerCase().lastIndexOf(".swf?")+4))return a}else a.lastIndexOf("/")!==a.length-1&&(a+="/");return b=(a&&-1!==a.lastIndexOf("/")?a.substr(0,a.lastIndexOf("/")+1):"./")+qa.movieURL,qa.noSWFCache&&(b+="?ts="+(new Date).getTime()),b},y=function(){l=parseInt(qa.flashVersion,10),8!==l&&9!==l&&(qa._wD(O("badFV",l,Ia)),qa.flashVersion=l=Ia);var a=qa.debugMode||qa.debugFlash?"_debug.swf":".swf";qa.useHTML5Audio&&!qa.html5Only&&qa.audioFormats.mp4.required&&9>l&&(qa._wD(O("needfl9")),qa.flashVersion=l=9),qa.version=qa.versionNumber+(qa.html5Only?" (HTML5-only mode)":9===l?" (AS3/Flash 9)":" (AS2/Flash 8)"),l>8?(qa.defaultOptions=p(qa.defaultOptions,qa.flash9Options),qa.features.buffering=!0,qa.defaultOptions=p(qa.defaultOptions,qa.movieStarOptions),qa.filePatterns.flash9=new RegExp("\\.(mp3|"+lb.join("|")+")(\\?.*)?$","i"),qa.features.movieStar=!0):qa.features.movieStar=!1,qa.filePattern=qa.filePatterns[8!==l?"flash9":"flash8"],qa.movieURL=(8===l?"soundmanager2.swf":"soundmanager2_flash9.swf").replace(".swf",a),qa.features.peakData=qa.features.waveformData=qa.features.eqData=l>8},J=function(a,b){return sa?void sa._setPolling(a,b):!1},K=function(){if(qa.debugURLParam.test(xa)&&(qa.debugMode=!0),h(qa.debugID))return!1;var a,b,c,d,e;if(qa.debugMode&&!h(qa.debugID)&&(!ab||!qa.useConsole||!qa.consoleOnly)){a=ya.createElement("div"),a.id=qa.debugID+"-toggle",d={position:"fixed",bottom:"0px",right:"0px",width:"1.2em",height:"1.2em",lineHeight:"1.2em",margin:"2px",textAlign:"center",border:"1px solid #999",cursor:"pointer",background:"#fff",color:"#333",zIndex:10001},a.appendChild(ya.createTextNode("-")),a.onclick=S,a.title="Toggle SM2 debug console",wa.match(/msie 6/i)&&(a.style.position="absolute",a.style.cursor="hand");for(e in d)d.hasOwnProperty(e)&&(a.style[e]=d[e]);if(b=ya.createElement("div"),b.id=qa.debugID,b.style.display=qa.debugMode?"block":"none",qa.debugMode&&!h(a.id)){try{c=G(),c.appendChild(a)}catch(f){throw new Error(O("domError")+" \n"+f.toString())}c.appendChild(b)}}c=null},W=this.getSoundById,n=function(a,b){return a?qa._wD(O(a),b):""},S=function(){var a=h(qa.debugID),b=h(qa.debugID+"-toggle");return a?(Aa?(b.innerHTML="+",a.style.display="none"):(b.innerHTML="-",a.style.display="block"),void(Aa=!Aa)):!1},m=function(c,d,e){if(a.sm2Debugger!==b)try{sm2Debugger.handleEvent(c,d,e)}catch(f){return!1}return!0},Q=function(){var a=[];return qa.debugMode&&a.push(R.sm2Debug),qa.debugFlash&&a.push(R.flashDebug),qa.useHighPerformance&&a.push(R.highPerf),a.join(" ")},P=function(){var a=O("fbHandler"),b=qa.getMoviePercent(),c=R,d={type:"FLASHBLOCK"};return qa.html5Only?!1:void(qa.ok()?(qa.didFlashBlock&&qa._wD(a+": Unblocked"),qa.oMC&&(qa.oMC.className=[Q(),c.swfDefault,c.swfLoaded+(qa.didFlashBlock?" "+c.swfUnblocked:"")].join(" "))):(Qa&&(qa.oMC.className=Q()+" "+c.swfDefault+" "+(null===b?c.swfTimedout:c.swfError),qa._wD(a+": "+O("fbTimeout")+(b?" ("+O("fbLoaded")+")":""))),qa.didFlashBlock=!0,t({type:"ontimeout",ignoreInit:!0,error:d}),I(d)))},s=function(a,c,d){za[a]===b&&(za[a]=[]),za[a].push({method:c,scope:d||null,fired:!1})},t=function(a){if(a||(a={type:qa.ok()?"onready":"ontimeout"}),!Da&&a&&!a.ignoreInit)return!1;if("ontimeout"===a.type&&(qa.ok()||Ea&&!a.ignoreInit))return!1;var b,c,d={success:a&&a.ignoreInit?qa.ok():!Ea},e=a&&a.type?za[a.type]||[]:[],f=[],g=[d],h=Qa&&!qa.ok();for(a.error&&(g[0].error=a.error),b=0,c=e.length;c>b;b++)e[b].fired!==!0&&f.push(e[b]);if(f.length)for(b=0,c=f.length;c>b;b++)f[b].scope?f[b].method.apply(f[b].scope,g):f[b].method.apply(this,g),h||(f[b].fired=!0);return!0},u=function(){a.setTimeout(function(){qa.useFlashBlock&&P(),t(),"function"==typeof qa.onload&&(n("onload",1),qa.onload.apply(a),n("onloadOK",1)),qa.waitForWindowLoad&&ha.add(a,"load",u)},1)},ka=function(){if(ja!==b)return ja;var c,d,e,f=!1,g=navigator,h=g.plugins,i=a.ActiveXObject;if(h&&h.length)d="application/x-shockwave-flash",e=g.mimeTypes,e&&e[d]&&e[d].enabledPlugin&&e[d].enabledPlugin.description&&(f=!0);else if(i!==b&&!wa.match(/MSAppHost/i)){try{c=new i("ShockwaveFlash.ShockwaveFlash")}catch(j){c=null}f=!!c,c=null}return ja=f,f},aa=function(){var a,b,c=qa.audioFormats,d=Ua&&!!wa.match(/os (1|2|3_0|3_1)\s/i);if(d?(qa.hasHTML5=!1,qa.html5Only=!0,qa.oMC&&(qa.oMC.style.display="none")):qa.useHTML5Audio&&(qa.html5&&qa.html5.canPlayType||(qa._wD("SoundManager: No HTML5 Audio() support detected."),qa.hasHTML5=!1),_a&&qa._wD(ua+"Note: Buggy HTML5 Audio in Safari on this OS X release, see https://bugs.webkit.org/show_bug.cgi?id=32159 - "+(ja?"will use flash fallback for MP3/MP4, if available":" would use flash fallback for MP3/MP4, but none detected."),1)),qa.useHTML5Audio&&qa.hasHTML5){_=!0;for(b in c)c.hasOwnProperty(b)&&c[b].required&&(qa.html5.canPlayType(c[b].type)?qa.preferFlash&&(qa.flash[b]||qa.flash[c[b].type])&&(a=!0):(_=!1,a=!0))}return qa.ignoreFlash&&(a=!1,_=!0),qa.html5Only=qa.hasHTML5&&qa.useHTML5Audio&&!a,!qa.html5Only},$=function(a){var b,c,d,e=0;if(a instanceof Array){for(b=0,c=a.length;c>b;b++)if(a[b]instanceof Object){if(qa.canPlayMIME(a[b].type)){e=b;break}}else if(qa.canPlayURL(a[b])){e=b;break}a[e].url&&(a[e]=a[e].url),d=a[e]}else d=a;return d},X=function(a){a._hasTimer||(a._hasTimer=!0,!$a&&qa.html5PollingInterval&&(null===Oa&&0===Na&&(Oa=setInterval(Z,qa.html5PollingInterval)),Na++))},Y=function(a){a._hasTimer&&(a._hasTimer=!1,!$a&&qa.html5PollingInterval&&Na--)},Z=function(){var a;if(null!==Oa&&!Na)return clearInterval(Oa),Oa=null,!1;for(a=qa.soundIDs.length-1;a>=0;a--)qa.sounds[qa.soundIDs[a]].isHTML5&&qa.sounds[qa.soundIDs[a]]._hasTimer&&qa.sounds[qa.soundIDs[a]]._onTimer()},I=function(c){c=c!==b?c:{},"function"==typeof qa.onerror&&qa.onerror.apply(a,[{type:c.type!==b?c.type:null}]),c.fatal!==b&&c.fatal&&qa.disable()},la=function(){if(!_a||!ka())return!1;var a,b,c=qa.audioFormats;for(b in c)if(c.hasOwnProperty(b)&&("mp3"===b||"mp4"===b)&&(qa._wD(ta+": Using flash fallback for "+b+" format"),qa.html5[b]=!1,c[b]&&c[b].related))for(a=c[b].related.length-1;a>=0;a--)qa.html5[c[b].related[a]]=!1},this._setSandboxType=function(a){var c=qa.sandbox;c.type=a,c.description=c.types[c.types[a]!==b?a:"unknown"],"localWithFile"===c.type?(c.noRemote=!0,c.noLocal=!1,n("secNote",2)):"localWithNetwork"===c.type?(c.noRemote=!1,c.noLocal=!0):"localTrusted"===c.type&&(c.noRemote=!1,c.noLocal=!1)},this._externalInterfaceOK=function(a){if(qa.swfLoaded)return!1;var b;return m("swf",!0),m("flashtojs",!0),qa.swfLoaded=!0,cb=!1,_a&&la(),a&&a.replace(/\+dev/i,"")===qa.versionNumber.replace(/\+dev/i,"")?void setTimeout(k,Wa?100:1):(b=ta+': Fatal: JavaScript file build "'+qa.versionNumber+'" does not match Flash SWF build "'+a+'" at '+qa.url+". Ensure both are up-to-date.",setTimeout(function(){throw new Error(b)},0),!1)},H=function(a,c){function d(){var a,b=[],c=[],d=" + ";a="SoundManager "+qa.version+(!qa.html5Only&&qa.useHTML5Audio?qa.hasHTML5?" + HTML5 audio":", no HTML5 audio support":""),qa.html5Only?qa.html5PollingInterval&&b.push("html5PollingInterval ("+qa.html5PollingInterval+"ms)"):(qa.preferFlash&&b.push("preferFlash"),qa.useHighPerformance&&b.push("useHighPerformance"),qa.flashPollingInterval&&b.push("flashPollingInterval ("+qa.flashPollingInterval+"ms)"),qa.html5PollingInterval&&b.push("html5PollingInterval ("+qa.html5PollingInterval+"ms)"),qa.wmode&&b.push("wmode ("+qa.wmode+")"),qa.debugFlash&&b.push("debugFlash"),qa.useFlashBlock&&b.push("flashBlock")),b.length&&(c=c.concat([b.join(d)])),qa._wD(a+(c.length?d+c.join(", "):""),1),na()}function e(a,b){return'<param name="'+a+'" value="'+b+'" />'}if(Ba&&Ca)return!1;if(qa.html5Only)return y(),d(),qa.oMC=h(qa.movieID),k(),Ba=!0,Ca=!0,!1;var f,g,i,j,l,m,n,o,p=c||qa.url,q=qa.altURL||p,r="JS/Flash audio component (SoundManager 2)",s=G(),t=Q(),u=null,v=ya.getElementsByTagName("html")[0];if(u=v&&v.dir&&v.dir.match(/rtl/i),a=a===b?qa.id:a,y(),qa.url=N(ib?p:q),c=qa.url,qa.wmode=!qa.wmode&&qa.useHighPerformance?"transparent":qa.wmode,null!==qa.wmode&&(wa.match(/msie 8/i)||!Wa&&!qa.useHighPerformance)&&navigator.platform.match(/win32|win64/i)&&(Pa.push(A.spcWmode),qa.wmode=null),f={name:a,id:a,src:c,quality:"high",allowScriptAccess:qa.allowScriptAccess,bgcolor:qa.bgColor,pluginspage:jb+"www.macromedia.com/go/getflashplayer",title:r,type:"application/x-shockwave-flash",wmode:qa.wmode,hasPriority:"true"},qa.debugFlash&&(f.FlashVars="debug=1"),qa.wmode||delete f.wmode,Wa)g=ya.createElement("div"),j=['<object id="'+a+'" data="'+c+'" type="'+f.type+'" title="'+f.title+'" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="'+jb+'download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0">',e("movie",c),e("AllowScriptAccess",qa.allowScriptAccess),e("quality",f.quality),qa.wmode?e("wmode",qa.wmode):"",e("bgcolor",qa.bgColor),e("hasPriority","true"),qa.debugFlash?e("FlashVars",f.FlashVars):"","</object>"].join("");else{g=ya.createElement("embed");for(i in f)f.hasOwnProperty(i)&&g.setAttribute(i,f[i])}if(K(),t=Q(),s=G())if(qa.oMC=h(qa.movieID)||ya.createElement("div"),qa.oMC.id)o=qa.oMC.className,qa.oMC.className=(o?o+" ":R.swfDefault)+(t?" "+t:""),qa.oMC.appendChild(g),Wa&&(l=qa.oMC.appendChild(ya.createElement("div")),l.className=R.swfBox,l.innerHTML=j),Ca=!0;else{if(qa.oMC.id=qa.movieID,qa.oMC.className=R.swfDefault+" "+t,m=null,l=null,qa.useFlashBlock||(qa.useHighPerformance?m={position:"fixed",width:"8px",height:"8px",bottom:"0px",left:"0px",overflow:"hidden"}:(m={position:"absolute",width:"6px",height:"6px",top:"-9999px",left:"-9999px"},u&&(m.left=Math.abs(parseInt(m.left,10))+"px"))),Xa&&(qa.oMC.style.zIndex=1e4),!qa.debugFlash)for(n in m)m.hasOwnProperty(n)&&(qa.oMC.style[n]=m[n]);try{Wa||qa.oMC.appendChild(g),s.appendChild(qa.oMC),Wa&&(l=qa.oMC.appendChild(ya.createElement("div")),l.className=R.swfBox,l.innerHTML=j),Ca=!0}catch(w){throw new Error(O("domError")+" \n"+w.toString())}}return Ba=!0,d(),!0},B=function(){return qa.html5Only?(H(),!1):sa?!1:qa.url?(sa=qa.getMovie(qa.id),sa||(Ja?(Wa?qa.oMC.innerHTML=Ka:qa.oMC.appendChild(Ja),Ja=null,Ba=!0):H(qa.id,qa.url),sa=qa.getMovie(qa.id)),"function"==typeof qa.oninitmovie&&setTimeout(qa.oninitmovie,1),oa(),!0):(n("noURL"),!1)},v=function(){setTimeout(w,1e3)},x=function(){a.setTimeout(function(){V(ua+"useFlashBlock is false, 100% HTML5 mode is possible. Rebooting with preferFlash: false..."),qa.setup({preferFlash:!1}).reboot(),qa.didFlashBlock=!0,qa.beginDelayedInit()},1)},w=function(){var b,c=!1;return qa.url?La?!1:(La=!0,ha.remove(a,"load",v),ja&&cb&&!bb?(n("waitFocus"),!1):(Da||(b=qa.getMoviePercent(),b>0&&100>b&&(c=!0)),void setTimeout(function(){return b=qa.getMoviePercent(),c?(La=!1,qa._wD(O("waitSWF")),a.setTimeout(v,1),!1):(Da||(qa._wD(ta+": No Flash response within expected time. Likely causes: "+(0===b?"SWF load failed, ":"")+"Flash blocked or JS-Flash security error."+(qa.debugFlash?" "+O("checkSWF"):""),2),!ib&&b&&(n("localFail",2),qa.debugFlash||n("tryDebug",2)),0===b&&qa._wD(O("swf404",qa.url),1),m("flashtojs",!1," (Check flash security or flash blockers)")),void(!Da&&db&&(null===b?qa.useFlashBlock||0===qa.flashLoadTimeout?(qa.useFlashBlock&&P(),n("waitForever")):!qa.useFlashBlock&&_?x():(n("waitForever"),t({type:"ontimeout",ignoreInit:!0,error:{type:"INIT_FLASHBLOCK"}})):0===qa.flashLoadTimeout?n("waitForever"):!qa.useFlashBlock&&_?x():M(!0))))},qa.flashLoadTimeout))):!1},z=function(){function b(){ha.remove(a,"focus",z)}return bb||!cb?(b(),!0):(db=!0,bb=!0,n("gotFocus"),La=!1,v(),b(),!0)},oa=function(){Pa.length&&(qa._wD("SoundManager 2: "+Pa.join(" "),1),Pa=[])},na=function(){oa();var a,b=[];if(qa.useHTML5Audio&&qa.hasHTML5){for(a in qa.audioFormats)qa.audioFormats.hasOwnProperty(a)&&b.push(a+" = "+qa.html5[a]+(!qa.html5[a]&&Qa&&qa.flash[a]?" (using flash)":qa.preferFlash&&qa.flash[a]&&Qa?" (preferring flash)":qa.html5[a]?"":" ("+(qa.audioFormats[a].required?"required, ":"")+"and no flash support)"));qa._wD("SoundManager 2 HTML5 support: "+b.join(", "),1)}},o=function(b){if(Da)return!1;if(qa.html5Only)return n("sm2Loaded",1),Da=!0,u(),m("onload",!0),!0;var c,d=qa.useFlashBlock&&qa.flashLoadTimeout&&!qa.getMoviePercent(),e=!0;return d||(Da=!0),c={type:!ja&&Qa?"NO_FLASH":"INIT_TIMEOUT"},qa._wD("SoundManager 2 "+(Ea?"failed to load":"loaded")+" ("+(Ea?"Flash security/load error":"OK")+") "+String.fromCharCode(Ea?10006:10003),Ea?2:1),Ea||b?(qa.useFlashBlock&&qa.oMC&&(qa.oMC.className=Q()+" "+(null===qa.getMoviePercent()?R.swfTimedout:R.swfError)),t({type:"ontimeout",error:c,ignoreInit:!0}),m("onload",!1),I(c),e=!1):m("onload",!0),Ea||(qa.waitForWindowLoad&&!Fa?(n("waitOnload"),ha.add(a,"load",u)):(qa.waitForWindowLoad&&Fa&&n("docLoaded"),u())),e},j=function(){var a,c=qa.setupOptions;for(a in c)c.hasOwnProperty(a)&&(qa[a]===b?qa[a]=c[a]:qa[a]!==c[a]&&(qa.setupOptions[a]=qa[a]))},k=function(){function b(){ha.remove(a,"load",qa.beginDelayedInit)}if(Da)return n("didInit"),!1;if(qa.html5Only)return Da||(b(),qa.enabled=!0,o()),!0;B();try{sa._externalInterfaceTest(!1),J(!0,qa.flashPollingInterval||(qa.useHighPerformance?10:50)),qa.debugMode||sa._disableDebug(),qa.enabled=!0,m("jstoflash",!0),qa.html5Only||ha.add(a,"unload",i)}catch(c){return qa._wD("js/flash exception: "+c.toString()),m("jstoflash",!1),I({type:"JS_TO_FLASH_EXCEPTION",fatal:!0}),M(!0),o(),!1}return o(),b(),!0},D=function(){return F?!1:(F=!0,j(),K(),function(){var a="sm2-usehtml5audio=",b="sm2-preferflash=",c=null,d=null,e=xa.toLowerCase();-1!==e.indexOf(a)&&(c="1"===e.charAt(e.indexOf(a)+a.length),ab&&console.log((c?"Enabling ":"Disabling ")+"useHTML5Audio via URL parameter"),qa.setup({useHTML5Audio:c})),-1!==e.indexOf(b)&&(d="1"===e.charAt(e.indexOf(b)+b.length),ab&&console.log((d?"Enabling ":"Disabling ")+"preferFlash via URL parameter"),qa.setup({preferFlash:d}))}(),!ja&&qa.hasHTML5&&(qa._wD("SoundManager 2: No Flash detected"+(qa.useHTML5Audio?". Trying HTML5-only mode.":", enabling HTML5."),1),qa.setup({useHTML5Audio:!0,preferFlash:!1})),ga(),!ja&&Qa&&(Pa.push(A.needFlash),qa.setup({flashLoadTimeout:1})),ya.removeEventListener&&ya.removeEventListener("DOMContentLoaded",D,!1),B(),!0)},fa=function(){return"complete"===ya.readyState&&(D(),ya.detachEvent("onreadystatechange",fa)),!0},E=function(){Fa=!0,D(),ha.remove(a,"load",E)},C=function(){$a&&((!qa.setupOptions.useHTML5Audio||qa.setupOptions.preferFlash)&&Pa.push(A.mobileUA),qa.setupOptions.useHTML5Audio=!0,qa.setupOptions.preferFlash=!1,(Ua||Va&&!wa.match(/android\s2\.3/i))&&(Pa.push(A.globalHTML5),Ua&&(qa.ignoreFlash=!0),Sa=!0))},C(),ka(),ha.add(a,"focus",z),ha.add(a,"load",v),ha.add(a,"load",E),ya.addEventListener?ya.addEventListener("DOMContentLoaded",D,!1):ya.attachEvent?ya.attachEvent("onreadystatechange",fa):(m("onload",!1),I({type:"NO_DOM2_EVENTS",fatal:!0}))}if(!a||!a.document)throw new Error("SoundManager requires a browser with window and document objects.");var d=null;void 0!==a.SM2_DEFER&&SM2_DEFER||(d=new c),"object"==typeof module&&module&&"object"==typeof module.exports?(a.soundManager=d,module.exports.SoundManager=c,module.exports.soundManager=d):"function"==typeof define&&define.amd?define("SoundManager",[],function(){return{SoundManager:c,soundManager:d}}):(a.SoundManager=c,a.soundManager=d)}(window),window.JST["apps/album/show/tpl/album_with_songs.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="album album--with-songs">\n <div class="region-album-side">\n <div class="region-album-meta"></div>\n </div>\n <div class="region-album-content">\n <div class="region-album-songs"></div>\n </div>\n</div>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/album/show/tpl/details_meta.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="region-details-top">\n <div class="region-details-title">\n <h2><span class="title">')),d(this.label),d(b('</span> <span class="sub"><a href="#music/albums?year=')),d(this.year),d(b('">')),d(this.year),d(b("</a></span></h2>\n </div>\n ")),this.rating&&(d(b('\n <div class="region-details-rating">\n ')),d(this.rating),d(b(" <i></i>\n </div>\n "))),d(b('\n</div>\n\n<div class="region-details-meta-below">\n\n <ul class="meta">\n ')),this.artist&&(d(b("\n <li><label>")),d(tr("artist")),d(b(':</label> <span><a href="#music/artist/')),d(this.artistid),d(b('">')),d(this.artist),d(b("</a></span></li>\n "))),d(b("\n ")),this.genre.length>0&&(d(b("\n <li><label>")),d(t.ngettext("genre","genres",this.genre.length)),d(b(":</label> <span>")),d(b(helpers.url.filterLinks("music/albums","genre",this.genre))),d(b("</span></li>\n "))),d(b("\n ")),this.style.length&&(d(b("\n <li><label>")),d(t.ngettext("style","styles",this.style.length)),d(b(":</label> <span>")),d(b(helpers.url.filterLinks("music/albums","style",this.style))),d(b("</span></li>\n "))),d(b("\n ")),this.albumlabel&&(d(b("\n <li><label>")),d(tr("label")),d(b(":</label> <span>")),d(b(helpers.url.filterLinks("music/albums","albumlabel",[this.albumlabel]))),d(b("</span></li>\n "))),d(b('\n </ul>\n\n <div class="description">')),d(this.description),d(b('</div>\n\n <ul class="inline-links">\n <li class="btn-flat-play play">')),d(tr("Play")),d(b('</li>\n <li class="btn-flat-add add">')),d(tr("Queue")),d(b('</li>\n <li class="btn-flat-stream localplay">')),d(tr("Stream")),d(b('</li>\n <li class="more-actions dropdown">\n <span class="btn-flat-more" data-toggle="dropdown" aria-expanded="true">')),d(tr("more")),d(b('</span>\n <ul class="dropdown-menu pull-right">\n <li class="localadd">')),d(tr("Add to playlist")),d(b('</li>\n <li class="divider"></li>\n <li class="dropdown-submenu internal-search">')),d(tr("Chorus Search")),d(b('\n <ul class="dropdown-menu">\n ')),d(b(helpers.entities.getAddonSearchMenuItems(this.label))),d(b('\n </ul>\n </li>\n <li class="dropdown-submenu external-search">')),d(tr("External Search")),d(b('\n <ul class="dropdown-menu">\n <li data-type="google" data-query="')),d(this.artist),d(b(" ")),d(this.label),d(b('">Google</li>\n <li data-type="soundcloud" data-query="')),d(this.artist),d(b('">SoundCloud</li>\n </ul>\n </li>\n <li class="youtube-search" data-query="')),d(this.artist),d(b(" ")),d(this.label),d(b('">')),d(tr("YouTube Search")),d(b('</li>\n <li class="divider"></li>\n <li class="edit">')),d(tr("Edit")),d(b("</li>\n </ul>\n </li>\n </ul>\n\n</div>\n"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/artist/show/tpl/details_meta.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="region-details-top">\n <div class="region-details-title">\n <h2>')),d(this.label),d(b('</h2>\n </div>\n</div>\n\n<div class="region-details-meta-below">\n\n <ul class="meta">\n ')),this.genre.length>0&&(d(b("\n <li><label>")),d(t.ngettext("genre","genres",this.genre.length)),d(b(":</label> <span>")),d(b(helpers.url.filterLinks("music/artists","genre",this.genre))),d(b("</span></li>\n "))),d(b("\n ")),this.style.length&&(d(b("\n <li><label>")),d(t.ngettext("style","styles",this.style.length)),d(b(":</label> <span>")),d(b(helpers.url.filterLinks("music/artists","style",this.style))),d(b("</span></li>\n "))),d(b("\n ")),this.formed&&(d(b("\n <li><label>")),d(tr("formed")),d(b(":</label> <span>")),d(this.formed),d(b("</span></li>\n "))),d(b("\n ")),this.yearsactive&&this.yearsactive.length>0&&(d(b("\n <li><label>")),d(tr("years active")),d(b(":</label> <span>")),d(this.yearsactive),d(b("</span></li>\n "))),d(b("\n ")),this.born&&(d(b("\n <li><label>")),d(tr("born")),d(b(":</label> <span>")),d(this.born),d(b("</span></li>\n "))),d(b("\n ")),this.died&&(d(b("\n <li><label>")),d(tr("died")),d(b(":</label> <span>")),d(this.died),d(b("</span></li>\n "))),d(b("\n ")),this.disbanded&&(d(b("\n <li><label>")),d(tr("disbanded")),d(b(":</label> <span>")),d(this.disbanded),d(b("</span></li>\n "))),d(b('\n </ul>\n\n <div class="description">')),d(this.description),d(b('</div>\n\n <ul class="inline-links">\n <li class="btn-flat-play play">')),d(tr("Play")),d(b('</li>\n <li class="btn-flat-add add">')),d(tr("Queue")),d(b('</li>\n <li class="btn-flat-stream localplay">')),d(tr("Stream")),d(b('</li>\n <li class="more-actions dropdown">\n <span class="btn-flat-more" data-toggle="dropdown" aria-expanded="true">')),d(tr("more")),d(b('</span>\n <ul class="dropdown-menu pull-right">\n <li class="localadd">')),d(tr("Add to playlist")),d(b('</li>\n <li class="divider"></li>\n <li class="dropdown-submenu internal-search">')),d(tr("Chorus Search")),d(b('\n <ul class="dropdown-menu">\n ')),d(b(helpers.entities.getAddonSearchMenuItems(this.label))),d(b('\n </ul>\n </li>\n <li class="dropdown-submenu external-search">')),d(tr("External Search")),d(b('\n <ul class="dropdown-menu">\n <li data-type="google" data-query="')),d(this.label),d(b('">Google</li>\n <li data-type="soundcloud" data-query="')),d(this.label),d(b('">SoundCloud</li>\n </ul>\n </li>\n <li class="youtube-search" data-query="')),d(this.label),d(b('">')),d(tr("YouTube Search")),d(b('</li>\n <li class="divider"></li>\n <li class="edit">')),d(tr("Edit")),d(b("</li>\n </ul>\n </li>\n </ul>\n\n</div>\n"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/browser/list/tpl/back_button.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<i class="mdi thumb"></i><div class="title">')),d(t.gettext("Back")),d(b("</div>"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/browser/list/tpl/file.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="thumb" style="background-image: url(\'')),d(this.thumbnail),d(b('\')"><div class="mdi play"></div></div>\n<div class="title" title="')),d(helpers.global.stripTags(this.label)),d(b('">')),d(b(this.label)),d(b('</div>\n<ul class="actions">\n <li class="menu dropdown">\n <i data-toggle="dropdown" class="mdi"></i>\n <ul class="dropdown-menu pull-right"></ul>\n </li>\n</ul>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/browser/list/tpl/folder_layout.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="folder-layout">\n <div class="loading-bar"><div class="inner"><div class="loader-small-inline"></div> <span>')),d(tr("Loading folder...")),d(b('</span></div></div>\n <div class="path"></div>\n <ul class="actions">\n <li class="dropdown sort-wrapper">\n <i class="sort-toggle" data-toggle="dropdown" title="')),d(tr("Sort")),d(b('"></i>\n <ul class="sorts dropdown-menu pull-right">\n <li data-sort="none">')),d(tr("default")),d(b('<i></i></li>\n <li data-sort="label">')),d(tr("title")),d(b('<i></i></li>\n <li data-sort="dateadded">')),d(tr("date added")),d(b('<i></i></li>\n <li data-sort="random">')),d(tr("random")),d(b('<i></i></li>\n </ul>\n </li>\n <li class="dropdown context-wrapper">\n <i class="context-toggle" data-toggle="dropdown" title="')),d(tr("Actions")),d(b('"></i>\n <ul class="dropdown-menu pull-right">\n <li class="play">')),d(tr("play files")),d(b('<i></i></li>\n <li class="queue">')),d(tr("queue files")),d(b('<i></i></li>\n </ul>\n </li>\n </ul>\n\n\n <div class="folder-container">\n <div class="files">\n </div>\n <div class="folders-pane">\n <div class="back"></div>\n <div class="folders">\n <div class="intro">\n <h3><span class="mdi-navigation-arrow-back text-dim"></span> ')),d(tr("Browse files and add-ons")),d(b("</h3>\n <p>")),d(tr("This is where you can browse all Kodi content, not just what is in the library. Browse by source or add-on.")),d(b("</p>\n </div>\n </div>\n </div>\n </div>\n</div>"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/browser/list/tpl/path.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="title">')),d(this.label),d(b("</div>"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/browser/list/tpl/source.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="source source-')),d(this.media),d(b('">\n ')),d(this.label),d(b("\n</div>"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/browser/list/tpl/source_set.jst"]=function(a){ -var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b("<h3>")),d(this.label),d(b('</h3>\n<ul class="sources"></ul>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/cast/list/tpl/cast.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<a href="#')),d(this.origin),d(b("?cast=")),d(this.name),d(b('" title="')),d(this.name),d(b(" (")),d(this.role),d(b(')">\n <div class="thumb">\n <img src="')),d(this.thumbnail),d(b('" />\n </div>\n <div class="meta">\n <strong>')),d(this.name),d(b('</strong>\n <span title="')),d(this.role),d(b('">')),d(this.role),d(b('</span>\n </div>\n</a>\n<ul class="actions">\n <li class="imdb" title="IMDb search ')),d(this.name),d(b('"></li>\n <li class="google" title="Google search ')),d(this.name),d(b('"></li>\n</ul>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/category/list/tpl/item.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<a href="#')),d(this.url),d(b('">\n <span>')),d(this.title),d(b("</span>\n</a>"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/epg/list/tpl/channel.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b("<h3>")),d(this.channel),d(b('</h3>\n<ul class="items">\n <li class="play">')),d(tr("Play")),d(b('</li>\n <li class="record">')),d(tr("Record")),d(b("</li>\n</ul>"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/epg/list/tpl/programme.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="title">\n <strong>')),d(this.label),d(b('</strong>\n</div>\n<div class="date">\n ')),d(this.start.toString("h:mmtt").toLowerCase()),d(b(" - ")),d(this.end.toString("h:mmtt").toLowerCase()),d(b(" (")),d(this.runtime),d(b("min)<br />\n ")),d(this.start.toString("dddd, dS MMM")),d(b('\n</div>\n<div class="plot">')),d(this.plot),d(b('</div>\n<div class="entity-progress">\n <div class="current-progress" style="width: ')),d(this.progresspercentage),d(b('%" title="')),d(Math.round(this.progresspercentage)),d(b("% ")),d(tr("complete")),d(b('"></div>\n</div>\n<ul class="actions">\n ')),this.isactive?(d(b('\n <li class="play" title="')),d(tr("Play")),d(b('"></li>\n <li class="record" title="')),d(tr("Record")),d(b('"></li>\n '))):(d(b("\n ")),this.wasactive||(d(b('\n <li class="toggle-timer" title="')),d(tr("Toggle timer")),d(b('"></li>\n '))),d(b("\n "))),d(b("\n</ul>"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/external/youtube/tpl/youtube.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<img src="')),d(this.thumbnail),d(b('" class="thumb" />\n<h3>')),d(this.title),d(b("</h3>\n")),d(this.addonEnabled?b('\n <span class="play flat-btn action">Play in Kodi</span>\n <span class="localplay flat-btn action">Play in browser</span>\n'):b('\n <span class="play flat-btn action">Play in browser</span>\n')),d(b("\n"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/filter/show/tpl/filter_options.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="options-search-wrapper">\n <input class="options-search" value="" />\n</div>\n<div class="deselect-all">')),d(t.gettext("Deselect all")),d(b('</div>\n<ul class="selection-list"></ul>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/filter/show/tpl/filters_bar.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<span class="filters-active-all">')),d(this.filters),d(b('</span><i class="remove"></i>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/filter/show/tpl/filters_ui.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="filters-container">\n\n <div class="filters-current filter-pane">\n <div class="nav-section"></div>\n\n <h3 class="open-filters">')),d(t.gettext("Filters")),d(b('<i></i></h3>\n <div class="filters-active"></div>\n\n <h3>')),d(t.gettext("Sort")),d(b('</h3>\n <div class="list sort-options"></div>\n </div>\n\n <div class="filters-page filter-pane">\n <h3 class="close-filters">')),d(t.gettext("Select a filter")),d(b('</h3>\n <div class="list filters-list"></div>\n </div>\n\n <div class="filters-options filter-pane">\n <h3 class="close-options">')),d(t.gettext("Select an option")),d(b('</h3>\n <div class="list filter-options-list"></div>\n </div>\n\n</div>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/filter/show/tpl/list_item.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b(this.title))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/help/overview/tpl/overview.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b("<h1>")),d(tr("About Chorus")),d(b("</h1>\n<h2>")),d(tr("Status report")),d(b('</h2>\n<div class="help--overview--report">\n <ul>\n <li class="report-chorus-version"><strong>Chorus ')),d(tr("version")),d(b('</strong><span></span></li>\n <li class="report-kodi-version"><strong>Kodi ')),d(tr("version")),d(b('</strong><span></span></li>\n <li class="report-websockets"><strong>')),d(tr("Remote control")),d(b('</strong><span></span></li>\n <li class="report-local-audio"><strong>')),d(tr("Local audio")),d(b('</strong><span></span></li>\n </ul>\n</div>\n<div class="help--overview--header"></div>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/input/remote/tpl/remote_control.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div id="remote-background" class="close-remote"></div>\n<div class="remote kodi-remote">\n <div class="toggle-visibility"></div>\n <div class="playing-area">\n\n </div>\n <div class="main-controls">\n <div class="direction">\n <div class="pad">\n <div class="ibut mdi-hardware-keyboard-arrow-left left input-button" data-type="Left"></div>\n <div class="ibut mdi-hardware-keyboard-arrow-up up input-button" data-type="Up"></div>\n <div class="ibut mdi-hardware-keyboard-arrow-down down input-button" data-type="Down"></div>\n <div class="ibut mdi-hardware-keyboard-arrow-right right input-button" data-type="Right"></div>\n <div class="ibut mdi-image-brightness-1 ok input-button" data-type="Select"></div>\n </div>\n </div>\n <div class="buttons">\n <div class="ibut mdi-action-settings-power power-button"></div>\n <div class="ibut mdi-navigation-more-vert input-button" data-type="ContextMenu"></div>\n <div class="ibut mdi-action-info info-button" data-type="Info"></div>\n </div>\n </div>\n <div class="secondary-controls">\n <div class="ibut mdi-hardware-keyboard-return input-button" data-type="Back"></div>\n <div class="ibut mdi-av-stop player-button" data-type="Stop"></div>\n <div class="ibut mdi-maps-store-mall-directory input-button" data-type="Home"></div>\n </div>\n\n</div>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/input/remote/tpl/system.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){var a,c,e,f;for(d(b('<ul class="system-menu__options options">\n ')),f=this.actions,c=0,e=f.length;e>c;c++)a=f[c],d(b('\n <li data-action="')),d(a.id),d(b('">')),d(a.title),d(b("</li>\n "));d(b("\n</ul>"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/lab/apiBrowser/tpl/api_browser_landing.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="api-browser--landing page">\n <h2>')),d(t.gettext("Kodi API browser")),d(b('</h2>\n <h4><a href="#lab">')),d(t.gettext("Chorus lab")),d(b('</a></h4>\n <div class="api-browser--content">\n <p>')),d(t.gettext("This is a tool to test out the api. Select a method then execute it with parameters.")),d(b('</p>\n <br />\n <div class="alert alert-dismissable alert-warning">\n <button type="button" class="close" data-dismiss="alert">×</button>\n <h4>')),d(t.gettext("Warning")),d(b("</h4>\n <p>")),d(t.gettext("You could potentially damage your system with this and there are no sanity checks. Use at own risk.")),d(b("<br /></p>\n </div>\n </div>\n</div>"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/lab/apiBrowser/tpl/api_method_item.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="api-method--item">\n <h4 class="method">')),d(this.method),d(b('</h4>\n <p class="description">')),d(this.description),d(b("</p>\n</div>\n\n"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/lab/apiBrowser/tpl/api_method_list.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="api-methods--list">\n <p class="search-box"><input type="text" id="api-search" class="api-methods--search" /></p>\n <ul class="items"></ul>\n</div>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/lab/apiBrowser/tpl/api_method_page.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('\n<div class="api-method--info page">\n <h2 class="method"><a href="http://kodi.wiki/view/JSON-RPC_API/v6#')),d(this.method),d(b('" target="_blank">')),d(this.method),d(b('</a></h2>\n <p class="description">')),d(this.description),d(b("</p>\n\n</div>\n\n")),"method"===this.type&&(d(b('\n <div class="api-method--execute">\n <h3>Execute <strong>')),d(this.method),d(b('</strong> with these params:</h3>\n <textarea class="api-method--params" placeholder=\'Eg. ["arg", "foo", true]\'></textarea>\n <p class="description">Parameters get parsed by\n <a href="https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse" target="_blank">JSON.parse</a>.\n Check the console for response objects, you will get an \'unexpected token\' error if parsing failed.\n Params should be an array \'[]\' matching below \'Method params\'. Only use double quotes for strings/keys.\n </p>\n <p class="description">\n Pass params as array Eg. [true] or [255, ["born", "formed", "thumbnail"]] or [] or [255]. Brackets required.<br />\n Pass params as object Eg. {songid: 255} or {songid: 255, fields: ["born", "formed", "thumbnail"]}. Braces required.<br />\n </p>\n <p><button class="btn btn-primary" id="send-command">Send Command</button></p>\n\n </div>\n'))),d(b('\n\n<div class="api-method--result" id="api-result"></div>\n\n<h3>')),"method"===this.type&&d(b("Method ")),d(b('Params</h3>\n<div class="api-method--params"></div>\n\n')),"method"===this.type&&d(b('\n <hr />\n <h3>Method Returns</h3>\n <div class="api-method--return"></div>\n'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/lab/iconBrowser/tpl/icon_browser_page.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<h3>Material Icons</h3>\n<ul id="icons-material"></ul>\n\n<h3>Custom Icons</h3>\n<ul id="icons-custom"></ul>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/lab/lab/tpl/lab_item.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<a class="lab-item" href="#')),d(this.path),d(b('">\n <h4>')),d(this.title),d(b("</h4>\n <p>")),d(this.description),d(b("</p>\n</a>"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/landing/show/tpl/landing_page.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<a id="landing-hero"></a>\n<div class="landing-sections">\n <div id="landing-section-1"></div>\n <div id="landing-section-2"></div>\n <div id="landing-section-3"></div>\n <div id="landing-section-4"></div>\n <div id="landing-section-5"></div>\n <div id="landing-section-6"></div>\n</div>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/loading/show/tpl/loading_page.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div id="loading-page">\n <div class="spinner-double-section-far"></div>\n <h2>')),d(t.gettext("Just a sec...")),d(b("</h2>\n</div>\n\n"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/localPlaylist/list/tpl/playlist.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<span class="item">')),d(b(this.title)),d(b("</span>"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/localPlaylist/list/tpl/playlist_layout.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="local-playlist-header">\n <h2></h2>\n <div class="dropdown">\n <i data-toggle="dropdown"></i>\n <ul class="dropdown-menu">\n <li class="play">')),d(tr("Play in Kodi")),d(b('</li>\n <li class="localplay">')),d(tr("Play in browser")),d(b('</li>\n <li class="export">')),d(tr("Export list")),d(b('</li>\n <div class="divider"></div>\n <li class="rename">')),d(tr("Rename playlist")),d(b('</li>\n <li class="clear">')),d(tr("Clear playlist")),d(b('</li>\n <li class="delete">')),d(tr("Delete playlist")),d(b('</li>\n </ul>\n </div>\n</div>\n<div class="item-container">\n <div class="empty-content">')),d(t.gettext("Empty playlist, you should probably add something to it?")),d(b("</div>\n</div>"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/localPlaylist/list/tpl/playlist_list.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<h3></h3>\n<ul class="lists options"></ul>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/localPlaylist/list/tpl/playlist_sidebar_layout.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="current-lists"></div>\n<div class="new-list">')),d(tr("New playlist")),d(b("</div>"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/movie/show/tpl/content.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="section-content">\n <h2>')),d(t.gettext("Synopsis")),d(b("</h2>\n ")),this.mediaTrailer&&"youtube"===this.mediaTrailer.source&&(d(b('\n <div class="trailer ')),d(this.mediaTrailer.source),d(b('">\n <img src="')),d(b(this.mediaTrailer.img)),d(b('" />\n </div>\n '))),d(b("\n <p>")),d(this.plot),d(b('</p>\n <ul class="inline-links">\n <li>')),d(b(helpers.url.imdbUrl(this.imdbnumber,"View on IMDb"))),d(b("</li>\n </ul>\n</div>\n\n")),this.cast.length>0&&(d(b('\n <div class="section-content">\n <h2>')),d(t.gettext("Full cast")),d(b('</h2>\n <div class="region-cast"></div>\n </div>\n'))),d(b('\n\n<div class="region-more-1"></div>\n<div class="region-more-2"></div>\n<div class="region-more-3"></div>\n<div class="region-more-4"></div>\n<div class="region-more-5"></div>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/movie/show/tpl/details_meta.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){var a,c,e,f;if(d(b('<div class="region-details-top">\n <div class="region-details-title">\n <h2><span class="title">')),d(this.label),d(b('</span> <span class="sub"><a href="#movies?year=')),d(this.year),d(b('">')),d(this.year),d(b('</a></span></h2>\n </div>\n <div class="region-details-rating">\n ')),d(this.rating),d(b(' <i></i>\n </div>\n</div>\n\n<div class="region-details-meta-below">\n\n <div class="region-details-subtext">\n <div class="runtime">\n ')),d(helpers.global.formatTime(helpers.global.secToTime(this.runtime))),d(b('\n </div>\n </div>\n\n <div class="tagline">')),d(this.plotoutline),d(b('</div>\n\n <ul class="meta">\n ')),this.genre.length>0&&(d(b("\n <li><label>")),d(t.gettext("genre")),d(b(":</label> <span>")),d(b(helpers.url.filterLinks("tvshows","genre",this.genre))),d(b("</span></li>\n "))),d(b("\n ")),this.director.length>0&&(d(b("\n <li><label>")),d(t.ngettext("Director","Directors",this.director.length)),d(b(":</label> <span>")),d(b(helpers.url.filterLinks("movies","director",this.director))),d(b("</span></li>\n "))),d(b("\n ")),this.writer.length>0&&(d(b("\n <li><label>")),d(t.ngettext("Writer","Writers",this.writer.length)),d(b(":</label> <span>")),d(b(helpers.url.filterLinks("movies","writer",this.writer))),d(b("</span></li>\n "))),d(b("\n ")),this.cast.length>0&&(d(b("\n <li><label>")),d(t.gettext("Cast")),d(b(":</label> <span>")),d(b(helpers.url.filterLinks("movies","cast",_.pluck(this.cast,"name")))),d(b("</span></li>\n "))),d(b("\n ")),this.mpaa&&(d(b("\n <li><label>")),d(t.gettext("rated")),d(b(":</label> <span>")),d(b(helpers.url.filterLinks("movies","mpaa",[this.mpaa]))),d(b("</span></li>\n "))),d(b('\n </ul>\n\n <ul class="streams">\n ')),this.streamdetails.video.length>0&&(d(b("\n <li><label>")),d(t.gettext("Video")),d(b(":</label> <span>")),d(_.pluck(this.streamdetails.video,"label").join(", ")),d(b("</span></li>\n "))),d(b("\n ")),this.streamdetails.audio.length>0&&(d(b("\n <li><label>")),d(t.gettext("Audio")),d(b(":</label> <span>")),d(_.pluck(this.streamdetails.audio,"label").join(", ")),d(b("</span></li>\n "))),d(b("\n ")),this.streamdetails.subtitle.length>0&&""!==this.streamdetails.subtitle[0].label){for(d(b("\n <li><label>")),d(t.ngettext("Subtitle","Subtitles",this.streamdetails.subtitle.length)),d(b(':</label>\n <span class="dropdown"><span data-toggle="dropdown">')),d(_.pluck(this.streamdetails.subtitle,"label").join(", ")),d(b('</span>\n <ul class="dropdown-menu">\n ')),e=this.streamdetails.subtitle,a=0,c=e.length;c>a;a++)f=e[a],d(b("\n <li>")),d(f.label),d(b("</li>\n "));d(b("\n </ul>\n </span>\n </li>\n "))}d(b('\n </ul>\n\n <ul class="inline-links">\n <li class="btn-flat-play play">')),d(t.gettext("Play")),d(b('</li>\n <li class="btn-flat-add add">')),d(tr("Queue")),d(b('</li>\n <li class="btn-flat-stream stream">')),d(t.gettext("Stream")),d(b('</li>\n <li class="btn-flat-watched watched">\n ')),d(t.gettext("set")),d(b(' <span class="action-watched">')),d(t.gettext("watched")),d(b('</span><span class="action-unwatched">')),d(t.gettext("unwatched")),d(b('</span>\n </li>\n <li class="more-actions dropdown">\n <span class="btn-flat-more" data-toggle="dropdown" aria-expanded="true">')),d(tr("more")),d(b('</span>\n <ul class="dropdown-menu pull-right">\n <li class="download">')),d(tr("Download")),d(b('</li>\n <li class="divider"></li>\n <li class="dropdown-submenu internal-search">')),d(tr("Chorus Search")),d(b('\n <ul class="dropdown-menu">\n ')),d(b(helpers.entities.getAddonSearchMenuItems(this.label))),d(b('\n </ul>\n </li>\n <li class="dropdown-submenu external-search">')),d(tr("External Search")),d(b('\n <ul class="dropdown-menu">\n <li data-type="google" data-query="')),d(this.label),d(b('">Google</li>\n <li data-type="imdb" data-query="')),d(this.label),d(b('">IMDb</li>\n <li data-type="tmdb" data-query="')),d(this.label),d(b('">TVDb</li>\n </ul>\n </li>\n <li class="youtube-search" data-query="')),d(this.label),d(b('">')),d(tr("YouTube Search")),d(b('</li>\n <li class="divider"></li>\n <li class="refresh">')),d(tr("Refresh")),d(b('</li>\n <li class="edit">')),d(tr("Edit")),d(b("</li>\n </ul>\n </li>\n </ul>\n</div>\n"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/movie/show/tpl/set.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="section-content">\n <div class="set-collection">\n <h2 class="set-name"></h2>\n <div class="collection-items"></div>\n </div>\n</div>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/musicvideo/show/tpl/details_meta.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="region-details-top">\n <div class="region-details-title">\n <h2><span class="title">')),d(this.label),d(b("</span></h2>\n </div>\n ")),this.rating&&(d(b('\n <div class="region-details-rating">\n ')),d(this.rating),d(b(" <i></i>\n </div>\n "))),d(b('\n</div>\n\n<div class="region-details-meta-below">\n\n <ul class="meta">\n ')),this.artist&&(d(b("\n <li><label>")),d(tr("artist")),d(b(":</label> <span>")),d(b(helpers.url.filterLinks("music/videos","artist",[this.artist]))),d(b("</span></li>\n "))),d(b("\n ")),this.album&&(d(b("\n <li><label>")),d(tr("album")),d(b(':</label> <span><a href="#music/videos?album=')),d(this.album),d(b('">')),d(this.album),d(b("</a></span></li>\n "))),d(b("\n ")),this.genre.length>0&&(d(b("\n <li><label>")),d(t.ngettext("genre","genres",this.genre.length)),d(b(":</label> <span>")),d(b(helpers.url.filterLinks("music/videos","genre",this.genre))),d(b("</span></li>\n "))),d(b("\n ")),this.director.length>0&&(d(b("\n <li><label>")),d(t.ngettext("Director","Directors",this.director.length)),d(b(":</label> <span>")),d(b(helpers.url.filterLinks("music/videos","director",this.director))),d(b("</span></li>\n "))),d(b("\n ")),this.studio.length>0&&(d(b("\n <li><label>")), -d(t.ngettext("Studio","Studios",this.studio.length)),d(b(":</label> <span>")),d(b(helpers.url.filterLinks("music/videos","studio",this.studio))),d(b("</span></li>\n "))),d(b('\n </ul>\n\n <div class="description">')),d(this.plot),d(b('</div>\n\n <ul class="inline-links">\n <li class="btn-flat-play play">')),d(tr("Play")),d(b('</li>\n <li class="btn-flat-add add">')),d(tr("Queue")),d(b('</li>\n <li class="btn-flat-stream localplay">')),d(tr("Stream")),d(b('</li>\n <li class="more-actions dropdown">\n <span class="btn-flat-more" data-toggle="dropdown" aria-expanded="true">')),d(tr("more")),d(b('</span>\n <ul class="dropdown-menu pull-right">\n <li class="download">')),d(tr("Download")),d(b('</li>\n <li class="divider"></li>\n <li class="dropdown-submenu internal-search">')),d(tr("Chorus Search")),d(b('\n <ul class="dropdown-menu">\n ')),d(b(helpers.entities.getAddonSearchMenuItems(this.title))),d(b('\n </ul>\n </li>\n <li class="dropdown-submenu external-search">')),d(tr("External Search")),d(b('\n <ul class="dropdown-menu">\n <li data-type="google" data-query="')),d(this.title),d(b(" ")),d(this.artist),d(b('">Google</li>\n </ul>\n </li>\n <li class="youtube-search" data-query="')),d(this.title),d(b(" ")),d(this.artist),d(b('">')),d(tr("YouTube Search")),d(b('</li>\n <li class="divider"></li>\n <li class="edit">')),d(tr("Edit")),d(b("</li>\n </ul>\n </li>\n </ul>\n\n</div>\n"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/navMain/show/tpl/navMain.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){var a,c,e,f,g,h,i,j;for(d(b('<div id="nav-header"></div>\n<nav>\n <ul>\n ')),i=this.items,c=0,g=i.length;g>c;c++)if(e=i[c],"undefined"!==e.path&&0===e.parent){if(d(b('\n <li class="')),d(e["class"]),d(b('">\n <a href="#')),d(e.path),d(b('">\n <i class="')),d(e.icon),d(b('"></i>\n <span>')),d(e.title),d(b("</span>\n </a>\n\n ")),0!==e.children.length){for(d(b("\n <ul>\n ")),j=e.children,f=0,h=j.length;h>f;f++)a=j[f],"undefined"!==a.path&&(d(b('\n <li><a href="#')),d(a.path),d(b('">')),d(a.title),d(b("</a></li>\n ")));d(b("\n </ul>\n "))}d(b("\n </li>\n "))}d(b("\n </ul>\n</nav>"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/navMain/show/tpl/nav_item.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b(this.link))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/navMain/show/tpl/nav_sub.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b("<h3>")),d(this.title),d(b('</h3>\n<ul class="items"></ul>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/player/show/tpl/player.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="player">\n\n <div class="controls-primary">\n <div class="controls-primary-buttons">\n <div class="control control-prev"></div>\n <div class="control control-play"></div>\n <div class="control control-next"></div>\n </div>\n </div>\n\n <div class="controls-secondary">\n <div class="volume slider-bar"></div>\n <div class="controls-secondary-buttons">\n <div class="control control-mute"></div>\n <div class="control control-repeat"></div>\n <div class="control control-shuffle"></div>\n <div class="control control-menu"></div>\n </div>\n </div>\n\n <div class="now-playing">\n <div class="playing-thumb thumb">\n <div class="mdi remote-toggle"></div>\n </div>\n <div class="playing-info">\n <div class="playing-progress slider-bar"></div>\n <div class="playing-time">\n <div class="playing-time-current">0</div>\n <div class="playing-time-duration">0:00</div>\n </div>\n <div class="playing-meta">\n <div class="playing-title">')),d(t.gettext("Nothing playing")),d(b('</div>\n <div class="playing-subtitle"></div>\n </div>\n </div>\n </div>\n\n</div>\n'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/playlist/list/tpl/playlist_bar.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="playlist-header">\n <ul class="player-toggle">\n <li class="kodi">')),d(t.gettext("Kodi")),d(b('</li>\n <li class="local">')),d(t.gettext("Local")),d(b('</li>\n </ul>\n <div class="playlist-menu dropdown">\n <i data-toggle="dropdown" class="menu-toggle"></i>\n <ul class="dropdown-menu pull-right">\n <li class="dropdown-header">')),d(t.gettext("Current playlist")),d(b('</li>\n <li><a href="#" class="clear-playlist">')),d(t.gettext("Clear playlist")),d(b('</a></li>\n <li><a href="#" class="refresh-playlist">')),d(t.gettext("Refresh playlist")),d(b('</a></li>\n <li class="dropdown-header">')),d(t.gettext("Kodi")),d(b('</li>\n <li><a href="#" class="party-mode">')),d(t.gettext("Party mode")),d(b(' <i class="mdi-navigation-check"></i></a></li>\n <li><a href="#" class="save-playlist">')),d(t.gettext("Save Kodi playlist")),d(b('</a></li>\n </li>\n </ul>\n </div>\n</div>\n<div class="playlists-wrapper">\n <div class="kodi-playlists">\n <ul class="media-toggle">\n <li class="audio">')),d(t.gettext("Audio")),d(b('</li>\n <li class="video">')),d(t.gettext("Video")),d(b('</li>\n </ul>\n <div class="kodi-playlist"></div>\n </div>\n <div class="local-playlists">\n <div class="local-playlist"></div>\n </div>\n</div>\n'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/playlist/list/tpl/playlist_item.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="item-inner item-')),d(this.type),d(b('">\n <div class="artwork">\n <div class="thumb" title="')),d(this.label),d(b('" style="background-image: url(\'')),d(this.thumbnail),d(b('\')">\n <div class="mdi play"></div>\n ')),this.canThumbsUp&&d(b('\n <div class="mdi thumbs"></div>\n ')),d(b('\n </div>\n </div>\n <div class="meta">\n <div class="title"><a href="#')),d(this.url),d(b('" title="')),d(this.label),d(b('">')),d(this.label),d(b("</a></div>\n ")),null!=this.subtitle&&(d(b('\n <div class="subtitle">')),d(b(this.subtitle)),d(b("</div>\n "))),d(b('\n </div>\n <div class="remove"></div>\n</div>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/playlist/m3u/tpl/list.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){var a,c,e,f;for(d(b("#EXTCPlayListM3U::M3U\n")),f=this.items,a=0,e=f.length;e>a;a++)c=f[a],d(b("#EXTINF:")),d(c.duration),d(b(",")),d(c.artist.join("/")),d(b(" - ")),d(c.label),d(b("\n")),d(c.file),d(b("\n"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/playlist/show/tpl/landing.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="playlist-page playlist-page__empty set-page">\n <h3>')),d(t.gettext("Now playing - Playlists")),d(b("</h3>\n <p>")),d(t.gettext("Switch between Kodi and local playback via the tabs. You can toggle visibility with the arrow in the top right")),d(b("</p>\n</div>\n"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/pvr/recordingList/tpl/recording.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="title">\n <strong>')),d(this.label),d(b("</strong> <span>- ")),d(this.channel),d(b('</span>\n</div>\n<div class="date">\n ')),d(this.start.toString("h:mmtt").toLowerCase()),d(b(" -\n ")),"1970"!==this.end.toString("yyyy")?(d(b("\n ")),d(this.end.toString("h:mmtt").toLowerCase()),d(b("\n (")),d(helpers.global.formatTime(helpers.global.secToTime(this.runtime))),d(b(")\n "))):(d(b("\n ")),d(tr("Now")),d(b("\n "))),d(b("\n\n <br />")),d(this.start.toString("dddd, dS MMM")),d(b('\n</div>\n<div class="plot">')),d(this.plot),d(b('</div>\n<div class="entity-progress">\n <div class="current-progress" style="width: ')),d(this.progress),d(b('%" title="')),d(this.progress),d(b("% ")),d(t.gettext("complete")),d(b('"></div>\n</div>\n<ul class="actions">\n <li class="play"></li>\n</ul>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/search/list/tpl/search_layout.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="search-inner">\n <div class="entity-set entity-set-movie"></div>\n <div class="entity-set entity-set-tvshow"></div>\n <div class="entity-set entity-set-artist"></div>\n <div class="entity-set entity-set-album"></div>\n <div class="entity-set entity-set-song"></div>\n <div class="entity-set entity-set-musicvideo"></div>\n <div class="entity-set entity-set-loading"></div>\n <div class="entity-set entity-set-addons"></div>\n</div>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/search/list/tpl/search_sidebar.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="sidebar-section sidebar-section-media">\n <h3>Local media</h3>\n <ul class="search-media-links"></ul>\n</div>\n\n<div class="sidebar-section sidebar-section-addon">\n <h3>Addons</h3>\n <ul class="search-addon-links"></ul>\n</div>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/search/show/tpl/landing.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="search-page search-page__empty set-page">\n <h3>')),d(t.gettext("Enter your search above")),d(b("</h3>\n</div>\n"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/settings/show/tpl/settings_sidebar.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="settings-sidebar">\n <div class="settings-sidebar--section local-nav nav-sub"></div>\n <div class="settings-sidebar--section kodi-nav"></div>\n</div>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/shell/show/tpl/homepage.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div id="homepage"></div>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/shell/show/tpl/shell.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div id="shell">\n\n <a id="logo" href="#"></a>\n\n <div id="nav-bar"></div>\n\n <div id="header">\n\n <h1 id="page-title">\n <span class="context"></span>\n <span class="title"></span>\n </h1>\n\n <ul class="mobile-menu">\n <li><a href="#remote" class="mobile-menu--link__remote remote-toggle"><i></i></a></li>\n <li><a href="#search" class="mobile-menu--link__search"><i></i></a></li>\n <li><a href="#playlist" class="mobile-menu--link__playlist"><i></i></a></li>\n </ul>\n\n <div id="selected-region">\n <div class="selected-text">\n <span id="selected-count"></span>\n </div>\n <i data-toggle="dropdown" class="menu-toggle"></i>\n <ul class="dropdown-menu pull-right">\n <li class="selected-play">')),d(tr("Play in Kodi")),d(b('</li>\n <li class="selected-add">')),d(tr("Queue in Kodi")),d(b('</li>\n <li class="selected-localadd">')),d(tr("Add to playlist")),d(b('</li>\n </ul>\n </div>\n\n <div id="search-region">\n <input id="search" title="Search">\n <span id="do-search"></span>\n </div>\n\n </div>\n\n <div id="main">\n\n <div id="sidebar-one"></div>\n\n <div id="content">')),d(tr("Loading things...")),d(b('</div>\n\n </div>\n\n <div id="sidebar-two">\n <div class="playlist-toggle-open"></div>\n <div id="playlist-summary"></div>\n <div id="playlist-bar"></div>\n </div>\n\n <div id="remote"></div>\n\n <div id="player-wrapper">\n <footer id="player-kodi"></footer>\n <footer id="player-local"></footer>\n </div>\n\n <div class="player-menu-wrapper">\n <ul class="player-menu">\n <li class="video-scan">')),d(t.gettext("Scan video library")),d(b('</li>\n <li class="audio-scan">')),d(t.gettext("Scan audio library")),d(b('</li>\n <li class="send-input">')),d(t.gettext("Send text to Kodi")),d(b('</li>\n <li class="goto-lab">')),d(t.gettext("The lab")),d(b('</li>\n <li class="about">')),d(t.gettext("About Chorus")),d(b('</li>\n </ul>\n </div>\n\n</div>\n\n<div id="fanart"></div>\n<div id="fanart-overlay"></div>\n\n<div id="snackbar-container"></div>\n\n<div class="modal fade" id="modal-window">\n <div class="modal-dialog">\n <div class="modal-content">\n <div class="modal-header">\n <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>\n <h4 class="modal-title"></h4>\n </div>\n <div class="modal-body"></div>\n <div class="modal-footer"></div>\n </div>\n </div>\n</div>\n\n<div id="disconnected">\n <div class="message">\n <i class="mdi-file-cloud-off"></i>\n <h2>')),d(tr("Lost connection to Kodi")),d(b('</h2>\n <p class="try-connect"><button class="reconnect btn btn-primary">')),d(tr("Attempt to reconnect")),d(b('</button></p>\n <p class="load-connect"><span class="loader-small-inline"></span><br />')),d(tr("Attempting reconnect")),d(b('</p>\n </div>\n</div>\n\n<div id="offscreen"></div>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/song/list/tpl/song.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<td class="cell-first">\n <div class="thumb" style="background-image: url(\'')),d(this.thumbnail),d(b('\')">\n </div>\n <div class="track">')),d(this.track),d(b('</div>\n <div class="mdi play"></div>\n</td>\n<td class="cell-label song-title"><span class="crop">')),d(this.label),d(b('</span></td>\n<td class="cell-label song-album"><a class="crop" href="#music/album/')),d(this.albumid),d(b('">')),d(this.album),d(b('</a></td>\n<td class="cell-label song-artist"><a class="crop" href="#music/artist/')),d(this.artistid),d(b('">')),d(this.artist),d(b('</a></td>\n<td class="cell-last">\n <li class="thumbed-up"></li>\n <div class="duration">')),d(this.displayDuration),d(b('</div>\n <ul class="actions">\n <li class="mdi thumbs"></li>\n <li class="mdi add"></li>\n <li class="menu dropdown">\n <i data-toggle="dropdown" class="mdi"></i>\n <ul class="dropdown-menu pull-right"></ul>\n </li>\n </ul>\n</td>\n<td class="cell-remove song-remove">\n <i class="mdi mdi-navigation-close"></i>\n</td>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/thumbs/list/tpl/thumbs_layout.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="thumbs-inner">\n <div class="entity-set entity-set-movie"></div>\n <div class="entity-set entity-set-tvshow"></div>\n <div class="entity-set entity-set-episode"></div>\n <div class="entity-set entity-set-artist"></div>\n <div class="entity-set entity-set-album"></div>\n <div class="entity-set entity-set-song"></div>\n <div class="entity-set entity-set-musicvideo"></div>\n</div>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/thumbs/list/tpl/thumbs_set.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<h2 class="set-header"></h2>\n<div class="set-results"></div>\n<div class="more"></div>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/tvshow/episode/tpl/content.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('\n<div class="section-content">\n <h2>')),d(t.gettext("Synopsis")),d(b("</h2>\n <p>")),d(this.plot),d(b("</p>\n</div>\n\n")),this.cast.length>0&&(d(b('\n <div class="section-content">\n <h2>')),d(tr("Full cast")),d(b('</h2>\n <div class="region-cast"></div>\n </div>\n'))),d(b('\n\n<div class="section-content section-full-width">\n <h2>')),d(tr("Season")),d(b(" ")),d(this.season),d(b('</h2>\n <div class="region-season"></div>\n</div>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/tvshow/episode/tpl/details_meta.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){var a,c,e,f;if(d(b('<div class="region-details-top">\n ')),null!=this.showtitle&&d(b("\n\n ")),d(b('\n <div class="region-details-title">\n <h2>\n <span class="title">')),d(this.label),d(b('</span>\n <span class="sub show-title"><a href="#')),d(this.url.split("/",2).join("/")),d(b('">')),d(this.showtitle),d(b('</a></span>\n <span class="sub">S')),d(this.season),d(b(" E")),d(this.episode),d(b('</span>\n </h2>\n </div>\n <div class="region-details-rating">\n ')),d(this.rating),d(b(' <i></i>\n </div>\n</div>\n<div class="region-details-meta-below">\n\n <div class="region-details-subtext">\n\n ')),this.runtime>0&&(d(b('\n <div class="runtime">\n ')),d(helpers.global.formatTime(helpers.global.secToTime(this.runtime))),d(b("\n </div>\n "))),d(b('\n\n </div>\n\n <ul class="meta">\n <li><label>')),d(t.gettext("Season")),d(b(':</label> <span><a href="#tvshow/')),d(this.tvshowid),d(b("/")),d(this.season),d(b('">')),d(t.gettext("Season")),d(b(" ")),d(this.season),d(b("</a></span></li>\n ")),this.firstaired&&(d(b("\n <li><label>")),d(t.gettext("First aired")),d(b(":</label> <span>")),d(this.firstaired),d(b(" </span></li>\n "))),d(b("\n ")),this.director.length>0&&(d(b("\n <li><label>")),d(t.ngettext("Director","Directors",this.director.length)),d(b(":</label> <span>")),d(b(helpers.url.filterLinks("tvshows","director",this.director))),d(b("</span></li>\n "))),d(b("\n ")),this.writer.length>0&&(d(b("\n <li><label>")),d(t.ngettext("Writer","Writers",this.writer.length)),d(b(":</label> <span>")),d(b(helpers.url.filterLinks("tvshows","writer",this.writer))),d(b("</span></li>\n "))),d(b("\n ")),this.cast.length>0&&(d(b("\n <li><label>")),d(t.gettext("Cast")),d(b(":</label> <span>")),d(b(helpers.url.filterLinks("tvshows","cast",_.pluck(this.cast,"name")))),d(b("</span></li>\n "))),d(b('\n </ul>\n\n <ul class="streams">\n ')),this.streamdetails.video.length>0&&(d(b("\n <li><label>")),d(t.gettext("Video")),d(b(":</label> <span>")),d(_.pluck(this.streamdetails.video,"label").join(", ")),d(b("</span></li>\n "))),d(b("\n ")),this.streamdetails.audio.length>0&&(d(b("\n <li><label>")),d(t.gettext("Audio")),d(b(":</label> <span>")),d(_.pluck(this.streamdetails.audio,"label").join(", ")),d(b("</span></li>\n "))),d(b("\n ")),this.streamdetails.subtitle.length>0&&""!==this.streamdetails.subtitle[0].label){for(d(b("\n <li><label>")),d(t.ngettext("Subtitle","Subtitles",this.streamdetails.subtitle.length)),d(b(':</label>\n <span class="dropdown"><span data-toggle="dropdown">')),d(_.first(_.pluck(this.streamdetails.subtitle,"label"))),d(b('</span>\n <ul class="dropdown-menu">\n ')),e=this.streamdetails.subtitle,a=0,c=e.length;c>a;a++)f=e[a],d(b("\n <li>")),d(f.label),d(b("</li>\n "));d(b("\n </ul>\n </span>\n </li>\n "))}d(b('\n </ul>\n\n <ul class="inline-links">\n <li class="btn-flat-play play">')),d(tr("Play")),d(b('</li>\n <li class="btn-flat-add add">')),d(tr("Queue")),d(b('</li>\n <li class="btn-flat-stream stream">')),d(tr("Stream")),d(b('</li>\n <li class="btn-flat-watched watched">\n ')),d(t.gettext("set")),d(b(' <span class="action-watched">')),d(tr("watched")),d(b('</span><span class="action-unwatched">')),d(tr("unwatched")),d(b('</span>\n </li>\n <li class="more-actions dropdown">\n <span class="btn-flat-more" data-toggle="dropdown" aria-expanded="true">')),d(tr("more")),d(b('</span>\n <ul class="dropdown-menu pull-right">\n <li class="download">')),d(tr("Download")),d(b('</li>\n <li class="divider"></li>\n <li class="dropdown-submenu internal-search">')),d(tr("Chorus Search")),d(b('\n <ul class="dropdown-menu">\n ')),d(b(helpers.entities.getAddonSearchMenuItems(this.showtitle))),d(b('\n </ul>\n </li>\n <li class="dropdown-submenu external-search">')),d(tr("External Search")),d(b('\n <ul class="dropdown-menu">\n <li data-type="google" data-query="')),d(this.showtitle),d(b(" ")),d(this.label),d(b('">Google</li>\n <li data-type="imdb" data-query="')),d(this.showtitle),d(b('">IMDb</li>\n <li data-type="tvdb" data-query="')),d(this.showtitle),d(b('">TVDb</li>\n <li data-type="tmdb" data-query="')),d(this.showtitle),d(b('">TMDb</li>\n </ul>\n </li>\n <li class="youtube-search" data-query="')),d(this.showtitle),d(b('">')),d(tr("YouTube Search")),d(b('</li>\n <li class="divider"></li>\n <li class="refresh">')),d(tr("Refresh")),d(b('</li>\n <li class="edit">')),d(tr("Edit")),d(b("</li>\n </ul>\n </li>\n </ul>\n</div>\n"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/tvshow/season/tpl/details_meta.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="region-details-top">\n <div class="region-details-title">\n <h2>\n <span class="title">')),d(tr("Season")),d(b(" ")),d(this.season),d(b('</span>\n <span class="sub"><a href="#tvshow/')),d(this.tvshowid),d(b('">')),d(this.label),d(b('</a></span>\n </h2>\n </div>\n <div class="region-details-rating">\n ')),d(this.rating),d(b(' <i></i>\n </div>\n</div>\n<div class="region-details-meta-below">\n\n <ul class="meta">\n ')),this.genre.length>0&&(d(b("\n <li><label>")),d(tr("genre")),d(b(":</label> <span>")),d(b(helpers.url.filterLinks("tvshows","genre",this.genre))),d(b("</span></li>\n "))),d(b("\n ")),this.cast.length>0&&(d(b("\n <li><label>")),d(tr("cast")),d(b(":</label> <span>")),d(b(helpers.url.filterLinks("tvshows","cast",_.pluck(this.cast,"name")))),d(b("</span></li>\n "))),d(b("\n ")),this.studio.length>0&&(d(b("\n <li><label>")),d(tr("studio")),d(b(":</label> <span>")),d(b(helpers.url.filterLinks("tvshows","studio",this.studio))),d(b("</span></li>\n "))),d(b("\n ")),this.mpaa&&(d(b("\n <li><label>")),d(tr("rated")),d(b(":</label> <span>")),d(b(helpers.url.filterLinks("tvshows","mpaa",[this.mpaa]))),d(b("</span></li>\n "))),d(b("\n <li><label>")),d(tr("episodes")),d(b(':</label> <span><span class="episode-total">')),d(this.episode),d(b("</span> ")),d(tr("total")),d(b(' (<span class="episode-unwatched">')),d(this.unwatched),d(b("</span> ")),d(tr("unwatched")),d(b(')</span></li>\n </ul>\n\n <div class="description">')),d(this.plot),d(b('</div>\n\n <ul class="inline-links">\n <li class="btn-flat-play play">')),d(tr("Play")),d(b('</li>\n <li class="btn-flat-add add">')),d(tr("Queue")),d(b('</li>\n <li class="btn-flat-watched watched">\n ')),d(tr("set")),d(b(' <span class="action-watched">')),d(tr("watched")),d(b('</span><span class="action-unwatched">')),d(tr("unwatched")),d(b("</span>\n </li>\n </ul>\n\n</div>\n"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,"""); -},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/tvshow/show/tpl/details_meta.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="region-details-top">\n <div class="region-details-title">\n <h2><span class="title">')),d(this.label),d(b('</span> <span class="sub">')),d(this.year),d(b('</span></h2>\n </div>\n <div class="region-details-rating">\n ')),d(this.rating),d(b(' <i></i>\n </div>\n</div>\n<div class="region-details-meta-below">\n\n <ul class="meta">\n ')),this.genre.length>0&&(d(b("\n <li><label>")),d(tr("genre")),d(b(":</label> <span>")),d(b(helpers.url.filterLinks("tvshows","genre",this.genre))),d(b("</span></li>\n "))),d(b("\n ")),this.cast.length>0&&(d(b("\n <li><label>")),d(tr("cast")),d(b(":</label> <span>")),d(b(helpers.url.filterLinks("tvshows","cast",_.pluck(this.cast,"name")))),d(b("</span></li>\n "))),d(b("\n ")),this.studio.length>0&&(d(b("\n <li><label>")),d(tr("studio")),d(b(":</label> <span>")),d(b(helpers.url.filterLinks("tvshows","studio",this.studio))),d(b("</span></li>\n "))),d(b("\n ")),this.mpaa&&(d(b("\n <li><label>")),d(tr("rated")),d(b(":</label> <span>")),d(b(helpers.url.filterLinks("tvshows","mpaa",[this.mpaa]))),d(b("</span></li>\n "))),d(b("\n <li><label>")),d(tr("episodes")),d(b(':</label> <span><span class="episode-total">')),d(this.episode),d(b("</span> ")),d(tr("total")),d(b(' (<span class="episode-unwatched">')),d(this.unwatched),d(b("</span> ")),d(tr("unwatched")),d(b(')</span></li>\n </ul>\n\n <div class="description">')),d(this.plot),d(b('</div>\n\n <ul class="inline-links">\n <li class="btn-flat-play play">')),d(tr("Play")),d(b('</li>\n <li class="btn-flat-add add">')),d(tr("Queue")),d(b('</li>\n <li class="btn-flat-watched watched">\n ')),d(tr("set")),d(b(' <span class="action-watched">')),d(tr("watched")),d(b('</span><span class="action-unwatched">')),d(tr("unwatched")),d(b('</span>\n </li>\n <li class="more-actions dropdown">\n <span class="btn-flat-more" data-toggle="dropdown" aria-expanded="true">')),d(tr("more")),d(b('</span>\n <ul class="dropdown-menu pull-right">\n <li class="dropdown-submenu internal-search">')),d(tr("Chorus Search")),d(b('\n <ul class="dropdown-menu">\n ')),d(b(helpers.entities.getAddonSearchMenuItems(this.label))),d(b('\n </ul>\n </li>\n <li class="dropdown-submenu external-search">')),d(tr("External Search")),d(b('\n <ul class="dropdown-menu">\n <li data-type="google" data-query="')),d(this.label),d(b('">Google</li>\n <li data-type="imdb" data-query="')),d(this.label),d(b('">IMDb</li>\n <li data-type="tvdb" data-query="')),d(this.label),d(b('">TVDb</li>\n <li data-type="tmdb" data-query="')),d(this.label),d(b('">TMDb</li>\n </ul>\n </li>\n <li class="youtube-search" data-query="')),d(this.label),d(b('">')),d(tr("YouTube Search")),d(b('</li>\n <li class="divider"></li>\n <li class="dropdown-submenu">')),d(tr("Refresh")),d(b('\n <ul class="dropdown-menu">\n <li class="refresh">')),d(tr("Show only")),d(b('</li>\n <li class="refresh-episodes">')),d(tr("Show and episodes")),d(b('</li>\n </ul>\n </li>\n <li class="edit">')),d(tr("Edit")),d(b("</li>\n </ul>\n </li>\n </ul>\n\n</div>\n"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["components/form/tpl/form.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="form-inner">\n <div class="form-content-region"></div>\n <footer>\n <ul class="inline-list">\n <li>\n <button type="submit" data-form-button="submit" class="btn btn-primary form-save">Save</button>\n </li>\n <li class="response">\n\n </li>\n </ul>\n </footer>\n</div>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["components/form/tpl/form_item.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){this.title&&(d(b('\n <label class="control-label">')),d(b(this.title)),d(b("</label>\n"))),d(b("\n\n")),"markup"===this.type?(d(b("\n ")),d(b(this.element)),d(b("\n"))):(d(b('\n <div class="element">\n ')),"checkbox"!==this.type?(d(b("\n ")),d(b(this.element)),d(b("\n "))):(d(b('\n <div class="togglebutton">\n <label>')),d(b(this.element)),d(b("</label>\n </div>\n "))),d(b("\n ")),this.description&&(d(b('\n <div class="help-block description">')),d(b(this.description)),d(b("</div>\n "))),d(b("\n </div>\n"))),d(b("\n"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["components/form/tpl/form_item_group.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){this.title&&(d(b('\n <h3 class="group-title">')),this.icon&&(d(b('<i class="')),d(b(this.icon)),d(b('"></i> '))),d(b(this.title)),d(b("</h3>\n"))),d(b('\n<div class="form-items"></div>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["components/form/tpl/form_item_imageselect.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="form-imageselect">\n <ul class="form-imageselect__tabs">\n <li data-pane="select" class="active">')),d(tr("Selector")),d(b('</li>\n <li data-pane="url">')),d(tr("URL")),d(b('</li>\n </ul>\n <div class="form-imageselect__panes">\n <div class="pane active" rel="select">\n <ul class="form-imageselect__thumbs">\n ')),this.image&&(d(b('\n <li data-original="')),d(this.image.original),d(b('" class="selected" style="background-image: url(\'')),d(this.image.thumb),d(b("')\"></li>\n "))),d(b('\n </ul>\n <div class="form-imageselect__loader"><div class="loader-small-inline"></div> <span>')),d(tr("Searching for more images")),d(b('</span></div>\n </div>\n <div class="pane" rel="url">\n ')),this.title&&(d(b('\n <label class="control-label">')),d(b(this.title)),d(b("</label>\n "))),d(b('\n <div class="form-imageselect__url">\n ')),d(b(this.element)),d(b("\n </div>\n ")),this.description&&(d(b('\n <div class="help-block description">')),d(b(this.description)),d(b("</div>\n "))),d(b("\n </div>\n </div>\n</div>"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["views/card/tpl/card.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){var a,c,e;if(d(b('<div class="card-')),d(this.type),d(b('">\n <div class="artwork">\n <a href="#')),d(this.url),d(b('" class="thumb" title="')),d(helpers.global.stripTags(this.label)),d(b('" style="background-image: url(\'')),d(this.thumbnail),d(b('\')"></a>\n <div class="mdi play" title="')),d(tr("Play")),d(b('"></div>\n ')),("channeltv"===this.type||"channelradio"===this.type)&&d(b('\n <div class="mdi record"></div>\n ')),d(b('\n </div>\n <div class="meta">\n <div class="title"><a href="#')),d(this.url),d(b('" title="')),d(helpers.global.stripTags(this.label)),d(b('">')),d(b(this.label)),d(b("</a></div>\n ")),null!=this.subtitle&&(d(b('\n <div class="subtitle">')),d(b(this.subtitle)),d(b("</div>\n "))),d(b("\n </div>\n ")),this.actions){d(b('\n <ul class="actions">\n ')),c=this.actions;for(a in c)e=c[a],d(b('<li class="mdi ')),d(a),d(b('" title="')),d(e),d(b('"></li>'));d(b("\n </ul>\n "))}d(b("\n ")),this.menu&&d(b('\n <div class="dropdown">\n <i data-toggle="dropdown" class="mdi"></i>\n <ul class="dropdown-menu"></ul>\n </div>\n ')),d(b("\n ")),this.progress=null!=this.progress?this.progress:0,d(b('\n <div class="entity-progress"><div class="current-progress" style="width: ')),d(this.progress),d(b('%" title="')),d(this.progress),d(b("% ")),d(t.gettext("complete")),d(b('"></div></div>\n</div>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["views/card/tpl/card_placeholder.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b("<i></i>"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["views/empty/tpl/empty_page.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="empty--page">\n ')),this.title&&(d(b('\n <h2 class="empty--page-title">')),d(title),d(b("</h2>\n "))),d(b("\n\n ")),this.content&&(d(b('\n <div class="empty--page-content">')),d(this.content),d(b("</div>\n "))),d(b("\n</div>"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["views/empty/tpl/empty_results.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="empty-result">\n <h2>')),d(b(t.sprintf(tr("No %1$s found"),'<span class="empty-key">'+tr("results")+"</span>"))),d(b('</h2>\n <div class="empty-actions">\n <div class="back-link"></div>\n </div>\n</div>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["views/layouts/tpl/layout_details_header.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="layout-container details-header">\n\n <div class="region-details-side"></div>\n\n <div class="region-details-meta-wrapper"><div class="region-details-meta">\n\n <div class="region-details-title"><span class="title"></span> <span class="sub"></span></div>\n\n <div class="region-details-meta-below">\n <div class="region-details-subtext"></div>\n <div class="description"></div>\n </div>\n\n </div></div>\n\n ')),this.fanart&&(d(b('\n <div class="region-details-fanart" style="background-image: url(\'')),d(this.fanart),d(b('\')"><div class="gradient"></div></div>\n '))),d(b("\n</div>\n"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["views/layouts/tpl/layout_with_header.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="layout-container with-header">\n\n <header class="region-header"></header>\n\n <div class="region-content-wrapper">\n <div class="entity-progress"><div class="current-progress" style="width: ')),d(this.progress),d(b('%" title="')),d(this.progress),d(b("% ")),d(t.gettext("complete")),d(b('"></div></div>\n <section class="region-content"></section>\n </div>\n\n</div>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["views/layouts/tpl/layout_with_sidebar_first.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="layout-container with-sidebar-first">\n\n <div class="region-first-toggle"></div>\n <section class="region-first">\n <div class="region-first-primary"></div>\n <div class="region-first-secondary"></div>\n </section>\n\n <section class="region-content-wrapper">\n <div class="region-content-top"></div>\n <div class="region-content"></div>\n </section>\n\n</div>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["views/set/tpl/set.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="set">\n ')),this.title&&(d(b('\n <div class="set__header">\n <h2 class="set__title">')),d(this.title),d(b('</h2>\n <div class="set__actions">\n ')),this.menu&&d(b('\n <div class="dropdown">\n <i data-toggle="dropdown" class="mdi"></i>\n <ul class="dropdown-menu pull-right"></ul>\n </div>\n ')),d(b("\n </div>\n </div>\n "))),d(b('\n <div class="set__items">\n <')),d(this.childViewTag),d(b(' class="set__collection ')),d(this.childViewClass),d(b('"></')),d(this.childViewTag),d(b(">\n </div>\n ")),this.more&&(d(b('\n <div class="set__more">')),d(b(this.more)),d(b("</div>\n "))),d(b("\n</div>\n"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["views/song/tpl/song_placeholder.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<td colspan="6"><i></i></td>\n'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())};;var tr, +!b)return;f?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var g=function(){d.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",g).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):g()}else b&&b()},c.prototype.handleUpdate=function(){this.options.backdrop&&this.adjustBackdrop(),this.adjustDialog()},c.prototype.adjustBackdrop=function(){this.$backdrop.css("height",0).css("height",this.$element[0].scrollHeight)},c.prototype.adjustDialog=function(){var a=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){this.bodyIsOverflowing=document.body.scrollHeight>document.documentElement.clientHeight,this.scrollbarWidth=this.measureScrollbar()},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.bodyIsOverflowing&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right","")},c.prototype.measureScrollbar=function(){var a=document.createElement("div");a.className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof b&&b,g=f&&f.selector;(e||"destroy"!=b)&&(g?(e||d.data("bs.tooltip",e={}),e[g]||(e[g]=new c(this,f))):e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};c.VERSION="3.3.1",c.TRANSITION_DURATION=150,c.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(this.options.viewport.selector||this.options.viewport);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c&&c.$tip&&c.$tip.is(":visible")?void(c.hoverState="in"):(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.options.container?a(this.options.container):this.$element.parent(),p=this.getPosition(o);h="bottom"==h&&k.bottom+m>p.bottom?"top":"top"==h&&k.top-m<p.top?"bottom":"right"==h&&k.right+l>p.width?"left":"left"==h&&k.left-l<p.left?"right":h,f.removeClass(n).addClass(h)}var q=this.getCalculatedOffset(h,k,l,m);this.applyPlacement(q,h);var r=function(){var a=e.hoverState;e.$element.trigger("shown.bs."+e.type),e.hoverState=null,"out"==a&&e.leave(e)};a.support.transition&&this.$tip.hasClass("fade")?f.one("bsTransitionEnd",r).emulateTransitionEnd(c.TRANSITION_DURATION):r()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),b.top=b.top+g,b.left=b.left+h,a.offset.setOffset(d[0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),d.addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;"top"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=/top|bottom/.test(c),m=l?2*k.left-e+i:2*k.top-f+j,n=l?"offsetWidth":"offsetHeight";d.offset(b),this.replaceArrow(m,d[0][n],l)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c?"left":"top",50*(1-a/b)+"%").css(c?"top":"left","")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},c.prototype.hide=function(b){function d(){"in"!=e.hoverState&&f.detach(),e.$element.removeAttr("aria-describedby").trigger("hidden.bs."+e.type),b&&b()}var e=this,f=this.tip(),g=a.Event("hide.bs."+this.type);return this.$element.trigger(g),g.isDefaultPrevented()?void 0:(f.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?f.one("bsTransitionEnd",d).emulateTransitionEnd(c.TRANSITION_DURATION):d(),this.hoverState=null,this)},c.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[0],d="BODY"==c.tagName,e=c.getBoundingClientRect();null==e.width&&(e=a.extend({},e,{width:e.right-e.left,height:e.bottom-e.top}));var f=d?{top:0,left:0}:b.offset(),g={scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop()},h=d?{width:a(window).width(),height:a(window).height()}:null;return a.extend({},e,g,h,f)},c.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:0,left:0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h<g.top?e.top=g.top-h:i>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j<g.left?e.left=g.left-j:k>g.width&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type)})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b,g=f&&f.selector;(e||"destroy"!=b)&&(g?(e||d.data("bs.popover",e={}),e[g]||(e[g]=new c(this,f))):e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.1",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},c.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),function(a){function b(a){return"undefined"==typeof a.which?!0:"number"==typeof a.which&&a.which>0?!a.ctrlKey&&!a.metaKey&&!a.altKey&&8!=a.which:!1}a.expr[":"].notmdproc=function(b){return a(b).data("mdproc")?!1:!0},a.material={options:{input:!0,ripples:!0,checkbox:!0,togglebutton:!0,radio:!0,arrive:!0,autofill:!0,withRipples:[".btn:not(.btn-link)",".card-image",".navbar a:not(.withoutripple)",".dropdown-menu a",".nav-tabs a:not(.withoutripple)",".withripple"].join(","),inputElements:"input.form-control, textarea.form-control, select.form-control",checkboxElements:".checkbox > label > input[type=checkbox]",togglebuttonElements:".togglebutton > label > input[type=checkbox]",radioElements:".radio > label > input[type=radio]"},checkbox:function(b){a(b?b:this.options.checkboxElements).filter(":notmdproc").data("mdproc",!0).after("<span class=ripple></span><span class=check></span>")},togglebutton:function(b){a(b?b:this.options.togglebuttonElements).filter(":notmdproc").data("mdproc",!0).after("<span class=toggle></span>")},radio:function(b){a(b?b:this.options.radioElements).filter(":notmdproc").data("mdproc",!0).after("<span class=circle></span><span class=check></span>")},input:function(c){a(c?c:this.options.inputElements).filter(":notmdproc").data("mdproc",!0).each(function(){var b=a(this);if(b.wrap("<div class=form-control-wrapper></div>"),b.after("<span class=material-input></span>"),b.hasClass("floating-label")){var c=b.attr("placeholder");b.attr("placeholder",null).removeClass("floating-label"),b.after("<div class=floating-label>"+c+"</div>")}if(b.attr("data-hint")&&b.after("<div class=hint>"+b.attr("data-hint")+"</div>"),(null===b.val()||"undefined"==b.val()||""===b.val())&&b.addClass("empty"),b.parent().next().is("[type=file]")){b.parent().addClass("fileinput");var d=b.parent().next().detach();b.after(d)}}),a(document).on("change",".checkbox input[type=checkbox]",function(){a(this).blur()}).on("keydown paste",".form-control",function(c){b(c)&&a(this).removeClass("empty")}).on("keyup change",".form-control",function(){var b=a(this);""===b.val()&&b[0].checkValidity()?b.addClass("empty"):b.removeClass("empty")}).on("focus",".form-control-wrapper.fileinput",function(){a(this).find("input").addClass("focus")}).on("blur",".form-control-wrapper.fileinput",function(){a(this).find("input").removeClass("focus")}).on("change",".form-control-wrapper.fileinput [type=file]",function(){var b="";a.each(a(this)[0].files,function(a,c){console.log(c),b+=c.name+", "}),b=b.substring(0,b.length-2),b?a(this).prev().removeClass("empty"):a(this).prev().addClass("empty"),a(this).prev().val(b)})},ripples:function(b){a(b?b:this.options.withRipples).ripples()},autofill:function(){var b=setInterval(function(){a("input[type!=checkbox]").each(function(){a(this).val()&&a(this).val()!==a(this).attr("value")&&a(this).trigger("change")})},100);setTimeout(function(){clearInterval(b)},1e4);var c;a(document).on("focus","input",function(){var b=a(this).parents("form").find("input").not("[type=file]");c=setInterval(function(){b.each(function(){a(this).val()!==a(this).attr("value")&&a(this).trigger("change")})},100)}).on("blur","input",function(){clearInterval(c)})},init:function(){a.ripples&&this.options.ripples&&this.ripples(),this.options.input&&this.input(),this.options.checkbox&&this.checkbox(),this.options.togglebutton&&this.togglebutton(),this.options.radio&&this.radio(),this.options.autofill&&this.autofill(),document.arrive&&this.options.arrive&&(a(document).arrive(this.options.inputElements,function(){a.material.input(a(this))}),a(document).arrive(this.options.checkboxElements,function(){a.material.checkbox(a(this))}),a(document).arrive(this.options.radioElements,function(){a.material.radio(a(this))}),a(document).arrive(this.options.togglebuttonElements,function(){a.material.togglebutton(a(this))}))}}}(jQuery),function(a,b,c,d){"use strict";function e(b,c){g=this,this.element=a(b),this.options=a.extend({},h,c),this._defaults=h,this._name=f,this.init()}var f="ripples",g=null,h={};e.prototype.init=function(){var c=this.element;c.on("mousedown touchstart",function(d){if(g.isTouch()&&"mousedown"===d.type)return!1;c.find(".ripple-wrapper").length||c.append('<div class="ripple-wrapper"></div>');var e=c.children(".ripple-wrapper"),f=g.getRelY(e,d),h=g.getRelX(e,d);if(f||h){var i=g.getRipplesColor(),j=a("<div></div>");j.addClass("ripple").css({left:h,top:f,"background-color":i}),e.append(j),function(){return b.getComputedStyle(j[0]).opacity}(),g.rippleOn(j),setTimeout(function(){g.rippleEnd(j)},500),c.on("mouseup mouseleave touchend",function(){j.data("mousedown","off"),"off"===j.data("animating")&&g.rippleOut(j)})}})},e.prototype.getNewSize=function(a){var b=this.element;return Math.max(b.outerWidth(),b.outerHeight())/a.outerWidth()*2.5},e.prototype.getRelX=function(a,b){var c=a.offset();return g.isTouch()?(b=b.originalEvent,1!==b.touches.length?b.touches[0].pageX-c.left:!1):b.pageX-c.left},e.prototype.getRelY=function(a,b){var c=a.offset();return g.isTouch()?(b=b.originalEvent,1!==b.touches.length?b.touches[0].pageY-c.top:!1):b.pageY-c.top},e.prototype.getRipplesColor=function(){var a,c=this.element;return a=this.options&&this.options.color?this.options.color:c.data("ripple-color")?c.data("ripple-color"):b.getComputedStyle(c[0]).color},e.prototype.hasTransitionSupport=function(){var a=c.body||c.documentElement,b=a.style,e=b.transition!==d||b.WebkitTransition!==d||b.MozTransition!==d||b.MsTransition!==d||b.OTransition!==d;return e},e.prototype.isTouch=function(){return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)},e.prototype.rippleEnd=function(a){a.data("animating","off"),"off"===a.data("mousedown")&&g.rippleOut(a)},e.prototype.rippleOut=function(a){a.off(),g.hasTransitionSupport()?a.addClass("ripple-out"):a.animate({opacity:0},100,function(){a.trigger("transitionend")}),a.on("transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd",function(){a.remove()})},e.prototype.rippleOn=function(a){var b=g.getNewSize(a),c=this.element;g.hasTransitionSupport()?a.css({"-ms-transform":"scale("+b+")","-moz-transform":"scale("+b+")","-webkit-transform":"scale("+b+")",transform:"scale("+b+")"}).addClass("ripple-on").data("animating","on").data("mousedown","on"):a.animate({width:2*Math.max(c.outerWidth(),c.outerHeight()),height:2*Math.max(c.outerWidth(),c.outerHeight()),"margin-left":-1*Math.max(c.outerWidth(),c.outerHeight()),"margin-top":-1*Math.max(c.outerWidth(),c.outerHeight()),opacity:.2},500,function(){a.trigger("transitionend")})},a.fn.ripples=function(b){return this.each(function(){a.data(this,"plugin_"+f)||a.data(this,"plugin_"+f,new e(this,b))})}}(jQuery,window,document),function(a){function b(a){return"undefined"!=typeof a&&null!==a?!0:!1}a(document).ready(function(){a("body").append("<div id=snackbar-container/>")}),a(document).on("click","[data-toggle=snackbar]",function(){a(this).snackbar("toggle")}).on("click","#snackbar-container .snackbar",function(){a(this).snackbar("hide")}),a.snackbar=function(c){if(b(c)&&c===Object(c)){var d;d=b(c.id)?a("#"+c.id):a("<div/>").attr("id","snackbar"+Date.now()).attr("class","snackbar");var e=d.hasClass("snackbar-opened");b(c.style)?d.attr("class","snackbar "+c.style):d.attr("class","snackbar"),c.timeout=b(c.timeout)?c.timeout:3e3,b(c.content)&&(d.find(".snackbar-content").length?d.find(".snackbar-content").text(c.content):d.prepend("<span class=snackbar-content>"+c.content+"</span>")),b(c.id)?d.insertAfter("#snackbar-container .snackbar:last-child"):d.appendTo("#snackbar-container"),b(c.action)&&"toggle"==c.action&&(e?c.action="hide":c.action="show");var f=Date.now();d.data("animationId1",f),setTimeout(function(){d.data("animationId1")===f&&(b(c.action)&&"show"!=c.action?b(c.action)&&"hide"==c.action&&d.removeClass("snackbar-opened"):d.addClass("snackbar-opened"))},50);var g=Date.now();return d.data("animationId2",g),0!==c.timeout&&setTimeout(function(){d.data("animationId2")===g&&d.removeClass("snackbar-opened")},c.timeout),d}return!1},a.fn.snackbar=function(c){var d={};if(this.hasClass("snackbar"))return d.id=this.attr("id"),("show"===c||"hide"===c||"toggle"==c)&&(d.action=c),a.snackbar(d);b(c)&&"show"!==c&&"hide"!==c&&"toggle"!=c||(d={content:a(this).attr("data-content"),style:a(this).attr("data-style"),timeout:a(this).attr("data-timeout")}),b(c)&&(d.id=this.attr("data-snackbar-id"),("show"===c||"hide"===c||"toggle"==c)&&(d.action=c));var e=a.snackbar(d);return this.attr("data-snackbar-id",e.attr("id")),e}}(jQuery),function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){if(!d)var d={map:function(a,b){var c={};return b?a.map(function(a,d){return c.index=d,b.call(c,a)}):a.slice()},naturalOrder:function(a,b){return b>a?-1:a>b?1:0},sum:function(a,b){var c={};return a.reduce(b?function(a,d,e){return c.index=e,a+b.call(c,d)}:function(a,b){return a+b},0)},max:function(a,b){return Math.max.apply(null,b?d.map(a,b):a)}};var e=function(){function a(a,b,c){return(a<<2*j)+(b<<j)+c}function b(a){function b(){c.sort(a),d=!0}var c=[],d=!1;return{push:function(a){c.push(a),d=!1},peek:function(a){return d||b(),void 0===a&&(a=c.length-1),c[a]},pop:function(){return d||b(),c.pop()},size:function(){return c.length},map:function(a){return c.map(a)},debug:function(){return d||b(),c}}}function c(a,b,c,d,e,f,g){var h=this;h.r1=a,h.r2=b,h.g1=c,h.g2=d,h.b1=e,h.b2=f,h.histo=g}function e(){this.vboxes=new b(function(a,b){return d.naturalOrder(a.vbox.count()*a.vbox.volume(),b.vbox.count()*b.vbox.volume())})}function f(b){var c,d,e,f,g=1<<3*j,h=new Array(g);return b.forEach(function(b){d=b[0]>>k,e=b[1]>>k,f=b[2]>>k,c=a(d,e,f),h[c]=(h[c]||0)+1}),h}function g(a,b){var d,e,f,g=1e6,h=0,i=1e6,j=0,l=1e6,m=0;return a.forEach(function(a){d=a[0]>>k,e=a[1]>>k,f=a[2]>>k,g>d?g=d:d>h&&(h=d),i>e?i=e:e>j&&(j=e),l>f?l=f:f>m&&(m=f)}),new c(g,h,i,j,l,m,b)}function h(b,c){function e(a){var b,d,e,f,g,h=a+"1",i=a+"2",k=0;for(j=c[h];j<=c[i];j++)if(p[j]>o/2){for(e=c.copy(),f=c.copy(),b=j-c[h],d=c[i]-j,g=d>=b?Math.min(c[i]-1,~~(j+d/2)):Math.max(c[h],~~(j-1-b/2));!p[g];)g++;for(k=q[g];!k&&p[g-1];)k=q[--g];return e[i]=g,f[h]=e[i]+1,[e,f]}}if(c.count()){var f=c.r2-c.r1+1,g=c.g2-c.g1+1,h=c.b2-c.b1+1,i=d.max([f,g,h]);if(1==c.count())return[c.copy()];var j,k,l,m,n,o=0,p=[],q=[];if(i==f)for(j=c.r1;j<=c.r2;j++){for(m=0,k=c.g1;k<=c.g2;k++)for(l=c.b1;l<=c.b2;l++)n=a(j,k,l),m+=b[n]||0;o+=m,p[j]=o}else if(i==g)for(j=c.g1;j<=c.g2;j++){for(m=0,k=c.r1;k<=c.r2;k++)for(l=c.b1;l<=c.b2;l++)n=a(k,j,l),m+=b[n]||0;o+=m,p[j]=o}else for(j=c.b1;j<=c.b2;j++){for(m=0,k=c.r1;k<=c.r2;k++)for(l=c.g1;l<=c.g2;l++)n=a(k,l,j),m+=b[n]||0;o+=m,p[j]=o}return p.forEach(function(a,b){q[b]=o-a}),e(i==f?"r":i==g?"g":"b")}}function i(a,c){function i(a,b){for(var c,d=1,e=0;l>e;)if(c=a.pop(),c.count()){var f=h(j,c),g=f[0],i=f[1];if(!g)return;if(a.push(g),i&&(a.push(i),d++),d>=b)return;if(e++>l)return}else a.push(c),e++}if(!a.length||2>c||c>256)return!1;var j=f(a),k=0;j.forEach(function(){k++});var n=g(a,j),o=new b(function(a,b){return d.naturalOrder(a.count(),b.count())});o.push(n),i(o,m*c);for(var p=new b(function(a,b){return d.naturalOrder(a.count()*a.volume(),b.count()*b.volume())});o.size();)p.push(o.pop());i(p,c-p.size());for(var q=new e;p.size();)q.push(p.pop());return q}var j=5,k=8-j,l=1e3,m=.75;return c.prototype={volume:function(a){var b=this;return(!b._volume||a)&&(b._volume=(b.r2-b.r1+1)*(b.g2-b.g1+1)*(b.b2-b.b1+1)),b._volume},count:function(b){var c=this,d=c.histo;if(!c._count_set||b){var e,f,g,h=0;for(e=c.r1;e<=c.r2;e++)for(f=c.g1;f<=c.g2;f++)for(g=c.b1;g<=c.b2;g++)index=a(e,f,g),h+=d[index]||0;c._count=h,c._count_set=!0}return c._count},copy:function(){var a=this;return new c(a.r1,a.r2,a.g1,a.g2,a.b1,a.b2,a.histo)},avg:function(b){var c=this,d=c.histo;if(!c._avg||b){var e,f,g,h,i,k=0,l=1<<8-j,m=0,n=0,o=0;for(f=c.r1;f<=c.r2;f++)for(g=c.g1;g<=c.g2;g++)for(h=c.b1;h<=c.b2;h++)i=a(f,g,h),e=d[i]||0,k+=e,m+=e*(f+.5)*l,n+=e*(g+.5)*l,o+=e*(h+.5)*l;k?c._avg=[~~(m/k),~~(n/k),~~(o/k)]:c._avg=[~~(l*(c.r1+c.r2+1)/2),~~(l*(c.g1+c.g2+1)/2),~~(l*(c.b1+c.b2+1)/2)]}return c._avg},contains:function(a){var b=this,c=a[0]>>k;return gval=a[1]>>k,bval=a[2]>>k,c>=b.r1&&c<=b.r2&&gval>=b.g1&&gval<=b.g2&&bval>=b.b1&&bval<=b.b2}},e.prototype={push:function(a){this.vboxes.push({vbox:a,color:a.avg()})},palette:function(){return this.vboxes.map(function(a){return a.color})},size:function(){return this.vboxes.size()},map:function(a){for(var b=this.vboxes,c=0;c<b.size();c++)if(b.peek(c).vbox.contains(a))return b.peek(c).color;return this.nearest(a)},nearest:function(a){for(var b,c,d,e=this.vboxes,f=0;f<e.size();f++)c=Math.sqrt(Math.pow(a[0]-e.peek(f).color[0],2)+Math.pow(a[1]-e.peek(f).color[1],2)+Math.pow(a[2]-e.peek(f).color[2],2)),(b>c||void 0===b)&&(b=c,d=e.peek(f).color);return d},forcebw:function(){var a=this.vboxes;a.sort(function(a,b){return d.naturalOrder(d.sum(a.color),d.sum(b.color))});var b=a[0].color;b[0]<5&&b[1]<5&&b[2]<5&&(a[0].color=[0,0,0]);var c=a.length-1,e=a[c].color;e[0]>251&&e[1]>251&&e[2]>251&&(a[c].color=[255,255,255])}},{quantize:i}}();b.exports=e.quantize},{}],2:[function(a,b,c){(function(){var b,c,d,e=function(a,b){return function(){return a.apply(b,arguments)}},f=[].slice;window.Swatch=c=function(){function a(a,b){this.rgb=a,this.population=b}return a.prototype.hsl=void 0,a.prototype.rgb=void 0,a.prototype.population=1,a.yiq=0,a.prototype.getHsl=function(){return this.hsl?this.hsl:this.hsl=d.rgbToHsl(this.rgb[0],this.rgb[1],this.rgb[2])},a.prototype.getPopulation=function(){return this.population},a.prototype.getRgb=function(){return this.rgb},a.prototype.getHex=function(){return"#"+((1<<24)+(this.rgb[0]<<16)+(this.rgb[1]<<8)+this.rgb[2]).toString(16).slice(1,7)},a.prototype.getTitleTextColor=function(){return this._ensureTextColors(),this.yiq<200?"#fff":"#000"},a.prototype.getBodyTextColor=function(){return this._ensureTextColors(),this.yiq<150?"#fff":"#000"},a.prototype._ensureTextColors=function(){return this.yiq?void 0:this.yiq=(299*this.rgb[0]+587*this.rgb[1]+114*this.rgb[2])/1e3},a}(),window.Vibrant=d=function(){function d(a,d,f){this.swatches=e(this.swatches,this);var g,h,i,j,k,l,m,n,o,p,q,r;for("undefined"==typeof d&&(d=64),"undefined"==typeof f&&(f=5),m=new b(a),n=m.getImageData(),q=n.data,p=m.getPixelCount(),h=[],l=0;p>l;)o=4*l,r=q[o+0],k=q[o+1],i=q[o+2],g=q[o+3],g>=125&&(r>250&&k>250&&i>250||h.push([r,k,i])),l+=f;j=this.quantize(h,d),this._swatches=j.vboxes.map(function(a){return function(a){return new c(a.color,a.vbox.count())}}(this)),this.maxPopulation=this.findMaxPopulation,this.generateVarationColors(),this.generateEmptySwatches(),m.removeCanvas()}return d.prototype.quantize=a("quantize"),d.prototype._swatches=[],d.prototype.TARGET_DARK_LUMA=.26,d.prototype.MAX_DARK_LUMA=.45,d.prototype.MIN_LIGHT_LUMA=.55,d.prototype.TARGET_LIGHT_LUMA=.74,d.prototype.MIN_NORMAL_LUMA=.3,d.prototype.TARGET_NORMAL_LUMA=.5,d.prototype.MAX_NORMAL_LUMA=.7,d.prototype.TARGET_MUTED_SATURATION=.3,d.prototype.MAX_MUTED_SATURATION=.4,d.prototype.TARGET_VIBRANT_SATURATION=1,d.prototype.MIN_VIBRANT_SATURATION=.35,d.prototype.WEIGHT_SATURATION=3,d.prototype.WEIGHT_LUMA=6,d.prototype.WEIGHT_POPULATION=1,d.prototype.VibrantSwatch=void 0,d.prototype.MutedSwatch=void 0,d.prototype.DarkVibrantSwatch=void 0,d.prototype.DarkMutedSwatch=void 0,d.prototype.LightVibrantSwatch=void 0,d.prototype.LightMutedSwatch=void 0,d.prototype.HighestPopulation=0,d.prototype.generateVarationColors=function(){return this.VibrantSwatch=this.findColorVariation(this.TARGET_NORMAL_LUMA,this.MIN_NORMAL_LUMA,this.MAX_NORMAL_LUMA,this.TARGET_VIBRANT_SATURATION,this.MIN_VIBRANT_SATURATION,1),this.LightVibrantSwatch=this.findColorVariation(this.TARGET_LIGHT_LUMA,this.MIN_LIGHT_LUMA,1,this.TARGET_VIBRANT_SATURATION,this.MIN_VIBRANT_SATURATION,1),this.DarkVibrantSwatch=this.findColorVariation(this.TARGET_DARK_LUMA,0,this.MAX_DARK_LUMA,this.TARGET_VIBRANT_SATURATION,this.MIN_VIBRANT_SATURATION,1),this.MutedSwatch=this.findColorVariation(this.TARGET_NORMAL_LUMA,this.MIN_NORMAL_LUMA,this.MAX_NORMAL_LUMA,this.TARGET_MUTED_SATURATION,0,this.MAX_MUTED_SATURATION),this.LightMutedSwatch=this.findColorVariation(this.TARGET_LIGHT_LUMA,this.MIN_LIGHT_LUMA,1,this.TARGET_MUTED_SATURATION,0,this.MAX_MUTED_SATURATION),this.DarkMutedSwatch=this.findColorVariation(this.TARGET_DARK_LUMA,0,this.MAX_DARK_LUMA,this.TARGET_MUTED_SATURATION,0,this.MAX_MUTED_SATURATION)},d.prototype.generateEmptySwatches=function(){var a;return void 0===this.VibrantSwatch&&void 0!==this.DarkVibrantSwatch&&(a=this.DarkVibrantSwatch.getHsl(),a[2]=this.TARGET_NORMAL_LUMA,this.VibrantSwatch=new c(d.hslToRgb(a[0],a[1],a[2]),0)),void 0===this.DarkVibrantSwatch&&void 0!==this.VibrantSwatch?(a=this.VibrantSwatch.getHsl(),a[2]=this.TARGET_DARK_LUMA,this.DarkVibrantSwatch=new c(d.hslToRgb(a[0],a[1],a[2]),0)):void 0},d.prototype.findMaxPopulation=function(){var a,b,c,d,e;for(c=0,d=this._swatches,a=0,b=d.length;b>a;a++)e=d[a],c=Math.max(c,e.getPopulation());return c},d.prototype.findColorVariation=function(a,b,c,d,e,f){var g,h,i,j,k,l,m,n,o;for(j=void 0,k=0,l=this._swatches,g=0,h=l.length;h>g;g++)n=l[g],m=n.getHsl()[1],i=n.getHsl()[2],m>=e&&f>=m&&i>=b&&c>=i&&!this.isAlreadySelected(n)&&(o=this.createComparisonValue(m,d,i,a,n.getPopulation(),this.HighestPopulation),(void 0===j||o>k)&&(j=n,k=o));return j},d.prototype.createComparisonValue=function(a,b,c,d,e,f){return this.weightedMean(this.invertDiff(a,b),this.WEIGHT_SATURATION,this.invertDiff(c,d),this.WEIGHT_LUMA,e/f,this.WEIGHT_POPULATION)},d.prototype.invertDiff=function(a,b){return 1-Math.abs(a-b)},d.prototype.weightedMean=function(){var a,b,c,d,e,g;for(e=1<=arguments.length?f.call(arguments,0):[],b=0,c=0,a=0;a<e.length;)d=e[a],g=e[a+1],b+=d*g,c+=g,a+=2;return b/c},d.prototype.swatches=function(){return{Vibrant:this.VibrantSwatch,Muted:this.MutedSwatch,DarkVibrant:this.DarkVibrantSwatch,DarkMuted:this.DarkMutedSwatch,LightVibrant:this.LightVibrantSwatch,LightMuted:this.LightMuted}},d.prototype.isAlreadySelected=function(a){return this.VibrantSwatch===a||this.DarkVibrantSwatch===a||this.LightVibrantSwatch===a||this.MutedSwatch===a||this.DarkMutedSwatch===a||this.LightMutedSwatch===a},d.rgbToHsl=function(a,b,c){var d,e,f,g,h,i;if(a/=255,b/=255,c/=255,g=Math.max(a,b,c),h=Math.min(a,b,c),e=void 0,i=void 0,f=(g+h)/2,g===h)e=i=0;else{switch(d=g-h,i=f>.5?d/(2-g-h):d/(g+h),g){case a:e=(b-c)/d+(c>b?6:0);break;case b:e=(c-a)/d+2;break;case c:e=(a-b)/d+4}e/=6}return[e,i,f]},d.hslToRgb=function(a,b,c){var d,e,f,g,h,i;return i=void 0,e=void 0,d=void 0,f=function(a,b,c){return 0>c&&(c+=1),c>1&&(c-=1),1/6>c?a+6*(b-a)*c:.5>c?b:2/3>c?a+(b-a)*(2/3-c)*6:a},0===b?i=e=d=c:(h=.5>c?c*(1+b):c+b-c*b,g=2*c-h,i=f(g,h,a+1/3),e=f(g,h,a),d=f(g,h,a-1/3)),[255*i,255*e,255*d]},d}(),window.CanvasImage=b=function(){function a(a){this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),document.body.appendChild(this.canvas),this.width=this.canvas.width=a.width,this.height=this.canvas.height=a.height,this.context.drawImage(a,0,0,this.width,this.height)}return a.prototype.clear=function(){return this.context.clearRect(0,0,this.width,this.height)},a.prototype.update=function(a){return this.context.putImageData(a,0,0)},a.prototype.getPixelCount=function(){return this.width*this.height},a.prototype.getImageData=function(){return this.context.getImageData(0,0,this.width,this.height)},a.prototype.removeCanvas=function(){return this.canvas.parentNode.removeChild(this.canvas)},a}()}).call(this)},{quantize:1}]},{},[2]),function(a,b){"use strict";function c(c,d){function e(a){return qa.preferFlash&&ia&&!qa.ignoreFlash&&qa.flash[a]!==b&&qa.flash[a]}function f(a){return function(b){var c,d=this._s; +return d&&d._a?c=a.call(this,b):(d&&d.id?qa._wD(d.id+": Ignoring "+b.type):qa._wD(va+"Ignoring "+b.type),c=null),c}}this.setupOptions={url:c||null,flashVersion:8,debugMode:!0,debugFlash:!1,useConsole:!0,consoleOnly:!0,waitForWindowLoad:!1,bgColor:"#ffffff",useHighPerformance:!1,flashPollingInterval:null,html5PollingInterval:null,flashLoadTimeout:1e3,wmode:null,allowScriptAccess:"always",useFlashBlock:!1,useHTML5Audio:!0,forceUseGlobalHTML5Audio:!1,ignoreMobileRestrictions:!1,html5Test:/^(probably|maybe)$/i,preferFlash:!1,noSWFCache:!1,idPrefix:"sound"},this.defaultOptions={autoLoad:!1,autoPlay:!1,from:null,loops:1,onid3:null,onload:null,whileloading:null,onplay:null,onpause:null,onresume:null,whileplaying:null,onposition:null,onstop:null,onfailure:null,onfinish:null,multiShot:!0,multiShotEvents:!1,position:null,pan:0,stream:!0,to:null,type:null,usePolicyFile:!1,volume:100},this.flash9Options={isMovieStar:null,usePeakData:!1,useWaveformData:!1,useEQData:!1,onbufferchange:null,ondataerror:null},this.movieStarOptions={bufferTime:3,serverURL:null,onconnect:null,duration:null},this.audioFormats={mp3:{type:['audio/mpeg; codecs="mp3"',"audio/mpeg","audio/mp3","audio/MPA","audio/mpa-robust"],required:!0},mp4:{related:["aac","m4a","m4b"],type:['audio/mp4; codecs="mp4a.40.2"',"audio/aac","audio/x-m4a","audio/MP4A-LATM","audio/mpeg4-generic"],required:!1},ogg:{type:["audio/ogg; codecs=vorbis"],required:!1},opus:{type:["audio/ogg; codecs=opus","audio/opus"],required:!1},wav:{type:['audio/wav; codecs="1"',"audio/wav","audio/wave","audio/x-wav"],required:!1}},this.movieID="sm2-container",this.id=d||"sm2movie",this.debugID="soundmanager-debug",this.debugURLParam=/([#?&])debug=1/i,this.versionNumber="V2.97a.20150601",this.version=null,this.movieURL=null,this.altURL=null,this.swfLoaded=!1,this.enabled=!1,this.oMC=null,this.sounds={},this.soundIDs=[],this.muted=!1,this.didFlashBlock=!1,this.filePattern=null,this.filePatterns={flash8:/\.mp3(\?.*)?$/i,flash9:/\.mp3(\?.*)?$/i},this.features={buffering:!1,peakData:!1,waveformData:!1,eqData:!1,movieStar:!1},this.sandbox={type:null,types:{remote:"remote (domain-based) rules",localWithFile:"local with file access (no internet access)",localWithNetwork:"local with network (internet access only, no local access)",localTrusted:"local, trusted (local+internet access)"},description:null,noRemote:null,noLocal:null},this.html5={usingFlash:null},this.flash={},this.html5Only=!1,this.ignoreFlash=!1;var g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,$,_,aa,ba,ca,da,ea,fa,ga,ha,ia,ja,ka,la,ma,na,oa,pa,qa=this,ra=null,sa=null,ta="soundManager",ua=ta+": ",va="HTML5::",wa=navigator.userAgent,xa=a.location.href.toString(),ya=document,za=[],Aa=!0,Ba=!1,Ca=!1,Da=!1,Ea=!1,Fa=!1,Ga=0,Ha=["log","info","warn","error"],Ia=8,Ja=null,Ka=null,La=!1,Ma=!1,Na=0,Oa=null,Pa=[],Qa=null,Ra=Array.prototype.slice,Sa=!1,Ta=0,Ua=1e3,Va=wa.match(/(ipad|iphone|ipod)/i),Wa=wa.match(/android/i),Xa=wa.match(/msie/i),Ya=wa.match(/webkit/i),Za=wa.match(/safari/i)&&!wa.match(/chrome/i),$a=wa.match(/opera/i),_a=wa.match(/(mobile|pre\/|xoom)/i)||Va||Wa,ab=!xa.match(/usehtml5audio/i)&&!xa.match(/sm2\-ignorebadua/i)&&Za&&!wa.match(/silk/i)&&wa.match(/OS X 10_6_([3-7])/i),bb=a.console!==b&&console.log!==b,cb=ya.hasFocus!==b?ya.hasFocus():null,db=Za&&(ya.hasFocus===b||!ya.hasFocus()),eb=!db,fb=/(mp3|mp4|mpa|m4a|m4b)/i,gb="about:blank",hb="data:audio/wave;base64,/UklGRiYAAABXQVZFZm10IBAAAAABAAEARKwAAIhYAQACABAAZGF0YQIAAAD//w==",ib=ya.location?ya.location.protocol.match(/http/i):null,jb=ib?"":"http://",kb=/^\s*audio\/(?:x-)?(?:mpeg4|aac|flv|mov|mp4||m4v|m4a|m4b|mp4v|3gp|3g2)\s*(?:$|;)/i,lb=["mpeg4","aac","flv","mov","mp4","m4v","f4v","m4a","m4b","mp4v","3gp","3g2"],mb=new RegExp("\\.("+lb.join("|")+")(\\?.*)?$","i");this.mimePattern=/^\s*audio\/(?:x-)?(?:mp(?:eg|3))\s*(?:$|;)/i,this.useAltURL=!ib,Q={swfBox:"sm2-object-box",swfDefault:"movieContainer",swfError:"swf_error",swfTimedout:"swf_timedout",swfLoaded:"swf_loaded",swfUnblocked:"swf_unblocked",sm2Debug:"sm2_debug",highPerf:"high_performance",flashDebug:"flash_debug"},this.hasHTML5=function(){try{return Audio!==b&&($a&&opera!==b&&opera.version()<10?new Audio(null):new Audio).canPlayType!==b}catch(a){return!1}}(),this.setup=function(a){var c=!qa.url;return a!==b&&Da&&Qa&&qa.ok()&&(a.flashVersion!==b||a.url!==b||a.html5Test!==b)&&U(N("setupLate")),q(a),Sa||(_a?(!qa.setupOptions.ignoreMobileRestrictions||qa.setupOptions.forceUseGlobalHTML5Audio)&&(Pa.push(A.globalHTML5),Sa=!0):qa.setupOptions.forceUseGlobalHTML5Audio&&(Pa.push(A.globalHTML5),Sa=!0)),!pa&&_a&&(qa.setupOptions.ignoreMobileRestrictions?Pa.push(A.ignoreMobile):((!qa.setupOptions.useHTML5Audio||qa.setupOptions.preferFlash)&&qa._wD(A.mobileUA),qa.setupOptions.useHTML5Audio=!0,qa.setupOptions.preferFlash=!1,Va?qa.ignoreFlash=!0:(Wa&&!wa.match(/android\s2\.3/i)||!Wa)&&(qa._wD(A.globalHTML5),Sa=!0))),a&&(c&&E&&a.url!==b&&qa.beginDelayedInit(),E||a.url===b||"complete"!==ya.readyState||setTimeout(C,1)),pa=!0,qa},this.ok=function(){return Qa?Da&&!Ea:qa.useHTML5Audio&&qa.hasHTML5},this.supported=this.ok,this.getMovie=function(b){return h(b)||ya[b]||a[b]},this.createSound=function(a,c){function d(){return h=S(h),qa.sounds[h.id]=new g(h),qa.soundIDs.push(h.id),qa.sounds[h.id]}var e,f,h,i=null;if(e=ta+".createSound(): ",f=e+N(Da?"notOK":"notReady"),!Da||!qa.ok())return U(f),!1;if(c!==b&&(a={id:a,url:c}),h=p(a),h.url=Z(h.url),h.id===b&&(h.id=qa.setupOptions.idPrefix+Ta++),h.id.toString().charAt(0).match(/^[0-9]$/)&&qa._wD(e+N("badID",h.id),2),qa._wD(e+h.id+(h.url?" ("+h.url+")":""),1),V(h.id,!0))return qa._wD(e+h.id+" exists",1),qa.sounds[h.id];if(aa(h))i=d(),qa.html5Only||qa._wD(h.id+": Using HTML5"),i._setup_html5(h);else{if(qa.html5Only)return qa._wD(h.id+": No HTML5 support for this sound, and no Flash. Exiting."),d();if(qa.html5.usingFlash&&h.url&&h.url.match(/data\:/i))return qa._wD(h.id+": data: URIs not supported via Flash. Exiting."),d();l>8&&(null===h.isMovieStar&&(h.isMovieStar=!!(h.serverURL||(h.type?h.type.match(kb):!1)||h.url&&h.url.match(mb))),h.isMovieStar&&(qa._wD(e+"using MovieStar handling"),h.loops>1&&n("noNSLoop"))),h=T(h,e),i=d(),8===l?sa._createSound(h.id,h.loops||1,h.usePolicyFile):(sa._createSound(h.id,h.url,h.usePeakData,h.useWaveformData,h.useEQData,h.isMovieStar,h.isMovieStar?h.bufferTime:!1,h.loops||1,h.serverURL,h.duration||null,h.autoPlay,!0,h.autoLoad,h.usePolicyFile),h.serverURL||(i.connected=!0,h.onconnect&&h.onconnect.apply(i))),h.serverURL||!h.autoLoad&&!h.autoPlay||i.load(h)}return!h.serverURL&&h.autoPlay&&i.play(),i},this.destroySound=function(a,b){if(!V(a))return!1;var c,d=qa.sounds[a];for(d.stop(),d._iO={},d.unload(),c=0;c<qa.soundIDs.length;c++)if(qa.soundIDs[c]===a){qa.soundIDs.splice(c,1);break}return b||d.destruct(!0),d=null,delete qa.sounds[a],!0},this.load=function(a,b){return V(a)?qa.sounds[a].load(b):!1},this.unload=function(a){return V(a)?qa.sounds[a].unload():!1},this.onPosition=function(a,b,c,d){return V(a)?qa.sounds[a].onposition(b,c,d):!1},this.onposition=this.onPosition,this.clearOnPosition=function(a,b,c){return V(a)?qa.sounds[a].clearOnPosition(b,c):!1},this.play=function(a,b){var c=null,d=b&&!(b instanceof Object);if(!Da||!qa.ok())return U(ta+".play(): "+N(Da?"notOK":"notReady")),!1;if(V(a,d))d&&(b={url:b});else{if(!d)return!1;d&&(b={url:b}),b&&b.url&&(qa._wD(ta+'.play(): Attempting to create "'+a+'"',1),b.id=a,c=qa.createSound(b).play())}return null===c&&(c=qa.sounds[a].play(b)),c},this.start=this.play,this.setPosition=function(a,b){return V(a)?qa.sounds[a].setPosition(b):!1},this.stop=function(a){return V(a)?(qa._wD(ta+".stop("+a+")",1),qa.sounds[a].stop()):!1},this.stopAll=function(){var a;qa._wD(ta+".stopAll()",1);for(a in qa.sounds)qa.sounds.hasOwnProperty(a)&&qa.sounds[a].stop()},this.pause=function(a){return V(a)?qa.sounds[a].pause():!1},this.pauseAll=function(){var a;for(a=qa.soundIDs.length-1;a>=0;a--)qa.sounds[qa.soundIDs[a]].pause()},this.resume=function(a){return V(a)?qa.sounds[a].resume():!1},this.resumeAll=function(){var a;for(a=qa.soundIDs.length-1;a>=0;a--)qa.sounds[qa.soundIDs[a]].resume()},this.togglePause=function(a){return V(a)?qa.sounds[a].togglePause():!1},this.setPan=function(a,b){return V(a)?qa.sounds[a].setPan(b):!1},this.setVolume=function(a,c){var d,e;{if(a===b||isNaN(a)||c!==b)return V(a)?qa.sounds[a].setVolume(c):!1;for(d=0,e=qa.soundIDs.length;e>d;d++)qa.sounds[qa.soundIDs[d]].setVolume(a)}},this.mute=function(a){var b=0;if(a instanceof String&&(a=null),a)return V(a)?(qa._wD(ta+'.mute(): Muting "'+a+'"'),qa.sounds[a].mute()):!1;for(qa._wD(ta+".mute(): Muting all sounds"),b=qa.soundIDs.length-1;b>=0;b--)qa.sounds[qa.soundIDs[b]].mute();return qa.muted=!0,!0},this.muteAll=function(){qa.mute()},this.unmute=function(a){var b;if(a instanceof String&&(a=null),a)return V(a)?(qa._wD(ta+'.unmute(): Unmuting "'+a+'"'),qa.sounds[a].unmute()):!1;for(qa._wD(ta+".unmute(): Unmuting all sounds"),b=qa.soundIDs.length-1;b>=0;b--)qa.sounds[qa.soundIDs[b]].unmute();return qa.muted=!1,!0},this.unmuteAll=function(){qa.unmute()},this.toggleMute=function(a){return V(a)?qa.sounds[a].toggleMute():!1},this.getMemoryUse=function(){var a=0;return sa&&8!==l&&(a=parseInt(sa._getMemoryUse(),10)),a},this.disable=function(c){var d;if(c===b&&(c=!1),Ea)return!1;for(Ea=!0,n("shutdown",1),d=qa.soundIDs.length-1;d>=0;d--)K(qa.sounds[qa.soundIDs[d]]);return o(c),ga.remove(a,"load",u),!0},this.canPlayMIME=function(a){var b;return qa.hasHTML5&&(b=ba({type:a})),!b&&Qa&&(b=a&&qa.ok()?!!((l>8?a.match(kb):null)||a.match(qa.mimePattern)):null),b},this.canPlayURL=function(a){var b;return qa.hasHTML5&&(b=ba({url:a})),!b&&Qa&&(b=a&&qa.ok()?!!a.match(qa.filePattern):null),b},this.canPlayLink=function(a){return a.type!==b&&a.type&&qa.canPlayMIME(a.type)?!0:qa.canPlayURL(a.href)},this.getSoundById=function(a,b){if(!a)return null;var c=qa.sounds[a];return c||b||qa._wD(ta+'.getSoundById(): Sound "'+a+'" not found.',2),c},this.onready=function(b,c){var d="onready",e=!1;if("function"!=typeof b)throw N("needFunction",d);return Da&&qa._wD(N("queue",d)),c||(c=a),s(d,b,c),t(),e=!0,e},this.ontimeout=function(b,c){var d="ontimeout",e=!1;if("function"!=typeof b)throw N("needFunction",d);return Da&&qa._wD(N("queue",d)),c||(c=a),s(d,b,c),t({type:d}),e=!0,e},this._writeDebug=function(a,c){var d,e,f="soundmanager-debug";return qa.setupOptions.debugMode?bb&&qa.useConsole&&(c&&"object"==typeof c?console.log(a,c):Ha[c]!==b?console[Ha[c]](a):console.log(a),qa.consoleOnly)?!0:(d=h(f))?(e=ya.createElement("div"),++Ga%2===0&&(e.className="sm2-alt"),c=c===b?0:parseInt(c,10),e.appendChild(ya.createTextNode(a)),c&&(c>=2&&(e.style.fontWeight="bold"),3===c&&(e.style.color="#ff3333")),d.insertBefore(e,d.firstChild),d=null,!0):!1:!1},-1!==xa.indexOf("sm2-debug=alert")&&(this._writeDebug=function(b){a.alert(b)}),this._wD=this._writeDebug,this._debug=function(){var a,b;for(n("currentObj",1),a=0,b=qa.soundIDs.length;b>a;a++)qa.sounds[qa.soundIDs[a]]._debug()},this.reboot=function(b,c){qa.soundIDs.length&&qa._wD("Destroying "+qa.soundIDs.length+" SMSound object"+(1!==qa.soundIDs.length?"s":"")+"...");var d,e,f;for(d=qa.soundIDs.length-1;d>=0;d--)qa.sounds[qa.soundIDs[d]].destruct();if(sa)try{Xa&&(Ka=sa.innerHTML),Ja=sa.parentNode.removeChild(sa)}catch(g){n("badRemove",2)}if(Ka=Ja=Qa=sa=null,qa.enabled=E=Da=La=Ma=Ba=Ca=Ea=Sa=qa.swfLoaded=!1,qa.soundIDs=[],qa.sounds={},Ta=0,pa=!1,b)za=[];else for(d in za)if(za.hasOwnProperty(d))for(e=0,f=za[d].length;f>e;e++)za[d][e].fired=!1;return c||qa._wD(ta+": Rebooting..."),qa.html5={usingFlash:null},qa.flash={},qa.html5Only=!1,qa.ignoreFlash=!1,a.setTimeout(function(){c||qa.beginDelayedInit()},20),qa},this.reset=function(){return n("reset"),qa.reboot(!0,!0)},this.getMoviePercent=function(){return sa&&"PercentLoaded"in sa?sa.PercentLoaded():null},this.beginDelayedInit=function(){Fa=!0,C(),setTimeout(function(){return Ma?!1:(G(),B(),Ma=!0,!0)},20),v()},this.destruct=function(){qa._wD(ta+".destruct()"),qa.disable(!0)},g=function(a){var c,d,e,f,g,h,i,j,k,o,q=this,r=!1,s=[],t=0,u=null;k={duration:null,time:null},this.id=a.id,this.sID=this.id,this.url=a.url,this.options=p(a),this.instanceOptions=this.options,this._iO=this.instanceOptions,this.pan=this.options.pan,this.volume=this.options.volume,this.isHTML5=!1,this._a=null,o=this.url?!1:!0,this.id3={},this._debug=function(){qa._wD(q.id+": Merged options:",q.options)},this.load=function(a){var c,d=null;if(a!==b?q._iO=p(a,q.options):(a=q.options,q._iO=a,u&&u!==q.url&&(n("manURL"),q._iO.url=q.url,q.url=null)),q._iO.url||(q._iO.url=q.url),q._iO.url=Z(q._iO.url),q.instanceOptions=q._iO,c=q._iO,qa._wD(q.id+": load ("+c.url+")"),!c.url&&!q.url)return qa._wD(q.id+": load(): url is unassigned. Exiting.",2),q;if(q.isHTML5||8!==l||q.url||c.autoPlay||qa._wD(q.id+": Flash 8 load() limitation: Wait for onload() before calling play().",1),c.url===q.url&&0!==q.readyState&&2!==q.readyState)return n("onURL",1),3===q.readyState&&c.onload&&oa(q,function(){c.onload.apply(q,[!!q.duration])}),q;if(q.loaded=!1,q.readyState=1,q.playState=0,q.id3={},aa(c))d=q._setup_html5(c),d._called_load?qa._wD(q.id+": Ignoring request to load again"):(q._html5_canplay=!1,q.url!==c.url&&(qa._wD(n("manURL")+": "+c.url),q._a.src=c.url,q.setPosition(0)),q._a.autobuffer="auto",q._a.preload="auto",q._a._called_load=!0);else{if(qa.html5Only)return qa._wD(q.id+": No flash support. Exiting."),q;if(q._iO.url&&q._iO.url.match(/data\:/i))return qa._wD(q.id+": data: URIs not supported via Flash. Exiting."),q;try{q.isHTML5=!1,q._iO=T(S(c)),q._iO.autoPlay&&(q._iO.position||q._iO.from)&&(qa._wD(q.id+": Disabling autoPlay because of non-zero offset case"),q._iO.autoPlay=!1),c=q._iO,8===l?sa._load(q.id,c.url,c.stream,c.autoPlay,c.usePolicyFile):sa._load(q.id,c.url,!!c.stream,!!c.autoPlay,c.loops||1,!!c.autoLoad,c.usePolicyFile)}catch(e){n("smError",2),m("onload",!1),H({type:"SMSOUND_LOAD_JS_EXCEPTION",fatal:!0})}}return q.url=c.url,q},this.unload=function(){return 0!==q.readyState&&(qa._wD(q.id+": unload()"),q.isHTML5?(f(),q._a&&(q._a.pause(),u=da(q._a))):8===l?sa._unload(q.id,gb):sa._unload(q.id),c()),q},this.destruct=function(a){qa._wD(q.id+": Destruct"),q.isHTML5?(f(),q._a&&(q._a.pause(),da(q._a),Sa||e(),q._a._s=null,q._a=null)):(q._iO.onfailure=null,sa._destroySound(q.id)),a||qa.destroySound(q.id,!0)},this.play=function(a,c){var d,e,f,i,k,m,n,s=!0,t=null;if(d=q.id+": play(): ",c=c===b?!0:c,a||(a={}),q.url&&(q._iO.url=q.url),q._iO=p(q._iO,q.options),q._iO=p(a,q._iO),q._iO.url=Z(q._iO.url),q.instanceOptions=q._iO,!q.isHTML5&&q._iO.serverURL&&!q.connected)return q.getAutoPlay()||(qa._wD(d+" Netstream not connected yet - setting autoPlay"),q.setAutoPlay(!0)),q;if(aa(q._iO)&&(q._setup_html5(q._iO),g()),1!==q.playState||q.paused||(e=q._iO.multiShot,e?qa._wD(d+"Already playing (multi-shot)",1):(qa._wD(d+"Already playing (one-shot)",1),q.isHTML5&&q.setPosition(q._iO.position),t=q)),null!==t)return t;if(a.url&&a.url!==q.url&&(q.readyState||q.isHTML5||8!==l||!o?q.load(q._iO):o=!1),q.loaded?qa._wD(d.substr(0,d.lastIndexOf(":"))):0===q.readyState?(qa._wD(d+"Attempting to load"),q.isHTML5||qa.html5Only?q.isHTML5?q.load(q._iO):(qa._wD(d+"Unsupported type. Exiting."),t=q):(q._iO.autoPlay=!0,q.load(q._iO)),q.instanceOptions=q._iO):2===q.readyState?(qa._wD(d+"Could not load - exiting",2),t=q):qa._wD(d+"Loading - attempting to play..."),null!==t)return t;if(!q.isHTML5&&9===l&&q.position>0&&q.position===q.duration&&(qa._wD(d+"Sound at end, resetting to position: 0"),a.position=0),q.paused&&q.position>=0&&(!q._iO.serverURL||q.position>0))qa._wD(d+"Resuming from paused state",1),q.resume();else{if(q._iO=p(a,q._iO),(!q.isHTML5&&null!==q._iO.position&&q._iO.position>0||null!==q._iO.from&&q._iO.from>0||null!==q._iO.to)&&0===q.instanceCount&&0===q.playState&&!q._iO.serverURL){if(i=function(){q._iO=p(a,q._iO),q.play(q._iO)},q.isHTML5&&!q._html5_canplay?(qa._wD(d+"Beginning load for non-zero offset case"),q.load({_oncanplay:i}),t=!1):q.isHTML5||q.loaded||q.readyState&&2===q.readyState||(qa._wD(d+"Preloading for non-zero offset case"),q.load({onload:i}),t=!1),null!==t)return t;q._iO=j()}(!q.instanceCount||q._iO.multiShotEvents||q.isHTML5&&q._iO.multiShot&&!Sa||!q.isHTML5&&l>8&&!q.getAutoPlay())&&q.instanceCount++,q._iO.onposition&&0===q.playState&&h(q),q.playState=1,q.paused=!1,q.position=q._iO.position===b||isNaN(q._iO.position)?0:q._iO.position,q.isHTML5||(q._iO=T(S(q._iO))),q._iO.onplay&&c&&(q._iO.onplay.apply(q),r=!0),q.setVolume(q._iO.volume,!0),q.setPan(q._iO.pan,!0),q.isHTML5?q.instanceCount<2?(g(),f=q._setup_html5(),q.setPosition(q._iO.position),f.play()):(qa._wD(q.id+": Cloning Audio() for instance #"+q.instanceCount+"..."),k=new Audio(q._iO.url),m=function(){ga.remove(k,"ended",m),q._onfinish(q),da(k),k=null},n=function(){ga.remove(k,"canplay",n);try{k.currentTime=q._iO.position/Ua}catch(a){U(q.id+": multiShot play() failed to apply position of "+q._iO.position/Ua)}k.play()},ga.add(k,"ended",m),q._iO.volume!==b&&(k.volume=Math.max(0,Math.min(1,q._iO.volume/100))),q.muted&&(k.muted=!0),q._iO.position?ga.add(k,"canplay",n):k.play()):(s=sa._start(q.id,q._iO.loops||1,9===l?q.position:q.position/Ua,q._iO.multiShot||!1),9!==l||s||(qa._wD(d+"No sound hardware, or 32-sound ceiling hit",2),q._iO.onplayerror&&q._iO.onplayerror.apply(q)))}return q},this.start=this.play,this.stop=function(a){var b,c=q._iO;return 1===q.playState&&(qa._wD(q.id+": stop()"),q._onbufferchange(0),q._resetOnPosition(0),q.paused=!1,q.isHTML5||(q.playState=0),i(),c.to&&q.clearOnPosition(c.to),q.isHTML5?q._a&&(b=q.position,q.setPosition(0),q.position=b,q._a.pause(),q.playState=0,q._onTimer(),f()):(sa._stop(q.id,a),c.serverURL&&q.unload()),q.instanceCount=0,q._iO={},c.onstop&&c.onstop.apply(q)),q},this.setAutoPlay=function(a){qa._wD(q.id+": Autoplay turned "+(a?"on":"off")),q._iO.autoPlay=a,q.isHTML5||(sa._setAutoPlay(q.id,a),a&&(q.instanceCount||1!==q.readyState||(q.instanceCount++,qa._wD(q.id+": Incremented instance count to "+q.instanceCount))))},this.getAutoPlay=function(){return q._iO.autoPlay},this.setPosition=function(a){a===b&&(a=0);var c,d,e=q.isHTML5?Math.max(a,0):Math.min(q.duration||q._iO.duration,Math.max(a,0));if(q.position=e,d=q.position/Ua,q._resetOnPosition(q.position),q._iO.position=e,q.isHTML5){if(q._a){if(q._html5_canplay){if(q._a.currentTime!==d){qa._wD(q.id+": setPosition("+d+")");try{q._a.currentTime=d,(0===q.playState||q.paused)&&q._a.pause()}catch(f){qa._wD(q.id+": setPosition("+d+") failed: "+f.message,2)}}}else if(d)return qa._wD(q.id+": setPosition("+d+"): Cannot seek yet, sound not ready",2),q;q.paused&&q._onTimer(!0)}}else c=9===l?q.position:d,q.readyState&&2!==q.readyState&&sa._setPosition(q.id,c,q.paused||!q.playState,q._iO.multiShot);return q},this.pause=function(a){return q.paused||0===q.playState&&1!==q.readyState?q:(qa._wD(q.id+": pause()"),q.paused=!0,q.isHTML5?(q._setup_html5().pause(),f()):(a||a===b)&&sa._pause(q.id,q._iO.multiShot),q._iO.onpause&&q._iO.onpause.apply(q),q)},this.resume=function(){var a=q._iO;return q.paused?(qa._wD(q.id+": resume()"),q.paused=!1,q.playState=1,q.isHTML5?(q._setup_html5().play(),g()):(a.isMovieStar&&!a.serverURL&&q.setPosition(q.position),sa._pause(q.id,a.multiShot)),!r&&a.onplay?(a.onplay.apply(q),r=!0):a.onresume&&a.onresume.apply(q),q):q},this.togglePause=function(){return qa._wD(q.id+": togglePause()"),0===q.playState?(q.play({position:9!==l||q.isHTML5?q.position/Ua:q.position}),q):(q.paused?q.resume():q.pause(),q)},this.setPan=function(a,c){return a===b&&(a=0),c===b&&(c=!1),q.isHTML5||sa._setPan(q.id,a),q._iO.pan=a,c||(q.pan=a,q.options.pan=a),q},this.setVolume=function(a,c){return a===b&&(a=100),c===b&&(c=!1),q.isHTML5?q._a&&(qa.muted&&!q.muted&&(q.muted=!0,q._a.muted=!0),q._a.volume=Math.max(0,Math.min(1,a/100))):sa._setVolume(q.id,qa.muted&&!q.muted||q.muted?0:a),q._iO.volume=a,c||(q.volume=a,q.options.volume=a),q},this.mute=function(){return q.muted=!0,q.isHTML5?q._a&&(q._a.muted=!0):sa._setVolume(q.id,0),q},this.unmute=function(){q.muted=!1;var a=q._iO.volume!==b;return q.isHTML5?q._a&&(q._a.muted=!1):sa._setVolume(q.id,a?q._iO.volume:q.options.volume),q},this.toggleMute=function(){return q.muted?q.unmute():q.mute()},this.onPosition=function(a,c,d){return s.push({position:parseInt(a,10),method:c,scope:d!==b?d:q,fired:!1}),q},this.onposition=this.onPosition,this.clearOnPosition=function(a,b){var c;if(a=parseInt(a,10),isNaN(a))return!1;for(c=0;c<s.length;c++)a===s[c].position&&(b&&b!==s[c].method||(s[c].fired&&t--,s.splice(c,1)))},this._processOnPosition=function(){var a,b,c=s.length;if(!c||!q.playState||t>=c)return!1;for(a=c-1;a>=0;a--)b=s[a],!b.fired&&q.position>=b.position&&(b.fired=!0,t++,b.method.apply(b.scope,[b.position]),c=s.length);return!0},this._resetOnPosition=function(a){var b,c,d=s.length;if(!d)return!1;for(b=d-1;b>=0;b--)c=s[b],c.fired&&a<=c.position&&(c.fired=!1,t--);return!0},j=function(){var a,b,c=q._iO,d=c.from,e=c.to;return b=function(){qa._wD(q.id+': "To" time of '+e+" reached."),q.clearOnPosition(e,b),q.stop()},a=function(){qa._wD(q.id+': Playing "from" '+d),null===e||isNaN(e)||q.onPosition(e,b)},null===d||isNaN(d)||(c.position=d,c.multiShot=!1,a()),c},h=function(){var a,b=q._iO.onposition;if(b)for(a in b)b.hasOwnProperty(a)&&q.onPosition(parseInt(a,10),b[a])},i=function(){var a,b=q._iO.onposition;if(b)for(a in b)b.hasOwnProperty(a)&&q.clearOnPosition(parseInt(a,10))},g=function(){q.isHTML5&&W(q)},f=function(){q.isHTML5&&X(q)},c=function(a){a||(s=[],t=0),r=!1,q._hasTimer=null,q._a=null,q._html5_canplay=!1,q.bytesLoaded=null,q.bytesTotal=null,q.duration=q._iO&&q._iO.duration?q._iO.duration:null,q.durationEstimate=null,q.buffered=[],q.eqData=[],q.eqData.left=[],q.eqData.right=[],q.failures=0,q.isBuffering=!1,q.instanceOptions={},q.instanceCount=0,q.loaded=!1,q.metadata={},q.readyState=0,q.muted=!1,q.paused=!1,q.peakData={left:0,right:0},q.waveformData={left:[],right:[]},q.playState=0,q.position=null,q.id3={}},c(),this._onTimer=function(a){var b,c,d=!1,e={};return q._hasTimer||a?(q._a&&(a||(q.playState>0||1===q.readyState)&&!q.paused)&&(b=q._get_html5_duration(),b!==k.duration&&(k.duration=b,q.duration=b,d=!0),q.durationEstimate=q.duration,c=q._a.currentTime*Ua||0,c!==k.time&&(k.time=c,d=!0),(d||a)&&q._whileplaying(c,e,e,e,e)),d):void 0},this._get_html5_duration=function(){var a=q._iO,b=q._a&&q._a.duration?q._a.duration*Ua:a&&a.duration?a.duration:null,c=b&&!isNaN(b)&&b!==1/0?b:null;return c},this._apply_loop=function(a,b){!a.loop&&b>1&&qa._wD("Note: Native HTML5 looping is infinite.",1),a.loop=b>1?"loop":""},this._setup_html5=function(a){var b,e=p(q._iO,a),f=Sa?ra:q._a,g=decodeURI(e.url);if(Sa?g===decodeURI(ha)&&(b=!0):g===decodeURI(u)&&(b=!0),f){if(f._s)if(Sa)f._s&&f._s.playState&&!b&&f._s.stop();else if(!Sa&&g===decodeURI(u))return q._apply_loop(f,e.loops),f;b||(u&&c(!1),f.src=e.url,q.url=e.url,u=e.url,ha=e.url,f._called_load=!1)}else e.autoLoad||e.autoPlay?(q._a=new Audio(e.url),q._a.load()):q._a=$a&&opera.version()<10?new Audio(null):new Audio,f=q._a,f._called_load=!1,Sa&&(ra=f);return q.isHTML5=!0,q._a=f,f._s=q,d(),q._apply_loop(f,e.loops),e.autoLoad||e.autoPlay?q.load():(f.autobuffer=!1,f.preload="auto"),f},d=function(){function a(a,b,c){return q._a?q._a.addEventListener(a,b,c||!1):null}if(q._a._added_events)return!1;var b;q._a._added_events=!0;for(b in la)la.hasOwnProperty(b)&&a(b,la[b]);return!0},e=function(){function a(a,b,c){return q._a?q._a.removeEventListener(a,b,c||!1):null}var b;qa._wD(q.id+": Removing event listeners"),q._a._added_events=!1;for(b in la)la.hasOwnProperty(b)&&a(b,la[b])},this._onload=function(a){var b,c=!!a||!q.isHTML5&&8===l&&q.duration;return b=q.id+": ",qa._wD(b+(c?"onload()":"Failed to load / invalid sound?"+(q.duration?" -":" Zero-length duration reported.")+" ("+q.url+")"),c?1:2),c||q.isHTML5||(qa.sandbox.noRemote===!0&&qa._wD(b+N("noNet"),1),qa.sandbox.noLocal===!0&&qa._wD(b+N("noLocal"),1)),q.loaded=c,q.readyState=c?3:2,q._onbufferchange(0),q._iO.onload&&oa(q,function(){q._iO.onload.apply(q,[c])}),!0},this._onbufferchange=function(a){return 0===q.playState?!1:a&&q.isBuffering||!a&&!q.isBuffering?!1:(q.isBuffering=1===a,q._iO.onbufferchange&&(qa._wD(q.id+": Buffer state change: "+a),q._iO.onbufferchange.apply(q,[a])),!0)},this._onsuspend=function(){return q._iO.onsuspend&&(qa._wD(q.id+": Playback suspended"),q._iO.onsuspend.apply(q)),!0},this._onfailure=function(a,b,c){q.failures++,qa._wD(q.id+": Failure ("+q.failures+"): "+a),q._iO.onfailure&&1===q.failures?q._iO.onfailure(a,b,c):qa._wD(q.id+": Ignoring failure")},this._onwarning=function(a,b,c){q._iO.onwarning&&q._iO.onwarning(a,b,c)},this._onfinish=function(){var a=q._iO.onfinish;q._onbufferchange(0),q._resetOnPosition(0),q.instanceCount&&(q.instanceCount--,q.instanceCount||(i(),q.playState=0,q.paused=!1,q.instanceCount=0,q.instanceOptions={},q._iO={},f(),q.isHTML5&&(q.position=0)),(!q.instanceCount||q._iO.multiShotEvents)&&a&&(qa._wD(q.id+": onfinish()"),oa(q,function(){a.apply(q)})))},this._whileloading=function(a,b,c,d){var e=q._iO;q.bytesLoaded=a,q.bytesTotal=b,q.duration=Math.floor(c),q.bufferLength=d,q.isHTML5||e.isMovieStar?q.durationEstimate=q.duration:e.duration?q.durationEstimate=q.duration>e.duration?q.duration:e.duration:q.durationEstimate=parseInt(q.bytesTotal/q.bytesLoaded*q.duration,10),q.isHTML5||(q.buffered=[{start:0,end:q.duration}]),(3!==q.readyState||q.isHTML5)&&e.whileloading&&e.whileloading.apply(q)},this._whileplaying=function(a,c,d,e,f){var g,h=q._iO;return isNaN(a)||null===a?!1:(q.position=Math.max(0,a),q._processOnPosition(),!q.isHTML5&&l>8&&(h.usePeakData&&c!==b&&c&&(q.peakData={left:c.leftPeak,right:c.rightPeak}),h.useWaveformData&&d!==b&&d&&(q.waveformData={left:d.split(","),right:e.split(",")}),h.useEQData&&f!==b&&f&&f.leftEQ&&(g=f.leftEQ.split(","),q.eqData=g,q.eqData.left=g,f.rightEQ!==b&&f.rightEQ&&(q.eqData.right=f.rightEQ.split(",")))),1===q.playState&&(q.isHTML5||8!==l||q.position||!q.isBuffering||q._onbufferchange(0),h.whileplaying&&h.whileplaying.apply(q)),!0)},this._oncaptiondata=function(a){qa._wD(q.id+": Caption data received."),q.captiondata=a,q._iO.oncaptiondata&&q._iO.oncaptiondata.apply(q,[a])},this._onmetadata=function(a,b){qa._wD(q.id+": Metadata received.");var c,d,e={};for(c=0,d=a.length;d>c;c++)e[a[c]]=b[c];q.metadata=e,q._iO.onmetadata&&q._iO.onmetadata.call(q,q.metadata)},this._onid3=function(a,b){qa._wD(q.id+": ID3 data received.");var c,d,e=[];for(c=0,d=a.length;d>c;c++)e[a[c]]=b[c];q.id3=p(q.id3,e),q._iO.onid3&&q._iO.onid3.apply(q)},this._onconnect=function(a){a=1===a,qa._wD(q.id+": "+(a?"Connected.":"Failed to connect? - "+q.url),a?1:2),q.connected=a,a&&(q.failures=0,V(q.id)&&(q.getAutoPlay()?q.play(b,q.getAutoPlay()):q._iO.autoLoad&&q.load()),q._iO.onconnect&&q._iO.onconnect.apply(q,[a]))},this._ondataerror=function(a){q.playState>0&&(qa._wD(q.id+": Data error: "+a),q._iO.ondataerror&&q._iO.ondataerror.apply(q))},this._debug()},F=function(){return ya.body||ya.getElementsByTagName("div")[0]},h=function(a){return ya.getElementById(a)},p=function(a,c){var d,e,f=a||{};d=c===b?qa.defaultOptions:c;for(e in d)d.hasOwnProperty(e)&&f[e]===b&&("object"!=typeof d[e]||null===d[e]?f[e]=d[e]:f[e]=p(f[e],d[e]));return f},oa=function(b,c){b.isHTML5||8!==l?c():a.setTimeout(c,0)},r={onready:1,ontimeout:1,defaultOptions:1,flash9Options:1,movieStarOptions:1},q=function(a,c){var d,e=!0,f=c!==b,g=qa.setupOptions,h=r;if(a===b){e=[];for(d in g)g.hasOwnProperty(d)&&e.push(d);for(d in h)h.hasOwnProperty(d)&&("object"==typeof qa[d]?e.push(d+": {...}"):qa[d]instanceof Function?e.push(d+": function() {...}"):e.push(d));return qa._wD(N("setup",e.join(", "))),!1}for(d in a)if(a.hasOwnProperty(d))if("object"!=typeof a[d]||null===a[d]||a[d]instanceof Array||a[d]instanceof RegExp)f&&h[c]!==b?qa[c][d]=a[d]:g[d]!==b?(qa.setupOptions[d]=a[d],qa[d]=a[d]):h[d]===b?(U(N(qa[d]===b?"setupUndef":"setupError",d),2),e=!1):qa[d]instanceof Function?qa[d].apply(qa,a[d]instanceof Array?a[d]:[a[d]]):qa[d]=a[d];else{if(h[d]!==b)return q(a[d],d);U(N(qa[d]===b?"setupUndef":"setupError",d),2),e=!1}return e},ga=function(){function b(a){var b=Ra.call(a),c=b.length;return f?(b[1]="on"+b[1],c>3&&b.pop()):3===c&&b.push(!1),b}function c(a,b){var c=a.shift(),d=[g[b]];f?c[d](a[0],a[1]):c[d].apply(c,a)}function d(){c(b(arguments),"add")}function e(){c(b(arguments),"remove")}var f=a.attachEvent,g={add:f?"attachEvent":"addEventListener",remove:f?"detachEvent":"removeEventListener"};return{add:d,remove:e}}(),la={abort:f(function(){qa._wD(this._s.id+": abort")}),canplay:f(function(){var a,c=this._s;if(c._html5_canplay)return!0;if(c._html5_canplay=!0,qa._wD(c.id+": canplay"),c._onbufferchange(0),a=c._iO.position===b||isNaN(c._iO.position)?null:c._iO.position/Ua,this.currentTime!==a){qa._wD(c.id+": canplay: Setting position to "+a);try{this.currentTime=a}catch(d){qa._wD(c.id+": canplay: Setting position of "+a+" failed: "+d.message,2)}}c._iO._oncanplay&&c._iO._oncanplay()}),canplaythrough:f(function(){var a=this._s;a.loaded||(a._onbufferchange(0),a._whileloading(a.bytesLoaded,a.bytesTotal,a._get_html5_duration()),a._onload(!0))}),durationchange:f(function(){var a,b=this._s;a=b._get_html5_duration(),isNaN(a)||a===b.duration||(qa._wD(this._s.id+": durationchange ("+a+")"+(b.duration?", previously "+b.duration:"")),b.durationEstimate=b.duration=a)}),ended:f(function(){var a=this._s;qa._wD(a.id+": ended"),a._onfinish()}),error:f(function(){qa._wD(this._s.id+": HTML5 error, code "+this.error.code),this._s._onload(!1)}),loadeddata:f(function(){var a=this._s;qa._wD(a.id+": loadeddata"),a._loaded||Za||(a.duration=a._get_html5_duration())}),loadedmetadata:f(function(){qa._wD(this._s.id+": loadedmetadata")}),loadstart:f(function(){qa._wD(this._s.id+": loadstart"),this._s._onbufferchange(1)}),play:f(function(){this._s._onbufferchange(0)}),playing:f(function(){qa._wD(this._s.id+": playing "+String.fromCharCode(9835)),this._s._onbufferchange(0)}),progress:f(function(a){var b,c,d,e=this._s,f=0,g="progress"===a.type,h=a.target.buffered,i=a.loaded||0,j=a.total||1;if(e.buffered=[],h&&h.length){for(b=0,c=h.length;c>b;b++)e.buffered.push({start:h.start(b)*Ua,end:h.end(b)*Ua});if(f=(h.end(0)-h.start(0))*Ua,i=Math.min(1,f/(a.target.duration*Ua)),g&&h.length>1){for(d=[],c=h.length,b=0;c>b;b++)d.push(a.target.buffered.start(b)*Ua+"-"+a.target.buffered.end(b)*Ua);qa._wD(this._s.id+": progress, timeRanges: "+d.join(", "))}g&&!isNaN(i)&&qa._wD(this._s.id+": progress, "+Math.floor(100*i)+"% loaded")}isNaN(i)||(e._whileloading(i,j,e._get_html5_duration()),i&&j&&i===j&&la.canplaythrough.call(this,a))}),ratechange:f(function(){qa._wD(this._s.id+": ratechange")}),suspend:f(function(a){var b=this._s;qa._wD(this._s.id+": suspend"),la.progress.call(this,a),b._onsuspend()}),stalled:f(function(){qa._wD(this._s.id+": stalled")}),timeupdate:f(function(){this._s._onTimer()}),waiting:f(function(){var a=this._s;qa._wD(this._s.id+": waiting"),a._onbufferchange(1)})},aa=function(a){var b;return b=a&&(a.type||a.url||a.serverURL)?a.serverURL||a.type&&e(a.type)?!1:a.type?ba({type:a.type}):ba({url:a.url})||qa.html5Only||a.url.match(/data\:/i):!1},da=function(a){var c;return a&&(c=Za?gb:qa.html5.canPlayType("audio/wav")?hb:gb,a.src=c,a._called_unload!==b&&(a._called_load=!1)),Sa&&(ha=null),c},ba=function(a){if(!qa.useHTML5Audio||!qa.hasHTML5)return!1;var c,d,f,g,h=a.url||null,i=a.type||null,j=qa.audioFormats;if(i&&qa.html5[i]!==b)return qa.html5[i]&&!e(i);if(!ca){ca=[];for(g in j)j.hasOwnProperty(g)&&(ca.push(g),j[g].related&&(ca=ca.concat(j[g].related)));ca=new RegExp("\\.("+ca.join("|")+")(\\?.*)?$","i")}return f=h?h.toLowerCase().match(ca):null,f&&f.length?f=f[1]:i?(d=i.indexOf(";"),f=(-1!==d?i.substr(0,d):i).substr(6)):c=!1,f&&qa.html5[f]!==b?c=qa.html5[f]&&!e(f):(i="audio/"+f,c=qa.html5.canPlayType({type:i}),qa.html5[f]=c,c=c&&qa.html5[i]&&!e(i)),c},fa=function(){function a(a){var b,c,d=!1,e=!1;if(!g||"function"!=typeof g.canPlayType)return d;if(a instanceof Array){for(f=0,c=a.length;c>f;f++)(qa.html5[a[f]]||g.canPlayType(a[f]).match(qa.html5Test))&&(e=!0, +qa.html5[a[f]]=!0,qa.flash[a[f]]=!!a[f].match(fb));d=e}else b=g&&"function"==typeof g.canPlayType?g.canPlayType(a):!1,d=!(!b||!b.match(qa.html5Test));return d}if(!qa.useHTML5Audio||!qa.hasHTML5)return qa.html5.usingFlash=!0,Qa=!0,!1;var c,d,e,f,g=Audio!==b?$a&&opera.version()<10?new Audio(null):new Audio:null,h={};e=qa.audioFormats;for(c in e)if(e.hasOwnProperty(c)&&(d="audio/"+c,h[c]=a(e[c].type),h[d]=h[c],c.match(fb)?(qa.flash[c]=!0,qa.flash[d]=!0):(qa.flash[c]=!1,qa.flash[d]=!1),e[c]&&e[c].related))for(f=e[c].related.length-1;f>=0;f--)h["audio/"+e[c].related[f]]=h[c],qa.html5[e[c].related[f]]=h[c],qa.flash[e[c].related[f]]=h[c];return h.canPlayType=g?a:null,qa.html5=p(qa.html5,h),qa.html5.usingFlash=_(),Qa=qa.html5.usingFlash,!0},A={notReady:"Unavailable - wait until onready() has fired.",notOK:"Audio support is not available.",domError:ta+"exception caught while appending SWF to DOM.",spcWmode:"Removing wmode, preventing known SWF loading issue(s)",swf404:ua+"Verify that %s is a valid path.",tryDebug:"Try "+ta+".debugFlash = true for more security details (output goes to SWF.)",checkSWF:"See SWF output for more debug info.",localFail:ua+"Non-HTTP page ("+ya.location.protocol+" URL?) Review Flash player security settings for this special case:\nhttp://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html\nMay need to add/allow path, eg. c:/sm2/ or /users/me/sm2/",waitFocus:ua+"Special case: Waiting for SWF to load with window focus...",waitForever:ua+"Waiting indefinitely for Flash (will recover if unblocked)...",waitSWF:ua+"Waiting for 100% SWF load...",needFunction:ua+"Function object expected for %s",badID:'Sound ID "%s" should be a string, starting with a non-numeric character',currentObj:ua+"_debug(): Current sound objects",waitOnload:ua+"Waiting for window.onload()",docLoaded:ua+"Document already loaded",onload:ua+"initComplete(): calling soundManager.onload()",onloadOK:ta+".onload() complete",didInit:ua+"init(): Already called?",secNote:"Flash security note: Network/internet URLs will not load due to security restrictions. Access can be configured via Flash Player Global Security Settings Page: http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html",badRemove:ua+"Failed to remove Flash node.",shutdown:ta+".disable(): Shutting down",queue:ua+"Queueing %s handler",smError:"SMSound.load(): Exception: JS-Flash communication failed, or JS error.",fbTimeout:"No flash response, applying ."+Q.swfTimedout+" CSS...",fbLoaded:"Flash loaded",fbHandler:ua+"flashBlockHandler()",manURL:"SMSound.load(): Using manually-assigned URL",onURL:ta+".load(): current URL already assigned.",badFV:ta+'.flashVersion must be 8 or 9. "%s" is invalid. Reverting to %s.',as2loop:"Note: Setting stream:false so looping can work (flash 8 limitation)",noNSLoop:"Note: Looping not implemented for MovieStar formats",needfl9:"Note: Switching to flash 9, required for MP4 formats.",mfTimeout:"Setting flashLoadTimeout = 0 (infinite) for off-screen, mobile flash case",needFlash:ua+"Fatal error: Flash is needed to play some required formats, but is not available.",gotFocus:ua+"Got window focus.",policy:"Enabling usePolicyFile for data access",setup:ta+".setup(): allowed parameters: %s",setupError:ta+'.setup(): "%s" cannot be assigned with this method.',setupUndef:ta+'.setup(): Could not find option "%s"',setupLate:ta+".setup(): url, flashVersion and html5Test property changes will not take effect until reboot().",noURL:ua+"Flash URL required. Call soundManager.setup({url:...}) to get started.",sm2Loaded:"SoundManager 2: Ready. "+String.fromCharCode(10003),reset:ta+".reset(): Removing event callbacks",mobileUA:"Mobile UA detected, preferring HTML5 by default.",globalHTML5:"Using singleton HTML5 Audio() pattern for this device.",ignoreMobile:"Ignoring mobile restrictions for this device."},N=function(){var a,b,c,d,e;if(a=Ra.call(arguments),d=a.shift(),e=A&&A[d]?A[d]:"",e&&a&&a.length)for(b=0,c=a.length;c>b;b++)e=e.replace("%s",a[b]);return e},S=function(a){return 8===l&&a.loops>1&&a.stream&&(n("as2loop"),a.stream=!1),a},T=function(a,b){return a&&!a.usePolicyFile&&(a.onid3||a.usePeakData||a.useWaveformData||a.useEQData)&&(qa._wD((b||"")+N("policy")),a.usePolicyFile=!0),a},U=function(a){bb&&console.warn!==b?console.warn(a):qa._wD(a)},i=function(){return!1},K=function(a){var b;for(b in a)a.hasOwnProperty(b)&&"function"==typeof a[b]&&(a[b]=i);b=null},L=function(a){a===b&&(a=!1),(Ea||a)&&qa.disable(a)},M=function(a){var b,c=null;if(a)if(a.match(/\.swf(\?.*)?$/i)){if(c=a.substr(a.toLowerCase().lastIndexOf(".swf?")+4))return a}else a.lastIndexOf("/")!==a.length-1&&(a+="/");return b=(a&&-1!==a.lastIndexOf("/")?a.substr(0,a.lastIndexOf("/")+1):"./")+qa.movieURL,qa.noSWFCache&&(b+="?ts="+(new Date).getTime()),b},y=function(){l=parseInt(qa.flashVersion,10),8!==l&&9!==l&&(qa._wD(N("badFV",l,Ia)),qa.flashVersion=l=Ia);var a=qa.debugMode||qa.debugFlash?"_debug.swf":".swf";qa.useHTML5Audio&&!qa.html5Only&&qa.audioFormats.mp4.required&&9>l&&(qa._wD(N("needfl9")),qa.flashVersion=l=9),qa.version=qa.versionNumber+(qa.html5Only?" (HTML5-only mode)":9===l?" (AS3/Flash 9)":" (AS2/Flash 8)"),l>8?(qa.defaultOptions=p(qa.defaultOptions,qa.flash9Options),qa.features.buffering=!0,qa.defaultOptions=p(qa.defaultOptions,qa.movieStarOptions),qa.filePatterns.flash9=new RegExp("\\.(mp3|"+lb.join("|")+")(\\?.*)?$","i"),qa.features.movieStar=!0):qa.features.movieStar=!1,qa.filePattern=qa.filePatterns[8!==l?"flash9":"flash8"],qa.movieURL=(8===l?"soundmanager2.swf":"soundmanager2_flash9.swf").replace(".swf",a),qa.features.peakData=qa.features.waveformData=qa.features.eqData=l>8},I=function(a,b){return sa?void sa._setPolling(a,b):!1},J=function(){if(qa.debugURLParam.test(xa)&&(qa.setupOptions.debugMode=qa.debugMode=!0),h(qa.debugID))return!1;var a,b,c,d,e;if(qa.debugMode&&!h(qa.debugID)&&(!bb||!qa.useConsole||!qa.consoleOnly)){a=ya.createElement("div"),a.id=qa.debugID+"-toggle",d={position:"fixed",bottom:"0px",right:"0px",width:"1.2em",height:"1.2em",lineHeight:"1.2em",margin:"2px",textAlign:"center",border:"1px solid #999",cursor:"pointer",background:"#fff",color:"#333",zIndex:10001},a.appendChild(ya.createTextNode("-")),a.onclick=R,a.title="Toggle SM2 debug console",wa.match(/msie 6/i)&&(a.style.position="absolute",a.style.cursor="hand");for(e in d)d.hasOwnProperty(e)&&(a.style[e]=d[e]);if(b=ya.createElement("div"),b.id=qa.debugID,b.style.display=qa.debugMode?"block":"none",qa.debugMode&&!h(a.id)){try{c=F(),c.appendChild(a)}catch(f){throw new Error(N("domError")+" \n"+f.toString())}c.appendChild(b)}}c=null},V=this.getSoundById,n=function(a,b){return a?qa._wD(N(a),b):""},R=function(){var a=h(qa.debugID),b=h(qa.debugID+"-toggle");return a?(Aa?(b.innerHTML="+",a.style.display="none"):(b.innerHTML="-",a.style.display="block"),void(Aa=!Aa)):!1},m=function(c,d,e){if(a.sm2Debugger!==b)try{sm2Debugger.handleEvent(c,d,e)}catch(f){return!1}return!0},P=function(){var a=[];return qa.debugMode&&a.push(Q.sm2Debug),qa.debugFlash&&a.push(Q.flashDebug),qa.useHighPerformance&&a.push(Q.highPerf),a.join(" ")},O=function(){var a=N("fbHandler"),b=qa.getMoviePercent(),c=Q,d={type:"FLASHBLOCK"};return qa.html5Only?!1:void(qa.ok()?(qa.didFlashBlock&&qa._wD(a+": Unblocked"),qa.oMC&&(qa.oMC.className=[P(),c.swfDefault,c.swfLoaded+(qa.didFlashBlock?" "+c.swfUnblocked:"")].join(" "))):(Qa&&(qa.oMC.className=P()+" "+c.swfDefault+" "+(null===b?c.swfTimedout:c.swfError),qa._wD(a+": "+N("fbTimeout")+(b?" ("+N("fbLoaded")+")":""))),qa.didFlashBlock=!0,t({type:"ontimeout",ignoreInit:!0,error:d}),H(d)))},s=function(a,c,d){za[a]===b&&(za[a]=[]),za[a].push({method:c,scope:d||null,fired:!1})},t=function(a){if(a||(a={type:qa.ok()?"onready":"ontimeout"}),!Da&&a&&!a.ignoreInit)return!1;if("ontimeout"===a.type&&(qa.ok()||Ea&&!a.ignoreInit))return!1;var b,c,d={success:a&&a.ignoreInit?qa.ok():!Ea},e=a&&a.type?za[a.type]||[]:[],f=[],g=[d],h=Qa&&!qa.ok();for(a.error&&(g[0].error=a.error),b=0,c=e.length;c>b;b++)e[b].fired!==!0&&f.push(e[b]);if(f.length)for(b=0,c=f.length;c>b;b++)f[b].scope?f[b].method.apply(f[b].scope,g):f[b].method.apply(this,g),h||(f[b].fired=!0);return!0},u=function(){a.setTimeout(function(){qa.useFlashBlock&&O(),t(),"function"==typeof qa.onload&&(n("onload",1),qa.onload.apply(a),n("onloadOK",1)),qa.waitForWindowLoad&&ga.add(a,"load",u)},1)},ja=function(){if(ia!==b)return ia;var c,d,e,f=!1,g=navigator,h=g.plugins,i=a.ActiveXObject;if(h&&h.length)d="application/x-shockwave-flash",e=g.mimeTypes,e&&e[d]&&e[d].enabledPlugin&&e[d].enabledPlugin.description&&(f=!0);else if(i!==b&&!wa.match(/MSAppHost/i)){try{c=new i("ShockwaveFlash.ShockwaveFlash")}catch(j){c=null}f=!!c,c=null}return ia=f,f},_=function(){var a,b,c=qa.audioFormats,d=Va&&!!wa.match(/os (1|2|3_0|3_1)\s/i);if(d?(qa.hasHTML5=!1,qa.html5Only=!0,qa.oMC&&(qa.oMC.style.display="none")):qa.useHTML5Audio&&(qa.html5&&qa.html5.canPlayType||(qa._wD("SoundManager: No HTML5 Audio() support detected."),qa.hasHTML5=!1),ab&&qa._wD(ua+"Note: Buggy HTML5 Audio in Safari on this OS X release, see https://bugs.webkit.org/show_bug.cgi?id=32159 - "+(ia?"will use flash fallback for MP3/MP4, if available":" would use flash fallback for MP3/MP4, but none detected."),1)),qa.useHTML5Audio&&qa.hasHTML5){$=!0;for(b in c)c.hasOwnProperty(b)&&c[b].required&&(qa.html5.canPlayType(c[b].type)?qa.preferFlash&&(qa.flash[b]||qa.flash[c[b].type])&&(a=!0):($=!1,a=!0))}return qa.ignoreFlash&&(a=!1,$=!0),qa.html5Only=qa.hasHTML5&&qa.useHTML5Audio&&!a,!qa.html5Only},Z=function(a){var b,c,d,e=0;if(a instanceof Array){for(b=0,c=a.length;c>b;b++)if(a[b]instanceof Object){if(qa.canPlayMIME(a[b].type)){e=b;break}}else if(qa.canPlayURL(a[b])){e=b;break}a[e].url&&(a[e]=a[e].url),d=a[e]}else d=a;return d},W=function(a){a._hasTimer||(a._hasTimer=!0,!_a&&qa.html5PollingInterval&&(null===Oa&&0===Na&&(Oa=setInterval(Y,qa.html5PollingInterval)),Na++))},X=function(a){a._hasTimer&&(a._hasTimer=!1,!_a&&qa.html5PollingInterval&&Na--)},Y=function(){var a;if(null!==Oa&&!Na)return clearInterval(Oa),Oa=null,!1;for(a=qa.soundIDs.length-1;a>=0;a--)qa.sounds[qa.soundIDs[a]].isHTML5&&qa.sounds[qa.soundIDs[a]]._hasTimer&&qa.sounds[qa.soundIDs[a]]._onTimer()},H=function(c){c=c!==b?c:{},"function"==typeof qa.onerror&&qa.onerror.apply(a,[{type:c.type!==b?c.type:null}]),c.fatal!==b&&c.fatal&&qa.disable()},ka=function(){if(!ab||!ja())return!1;var a,b,c=qa.audioFormats;for(b in c)if(c.hasOwnProperty(b)&&("mp3"===b||"mp4"===b)&&(qa._wD(ta+": Using flash fallback for "+b+" format"),qa.html5[b]=!1,c[b]&&c[b].related))for(a=c[b].related.length-1;a>=0;a--)qa.html5[c[b].related[a]]=!1},this._setSandboxType=function(a){var c=qa.sandbox;c.type=a,c.description=c.types[c.types[a]!==b?a:"unknown"],"localWithFile"===c.type?(c.noRemote=!0,c.noLocal=!1,n("secNote",2)):"localWithNetwork"===c.type?(c.noRemote=!1,c.noLocal=!0):"localTrusted"===c.type&&(c.noRemote=!1,c.noLocal=!1)},this._externalInterfaceOK=function(a){if(qa.swfLoaded)return!1;var b;return m("swf",!0),m("flashtojs",!0),qa.swfLoaded=!0,db=!1,ab&&ka(),a&&a.replace(/\+dev/i,"")===qa.versionNumber.replace(/\+dev/i,"")?void setTimeout(k,Xa?100:1):(b=ta+': Fatal: JavaScript file build "'+qa.versionNumber+'" does not match Flash SWF build "'+a+'" at '+qa.url+". Ensure both are up-to-date.",setTimeout(function(){throw new Error(b)},0),!1)},G=function(a,c){function d(){var a,b=[],c=[],d=" + ";a="SoundManager "+qa.version+(!qa.html5Only&&qa.useHTML5Audio?qa.hasHTML5?" + HTML5 audio":", no HTML5 audio support":""),qa.html5Only?qa.html5PollingInterval&&b.push("html5PollingInterval ("+qa.html5PollingInterval+"ms)"):(qa.preferFlash&&b.push("preferFlash"),qa.useHighPerformance&&b.push("useHighPerformance"),qa.flashPollingInterval&&b.push("flashPollingInterval ("+qa.flashPollingInterval+"ms)"),qa.html5PollingInterval&&b.push("html5PollingInterval ("+qa.html5PollingInterval+"ms)"),qa.wmode&&b.push("wmode ("+qa.wmode+")"),qa.debugFlash&&b.push("debugFlash"),qa.useFlashBlock&&b.push("flashBlock")),b.length&&(c=c.concat([b.join(d)])),qa._wD(a+(c.length?d+c.join(", "):""),1),ma()}function e(a,b){return'<param name="'+a+'" value="'+b+'" />'}if(Ba&&Ca)return!1;if(qa.html5Only)return y(),d(),qa.oMC=h(qa.movieID),k(),Ba=!0,Ca=!0,!1;var f,g,i,j,l,m,n,o,p=c||qa.url,q=qa.altURL||p,r="JS/Flash audio component (SoundManager 2)",s=F(),t=P(),u=null,v=ya.getElementsByTagName("html")[0];if(u=v&&v.dir&&v.dir.match(/rtl/i),a=a===b?qa.id:a,y(),qa.url=M(ib?p:q),c=qa.url,qa.wmode=!qa.wmode&&qa.useHighPerformance?"transparent":qa.wmode,null!==qa.wmode&&(wa.match(/msie 8/i)||!Xa&&!qa.useHighPerformance)&&navigator.platform.match(/win32|win64/i)&&(Pa.push(A.spcWmode),qa.wmode=null),f={name:a,id:a,src:c,quality:"high",allowScriptAccess:qa.allowScriptAccess,bgcolor:qa.bgColor,pluginspage:jb+"www.macromedia.com/go/getflashplayer",title:r,type:"application/x-shockwave-flash",wmode:qa.wmode,hasPriority:"true"},qa.debugFlash&&(f.FlashVars="debug=1"),qa.wmode||delete f.wmode,Xa)g=ya.createElement("div"),j=['<object id="'+a+'" data="'+c+'" type="'+f.type+'" title="'+f.title+'" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0">',e("movie",c),e("AllowScriptAccess",qa.allowScriptAccess),e("quality",f.quality),qa.wmode?e("wmode",qa.wmode):"",e("bgcolor",qa.bgColor),e("hasPriority","true"),qa.debugFlash?e("FlashVars",f.FlashVars):"","</object>"].join("");else{g=ya.createElement("embed");for(i in f)f.hasOwnProperty(i)&&g.setAttribute(i,f[i])}if(J(),t=P(),s=F())if(qa.oMC=h(qa.movieID)||ya.createElement("div"),qa.oMC.id)o=qa.oMC.className,qa.oMC.className=(o?o+" ":Q.swfDefault)+(t?" "+t:""),qa.oMC.appendChild(g),Xa&&(l=qa.oMC.appendChild(ya.createElement("div")),l.className=Q.swfBox,l.innerHTML=j),Ca=!0;else{if(qa.oMC.id=qa.movieID,qa.oMC.className=Q.swfDefault+" "+t,m=null,l=null,qa.useFlashBlock||(qa.useHighPerformance?m={position:"fixed",width:"8px",height:"8px",bottom:"0px",left:"0px",overflow:"hidden"}:(m={position:"absolute",width:"6px",height:"6px",top:"-9999px",left:"-9999px"},u&&(m.left=Math.abs(parseInt(m.left,10))+"px"))),Ya&&(qa.oMC.style.zIndex=1e4),!qa.debugFlash)for(n in m)m.hasOwnProperty(n)&&(qa.oMC.style[n]=m[n]);try{Xa||qa.oMC.appendChild(g),s.appendChild(qa.oMC),Xa&&(l=qa.oMC.appendChild(ya.createElement("div")),l.className=Q.swfBox,l.innerHTML=j),Ca=!0}catch(w){throw new Error(N("domError")+" \n"+w.toString())}}return Ba=!0,d(),!0},B=function(){return qa.html5Only?(G(),!1):sa?!1:qa.url?(sa=qa.getMovie(qa.id),sa||(Ja?(Xa?qa.oMC.innerHTML=Ka:qa.oMC.appendChild(Ja),Ja=null,Ba=!0):G(qa.id,qa.url),sa=qa.getMovie(qa.id)),"function"==typeof qa.oninitmovie&&setTimeout(qa.oninitmovie,1),na(),!0):(n("noURL"),!1)},v=function(){setTimeout(w,1e3)},x=function(){a.setTimeout(function(){U(ua+"useFlashBlock is false, 100% HTML5 mode is possible. Rebooting with preferFlash: false..."),qa.setup({preferFlash:!1}).reboot(),qa.didFlashBlock=!0,qa.beginDelayedInit()},1)},w=function(){var b,c=!1;return qa.url?La?!1:(La=!0,ga.remove(a,"load",v),ia&&db&&!cb?(n("waitFocus"),!1):(Da||(b=qa.getMoviePercent(),b>0&&100>b&&(c=!0)),void setTimeout(function(){return b=qa.getMoviePercent(),c?(La=!1,qa._wD(N("waitSWF")),a.setTimeout(v,1),!1):(Da||(qa._wD(ta+": No Flash response within expected time. Likely causes: "+(0===b?"SWF load failed, ":"")+"Flash blocked or JS-Flash security error."+(qa.debugFlash?" "+N("checkSWF"):""),2),!ib&&b&&(n("localFail",2),qa.debugFlash||n("tryDebug",2)),0===b&&qa._wD(N("swf404",qa.url),1),m("flashtojs",!1,": Timed out"+(ib?" (Check flash security or flash blockers)":" (No plugin/missing SWF?)"))),void(!Da&&eb&&(null===b?qa.useFlashBlock||0===qa.flashLoadTimeout?(qa.useFlashBlock&&O(),n("waitForever")):!qa.useFlashBlock&&$?x():(n("waitForever"),t({type:"ontimeout",ignoreInit:!0,error:{type:"INIT_FLASHBLOCK"}})):0===qa.flashLoadTimeout?n("waitForever"):!qa.useFlashBlock&&$?x():L(!0))))},qa.flashLoadTimeout))):!1},z=function(){function b(){ga.remove(a,"focus",z)}return cb||!db?(b(),!0):(eb=!0,cb=!0,n("gotFocus"),La=!1,v(),b(),!0)},na=function(){Pa.length&&(qa._wD("SoundManager 2: "+Pa.join(" "),1),Pa=[])},ma=function(){na();var a,b=[];if(qa.useHTML5Audio&&qa.hasHTML5){for(a in qa.audioFormats)qa.audioFormats.hasOwnProperty(a)&&b.push(a+" = "+qa.html5[a]+(!qa.html5[a]&&Qa&&qa.flash[a]?" (using flash)":qa.preferFlash&&qa.flash[a]&&Qa?" (preferring flash)":qa.html5[a]?"":" ("+(qa.audioFormats[a].required?"required, ":"")+"and no flash support)"));qa._wD("SoundManager 2 HTML5 support: "+b.join(", "),1)}},o=function(b){if(Da)return!1;if(qa.html5Only)return n("sm2Loaded",1),Da=!0,u(),m("onload",!0),!0;var c,d=qa.useFlashBlock&&qa.flashLoadTimeout&&!qa.getMoviePercent(),e=!0;return d||(Da=!0),c={type:!ia&&Qa?"NO_FLASH":"INIT_TIMEOUT"},qa._wD("SoundManager 2 "+(Ea?"failed to load":"loaded")+" ("+(Ea?"Flash security/load error":"OK")+") "+String.fromCharCode(Ea?10006:10003),Ea?2:1),Ea||b?(qa.useFlashBlock&&qa.oMC&&(qa.oMC.className=P()+" "+(null===qa.getMoviePercent()?Q.swfTimedout:Q.swfError)),t({type:"ontimeout",error:c,ignoreInit:!0}),m("onload",!1),H(c),e=!1):m("onload",!0),Ea||(qa.waitForWindowLoad&&!Fa?(n("waitOnload"),ga.add(a,"load",u)):(qa.waitForWindowLoad&&Fa&&n("docLoaded"),u())),e},j=function(){var a,c=qa.setupOptions;for(a in c)c.hasOwnProperty(a)&&(qa[a]===b?qa[a]=c[a]:qa[a]!==c[a]&&(qa.setupOptions[a]=qa[a]))},k=function(){function b(){ga.remove(a,"load",qa.beginDelayedInit)}if(Da)return n("didInit"),!1;if(qa.html5Only)return Da||(b(),qa.enabled=!0,o()),!0;B();try{sa._externalInterfaceTest(!1),I(!0,qa.flashPollingInterval||(qa.useHighPerformance?10:50)),qa.debugMode||sa._disableDebug(),qa.enabled=!0,m("jstoflash",!0),qa.html5Only||ga.add(a,"unload",i)}catch(c){return qa._wD("js/flash exception: "+c.toString()),m("jstoflash",!1),H({type:"JS_TO_FLASH_EXCEPTION",fatal:!0}),L(!0),o(),!1}return o(),b(),!0},C=function(){return E?!1:(E=!0,j(),J(),!ia&&qa.hasHTML5&&(qa._wD("SoundManager 2: No Flash detected"+(qa.useHTML5Audio?". Trying HTML5-only mode.":", enabling HTML5."),1),qa.setup({useHTML5Audio:!0,preferFlash:!1})),fa(),!ia&&Qa&&(Pa.push(A.needFlash),qa.setup({flashLoadTimeout:1})),ya.removeEventListener&&ya.removeEventListener("DOMContentLoaded",C,!1),B(),!0)},ea=function(){return"complete"===ya.readyState&&(C(),ya.detachEvent("onreadystatechange",ea)),!0},D=function(){Fa=!0,C(),ga.remove(a,"load",D)},ja(),ga.add(a,"focus",z),ga.add(a,"load",v),ga.add(a,"load",D),ya.addEventListener?ya.addEventListener("DOMContentLoaded",C,!1):ya.attachEvent?ya.attachEvent("onreadystatechange",ea):(m("onload",!1),H({type:"NO_DOM2_EVENTS",fatal:!0}))}if(!a||!a.document)throw new Error("SoundManager requires a browser with window and document objects.");var d=null;a.SM2_DEFER!==b&&SM2_DEFER||(d=new c),"object"==typeof module&&module&&"object"==typeof module.exports?(module.exports.SoundManager=c,module.exports.soundManager=d):"function"==typeof define&&define.amd&&define(function(){function b(b){if(!a.soundManager&&b instanceof Function){var d=b(c);d instanceof c&&(a.soundManager=d)}return a.soundManager}return{constructor:c,getInstance:b}}),a.SoundManager=c,a.soundManager=d}(window),window.JST["apps/album/show/tpl/album_with_songs.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="album album--with-songs">\n <div class="region-album-side">\n <div class="region-album-meta"></div>\n </div>\n <div class="region-album-content">\n <div class="region-album-songs"></div>\n </div>\n</div>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/album/show/tpl/details_meta.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="region-details-top">\n <div class="region-details-title">\n <h2><span class="title">')),d(this.label),d(b('</span> <span class="sub"><a href="#music/albums?year=')),d(this.year),d(b('">')),d(this.year),d(b("</a></span></h2>\n </div>\n ")),this.rating&&(d(b('\n <div class="region-details-rating">\n ')),d(this.rating),d(b(" <i></i>\n </div>\n "))),d(b('\n</div>\n\n<div class="region-details-meta-below">\n\n <ul class="meta">\n ')),this.artist&&(d(b("\n <li><label>")),d(tr("artist")),d(b(':</label> <span><a href="#music/artist/')),d(this.artistid),d(b('">')),d(this.artist),d(b("</a></span></li>\n "))),d(b("\n ")),this.genre.length>0&&(d(b("\n <li><label>")),d(t.ngettext("genre","genres",this.genre.length)),d(b(":</label> <span>")),d(b(helpers.url.filterLinks("music/albums","genre",this.genre))),d(b("</span></li>\n "))),d(b("\n ")),this.style.length&&(d(b("\n <li><label>")),d(t.ngettext("style","styles",this.style.length)),d(b(":</label> <span>")),d(b(helpers.url.filterLinks("music/albums","style",this.style))),d(b("</span></li>\n "))),d(b("\n ")),this.albumlabel&&(d(b("\n <li><label>")),d(tr("label")),d(b(":</label> <span>")),d(b(helpers.url.filterLinks("music/albums","albumlabel",[this.albumlabel]))),d(b("</span></li>\n "))),d(b('\n </ul>\n\n <div class="description">')),d(this.description),d(b('</div>\n\n <ul class="inline-links">\n <li class="btn-flat-play play">')),d(tr("Play")),d(b('</li>\n <li class="btn-flat-add add">')),d(tr("Queue")),d(b('</li>\n <li class="btn-flat-stream localplay">')),d(tr("Stream")),d(b('</li>\n <li class="more-actions dropdown">\n <span class="btn-flat-more" data-toggle="dropdown" aria-expanded="true">')),d(tr("more")),d(b('</span>\n <ul class="dropdown-menu pull-right">\n <li class="localadd">')),d(tr("Add to playlist")),d(b('</li>\n <li class="divider"></li>\n <li class="dropdown-submenu internal-search">')),d(tr("Chorus Search")),d(b('\n <ul class="dropdown-menu">\n ')),d(b(helpers.entities.getAddonSearchMenuItems(this.label))),d(b('\n </ul>\n </li>\n <li class="dropdown-submenu external-search">')),d(tr("External Search")),d(b('\n <ul class="dropdown-menu">\n <li data-type="google" data-query="')),d(this.artist),d(b(" ")),d(this.label),d(b('">Google</li>\n <li data-type="soundcloud" data-query="')),d(this.artist),d(b('">SoundCloud</li>\n </ul>\n </li>\n <li class="youtube-search" data-query="')),d(this.artist),d(b(" ")),d(this.label),d(b('">')),d(tr("YouTube Search")),d(b('</li>\n <li class="divider"></li>\n <li class="edit">')),d(tr("Edit")),d(b("</li>\n </ul>\n </li>\n </ul>\n\n</div>\n"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/artist/show/tpl/details_meta.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="region-details-top">\n <div class="region-details-title">\n <h2>')),d(this.label),d(b('</h2>\n </div>\n</div>\n\n<div class="region-details-meta-below">\n\n <ul class="meta">\n ')),this.genre.length>0&&(d(b("\n <li><label>")),d(t.ngettext("genre","genres",this.genre.length)),d(b(":</label> <span>")),d(b(helpers.url.filterLinks("music/artists","genre",this.genre))),d(b("</span></li>\n "))),d(b("\n ")),this.style.length&&(d(b("\n <li><label>")),d(t.ngettext("style","styles",this.style.length)),d(b(":</label> <span>")),d(b(helpers.url.filterLinks("music/artists","style",this.style))),d(b("</span></li>\n "))),d(b("\n ")),this.formed&&(d(b("\n <li><label>")),d(tr("formed")),d(b(":</label> <span>")),d(this.formed),d(b("</span></li>\n "))),d(b("\n ")),this.yearsactive&&this.yearsactive.length>0&&(d(b("\n <li><label>")),d(tr("years active")),d(b(":</label> <span>")),d(this.yearsactive),d(b("</span></li>\n "))),d(b("\n ")),this.born&&(d(b("\n <li><label>")),d(tr("born")),d(b(":</label> <span>")),d(this.born),d(b("</span></li>\n "))),d(b("\n ")),this.died&&(d(b("\n <li><label>")),d(tr("died")),d(b(":</label> <span>")),d(this.died),d(b("</span></li>\n "))),d(b("\n ")),this.disbanded&&(d(b("\n <li><label>")),d(tr("disbanded")),d(b(":</label> <span>")),d(this.disbanded),d(b("</span></li>\n "))),d(b('\n </ul>\n\n <div class="description">')),d(this.description),d(b('</div>\n\n <ul class="inline-links">\n <li class="btn-flat-play play">')),d(tr("Play")),d(b('</li>\n <li class="btn-flat-add add">')),d(tr("Queue")),d(b('</li>\n <li class="btn-flat-stream localplay">')),d(tr("Stream")),d(b('</li>\n <li class="more-actions dropdown">\n <span class="btn-flat-more" data-toggle="dropdown" aria-expanded="true">')),d(tr("more")),d(b('</span>\n <ul class="dropdown-menu pull-right">\n <li class="localadd">')),d(tr("Add to playlist")),d(b('</li>\n <li class="divider"></li>\n <li class="dropdown-submenu internal-search">')),d(tr("Chorus Search")),d(b('\n <ul class="dropdown-menu">\n ')),d(b(helpers.entities.getAddonSearchMenuItems(this.label))),d(b('\n </ul>\n </li>\n <li class="dropdown-submenu external-search">')),d(tr("External Search")),d(b('\n <ul class="dropdown-menu">\n <li data-type="google" data-query="')),d(this.label),d(b('">Google</li>\n <li data-type="soundcloud" data-query="')),d(this.label),d(b('">SoundCloud</li>\n </ul>\n </li>\n <li class="youtube-search" data-query="')),d(this.label),d(b('">')),d(tr("YouTube Search")),d(b('</li>\n <li class="divider"></li>\n <li class="edit">')),d(tr("Edit")),d(b("</li>\n </ul>\n </li>\n </ul>\n\n</div>\n"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/browser/list/tpl/back_button.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<i class="mdi thumb"></i><div class="title">')),d(t.gettext("Back")),d(b("</div>"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/browser/list/tpl/file.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="thumb" style="background-image: url(\'')),d(this.thumbnail),d(b('\')"><div class="mdi play"></div></div>\n<div class="title" title="')),d(helpers.global.stripTags(this.label)),d(b('">')),d(b(this.label)),d(b('</div>\n<ul class="actions">\n <li class="menu dropdown">\n <i data-toggle="dropdown" class="mdi"></i>\n <ul class="dropdown-menu pull-right"></ul>\n </li>\n</ul>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/browser/list/tpl/folder_layout.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="folder-layout">\n <div class="loading-bar"><div class="inner"><div class="loader-small-inline"></div> <span>')),d(tr("Loading folder...")),d(b('</span></div></div>\n <div class="path"></div>\n <ul class="actions">\n <li class="dropdown sort-wrapper">\n <i class="sort-toggle" data-toggle="dropdown" title="')),d(tr("Sort")),d(b('"></i>\n <ul class="sorts dropdown-menu pull-right">\n <li data-sort="none">')),d(tr("default")),d(b('<i></i></li>\n <li data-sort="label">')),d(tr("title")),d(b('<i></i></li>\n <li data-sort="dateadded">')),d(tr("date added")),d(b('<i></i></li>\n <li data-sort="random">')),d(tr("random")),d(b('<i></i></li>\n </ul>\n </li>\n <li class="dropdown context-wrapper">\n <i class="context-toggle" data-toggle="dropdown" title="')),d(tr("Actions")),d(b('"></i>\n <ul class="dropdown-menu pull-right">\n <li class="play">')),d(tr("play files")),d(b('<i></i></li>\n <li class="queue">')),d(tr("queue files")),d(b('<i></i></li>\n </ul>\n </li>\n </ul>\n\n\n <div class="folder-container">\n <div class="files">\n </div>\n <div class="folders-pane">\n <div class="back"></div>\n <div class="folders">\n <div class="intro">\n <h3><span class="mdi-navigation-arrow-back text-dim"></span> ')),d(tr("Browse files and add-ons")),d(b("</h3>\n <p>")),d(tr("This is where you can browse all Kodi content, not just what is in the library. Browse by source or add-on.")),d(b("</p>\n </div>\n </div>\n </div>\n </div>\n</div>"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/browser/list/tpl/path.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="title">')),d(this.label),d(b("</div>"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/browser/list/tpl/source.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="source source-')),d(this.media),d(b('">\n ')),d(this.label),d(b("\n</div>"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){ +return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/browser/list/tpl/source_set.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b("<h3>")),d(this.label),d(b('</h3>\n<ul class="sources"></ul>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/cast/list/tpl/cast.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<a href="#')),d(this.origin),d(b("?cast=")),d(this.name),d(b('" title="')),d(this.name),d(b(" (")),d(this.role),d(b(')">\n <div class="thumb">\n <img src="')),d(this.thumbnail),d(b('" />\n </div>\n <div class="meta">\n <strong>')),d(this.name),d(b('</strong>\n <span title="')),d(this.role),d(b('">')),d(this.role),d(b('</span>\n </div>\n</a>\n<ul class="actions">\n <li class="imdb" title="IMDb search ')),d(this.name),d(b('"></li>\n <li class="google" title="Google search ')),d(this.name),d(b('"></li>\n</ul>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/category/list/tpl/item.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<a href="#')),d(this.url),d(b('">\n <span>')),d(this.title),d(b("</span>\n</a>"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/epg/list/tpl/channel.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b("<h3>")),d(this.channel),d(b('</h3>\n<ul class="items">\n <li class="play">')),d(tr("Play")),d(b('</li>\n <li class="record">')),d(tr("Record")),d(b("</li>\n</ul>"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/epg/list/tpl/programme.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="title">\n <strong>')),d(this.label),d(b('</strong>\n</div>\n<div class="date">\n ')),d(this.start.toString("h:mmtt").toLowerCase()),d(b(" - ")),d(this.end.toString("h:mmtt").toLowerCase()),d(b(" (")),d(this.runtime),d(b("min)<br />\n ")),d(this.start.toString("dddd, dS MMM")),d(b('\n</div>\n<div class="plot">')),d(this.plot),d(b('</div>\n<div class="entity-progress">\n <div class="current-progress" style="width: ')),d(this.progresspercentage),d(b('%" title="')),d(Math.round(this.progresspercentage)),d(b("% ")),d(tr("complete")),d(b('"></div>\n</div>\n<ul class="actions">\n ')),this.isactive?(d(b('\n <li class="play" title="')),d(tr("Play")),d(b('"></li>\n <li class="record" title="')),d(tr("Record")),d(b('"></li>\n '))):(d(b("\n ")),this.wasactive||(d(b('\n <li class="toggle-timer" title="')),d(tr("Toggle timer")),d(b('"></li>\n '))),d(b("\n "))),d(b("\n</ul>"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/external/youtube/tpl/youtube.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<img src="')),d(this.thumbnail),d(b('" class="thumb" />\n<h3>')),d(this.title),d(b("</h3>\n")),d(this.addonEnabled?b('\n <span class="play flat-btn action">Play in Kodi</span>\n <span class="localplay flat-btn action">Play in browser</span>\n'):b('\n <span class="play flat-btn action">Play in browser</span>\n')),d(b("\n"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/filter/show/tpl/filter_options.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="options-search-wrapper">\n <input class="options-search" value="" />\n</div>\n<div class="deselect-all">')),d(t.gettext("Deselect all")),d(b('</div>\n<ul class="selection-list"></ul>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/filter/show/tpl/filters_bar.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<span class="filters-active-all">')),d(this.filters),d(b('</span><i class="remove"></i>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/filter/show/tpl/filters_ui.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="filters-container">\n\n <div class="filters-current filter-pane">\n <div class="nav-section"></div>\n\n <h3 class="open-filters">')),d(t.gettext("Filters")),d(b('<i></i></h3>\n <div class="filters-active"></div>\n\n <h3>')),d(t.gettext("Sort")),d(b('</h3>\n <div class="list sort-options"></div>\n </div>\n\n <div class="filters-page filter-pane">\n <h3 class="close-filters">')),d(t.gettext("Select a filter")),d(b('</h3>\n <div class="list filters-list"></div>\n </div>\n\n <div class="filters-options filter-pane">\n <h3 class="close-options">')),d(t.gettext("Select an option")),d(b('</h3>\n <div class="list filter-options-list"></div>\n </div>\n\n</div>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/filter/show/tpl/list_item.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b(this.title))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/help/overview/tpl/overview.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b("<h1>")),d(tr("About Chorus")),d(b("</h1>\n<h2>")),d(tr("Status report")),d(b('</h2>\n<div class="help--overview--report">\n <ul>\n <li class="report-chorus-version"><strong>Chorus ')),d(tr("version")),d(b('</strong><span></span></li>\n <li class="report-kodi-version"><strong>Kodi ')),d(tr("version")),d(b('</strong><span></span></li>\n <li class="report-websockets"><strong>')),d(tr("Remote control")),d(b('</strong><span></span></li>\n <li class="report-local-audio"><strong>')),d(tr("Local audio")),d(b('</strong><span></span></li>\n </ul>\n</div>\n<div class="help--overview--header"></div>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/input/remote/tpl/remote_control.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div id="remote-background" class="close-remote"></div>\n<div class="remote kodi-remote">\n <div class="toggle-visibility"></div>\n <div class="playing-area">\n\n </div>\n <div class="main-controls">\n <div class="direction">\n <div class="pad">\n <div class="ibut mdi-hardware-keyboard-arrow-left left input-button" data-type="Left"></div>\n <div class="ibut mdi-hardware-keyboard-arrow-up up input-button" data-type="Up"></div>\n <div class="ibut mdi-hardware-keyboard-arrow-down down input-button" data-type="Down"></div>\n <div class="ibut mdi-hardware-keyboard-arrow-right right input-button" data-type="Right"></div>\n <div class="ibut mdi-image-brightness-1 ok input-button" data-type="Select"></div>\n </div>\n </div>\n <div class="buttons">\n <div class="ibut mdi-action-settings-power power-button"></div>\n <div class="ibut mdi-navigation-more-vert input-button" data-type="ContextMenu"></div>\n <div class="ibut mdi-action-info info-button" data-type="Info"></div>\n </div>\n </div>\n <div class="secondary-controls">\n <div class="ibut mdi-hardware-keyboard-return input-button" data-type="Back"></div>\n <div class="ibut mdi-av-stop player-button" data-type="Stop"></div>\n <div class="ibut mdi-maps-store-mall-directory input-button" data-type="Home"></div>\n </div>\n\n</div>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/input/remote/tpl/system.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){var a,c,e,f;for(d(b('<ul class="system-menu__options options">\n ')),f=this.actions,c=0,e=f.length;e>c;c++)a=f[c],d(b('\n <li data-action="')),d(a.id),d(b('">')),d(a.title),d(b("</li>\n "));d(b("\n</ul>"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/lab/apiBrowser/tpl/api_browser_landing.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="api-browser--landing page">\n <h2>')),d(t.gettext("Kodi API browser")),d(b('</h2>\n <h4><a href="#lab">')),d(t.gettext("Chorus lab")),d(b('</a></h4>\n <div class="api-browser--content">\n <p>')),d(t.gettext("This is a tool to test out the api. Select a method then execute it with parameters.")),d(b('</p>\n <br />\n <div class="alert alert-dismissable alert-warning">\n <button type="button" class="close" data-dismiss="alert">×</button>\n <h4>')),d(t.gettext("Warning")),d(b("</h4>\n <p>")),d(t.gettext("You could potentially damage your system with this and there are no sanity checks. Use at own risk.")),d(b("<br /></p>\n </div>\n </div>\n</div>"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/lab/apiBrowser/tpl/api_method_item.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="api-method--item">\n <h4 class="method">')),d(this.method),d(b('</h4>\n <p class="description">')),d(this.description),d(b("</p>\n</div>\n\n"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/lab/apiBrowser/tpl/api_method_list.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="api-methods--list">\n <p class="search-box"><input type="text" id="api-search" class="api-methods--search" /></p>\n <ul class="items"></ul>\n</div>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/lab/apiBrowser/tpl/api_method_page.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('\n<div class="api-method--info page">\n <h2 class="method"><a href="http://kodi.wiki/view/JSON-RPC_API/v6#')),d(this.method),d(b('" target="_blank">')),d(this.method),d(b('</a></h2>\n <p class="description">')),d(this.description),d(b("</p>\n\n</div>\n\n")),"method"===this.type&&(d(b('\n <div class="api-method--execute">\n <h3>Execute <strong>')),d(this.method),d(b('</strong> with these params:</h3>\n <textarea class="api-method--params" placeholder=\'Eg. ["arg", "foo", true]\'></textarea>\n <p class="description">Parameters get parsed by\n <a href="https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse" target="_blank">JSON.parse</a>.\n Check the console for response objects, you will get an \'unexpected token\' error if parsing failed.\n Params should be an array \'[]\' matching below \'Method params\'. Only use double quotes for strings/keys.\n </p>\n <p class="description">\n Pass params as array Eg. [true] or [255, ["born", "formed", "thumbnail"]] or [] or [255]. Brackets required.<br />\n Pass params as object Eg. {songid: 255} or {songid: 255, fields: ["born", "formed", "thumbnail"]}. Braces required.<br />\n </p>\n <p><button class="btn btn-primary" id="send-command">Send Command</button></p>\n\n </div>\n'))),d(b('\n\n<div class="api-method--result" id="api-result"></div>\n\n<h3>')),"method"===this.type&&d(b("Method ")),d(b('Params</h3>\n<div class="api-method--params"></div>\n\n')),"method"===this.type&&d(b('\n <hr />\n <h3>Method Returns</h3>\n <div class="api-method--return"></div>\n'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/lab/iconBrowser/tpl/icon_browser_page.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<h3>Material Icons</h3>\n<ul id="icons-material"></ul>\n\n<h3>Custom Icons</h3>\n<ul id="icons-custom"></ul>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/lab/lab/tpl/lab_item.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<a class="lab-item" href="#')),d(this.path),d(b('">\n <h4>')),d(this.title),d(b("</h4>\n <p>")),d(this.description),d(b("</p>\n</a>"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/landing/show/tpl/landing_page.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<a id="landing-hero"></a>\n<div class="landing-sections">\n <div id="landing-section-1"></div>\n <div id="landing-section-2"></div>\n <div id="landing-section-3"></div>\n <div id="landing-section-4"></div>\n <div id="landing-section-5"></div>\n <div id="landing-section-6"></div>\n</div>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/loading/show/tpl/loading_page.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div id="loading-page">\n <div class="spinner-double-section-far"></div>\n <h2>')),d(t.gettext("Just a sec...")),d(b("</h2>\n</div>\n\n"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/localPlaylist/list/tpl/playlist.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<span class="item">')),d(b(this.title)),d(b("</span>"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/localPlaylist/list/tpl/playlist_layout.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="local-playlist-header">\n <h2></h2>\n <div class="dropdown">\n <i data-toggle="dropdown"></i>\n <ul class="dropdown-menu">\n <li class="play">')),d(tr("Play in Kodi")),d(b('</li>\n <li class="localplay">')),d(tr("Play in browser")),d(b('</li>\n <li class="export">')),d(tr("Export list")),d(b('</li>\n <div class="divider"></div>\n <li class="rename">')),d(tr("Rename playlist")),d(b('</li>\n <li class="clear">')),d(tr("Clear playlist")),d(b('</li>\n <li class="delete">')),d(tr("Delete playlist")),d(b('</li>\n </ul>\n </div>\n</div>\n<div class="item-container">\n <div class="empty-content">')),d(t.gettext("Empty playlist, you should probably add something to it?")),d(b("</div>\n</div>"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/localPlaylist/list/tpl/playlist_list.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<h3></h3>\n<ul class="lists options"></ul>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/localPlaylist/list/tpl/playlist_sidebar_layout.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="current-lists"></div>\n<div class="new-list">')),d(tr("New playlist")),d(b("</div>"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/movie/show/tpl/content.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="section-content">\n <h2>')),d(t.gettext("Synopsis")),d(b("</h2>\n ")),this.mediaTrailer&&"youtube"===this.mediaTrailer.source&&(d(b('\n <div class="trailer ')),d(this.mediaTrailer.source),d(b('">\n <img src="')),d(b(this.mediaTrailer.img)),d(b('" />\n </div>\n '))),d(b("\n <p>")),d(this.plot),d(b('</p>\n <ul class="inline-links">\n <li>')),d(b(helpers.url.imdbUrl(this.imdbnumber,"View on IMDb"))),d(b("</li>\n </ul>\n</div>\n\n")),this.cast.length>0&&(d(b('\n <div class="section-content">\n <h2>')),d(t.gettext("Full cast")),d(b('</h2>\n <div class="region-cast"></div>\n </div>\n'))),d(b('\n\n<div class="region-more-1"></div>\n<div class="region-more-2"></div>\n<div class="region-more-3"></div>\n<div class="region-more-4"></div>\n<div class="region-more-5"></div>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/movie/show/tpl/details_meta.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){var a,c,e,f;if(d(b('<div class="region-details-top">\n <div class="region-details-title">\n <h2><span class="title">')),d(this.label),d(b('</span> <span class="sub"><a href="#movies?year=')),d(this.year),d(b('">')),d(this.year),d(b('</a></span></h2>\n </div>\n <div class="region-details-rating">\n ')),d(this.rating),d(b(' <i></i>\n </div>\n</div>\n\n<div class="region-details-meta-below">\n\n <div class="region-details-subtext">\n <div class="runtime">\n ')),d(helpers.global.formatTime(helpers.global.secToTime(this.runtime))),d(b('\n </div>\n </div>\n\n <div class="tagline">')),d(this.plotoutline),d(b('</div>\n\n <ul class="meta">\n ')),this.genre.length>0&&(d(b("\n <li><label>")),d(t.gettext("genre")),d(b(":</label> <span>")),d(b(helpers.url.filterLinks("tvshows","genre",this.genre))),d(b("</span></li>\n "))),d(b("\n ")),this.director.length>0&&(d(b("\n <li><label>")),d(t.ngettext("Director","Directors",this.director.length)),d(b(":</label> <span>")),d(b(helpers.url.filterLinks("movies","director",this.director))),d(b("</span></li>\n "))),d(b("\n ")),this.writer.length>0&&(d(b("\n <li><label>")),d(t.ngettext("Writer","Writers",this.writer.length)),d(b(":</label> <span>")),d(b(helpers.url.filterLinks("movies","writer",this.writer))),d(b("</span></li>\n "))),d(b("\n ")),this.cast.length>0&&(d(b("\n <li><label>")),d(t.gettext("Cast")),d(b(":</label> <span>")),d(b(helpers.url.filterLinks("movies","cast",_.pluck(this.cast,"name")))),d(b("</span></li>\n "))),d(b("\n ")),this.mpaa&&(d(b("\n <li><label>")),d(t.gettext("rated")),d(b(":</label> <span>")),d(b(helpers.url.filterLinks("movies","mpaa",[this.mpaa]))),d(b("</span></li>\n "))),d(b('\n </ul>\n\n <ul class="streams">\n ')),this.streamdetails.video.length>0&&(d(b("\n <li><label>")),d(t.gettext("Video")),d(b(":</label> <span>")),d(_.pluck(this.streamdetails.video,"label").join(", ")),d(b("</span></li>\n "))),d(b("\n ")),this.streamdetails.audio.length>0&&(d(b("\n <li><label>")),d(t.gettext("Audio")),d(b(":</label> <span>")),d(_.pluck(this.streamdetails.audio,"label").join(", ")),d(b("</span></li>\n "))),d(b("\n ")),this.streamdetails.subtitle.length>0&&""!==this.streamdetails.subtitle[0].label){for(d(b("\n <li><label>")),d(t.ngettext("Subtitle","Subtitles",this.streamdetails.subtitle.length)),d(b(':</label>\n <span class="dropdown"><span data-toggle="dropdown">')),d(_.pluck(this.streamdetails.subtitle,"label").join(", ")),d(b('</span>\n <ul class="dropdown-menu">\n ')),e=this.streamdetails.subtitle,a=0,c=e.length;c>a;a++)f=e[a],d(b("\n <li>")),d(f.label),d(b("</li>\n "));d(b("\n </ul>\n </span>\n </li>\n "))}d(b('\n </ul>\n\n <ul class="inline-links">\n <li class="btn-flat-play play">')),d(t.gettext("Play")),d(b('</li>\n <li class="btn-flat-add add">')),d(tr("Queue")),d(b('</li>\n <li class="btn-flat-stream stream">')),d(t.gettext("Stream")),d(b('</li>\n <li class="btn-flat-watched watched">\n ')),d(t.gettext("set")),d(b(' <span class="action-watched">')),d(t.gettext("watched")),d(b('</span><span class="action-unwatched">')),d(t.gettext("unwatched")),d(b('</span>\n </li>\n <li class="more-actions dropdown">\n <span class="btn-flat-more" data-toggle="dropdown" aria-expanded="true">')),d(tr("more")),d(b('</span>\n <ul class="dropdown-menu pull-right">\n <li class="download">')),d(tr("Download")),d(b('</li>\n <li class="divider"></li>\n <li class="dropdown-submenu internal-search">')),d(tr("Chorus Search")),d(b('\n <ul class="dropdown-menu">\n ')),d(b(helpers.entities.getAddonSearchMenuItems(this.label))),d(b('\n </ul>\n </li>\n <li class="dropdown-submenu external-search">')),d(tr("External Search")),d(b('\n <ul class="dropdown-menu">\n <li data-type="google" data-query="')),d(this.label),d(b('">Google</li>\n <li data-type="imdb" data-query="')),d(this.label),d(b('">IMDb</li>\n <li data-type="tmdb" data-query="')),d(this.label),d(b('">TVDb</li>\n </ul>\n </li>\n <li class="youtube-search" data-query="')),d(this.label),d(b('">')),d(tr("YouTube Search")),d(b('</li>\n <li class="divider"></li>\n <li class="refresh">')),d(tr("Refresh")),d(b('</li>\n <li class="edit">')),d(tr("Edit")),d(b("</li>\n </ul>\n </li>\n </ul>\n</div>\n"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/movie/show/tpl/set.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="section-content">\n <div class="set-collection">\n <h2 class="set-name"></h2>\n <div class="collection-items"></div>\n </div>\n</div>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/musicvideo/show/tpl/details_meta.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="region-details-top">\n <div class="region-details-title">\n <h2><span class="title">')),d(this.label),d(b("</span></h2>\n </div>\n ")),this.rating&&(d(b('\n <div class="region-details-rating">\n ')),d(this.rating),d(b(" <i></i>\n </div>\n "))),d(b('\n</div>\n\n<div class="region-details-meta-below">\n\n <ul class="meta">\n ')),this.artist&&(d(b("\n <li><label>")),d(tr("artist")),d(b(":</label> <span>")),d(b(helpers.url.filterLinks("music/videos","artist",[this.artist]))),d(b("</span></li>\n "))),d(b("\n ")),this.album&&(d(b("\n <li><label>")),d(tr("album")),d(b(':</label> <span><a href="#music/videos?album=')),d(this.album),d(b('">')),d(this.album),d(b("</a></span></li>\n "))),d(b("\n ")),this.genre.length>0&&(d(b("\n <li><label>")),d(t.ngettext("genre","genres",this.genre.length)),d(b(":</label> <span>")),d(b(helpers.url.filterLinks("music/videos","genre",this.genre))),d(b("</span></li>\n "))),d(b("\n ")),this.director.length>0&&(d(b("\n <li><label>")),d(t.ngettext("Director","Directors",this.director.length)), +d(b(":</label> <span>")),d(b(helpers.url.filterLinks("music/videos","director",this.director))),d(b("</span></li>\n "))),d(b("\n ")),this.studio.length>0&&(d(b("\n <li><label>")),d(t.ngettext("Studio","Studios",this.studio.length)),d(b(":</label> <span>")),d(b(helpers.url.filterLinks("music/videos","studio",this.studio))),d(b("</span></li>\n "))),d(b('\n </ul>\n\n <div class="description">')),d(this.plot),d(b('</div>\n\n <ul class="inline-links">\n <li class="btn-flat-play play">')),d(tr("Play")),d(b('</li>\n <li class="btn-flat-add add">')),d(tr("Queue")),d(b('</li>\n <li class="btn-flat-stream localplay">')),d(tr("Stream")),d(b('</li>\n <li class="more-actions dropdown">\n <span class="btn-flat-more" data-toggle="dropdown" aria-expanded="true">')),d(tr("more")),d(b('</span>\n <ul class="dropdown-menu pull-right">\n <li class="download">')),d(tr("Download")),d(b('</li>\n <li class="divider"></li>\n <li class="dropdown-submenu internal-search">')),d(tr("Chorus Search")),d(b('\n <ul class="dropdown-menu">\n ')),d(b(helpers.entities.getAddonSearchMenuItems(this.title))),d(b('\n </ul>\n </li>\n <li class="dropdown-submenu external-search">')),d(tr("External Search")),d(b('\n <ul class="dropdown-menu">\n <li data-type="google" data-query="')),d(this.title),d(b(" ")),d(this.artist),d(b('">Google</li>\n </ul>\n </li>\n <li class="youtube-search" data-query="')),d(this.title),d(b(" ")),d(this.artist),d(b('">')),d(tr("YouTube Search")),d(b('</li>\n <li class="divider"></li>\n <li class="edit">')),d(tr("Edit")),d(b("</li>\n </ul>\n </li>\n </ul>\n\n</div>\n"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/navMain/show/tpl/navMain.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){var a,c,e,f,g,h,i,j;for(d(b('<div id="nav-header"></div>\n<nav>\n <ul>\n ')),i=this.items,c=0,g=i.length;g>c;c++)if(e=i[c],"undefined"!==e.path&&0===e.parent){if(d(b('\n <li class="')),d(e["class"]),d(b('">\n <a href="#')),d(e.path),d(b('">\n <i class="')),d(e.icon),d(b('"></i>\n <span>')),d(e.title),d(b("</span>\n </a>\n\n ")),0!==e.children.length){for(d(b("\n <ul>\n ")),j=e.children,f=0,h=j.length;h>f;f++)a=j[f],"undefined"!==a.path&&(d(b('\n <li><a href="#')),d(a.path),d(b('">')),d(a.title),d(b("</a></li>\n ")));d(b("\n </ul>\n "))}d(b("\n </li>\n "))}d(b("\n </ul>\n</nav>"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/navMain/show/tpl/nav_item.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b(this.link))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/navMain/show/tpl/nav_sub.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b("<h3>")),d(this.title),d(b('</h3>\n<ul class="items"></ul>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/player/show/tpl/player.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="player">\n\n <div class="controls-primary">\n <div class="controls-primary-buttons">\n <div class="control control-prev"></div>\n <div class="control control-play"></div>\n <div class="control control-next"></div>\n </div>\n </div>\n\n <div class="controls-secondary">\n <div class="volume slider-bar"></div>\n <div class="controls-secondary-buttons">\n <div class="control control-mute"></div>\n <div class="control control-repeat"></div>\n <div class="control control-shuffle"></div>\n <div class="control control-menu"></div>\n </div>\n </div>\n\n <div class="now-playing">\n <div class="playing-thumb thumb">\n <div class="mdi remote-toggle"></div>\n </div>\n <div class="playing-info">\n <div class="playing-progress slider-bar"></div>\n <div class="playing-time">\n <div class="playing-time-current">0</div>\n <div class="playing-time-duration">0:00</div>\n </div>\n <div class="playing-meta">\n <div class="playing-title">')),d(t.gettext("Nothing playing")),d(b('</div>\n <div class="playing-subtitle"></div>\n </div>\n </div>\n </div>\n\n</div>\n'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/playlist/list/tpl/playlist_bar.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="playlist-header">\n <ul class="player-toggle">\n <li class="kodi">')),d(t.gettext("Kodi")),d(b('</li>\n <li class="local">')),d(t.gettext("Local")),d(b('</li>\n </ul>\n <div class="playlist-menu dropdown">\n <i data-toggle="dropdown" class="menu-toggle"></i>\n <ul class="dropdown-menu pull-right">\n <li class="dropdown-header">')),d(t.gettext("Current playlist")),d(b('</li>\n <li><a href="#" class="clear-playlist">')),d(t.gettext("Clear playlist")),d(b('</a></li>\n <li><a href="#" class="refresh-playlist">')),d(t.gettext("Refresh playlist")),d(b('</a></li>\n <li><a href="#" class="party-mode">')),d(t.gettext("Party mode")),d(b(' <i class="mdi-navigation-check"></i></a></li>\n <li class="dropdown-header">')),d(t.gettext("Kodi")),d(b('</li>\n <li><a href="#" class="save-playlist">')),d(t.gettext("Save Kodi playlist")),d(b('</a></li>\n </li>\n </ul>\n </div>\n</div>\n<div class="playlists-wrapper">\n <div class="kodi-playlists">\n <ul class="media-toggle">\n <li class="audio">')),d(t.gettext("Audio")),d(b('</li>\n <li class="video">')),d(t.gettext("Video")),d(b('</li>\n </ul>\n <div class="kodi-playlist"></div>\n </div>\n <div class="local-playlists">\n <div class="local-playlist"></div>\n </div>\n</div>\n'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/playlist/list/tpl/playlist_item.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="item-inner item-')),d(this.type),d(b('">\n <div class="artwork">\n <div class="thumb" title="')),d(this.label),d(b('" style="background-image: url(\'')),d(this.thumbnail),d(b('\')">\n <div class="mdi play"></div>\n ')),this.canThumbsUp&&d(b('\n <div class="mdi thumbs"></div>\n ')),d(b('\n </div>\n </div>\n <div class="meta">\n <div class="title"><a href="#')),d(this.url),d(b('" title="')),d(this.label),d(b('">')),d(this.label),d(b("</a></div>\n ")),null!=this.subtitle&&(d(b('\n <div class="subtitle">')),d(b(this.subtitle)),d(b("</div>\n "))),d(b('\n </div>\n <div class="remove"></div>\n</div>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/playlist/m3u/tpl/list.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){var a,c,e,f;for(d(b("#EXTCPlayListM3U::M3U\n")),f=this.items,a=0,e=f.length;e>a;a++)c=f[a],d(b("#EXTINF:")),d(c.duration),d(b(",")),d(c.artist.join("/")),d(b(" - ")),d(c.label),d(b("\n")),d(c.file),d(b("\n"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/playlist/show/tpl/landing.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="playlist-page playlist-page__empty set-page">\n <h3>')),d(t.gettext("Now playing - Playlists")),d(b("</h3>\n <p>")),d(t.gettext("Switch between Kodi and local playback via the tabs. You can toggle visibility with the arrow in the top right")),d(b("</p>\n</div>\n"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/pvr/recordingList/tpl/recording.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="title">\n <strong>')),d(this.label),d(b("</strong> <span>- ")),d(this.channel),d(b('</span>\n</div>\n<div class="date">\n ')),d(this.start.toString("h:mmtt").toLowerCase()),d(b(" -\n ")),"1970"!==this.end.toString("yyyy")?(d(b("\n ")),d(this.end.toString("h:mmtt").toLowerCase()),d(b("\n (")),d(helpers.global.formatTime(helpers.global.secToTime(this.runtime))),d(b(")\n "))):(d(b("\n ")),d(tr("Now")),d(b("\n "))),d(b("\n\n <br />")),d(this.start.toString("dddd, dS MMM")),d(b('\n</div>\n<div class="plot">')),d(this.plot),d(b('</div>\n<div class="entity-progress">\n <div class="current-progress" style="width: ')),d(this.progress),d(b('%" title="')),d(this.progress),d(b("% ")),d(t.gettext("complete")),d(b('"></div>\n</div>\n<ul class="actions">\n <li class="play"></li>\n</ul>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/search/list/tpl/search_layout.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="search-inner">\n <div class="entity-set entity-set-movie"></div>\n <div class="entity-set entity-set-tvshow"></div>\n <div class="entity-set entity-set-artist"></div>\n <div class="entity-set entity-set-album"></div>\n <div class="entity-set entity-set-song"></div>\n <div class="entity-set entity-set-musicvideo"></div>\n <div class="entity-set entity-set-loading"></div>\n <div class="entity-set entity-set-addons"></div>\n</div>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/search/list/tpl/search_sidebar.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="sidebar-section sidebar-section-media">\n <h3>Local media</h3>\n <ul class="search-media-links"></ul>\n</div>\n\n<div class="sidebar-section sidebar-section-addon">\n <h3>Addons</h3>\n <ul class="search-addon-links"></ul>\n</div>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/search/show/tpl/landing.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="search-page search-page__empty set-page">\n <h3>')),d(t.gettext("Enter your search above")),d(b("</h3>\n</div>\n"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/settings/show/tpl/settings_sidebar.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="settings-sidebar">\n <div class="settings-sidebar--section local-nav nav-sub"></div>\n <div class="settings-sidebar--section kodi-nav"></div>\n</div>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/shell/show/tpl/homepage.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div id="homepage"></div>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/shell/show/tpl/shell.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div id="shell">\n\n <a id="logo" href="#"></a>\n\n <div id="nav-bar"></div>\n\n <div id="header">\n\n <h1 id="page-title">\n <span class="context"></span>\n <span class="title"></span>\n </h1>\n\n <ul class="mobile-menu">\n <li><a href="#remote" class="mobile-menu--link__remote remote-toggle"><i></i></a></li>\n <li><a href="#search" class="mobile-menu--link__search"><i></i></a></li>\n <li><a href="#playlist" class="mobile-menu--link__playlist"><i></i></a></li>\n </ul>\n\n <div id="selected-region">\n <div class="selected-text">\n <span id="selected-count"></span>\n </div>\n <i data-toggle="dropdown" class="menu-toggle"></i>\n <ul class="dropdown-menu pull-right">\n <li class="selected-play">')),d(tr("Play in Kodi")),d(b('</li>\n <li class="selected-add">')),d(tr("Queue in Kodi")),d(b('</li>\n <li class="selected-localadd">')),d(tr("Add to playlist")),d(b('</li>\n </ul>\n </div>\n\n <div id="search-region">\n <input id="search" title="Search">\n <span id="do-search"></span>\n </div>\n\n </div>\n\n <div id="main">\n\n <div id="sidebar-one"></div>\n\n <div id="content">')),d(tr("Loading things...")),d(b('</div>\n\n </div>\n\n <div id="sidebar-two">\n <div class="playlist-toggle-open"></div>\n <div id="playlist-summary"></div>\n <div id="playlist-bar"></div>\n </div>\n\n <div id="remote"></div>\n\n <div id="player-wrapper">\n <footer id="player-kodi"></footer>\n <footer id="player-local"></footer>\n </div>\n\n <div class="player-menu-wrapper">\n <ul class="player-menu">\n <li class="video-scan">')),d(t.gettext("Scan video library")),d(b('</li>\n <li class="audio-scan">')),d(t.gettext("Scan audio library")),d(b('</li>\n <li class="send-input">')),d(t.gettext("Send text to Kodi")),d(b('</li>\n <li class="goto-lab">')),d(t.gettext("The lab")),d(b('</li>\n <li class="about">')),d(t.gettext("About Chorus")),d(b('</li>\n </ul>\n </div>\n\n</div>\n\n<div id="fanart"></div>\n<div id="fanart-overlay"></div>\n\n<div id="snackbar-container"></div>\n\n<div class="modal fade" id="modal-window">\n <div class="modal-dialog">\n <div class="modal-content">\n <div class="modal-header">\n <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>\n <h4 class="modal-title"></h4>\n </div>\n <div class="modal-body"></div>\n <div class="modal-footer"></div>\n </div>\n </div>\n</div>\n\n<div id="disconnected">\n <div class="message">\n <i class="mdi-file-cloud-off"></i>\n <h2>')),d(tr("Lost connection to Kodi")),d(b('</h2>\n <p class="try-connect"><button class="reconnect btn btn-primary">')),d(tr("Attempt to reconnect")),d(b('</button></p>\n <p class="load-connect"><span class="loader-small-inline"></span><br />')),d(tr("Attempting reconnect")),d(b('</p>\n </div>\n</div>\n\n<div id="offscreen"></div>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/song/list/tpl/song.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<td class="cell-first">\n <div class="thumb" style="background-image: url(\'')),d(this.thumbnail),d(b('\')">\n </div>\n <div class="track">')),d(this.track),d(b('</div>\n <div class="mdi play"></div>\n</td>\n<td class="cell-label song-title"><span class="crop">')),d(this.label),d(b('</span></td>\n<td class="cell-label song-album"><a class="crop" href="#music/album/')),d(this.albumid),d(b('">')),d(this.album),d(b('</a></td>\n<td class="cell-label song-artist"><a class="crop" href="#music/artist/')),d(this.artistid),d(b('">')),d(this.artist),d(b('</a></td>\n<td class="cell-last">\n <li class="thumbed-up"></li>\n <div class="duration">')),d(this.displayDuration),d(b('</div>\n <ul class="actions">\n <li class="mdi thumbs"></li>\n <li class="mdi add"></li>\n <li class="menu dropdown">\n <i data-toggle="dropdown" class="mdi"></i>\n <ul class="dropdown-menu pull-right"></ul>\n </li>\n </ul>\n</td>\n<td class="cell-remove song-remove">\n <i class="mdi mdi-navigation-close"></i>\n</td>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/thumbs/list/tpl/thumbs_layout.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="thumbs-inner">\n <div class="entity-set entity-set-movie"></div>\n <div class="entity-set entity-set-tvshow"></div>\n <div class="entity-set entity-set-episode"></div>\n <div class="entity-set entity-set-artist"></div>\n <div class="entity-set entity-set-album"></div>\n <div class="entity-set entity-set-song"></div>\n <div class="entity-set entity-set-musicvideo"></div>\n</div>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/thumbs/list/tpl/thumbs_set.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<h2 class="set-header"></h2>\n<div class="set-results"></div>\n<div class="more"></div>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/tvshow/episode/tpl/content.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('\n<div class="section-content">\n <h2>')),d(t.gettext("Synopsis")),d(b("</h2>\n <p>")),d(this.plot),d(b("</p>\n</div>\n\n")),this.cast.length>0&&(d(b('\n <div class="section-content">\n <h2>')),d(tr("Full cast")),d(b('</h2>\n <div class="region-cast"></div>\n </div>\n'))),d(b('\n\n<div class="section-content section-full-width">\n <h2>')),d(tr("Season")),d(b(" ")),d(this.season),d(b('</h2>\n <div class="region-season"></div>\n</div>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/tvshow/episode/tpl/details_meta.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){var a,c,e,f;if(d(b('<div class="region-details-top">\n ')),null!=this.showtitle&&d(b("\n\n ")),d(b('\n <div class="region-details-title">\n <h2>\n <span class="title">')),d(this.label),d(b('</span>\n <span class="sub show-title"><a href="#')),d(this.url.split("/",2).join("/")),d(b('">')),d(this.showtitle),d(b('</a></span>\n <span class="sub">S')),d(this.season),d(b(" E")),d(this.episode),d(b('</span>\n </h2>\n </div>\n <div class="region-details-rating">\n ')),d(this.rating),d(b(' <i></i>\n </div>\n</div>\n<div class="region-details-meta-below">\n\n <div class="region-details-subtext">\n\n ')),this.runtime>0&&(d(b('\n <div class="runtime">\n ')),d(helpers.global.formatTime(helpers.global.secToTime(this.runtime))),d(b("\n </div>\n "))),d(b('\n\n </div>\n\n <ul class="meta">\n <li><label>')),d(t.gettext("Season")),d(b(':</label> <span><a href="#tvshow/')),d(this.tvshowid),d(b("/")),d(this.season),d(b('">')),d(t.gettext("Season")),d(b(" ")),d(this.season),d(b("</a></span></li>\n ")),this.firstaired&&(d(b("\n <li><label>")),d(t.gettext("First aired")),d(b(":</label> <span>")),d(this.firstaired),d(b(" </span></li>\n "))),d(b("\n ")),this.director.length>0&&(d(b("\n <li><label>")),d(t.ngettext("Director","Directors",this.director.length)),d(b(":</label> <span>")),d(b(helpers.url.filterLinks("tvshows","director",this.director))),d(b("</span></li>\n "))),d(b("\n ")),this.writer.length>0&&(d(b("\n <li><label>")),d(t.ngettext("Writer","Writers",this.writer.length)),d(b(":</label> <span>")),d(b(helpers.url.filterLinks("tvshows","writer",this.writer))),d(b("</span></li>\n "))),d(b("\n ")),this.cast.length>0&&(d(b("\n <li><label>")),d(t.gettext("Cast")),d(b(":</label> <span>")),d(b(helpers.url.filterLinks("tvshows","cast",_.pluck(this.cast,"name")))),d(b("</span></li>\n "))),d(b('\n </ul>\n\n <ul class="streams">\n ')),this.streamdetails.video.length>0&&(d(b("\n <li><label>")),d(t.gettext("Video")),d(b(":</label> <span>")),d(_.pluck(this.streamdetails.video,"label").join(", ")),d(b("</span></li>\n "))),d(b("\n ")),this.streamdetails.audio.length>0&&(d(b("\n <li><label>")),d(t.gettext("Audio")),d(b(":</label> <span>")),d(_.pluck(this.streamdetails.audio,"label").join(", ")),d(b("</span></li>\n "))),d(b("\n ")),this.streamdetails.subtitle.length>0&&""!==this.streamdetails.subtitle[0].label){for(d(b("\n <li><label>")),d(t.ngettext("Subtitle","Subtitles",this.streamdetails.subtitle.length)),d(b(':</label>\n <span class="dropdown"><span data-toggle="dropdown">')),d(_.first(_.pluck(this.streamdetails.subtitle,"label"))),d(b('</span>\n <ul class="dropdown-menu">\n ')),e=this.streamdetails.subtitle,a=0,c=e.length;c>a;a++)f=e[a],d(b("\n <li>")),d(f.label),d(b("</li>\n "));d(b("\n </ul>\n </span>\n </li>\n "))}d(b('\n </ul>\n\n <ul class="inline-links">\n <li class="btn-flat-play play">')),d(tr("Play")),d(b('</li>\n <li class="btn-flat-add add">')),d(tr("Queue")),d(b('</li>\n <li class="btn-flat-stream stream">')),d(tr("Stream")),d(b('</li>\n <li class="btn-flat-watched watched">\n ')),d(t.gettext("set")),d(b(' <span class="action-watched">')),d(tr("watched")),d(b('</span><span class="action-unwatched">')),d(tr("unwatched")),d(b('</span>\n </li>\n <li class="more-actions dropdown">\n <span class="btn-flat-more" data-toggle="dropdown" aria-expanded="true">')),d(tr("more")),d(b('</span>\n <ul class="dropdown-menu pull-right">\n <li class="download">')),d(tr("Download")),d(b('</li>\n <li class="divider"></li>\n <li class="dropdown-submenu internal-search">')),d(tr("Chorus Search")),d(b('\n <ul class="dropdown-menu">\n ')),d(b(helpers.entities.getAddonSearchMenuItems(this.showtitle))),d(b('\n </ul>\n </li>\n <li class="dropdown-submenu external-search">')),d(tr("External Search")),d(b('\n <ul class="dropdown-menu">\n <li data-type="google" data-query="')),d(this.showtitle),d(b(" ")),d(this.label),d(b('">Google</li>\n <li data-type="imdb" data-query="')),d(this.showtitle),d(b('">IMDb</li>\n <li data-type="tvdb" data-query="')),d(this.showtitle),d(b('">TVDb</li>\n <li data-type="tmdb" data-query="')),d(this.showtitle),d(b('">TMDb</li>\n </ul>\n </li>\n <li class="youtube-search" data-query="')),d(this.showtitle),d(b('">')),d(tr("YouTube Search")),d(b('</li>\n <li class="divider"></li>\n <li class="refresh">')),d(tr("Refresh")),d(b('</li>\n <li class="edit">')),d(tr("Edit")),d(b("</li>\n </ul>\n </li>\n </ul>\n</div>\n"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/tvshow/season/tpl/details_meta.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="region-details-top">\n <div class="region-details-title">\n <h2>\n <span class="title">')),d(tr("Season")),d(b(" ")),d(this.season),d(b('</span>\n <span class="sub"><a href="#tvshow/')),d(this.tvshowid),d(b('">')),d(this.label),d(b('</a></span>\n </h2>\n </div>\n <div class="region-details-rating">\n ')),d(this.rating),d(b(' <i></i>\n </div>\n</div>\n<div class="region-details-meta-below">\n\n <ul class="meta">\n ')),this.genre.length>0&&(d(b("\n <li><label>")),d(tr("genre")),d(b(":</label> <span>")),d(b(helpers.url.filterLinks("tvshows","genre",this.genre))),d(b("</span></li>\n "))),d(b("\n ")),this.cast.length>0&&(d(b("\n <li><label>")),d(tr("cast")),d(b(":</label> <span>")),d(b(helpers.url.filterLinks("tvshows","cast",_.pluck(this.cast,"name")))),d(b("</span></li>\n "))),d(b("\n ")),this.studio.length>0&&(d(b("\n <li><label>")),d(tr("studio")),d(b(":</label> <span>")),d(b(helpers.url.filterLinks("tvshows","studio",this.studio))),d(b("</span></li>\n "))),d(b("\n ")),this.mpaa&&(d(b("\n <li><label>")),d(tr("rated")),d(b(":</label> <span>")),d(b(helpers.url.filterLinks("tvshows","mpaa",[this.mpaa]))),d(b("</span></li>\n "))),d(b("\n <li><label>")),d(tr("episodes")),d(b(':</label> <span><span class="episode-total">')),d(this.episode),d(b("</span> ")),d(tr("total")),d(b(' (<span class="episode-unwatched">')),d(this.unwatched),d(b("</span> ")),d(tr("unwatched")),d(b(')</span></li>\n </ul>\n\n <div class="description">')),d(this.plot),d(b('</div>\n\n <ul class="inline-links">\n <li class="btn-flat-play play">')),d(tr("Play")),d(b('</li>\n <li class="btn-flat-add add">')),d(tr("Queue")),d(b('</li>\n <li class="btn-flat-watched watched">\n ')),d(tr("set")),d(b(' <span class="action-watched">')),d(tr("watched")), +d(b('</span><span class="action-unwatched">')),d(tr("unwatched")),d(b("</span>\n </li>\n </ul>\n\n</div>\n"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["apps/tvshow/show/tpl/details_meta.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="region-details-top">\n <div class="region-details-title">\n <h2><span class="title">')),d(this.label),d(b('</span> <span class="sub">')),d(this.year),d(b('</span></h2>\n </div>\n <div class="region-details-rating">\n ')),d(this.rating),d(b(' <i></i>\n </div>\n</div>\n<div class="region-details-meta-below">\n\n <ul class="meta">\n ')),this.genre.length>0&&(d(b("\n <li><label>")),d(tr("genre")),d(b(":</label> <span>")),d(b(helpers.url.filterLinks("tvshows","genre",this.genre))),d(b("</span></li>\n "))),d(b("\n ")),this.cast.length>0&&(d(b("\n <li><label>")),d(tr("cast")),d(b(":</label> <span>")),d(b(helpers.url.filterLinks("tvshows","cast",_.pluck(this.cast,"name")))),d(b("</span></li>\n "))),d(b("\n ")),this.studio.length>0&&(d(b("\n <li><label>")),d(tr("studio")),d(b(":</label> <span>")),d(b(helpers.url.filterLinks("tvshows","studio",this.studio))),d(b("</span></li>\n "))),d(b("\n ")),this.mpaa&&(d(b("\n <li><label>")),d(tr("rated")),d(b(":</label> <span>")),d(b(helpers.url.filterLinks("tvshows","mpaa",[this.mpaa]))),d(b("</span></li>\n "))),d(b("\n <li><label>")),d(tr("episodes")),d(b(':</label> <span><span class="episode-total">')),d(this.episode),d(b("</span> ")),d(tr("total")),d(b(' (<span class="episode-unwatched">')),d(this.unwatched),d(b("</span> ")),d(tr("unwatched")),d(b(')</span></li>\n </ul>\n\n <div class="description">')),d(this.plot),d(b('</div>\n\n <ul class="inline-links">\n <li class="btn-flat-play play">')),d(tr("Play")),d(b('</li>\n <li class="btn-flat-add add">')),d(tr("Queue")),d(b('</li>\n <li class="btn-flat-watched watched">\n ')),d(tr("set")),d(b(' <span class="action-watched">')),d(tr("watched")),d(b('</span><span class="action-unwatched">')),d(tr("unwatched")),d(b('</span>\n </li>\n <li class="more-actions dropdown">\n <span class="btn-flat-more" data-toggle="dropdown" aria-expanded="true">')),d(tr("more")),d(b('</span>\n <ul class="dropdown-menu pull-right">\n <li class="dropdown-submenu internal-search">')),d(tr("Chorus Search")),d(b('\n <ul class="dropdown-menu">\n ')),d(b(helpers.entities.getAddonSearchMenuItems(this.label))),d(b('\n </ul>\n </li>\n <li class="dropdown-submenu external-search">')),d(tr("External Search")),d(b('\n <ul class="dropdown-menu">\n <li data-type="google" data-query="')),d(this.label),d(b('">Google</li>\n <li data-type="imdb" data-query="')),d(this.label),d(b('">IMDb</li>\n <li data-type="tvdb" data-query="')),d(this.label),d(b('">TVDb</li>\n <li data-type="tmdb" data-query="')),d(this.label),d(b('">TMDb</li>\n </ul>\n </li>\n <li class="youtube-search" data-query="')),d(this.label),d(b('">')),d(tr("YouTube Search")),d(b('</li>\n <li class="divider"></li>\n <li class="dropdown-submenu">')),d(tr("Refresh")),d(b('\n <ul class="dropdown-menu">\n <li class="refresh">')),d(tr("Show only")),d(b('</li>\n <li class="refresh-episodes">')),d(tr("Show and episodes")),d(b('</li>\n </ul>\n </li>\n <li class="edit">')),d(tr("Edit")),d(b("</li>\n </ul>\n </li>\n </ul>\n\n</div>\n"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["components/form/tpl/form.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="form-inner">\n <div class="form-content-region"></div>\n <footer>\n <ul class="inline-list">\n <li>\n <button type="submit" data-form-button="submit" class="btn btn-primary form-save">Save</button>\n </li>\n <li class="response">\n\n </li>\n </ul>\n </footer>\n</div>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["components/form/tpl/form_item.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){this.title&&(d(b('\n <label class="control-label">')),d(b(this.title)),d(b("</label>\n"))),d(b("\n\n")),"markup"===this.type?(d(b("\n ")),d(b(this.element)),d(b("\n"))):(d(b('\n <div class="element">\n ')),"checkbox"!==this.type?(d(b("\n ")),d(b(this.element)),d(b("\n "))):(d(b('\n <div class="togglebutton">\n <label>')),d(b(this.element)),d(b("</label>\n </div>\n "))),d(b("\n ")),this.description&&(d(b('\n <div class="help-block description">')),d(b(this.description)),d(b("</div>\n "))),d(b("\n </div>\n"))),d(b("\n"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["components/form/tpl/form_item_group.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){this.title&&(d(b('\n <h3 class="group-title">')),this.icon&&(d(b('<i class="')),d(b(this.icon)),d(b('"></i> '))),d(b(this.title)),d(b("</h3>\n"))),d(b('\n<div class="form-items"></div>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["components/form/tpl/form_item_imageselect.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="form-imageselect">\n <ul class="form-imageselect__tabs">\n <li data-pane="select" class="active">')),d(tr("Selector")),d(b('</li>\n <li data-pane="url">')),d(tr("URL")),d(b('</li>\n </ul>\n <div class="form-imageselect__panes">\n <div class="pane active" rel="select">\n <ul class="form-imageselect__thumbs">\n ')),this.image&&(d(b('\n <li data-original="')),d(this.image.original),d(b('" class="selected" style="background-image: url(\'')),d(this.image.thumb),d(b("')\"></li>\n "))),d(b('\n </ul>\n <div class="form-imageselect__loader"><div class="loader-small-inline"></div> <span>')),d(tr("Searching for more images")),d(b('</span></div>\n </div>\n <div class="pane" rel="url">\n ')),this.title&&(d(b('\n <label class="control-label">')),d(b(this.title)),d(b("</label>\n "))),d(b('\n <div class="form-imageselect__url">\n ')),d(b(this.element)),d(b("\n </div>\n ")),this.description&&(d(b('\n <div class="help-block description">')),d(b(this.description)),d(b("</div>\n "))),d(b("\n </div>\n </div>\n</div>"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["views/card/tpl/card.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){var a,c,e;if(d(b('<div class="card-')),d(this.type),d(b('">\n <div class="artwork">\n <a href="#')),d(this.url),d(b('" class="thumb" title="')),d(helpers.global.stripTags(this.label)),d(b('" style="background-image: url(\'')),d(this.thumbnail),d(b('\')"></a>\n <div class="mdi play" title="')),d(tr("Play")),d(b('"></div>\n ')),("channeltv"===this.type||"channelradio"===this.type)&&d(b('\n <div class="mdi record"></div>\n ')),d(b('\n </div>\n <div class="meta">\n <div class="title"><a href="#')),d(this.url),d(b('" title="')),d(helpers.global.stripTags(this.label)),d(b('">')),d(b(this.label)),d(b("</a></div>\n ")),null!=this.subtitle&&(d(b('\n <div class="subtitle">')),d(b(this.subtitle)),d(b("</div>\n "))),d(b("\n </div>\n ")),this.actions){d(b('\n <ul class="actions">\n ')),c=this.actions;for(a in c)e=c[a],d(b('<li class="mdi ')),d(a),d(b('" title="')),d(e),d(b('"></li>'));d(b("\n </ul>\n "))}d(b("\n ")),this.menu&&d(b('\n <div class="dropdown">\n <i data-toggle="dropdown" class="mdi"></i>\n <ul class="dropdown-menu"></ul>\n </div>\n ')),d(b("\n ")),this.progress=null!=this.progress?this.progress:0,d(b('\n <div class="entity-progress"><div class="current-progress" style="width: ')),d(this.progress),d(b('%" title="')),d(this.progress),d(b("% ")),d(t.gettext("complete")),d(b('"></div></div>\n</div>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["views/card/tpl/card_placeholder.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b("<i></i>"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["views/empty/tpl/empty_page.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="empty--page">\n ')),this.title&&(d(b('\n <h2 class="empty--page-title">')),d(title),d(b("</h2>\n "))),d(b("\n\n ")),this.content&&(d(b('\n <div class="empty--page-content">')),d(this.content),d(b("</div>\n "))),d(b("\n</div>"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["views/empty/tpl/empty_results.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="empty-result">\n <h2>')),d(b(t.sprintf(tr("No %1$s found"),'<span class="empty-key">'+tr("results")+"</span>"))),d(b('</h2>\n <div class="empty-actions">\n <div class="back-link"></div>\n </div>\n</div>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["views/layouts/tpl/layout_details_header.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="layout-container details-header">\n\n <div class="region-details-side"></div>\n\n <div class="region-details-meta-wrapper"><div class="region-details-meta">\n\n <div class="region-details-title"><span class="title"></span> <span class="sub"></span></div>\n\n <div class="region-details-meta-below">\n <div class="region-details-subtext"></div>\n <div class="description"></div>\n </div>\n\n </div></div>\n\n ')),this.fanart&&(d(b('\n <div class="region-details-fanart" style="background-image: url(\'')),d(this.fanart),d(b('\')"><div class="gradient"></div></div>\n '))),d(b("\n</div>\n"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["views/layouts/tpl/layout_with_header.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="layout-container with-header">\n\n <header class="region-header"></header>\n\n <div class="region-content-wrapper">\n <div class="entity-progress"><div class="current-progress" style="width: ')),d(this.progress),d(b('%" title="')),d(this.progress),d(b("% ")),d(t.gettext("complete")),d(b('"></div></div>\n <section class="region-content"></section>\n </div>\n\n</div>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["views/layouts/tpl/layout_with_sidebar_first.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="layout-container with-sidebar-first">\n\n <div class="region-first-toggle"></div>\n <section class="region-first">\n <div class="region-first-primary"></div>\n <div class="region-first-secondary"></div>\n </section>\n\n <section class="region-content-wrapper">\n <div class="region-content-top"></div>\n <div class="region-content"></div>\n </section>\n\n</div>'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["views/set/tpl/set.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<div class="set">\n ')),this.title&&(d(b('\n <div class="set__header">\n <h2 class="set__title">')),d(this.title),d(b('</h2>\n <div class="set__actions">\n ')),this.menu&&d(b('\n <div class="dropdown">\n <i data-toggle="dropdown" class="mdi"></i>\n <ul class="dropdown-menu pull-right"></ul>\n </div>\n ')),d(b("\n </div>\n </div>\n "))),d(b('\n <div class="set__items">\n <')),d(this.childViewTag),d(b(' class="set__collection ')),d(this.childViewClass),d(b('"></')),d(this.childViewTag),d(b(">\n </div>\n ")),this.more&&(d(b('\n <div class="set__more">')),d(b(this.more)),d(b("</div>\n "))),d(b("\n</div>\n"))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())},window.JST["views/song/tpl/song_placeholder.jst"]=function(a){var b=function(a){"undefined"==typeof a&&null==a&&(a="");var b=new String(a);return b.ecoSafe=!0,b};return function(){var a=[],c=this,d=function(b){"undefined"!=typeof b&&null!=b&&a.push(b.ecoSafe?b:c.escape(b))};return function(){d(b('<td colspan="6"><i></i></td>\n'))}.call(this),a.join("")}.call(function(){var c,d={escape:function(a){return(""+a).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},safe:b};for(c in a)d[c]=a[c];return d}())};;var tr, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, @@ -993,7 +993,7 @@ helpers.global.saveFileText = function(content, filename) { }; helpers.global.removeBBCode = function(string) { - return string.replace(/\[\/?(?:b|i|u|url|quote|code|img|color|size|B|I|U|URL|QUOTE|CODE|IMG|COLOR|SIZE)*?.*?\]/img, ''); + return string.replace(/\[\/?(?:b|i|u|s|left|center|right|quote|code|list|img|spoil|color).*?\]/ig, ''); }; @@ -1003,6 +1003,7 @@ helpers.global.removeBBCode = function(string) { $.fn.removeClassRegex = function(regex) { return $(this).removeClass(function(index, classes) { + console.log(classes); return classes.split(/\s+/).filter(function(c) { return regex.test(c); }).join(' '); @@ -1010,9 +1011,14 @@ $.fn.removeClassRegex = function(regex) { }; $.fn.removeClassStartsWith = function(startsWith) { - var regex; - regex = new RegExp('^' + startsWith, 'g'); - return $(this).removeClassRegex(regex); + return this.each(function(i, el) { + var classes; + classes = el.className.split(" ").filter(function(c) { + return c.lastIndexOf(startsWith, 0) !== 0; + }); + el.className = $.trim(classes.join(" ")); + return this; + }); }; $.fn.scrollStopped = function(callback) { @@ -9782,7 +9788,7 @@ this.Kodi.module("BrowserApp.List", function(List, App, Backbone, Marionette, $, }; Folder.prototype.events = { - "click .dropdown > i": "menuPopulate" + "click .dropdown > i": "populateModelMenu" }; Folder.prototype.initialize = function() { @@ -9834,7 +9840,7 @@ this.Kodi.module("BrowserApp.List", function(List, App, Backbone, Marionette, $, }; File.prototype.events = { - "click .dropdown > i": "menuPopulate" + "click .dropdown > i": "populateModelMenu" }; File.prototype.initialize = function() { @@ -10484,6 +10490,17 @@ this.Kodi.module("CommandApp.Kodi", function(Api, App, Backbone, Marionette, $, })(this)); }; + Player.prototype.setPartyMode = function(op, callback) { + if (op == null) { + op = 'toggle'; + } + return this.sendCommand('SetPartymode', [op], (function(_this) { + return function(resp) { + return _this.doCallback(callback, resp); + }; + })(this)); + }; + Player.prototype.getPlaying = function(callback) { var obj; obj = { @@ -11538,6 +11555,7 @@ this.Kodi.module("CommandApp.Local", function(Api, App, Backbone, Marionette, $, } else if (currentPos < collection.length) { posToPlay = currentPos + 1; } + this.localStateNext(); } if (param === 'previous') { if (currentPos === 0 && stateObj.getState('repeat') === 'all') { @@ -11550,7 +11568,7 @@ this.Kodi.module("CommandApp.Local", function(Api, App, Backbone, Marionette, $, } if (posToPlay !== false) { model = collection.findWhere({ - position: posToPlay + position: parseInt(posToPlay) }); return this.localLoad(model, (function(_this) { return function() { @@ -11610,6 +11628,10 @@ this.Kodi.module("CommandApp.Local", function(Api, App, Backbone, Marionette, $, return App.vent.trigger("state:local:changed"); }; + Base.prototype.localStateNext = function() { + return App.vent.trigger("state:local:next"); + }; + Base.prototype.paramObj = function(key, val) { return helpers.global.paramObj(key, val); }; @@ -11688,6 +11710,17 @@ this.Kodi.module("CommandApp.Local", function(Api, App, Backbone, Marionette, $, return this.localStateUpdate(); }; + Player.prototype.setPartyMode = function(op, callback) { + if (op == null) { + op = 'toggle'; + } + return App.execute('playlist:local:partymode', op, (function(_this) { + return function(resp) { + return _this.doCallback(callback, resp); + }; + })(this)); + }; + return Player; })(Api.Commander); @@ -11768,9 +11801,7 @@ this.Kodi.module("CommandApp.Local", function(Api, App, Backbone, Marionette, $, }; PlayList.prototype.playCollection = function(models) { - if (!_.isArray(models)) { - models = models.getRawCollection(); - } + models = this.itemsJson(models); return this.clear((function(_this) { return function() { return _this.insertAndPlay(models, 0); @@ -11779,6 +11810,7 @@ this.Kodi.module("CommandApp.Local", function(Api, App, Backbone, Marionette, $, }; PlayList.prototype.addCollection = function(models) { + models = this.itemsJson(models); return this.playlistSize((function(_this) { return function(size) { return _this.insert(models, size); @@ -11790,7 +11822,7 @@ this.Kodi.module("CommandApp.Local", function(Api, App, Backbone, Marionette, $, return this.getItems((function(_this) { return function(collection) { var item, pos, raw, ret; - raw = collection.getRawCollection(); + raw = _this.itemsJson(collection); ret = []; for (pos in raw) { item = raw[pos]; @@ -11820,7 +11852,7 @@ this.Kodi.module("CommandApp.Local", function(Api, App, Backbone, Marionette, $, return this.getItems((function(_this) { return function(collection) { var item, model, pos, raw, ret, _i, _j, _len, _len1, _ref, _ref1; - raw = collection.getRawCollection(); + raw = _this.itemsJson(collection); if (raw.length === 0) { ret = _.flatten([models]); } else if (parseInt(position) >= raw.length) { @@ -11854,7 +11886,9 @@ this.Kodi.module("CommandApp.Local", function(Api, App, Backbone, Marionette, $, PlayList.prototype.addItems = function(items) { App.request("localplayer:item:add:entities", items); - return this.refreshPlaylistView(); + this.updatePlayingPosition(items); + this.refreshPlaylistView(); + return items; }; PlayList.prototype.getSongs = function(type, value, callback) { @@ -11883,6 +11917,12 @@ this.Kodi.module("CommandApp.Local", function(Api, App, Backbone, Marionette, $, return this.doCallback(callback, collection); }; + PlayList.prototype.itemsJson = function(collection) { + var items; + items = _.isArray(collection) ? collection : collection.toJSON(); + return items; + }; + PlayList.prototype.insertAndPlay = function(models, position, callback) { if (position == null) { position = 0; @@ -11923,6 +11963,32 @@ this.Kodi.module("CommandApp.Local", function(Api, App, Backbone, Marionette, $, })(this)); }; + PlayList.prototype.updatePlayingPosition = function(collection) { + var i, m, model, pos, set, stateObj, _ref; + stateObj = App.request("state:local"); + if (stateObj.isPlaying()) { + model = stateObj.getPlaying('item'); + if (model.uid) { + set = false; + pos = 0; + _ref = this.itemsJson(collection); + for (i in _ref) { + m = _ref[i]; + if (set === true) { + continue; + } + if (m.uid === model.uid) { + pos = parseInt(i); + set = true; + } + } + model.position = pos; + stateObj.setPlaying('item', model); + return stateObj.setPlaying('position', pos); + } + } + }; + return PlayList; })(Api.Player); @@ -17383,6 +17449,10 @@ this.Kodi.module("PlaylistApp.List", function(List, App, Backbone, Marionette, $ return App.request("command:" + player + ":controller", media, 'PlayList'); }; + Controller.prototype.playerController = function(player, media) { + return App.request("command:" + player + ":controller", media, 'Player'); + }; + Controller.prototype.playerCommand = function(player, command, params) { if (params == null) { params = []; @@ -17437,12 +17507,15 @@ this.Kodi.module("PlaylistApp.List", function(List, App, Backbone, Marionette, $ this.listenTo(this.layout, 'playlist:refresh', (function(_this) { return function() { _this.renderList(_this.stateObj().getPlayer(), _this.stateObj().getState('media')); - return App.execute("notification:show", t.gettext('Playlist refreshed')); + return App.execute("notification:show", tr('Playlist refreshed')); }; })(this)); this.listenTo(this.layout, 'playlist:party', (function(_this) { return function() { - return _this.playerCommand('kodi', 'SetPartymode', ['toggle']); + return _this.playerController(_this.stateObj().getPlayer(), _this.stateObj().getState('media')).setPartyMode('toggle', function(resp) { + App.request("state:" + _this.stateObj().getPlayer() + ":update"); + return App.execute("notification:show", t.sprintf(tr('%1$s party mode toggled'), _this.stateObj().getPlayer())); + }); }; })(this)); this.listenTo(this.layout, 'playlist:save', (function(_this) { @@ -17652,6 +17725,107 @@ this.Kodi.module("PlaylistApp.List", function(List, App, Backbone, Marionette, $ })(App.Views.CollectionView); }); +this.Kodi.module("PlaylistApp.LocalParty", function(LocalParty, App, Backbone, Marionette, $, _) { + var API; + API = { + getController: function() { + return new LocalParty.Manager(); + } + }; + LocalParty.Manager = (function(_super) { + __extends(Manager, _super); + + function Manager() { + return Manager.__super__.constructor.apply(this, arguments); + } + + Manager.prototype.initialize = function(options) { + this.stateObj = App.request("state:local"); + return this.localPlaylist = App.request("command:local:controller", 'audio', 'PlayList'); + }; + + Manager.prototype.fillGlasses = function(callback) { + this.stateObj.setPlaying('partymode', true); + return this.getSongs(10, (function(_this) { + return function(collection) { + return _this.localPlaylist.clear(function() { + _this.localPlaylist.playCollection(collection); + if (callback) { + return callback(true); + } + }); + }; + })(this)); + }; + + Manager.prototype.topUpGlasses = function() { + return this.getSongs(1, (function(_this) { + return function(collection) { + return _this.localPlaylist.remove(0, function() { + return _this.localPlaylist.addCollection(collection); + }); + }; + })(this)); + }; + + Manager.prototype.getSongs = function(limit, callback) { + var options; + options = { + sort: { + method: 'random', + order: 'ascending' + }, + limit: { + start: 0, + end: limit + }, + cache: false, + success: function(result) { + return callback(result); + } + }; + return App.request("song:entities", options); + }; + + Manager.prototype.leaveParty = function(callback) { + this.stateObj.setPlaying('partymode', false); + if (callback) { + return callback(true); + } + }; + + Manager.prototype.isPartyMode = function() { + return this.stateObj.getPlaying('partymode', false); + }; + + return Manager; + + })(App.Controllers.Base); + App.commands.setHandler('playlist:local:partymode', function(op, callback) { + var manager; + if (op == null) { + op = 'toggle'; + } + manager = API.getController(); + if (op === 'toggle') { + op = !manager.isPartyMode(); + } + if (op === true) { + manager.fillGlasses(callback); + } else { + manager.leaveParty(callback); + } + return App.vent.trigger("state:local:changed"); + }); + return App.vent.on("state:local:next", function() { + var manager; + manager = API.getController(); + if (manager.isPartyMode()) { + return manager.topUpGlasses(); + } + }); +}); + this.Kodi.module("PlaylistApp.M3u", function(M3u, App, Backbone, Marionette, $, _) { return M3u.Controller = (function(_super) { __extends(Controller, _super); @@ -20506,7 +20680,8 @@ this.Kodi.module("StateApp", function(StateApp, App, Backbone, Marionette, $, _) } $body = App.getRegion('root').$el; $body.removeClassStartsWith('active-player-').addClass('active-player-' + player); - return config.set('state', 'lastplayer', player); + config.set('state', 'lastplayer', player); + return config.set('app', 'state:lastplayer', player); }; Base.prototype.getPlayer = function() { @@ -21064,10 +21239,18 @@ this.Kodi.module("StateApp", function(StateApp, App, Backbone, Marionette, $, _) } } }, + getDefaultPlayer: function() { + var player; + player = config.getLocal('defaultPlayer', 'auto'); + if (player === 'auto') { + player = config.get('app', 'state:lastplayer', 'kodi'); + } + return player; + }, initKodiState: function() { App.kodiState = new StateApp.Kodi.State(); App.localState = new StateApp.Local.State(); - App.kodiState.setPlayer(config.get('state', 'lastplayer', 'kodi')); + App.kodiState.setPlayer(this.getDefaultPlayer()); App.kodiState.getCurrentState(function(state) { API.setState('kodi'); App.kodiSockets = new StateApp.Kodi.Notifications(); diff --git a/addons/webinterface.default/lang/_strings/de.json b/addons/webinterface.default/lang/_strings/de.json index 2bda564546..454a5755ed 100644 --- a/addons/webinterface.default/lang/_strings/de.json +++ b/addons/webinterface.default/lang/_strings/de.json @@ -1 +1 @@ -{"domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural_forms":"nplurals=2; plural=(n != 1);","lang":"de"},"Nothing playing":["Keine Wiedergabe"],"Deselect all":["Auswahl entfernen"],"Filters":["Filter"],"Sort":["Sortierung"],"Select a filter":["Filter wählen"],"Select an option":["Auswahl treffen"],"filter":["filtern"],"Add filter":["Filter hinzufügen"],"Which player to start with":["Standard-Player beim Start"],"Ignore terms such as 'The' and 'A' when sorting lists":["Artikel wie 'The' und 'A' in sortierten Listen ignorieren"],"When listing artists should we only see artists with albums or all artists found. Warning: turning this off can impact performance with large libraries":["In Listen nur Künstler mit Alben oder alle Künstler anzeigen? Achtung: Kann große Bibliotheken verlangsamen."],"is the default":["ist der Standard"],"The hostname used for websockets connection. Set to 'auto' to use the current hostname.":["Der Hostname wird für die Websockets-Verbindung benutzt. Bitte 'auto' einstellen, um den aktuellen Hostnamen zu verwenden."],"How often do I poll for updates from Kodi (Only applies when websockets inactive)":["Wie oft sollen Kodi-Updates abgefragt werden? (Funktioniert nur, wenn Websockets nicht aktiv sind.)"],"Enable support for reverse proxy.":["Unterstützung für einen 'reverse proxy' einschalten."],"Web settings saved.":["Web-Einstellungen gespeichert."],"Just a sec...":["Momentchen..."],"Unable to communicate with Kodi in a long time. I think it's dead Jim!":["Kodi gibt uns keine Antwort. Ich denke, es ist tot, Jim! (Verbindungs-timeout)"],"Video library scan started":["Video-Bibliothek wird gerade gescannt"],"Video library scan complete":["Scan der Video-Bibliothek abgeschlossen"],"Audio library scan started":["Audio-Bibliothek wird gerade gescannt"],"Audio library scan complete":["Scan der Audio-Bibliothek abgeschlossen"],"Kodi has quit":["Kodi wurde beendet"],"Sections":["Bereiche"],"Back":["Zurück"],"Loading folder...":["Lade Ordner..."],"Show more":["Mehr anzeigen"],"to Kodi":["zu Kodi"],"Playlist refreshed":["Wiedergabeliste erneuert"],"Kodi":["Kodi"],"Local":["Lokal"],"Playlists":["Wiedergabelisten"],"Existing playlists":["Vorhandene Wiedergabelisten"],"Empty playlist, you should probably add something to it?":["Die Wiedergabeliste ist leer, möchtest du etwas hinzufügen?"],"Create a new list":["Neue Liste erstellen"],"Add to playlist":["Zur Wiedergabeliste hinzufügen"],"Added to your playlist":["Zu deiner Wiedergabeliste hinzugefügt"],"Give your playlist a name":["Gib deiner Wiedergabeliste einen Namen"],"Recently added":["Kürzlich hinzugefügt"],"Recently played":["Kürzlich abgespielt"],"Season":["Staffel"],"Episode":["Folge"],"Play":["Abspielen"],"Queue":["Einreihen"],"View on IMDb":["Auf IMDb ansehen"],"Stream":["Stream"],"Download":["Download"],"complete":["abgeschlossen"],"Synopsis":["Zusammenfassung"],"Full cast":["Darstellerliste"],"Websockets closed":["Websockets geschlossen"],"Websockets host":["Websockets Host"],"Websockets port":["Websockets Port"],"Default player":["Standard-Player"],"Ignore article":["Artikel ignorieren"],"Album artists only":["Nur Künstler mit Album"],"Poll interval":["Abfrageintervall"],"Reverse proxy support":["Reverse Proxy Unterstützung"],"Language":["Sprache"],"Preferred language":["Bevorzugte Sprache"],"Ignore articles (terms such as \"The\" and \"A\") when sorting lists":["Artikel (wie 'The' und 'A') beim Sortieren von Listen ignorieren"],"sec":["Sek."],"Your browser doesn't support websockets! Get with the times and update your browser.":["Dein Browser unterstützt keine Websockets, geh mit der Zeit und aktualisiere deinen Browser."],"Failed to connect to websockets":["Websockets sind nicht erreichbar, daher wird nach Updates gesucht. Das macht die Sache langsamer und verbraucht mehr Ressourcen. Kontrolliere bitte, ob anderen Programmen die Fernbedienung von Kodi erlaubt ist (Einstellungen > System > Fernbedienung). Diese Meldung könnte außerdem daher kommen, dass du Proxies benutzt oder über eine IP-Adresse auf localhost zugreifst. Falls Websockets im Allgemeinen funktionieren, könnte auch ein Browser-refresh weiterhelfen (Seite neu laden)."],"Video":["Video"],"Audio":["Audio"],"Cast":["Darsteller"],"Director":["Regisseur","Regisseure"],"Writer":["Autor","Autoren"],"Subtitle":["Untertitel","Untertitel"],"Result":["Ergebnis","Ergebnisse"],"Loading things...":["Es wird geladen..."],"Scan video library":["Video-Bibliothek aktualisieren"],"Scan audio library":["Audio-Bibliothek aktualisieren"],"About Chorus":["Ãœber Chorus"],"Recent":["Zuletzt"],"Artists":["Künstler"],"Albums":["Alben"],"Recent movies":["Letzte Videos"],"All movies":["Alle Videos"],"Recent episodes":["Letzte Folgen"],"All TV shows":["Alle Serien"],"Web settings":["Web-Einstellungen"],"Kodi settings":["Kodi-Einstellungen"],"Now Playing Playlists":["Spiele Wiedergabelisten ab"],"Switch between Kodi and local playback via the tabs. You can toggle visibility with the arrow in the top right":["Zwischen Kodi und lokaler Wiedergabe wechseln. Die Anzeige kann mit dem Pfeil oben rechts umgeschaltet werden."],"Current playlist":["Aktuelle Wiedergabeliste"],"Clear playlist":["Wiedergabeliste leeren"],"Refresh playlist":["Wiedergabeliste aktualisieren"],"Party mode":["Party-Modus"],"Save Kodi playlist":["Kodi-Wiedergabeliste speichern"],"Preferred language, need to refresh browser to take effect":["Bevorzugte Sprache, die Seite muss nach einem Wechsel im Browser neu geladen werden (F5)"],"Ignore articles (terms such as 'The' and 'A') when sorting lists":["Artikel wie 'The' und 'A' in sortierten Listen ignorieren"],"Vibrant headers":["Farbige Ãœberschriften"],"Use colourful headers for media pages":["Bunte Ãœberschriften in Medienseiten benutzen"],"Enable support for reverse proxying.":["Unterstützung für 'reverse proxies' einschalten."],"songs":["Liedern"],"artists":["Künstlern"],"albums":["Alben"],"movies":["Videos"],"Searching for":["Suche nach"],"and":["und"],"tvshows":["Serien"],"no media in this folder":["Keine Dateien in diesem Ordner"],"Browse files and add-ons":["Dateien und Add-ons durchsuchen"],"This is where you can browse all Kodi content, not just what is in the library. Browse by source or add-on.":["Hier kannst du alles in Kodi durchsuchen, nicht nur die Bibliothek. Suche per Quelle oder Add-on."],"Send text to Kodi":["Text an Kodi senden"],"The lab":["Das Labor"],"Chorus lab":["Chorus Entwicklung"],"Warning":["Warnung"],"Experimental code, use at own risk":["Experimentelle Version, Nutzung auf eigene Gefahr"],"Kodi API browser":["Kodi API browser"],"This is a tool to test out the API. Select a method then execute it with parameters.":["Dieses Tool testet die API. Wähle eine Methode und führe es mit Parametern aus."],"You could potentially damage your system with this and there are no sanity checks. Use at own risk.":["Du könntest dein System beschädigen, es gibt keine Sicherheitsprüfungen. Benutzung auf eigene Gefahr."],"Saved Kodi settings":["Kodi Einstellungen wurden gespeichert"],"General":["Allgemein"],"Advanced setting level is recommended for those who know what they are doing.":["Erweiterte Einstellungsmöglichkeiten für alle, die wissen was sie tun."],"Kodi settings level":["Kodi Einstellungsebene"],"Remove":["Löschen"],"cast":["Darsteller"],"Add-ons":["Add-ons"],"Web interface":["Web interface"],"Readme":["Lies mich"],"Changelog":["Änderungen"],"Translations":["Ãœbersetzungen"],"Help topics":["Hilfethemen"],"Overview":["Ãœberblick"],"Lab":["Labor"],"version":["Version"],"Remote control":["Fernbedienung"],"Remote control is set up correctly":["Die Fernbedienung funktioniert."],"About":["Ãœber"],"Local audio":["Lokale Wiedergabe"],"Status report":["Status"],"in":["in"],"Focus playlist on playing":["Wiedergabeliste bei der Wiedergabe nach vorne holen"],"Automatically scroll the playlist to the current playing item. This happens whenever the playing item is changed":["In der Wiedergabeliste zum aktuellen Stück springen, wenn Einträge geändert wurden."],"Web Settings saved.":["Web Einstellungen wurden gespeichert."],"Keyboard controls":["Tastatursteuerung"],"In Chorus, will you keyboard control Kodi, the browser or both":["Chorus mit der Tastatur, dem Browser oder beidem steuern"],"Learn more":["Mehr erfahren"],"Resume playback":["Wiedergabe fortsetzen"],"Resume from":["Fortsetzen ab"],"Start from the beginning":["Von vorne beginnen"],"Click here restore defaults":["Standardeinstellungen wiederherstellen"],"Main Menu Structure":["Hauptmenüstruktur"],"Here you can change the title, url and icons for menu items. You can also remove, re-order and add new items.":["Bezeichnung, URL und Icon von Menüpunkten ändern. Hinzufügen, Löschen und Ordnen der Einträge."],"Main Nav":["Hauptmenü"],"Add a new playlist":["Neue Wiedergabeliste"],"Keyboard":["Tastatur"]}}}
\ No newline at end of file +{"domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural_forms":"nplurals=2; plural=(n != 1);","lang":"de"},"Nothing playing":["Keine Wiedergabe"],"Deselect all":["Auswahl entfernen"],"Filters":["Filter"],"Sort":["Sortierung"],"Select a filter":["Filter wählen"],"Select an option":["Auswahl treffen"],"filter":["filtern"],"Add filter":["Filter hinzufügen"],"Which player to start with":["Standard-Player beim Start"],"Ignore terms such as 'The' and 'A' when sorting lists":["Artikel wie 'The' und 'A' in sortierten Listen ignorieren"],"When listing artists should we only see artists with albums or all artists found. Warning: turning this off can impact performance with large libraries":["In Listen nur Künstler mit Alben oder alle Künstler anzeigen? Achtung: Kann große Bibliotheken verlangsamen."],"is the default":["ist der Standard"],"The hostname used for websockets connection. Set to 'auto' to use the current hostname.":["Der Hostname wird für die Websockets-Verbindung benutzt. Bitte 'auto' einstellen, um den aktuellen Hostnamen zu verwenden."],"How often do I poll for updates from Kodi (Only applies when websockets inactive)":["Wie oft sollen Kodi-Updates abgefragt werden? (Funktioniert nur, wenn Websockets nicht aktiv sind.)"],"Enable support for reverse proxy.":["Unterstützung für einen 'reverse proxy' einschalten."],"Web settings saved.":["Web-Einstellungen gespeichert."],"Just a sec...":["Momentchen..."],"Unable to communicate with Kodi in a long time. I think it's dead Jim!":["Kodi gibt uns keine Antwort. Ich denke, es ist tot, Jim! (Verbindungs-timeout)"],"Video library scan started":["Video-Bibliothek wird gerade gescannt"],"Video library scan complete":["Scan der Video-Bibliothek abgeschlossen"],"Audio library scan started":["Audio-Bibliothek wird gerade gescannt"],"Audio library scan complete":["Scan der Audio-Bibliothek abgeschlossen"],"Kodi has quit":["Kodi wurde beendet"],"Sections":["Bereiche"],"Back":["Zurück"],"Loading folder...":["Lade Ordner..."],"Show more":["Mehr anzeigen"],"to Kodi":["zu Kodi"],"Playlist refreshed":["Wiedergabeliste erneuert"],"Kodi":["Kodi"],"Local":["Lokal"],"Playlists":["Wiedergabelisten"],"Existing playlists":["Vorhandene Wiedergabelisten"],"Empty playlist, you should probably add something to it?":["Die Wiedergabeliste ist leer, möchtest du etwas hinzufügen?"],"Create a new list":["Neue Liste erstellen"],"Add to playlist":["Zur Wiedergabeliste hinzufügen"],"Added to your playlist":["Zu deiner Wiedergabeliste hinzugefügt"],"Give your playlist a name":["Gib deiner Wiedergabeliste einen Namen"],"Recently added":["Kürzlich hinzugefügt"],"Recently played":["Kürzlich abgespielt"],"Season":["Staffel"],"Episode":["Folge"],"Play":["Abspielen"],"Queue":["Einreihen"],"View on IMDb":["Auf IMDb ansehen"],"Stream":["Stream"],"Download":["Download"],"complete":["abgeschlossen"],"Synopsis":["Zusammenfassung"],"Full cast":["Darstellerliste"],"Websockets closed":["Websockets geschlossen"],"Websockets host":["Websockets Host"],"Websockets port":["Websockets Port"],"Default player":["Standard-Player"],"Ignore article":["Artikel ignorieren"],"Album artists only":["Nur Künstler mit Album"],"Poll interval":["Abfrageintervall"],"Reverse proxy support":["Reverse Proxy Unterstützung"],"Language":["Sprache"],"Preferred language":["Bevorzugte Sprache"],"Ignore articles (terms such as \"The\" and \"A\") when sorting lists":["Artikel (wie 'The' und 'A') beim Sortieren von Listen ignorieren"],"sec":["Sek."],"Your browser doesn't support websockets! Get with the times and update your browser.":["Dein Browser unterstützt keine Websockets, geh mit der Zeit und aktualisiere deinen Browser."],"Failed to connect to websockets":["Websockets sind nicht erreichbar, daher wird nach Updates gesucht. Das macht die Sache langsamer und verbraucht mehr Ressourcen. Kontrolliere bitte, ob anderen Programmen die Fernbedienung von Kodi erlaubt ist (Einstellungen > System > Fernbedienung). Diese Meldung könnte außerdem daher kommen, dass du Proxies benutzt oder über eine IP-Adresse auf localhost zugreifst. Falls Websockets im Allgemeinen funktionieren, könnte auch ein Browser-refresh weiterhelfen (Seite neu laden)."],"Video":["Video"],"Audio":["Audio"],"Cast":["Darsteller"],"Director":["Regisseur","Regisseure"],"Writer":["Autor","Autoren"],"Subtitle":["Untertitel","Untertitel"],"Result":["Ergebnis","Ergebnisse"],"Loading things...":["Es wird geladen..."],"Scan video library":["Video-Bibliothek aktualisieren"],"Scan audio library":["Audio-Bibliothek aktualisieren"],"About Chorus":["Über Chorus"],"Recent":["Zuletzt"],"Artists":["Künstler"],"Albums":["Alben"],"Recent movies":["Letzte Videos"],"All movies":["Alle Videos"],"Recent episodes":["Letzte Folgen"],"All TV shows":["Alle Serien"],"Web settings":["Web-Einstellungen"],"Kodi settings":["Kodi-Einstellungen"],"Now Playing Playlists":["Spiele Wiedergabelisten ab"],"Switch between Kodi and local playback via the tabs. You can toggle visibility with the arrow in the top right":["Zwischen Kodi und lokaler Wiedergabe wechseln. Die Anzeige kann mit dem Pfeil oben rechts umgeschaltet werden."],"Current playlist":["Aktuelle Wiedergabeliste"],"Clear playlist":["Wiedergabeliste leeren"],"Refresh playlist":["Wiedergabeliste aktualisieren"],"Party mode":["Party-Modus"],"Save Kodi playlist":["Kodi-Wiedergabeliste speichern"],"Preferred language, need to refresh browser to take effect":["Bevorzugte Sprache, die Seite muss nach einem Wechsel im Browser neu geladen werden (F5)"],"Ignore articles (terms such as 'The' and 'A') when sorting lists":["Artikel wie 'The' und 'A' in sortierten Listen ignorieren"],"Vibrant headers":["Farbige Überschriften"],"Use colourful headers for media pages":["Bunte Überschriften in Medienseiten benutzen"],"Enable support for reverse proxying.":["Unterstützung für 'reverse proxies' einschalten."],"songs":["Liedern"],"artists":["Künstlern"],"albums":["Alben"],"movies":["Videos"],"Searching for":["Suche nach"],"and":["und"],"tvshows":["Serien"],"no media in this folder":["Keine Dateien in diesem Ordner"],"Browse files and add-ons":["Dateien und Add-ons durchsuchen"],"This is where you can browse all Kodi content, not just what is in the library. Browse by source or add-on.":["Hier kannst du alles in Kodi durchsuchen, nicht nur die Bibliothek. Suche per Quelle oder Add-on."],"Send text to Kodi":["Text an Kodi senden"],"The lab":["Das Labor"],"Chorus lab":["Chorus Entwicklung"],"Warning":["Warnung"],"Experimental code, use at own risk":["Experimentelle Version, Nutzung auf eigene Gefahr"],"Kodi API browser":["Kodi API browser"],"This is a tool to test out the API. Select a method then execute it with parameters.":["Dieses Tool testet die API. Wähle eine Methode und führe es mit Parametern aus."],"You could potentially damage your system with this and there are no sanity checks. Use at own risk.":["Du könntest dein System beschädigen, es gibt keine Sicherheitsprüfungen. Benutzung auf eigene Gefahr."],"Saved Kodi settings":["Kodi Einstellungen wurden gespeichert"],"General":["Allgemein"],"Advanced setting level is recommended for those who know what they are doing.":["Erweiterte Einstellungsmöglichkeiten für alle, die wissen was sie tun."],"Kodi settings level":["Kodi Einstellungsebene"],"Remove":["Löschen"],"cast":["Darsteller"],"Add-ons":["Add-ons"],"Web interface":["Web interface"],"Readme":["Lies mich"],"Changelog":["Änderungen"],"Translations":["Übersetzungen"],"Help topics":["Hilfethemen"],"Overview":["Überblick"],"Lab":["Labor"],"version":["Version"],"Remote control":["Fernbedienung"],"Remote control is set up correctly":["Die Fernbedienung funktioniert."],"About":["Über"],"Local audio":["Lokale Wiedergabe"],"Status report":["Status"],"in":["in"],"Focus playlist on playing":["Wiedergabeliste bei der Wiedergabe nach vorne holen"],"Automatically scroll the playlist to the current playing item. This happens whenever the playing item is changed":["In der Wiedergabeliste zum aktuellen Stück springen, wenn Einträge geändert wurden."],"Web Settings saved.":["Web Einstellungen wurden gespeichert."],"Keyboard controls":["Tastatursteuerung"],"In Chorus, will you keyboard control Kodi, the browser or both":["Chorus mit der Tastatur, dem Browser oder beidem steuern"],"Learn more":["Mehr erfahren"],"Resume playback":["Wiedergabe fortsetzen"],"Resume from":["Fortsetzen ab"],"Start from the beginning":["Von vorne beginnen"],"Click here restore defaults":["Standardeinstellungen wiederherstellen"],"Main Menu Structure":["Hauptmenüstruktur"],"Here you can change the title, url and %1$s for menu items. You can also remove, re-order and add new items.":["Bezeichnung, URL und Icon von Menüpunkten ändern. Hinzufügen, Löschen und Ordnen der Einträge."],"Main Nav":["Hauptmenü"],"Add a new playlist":["Neue Wiedergabeliste"],"Keyboard":["Tastatur"],"Music":["Musik"],"Digital radio":["Digitalradio"],"Movies":["Filme"],"TV shows":["TV-Sendungen"],"TV":["TV"],"Browser":["Browser"],"Thumbs up":["Daumen hoch"],"Settings":["Einstellungen"],"Help":["Hilfe"],"Disable Thumbs Up":["Daumen hoch deaktiveren"],"Remove the thumbs up button from media. Note: you may also want to remove the menu item from the ":["Daumen hoch Funktion entfernen. Hinweis: Vielleicht möchtest du den Menüpunkt auch entfernen"],"You need to 'Allow remote control' for Kodi. You can do that":["Du must die \"Fernbedienung\" für Kodi erlauben. Du findest diese Option"],"here":["hier "],"yes":["Ja"],"no":["Nein"],"close":["Schließen"],"ok":["Ok"],"Are you sure?":["Bist du sicher?"],"Set all episodes for this season as":["Alle Folgen dieser Staffel markieren als "],"Set all episodes for this TV show as":["Alle Folgen dieser Serie markieren als "],"watched":["gesehen"],"unwatched":["ungesehen"],"genre":["Genre"],"studio":["Studio"],"rated":["bewertet"],"episodes":["Folgen"],"total":["gesamt"],"set":["einstellen"],"Show device name":["Gerätenamen anzeigen"],"Show the Kodi device name in the header of Chorus":["Den Namen des Kodi-Geräts in der Kopfzeile von Chorus anzeigen"],"No results found":["Keine Ergebnisse"],"Have you done a library scan?":["Hast du die Bibliothek eingelesen?"],"Play in browser":["Im Webbrowser abspielen"],"Edit":["Bearbeiten"],"Add to Kodi":["Zu Kodi hinzufügen"],"Watched":["Gesehen"],"New playlist":["Neue Wiedergabeliste"],"Play in Kodi":["In Kodi abspielen"],"Export list":["Liste exportieren"],"Delete playlist":["Liste löschen"],"title":["Titel"],"year":["Jahr"],"date added":["hinzugefügt am"],"rating":["Bewertung"],"actor":["Schauspieler"],"writer":["Autor"],"director":["Regisseur"],"mood":["Stimmung"],"style":["Stil"],"items selected":["ausgewählte Einträge"],"item selected":["ausgewählter Eintrag"],"Video library clean started":["Video-Bibliothek wird gelöscht"],"Video library clean finished":["Video-Bibliothek gelöscht"],"Audio library clean started":["Audio-Bibliothek wird gelöscht"],"Audio library clean finished":["Audio-Bibliothek gelöscht"],"This is a tool to test out the api. Select a method then execute it with parameters.":["Diese Funktion testet die API. Wähle eine Methode, dann führe sie mit Parametern aus."],"Go to season":["Gehe zur Staffel"],"Queue in Kodi":["In Kodi einreihen"],"Adding items to the queue":["Einträge werden eingereiht"],"Live TV":["Live Fernsehen"],"Recently added albums":["Kürzlich hinzugefügte Alben"],"Random albums":["Zufallsalben"],"Recently played albums":["Kürzlich abgespielte Alben"],"Random movies":["Zufallsvideos"],"Continue watching":["Weiter ansehen"],"More from %1$s":["Mehr von %1$s"],"More %1$s movies":["Mehr %1$s Filme"],"More movies staring %1$s":["Mehr Filme mit %1$s"],"Other movies released in %1$s":["Andere Filme aus dem Jahr %1$s"],"artist":["Künstler"],"random":["Zufall"],"label":["Stichwort"],"formed":["gegründet"],"born":["geboren"],"died":["gestorben"],"disbanded":["aufgelöst"],"years active":["Jahre aktiv"],"Click for more":["Für mehr klicken"],"Loading albums":["Alben werden geladen"],"%1$d seconds ago, an input dialog opened in Kodi and it is still open! To prevent a mainframe implosion, you should probably give me some text. I don't really care what it is at this point, why not be creative? Do you have a %2$s? I won't tell...":["Vor %1$d Sekunden wurde von Kodi ein Dialog geöffnet. Er ist noch offen! Um eine Kernimplusion zu verhindern solltest du dort etwas eingeben. Mir ist total egal was du dort eingibst, warum bist du dabei nicht einfach kreativ? Hast du ein %2$s? Ich kann's nicht sagen..."],"all media":["Alle Medien"],"YouTube":["YouTube"],"SoundCloud":["SoundCloud"],"GoogleMusic":["GoogleMusic"],"Radio":["Radio"],"MixCloud":["MixCloud"],"First aired":["Veröffentlicht am"],"Updated %1$s details":["%1$s aktualisiert"],"Title":["Titel"],"Plot":["Zusammenfassung"],"Rating":["Bewertung"],"Original title":["Originaltitel"],"Directors":["Regisseure"],"Writers":["Autoren"],"File path":["Dateipfad"],"Artist":["Künstler"],"Description":["Beschreibung"],"Label":["Beschriftung"],"Year":["Jahr"],"Genres":["Genres"],"Styles":["Stile"],"Themes":["Aussehen"],"Moods":["Stimmungen"],"Album artist":["Album Künstler"],"Album":["Album"],"Track":["Stück"],"Disc":["Disk"],"Tagline":["Slogan"],"Studio":["Studio"],"Content rating":["Bewertung des Inhalts"],"Premiered":["Premiere am"],"IMDb":["IMDb"],"Sort title":["Titel sortieren"],"Country":["Land"],"Set":["Einstellen"],"Tags":["Beschriftungen"],"Trailer":["Trailer"],"Formed":["Gegründet"],"Disbanded":["Aufgelöst"],"Years Active":["Jahre aktiv"],"Born":["Geboren"],"Died":["Gestorben"],"Instruments":["Instumente"],"more":["mehr"],"in progress":["in Arbeit"],"URL":["URL"],"Add an image via an external URL":["Gib eine gültige externe URL ein"],"Searching for more images":["Suche mehr Bilder"],"Image Selector":["Bildauswahl"],"Image URL":["Bild-URL"],"External Search":["Externe Suche"],"Local media":["Lokale Medien"],"Chorus Search":["Chorus Suche"],"YouTube Search":["YouTube Suche"],"Executed addon":["Ausgeführtes Addon"],"all":["alle"],"video":["Video"],"audio":["Audio"],"image":["Bild"],"picture":["Foto"],"executable":["ausführbar"],"settings":["Einstellungen"]}}}
\ No newline at end of file diff --git a/addons/webinterface.default/lang/_strings/en.json b/addons/webinterface.default/lang/_strings/en.json index 31a620aece..a547cc21c0 100644 --- a/addons/webinterface.default/lang/_strings/en.json +++ b/addons/webinterface.default/lang/_strings/en.json @@ -1 +1 @@ -{"domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural_forms":"nplurals=2; plural=(n != 1);","lang":"en"},"Nothing playing":["Nothing playing"],"Deselect all":["Deselect all"],"Filters":["Filters"],"Sort":["Sort"],"Select a filter":["Select a filter"],"Select an option":["Select an option"],"filter":["filter"],"Add filter":["Add filter"],"Which player to start with":["Which player to start with"],"Ignore terms such as 'The' and 'A' when sorting lists":["Ignore terms such as 'The' and 'A' when sorting lists"],"When listing artists should we only see artists with albums or all artists found. Warning: turning this off can impact performance with large libraries":["When listing artists should we only see artists with albums or all artists found. Warning: turning this off can impact performance with large libraries"],"is the default":["is the default"],"The hostname used for websockets connection. Set to 'auto' to use the current hostname.":["The hostname used for websockets connection. Set to 'auto' to use the current hostname."],"How often do I poll for updates from Kodi (Only applies when websockets inactive)":["How often do I poll for updates from Kodi (Only applies when websockets inactive)"],"Enable support for reverse proxy.":["Enable support for reverse proxy."],"Web settings saved.":["Web settings saved."],"Just a sec...":["Just a sec..."],"Unable to communicate with Kodi in a long time. I think it's dead Jim!":["Unable to communicate with Kodi in a long time. I think it's dead Jim!"],"Video library scan started":["Video library scan started"],"Video library scan complete":["Video library scan complete"],"Audio library scan started":["Audio library scan started"],"Audio library scan complete":["Audio library scan complete"],"Kodi has quit":["Kodi has quit"],"Sections":["Sections"],"Back":["Back"],"Loading folder...":["Loading folder..."],"Show more":["Show more"],"to Kodi":["to Kodi"],"Playlist refreshed":["Playlist refreshed"],"Kodi":["Kodi"],"Local":["Local"],"Playlists":["Playlists"],"Existing playlists":["Existing playlists"],"Empty playlist, you should probably add something to it?":["Empty playlist, you should probably add something to it?"],"Create a new list":["Create a new list"],"Add to playlist":["Add to playlist"],"Added to your playlist":["Added to your playlist"],"Give your playlist a name":["Give your playlist a name"],"Recently added":["Recently added"],"Recently played":["Recently played"],"Season":["Season"],"Episode":["Episode"],"Play":["Play"],"Queue":["Queue"],"View on IMDb":["View on IMDb"],"Stream":["Stream"],"Download":["Download"],"complete":["complete"],"Synopsis":["Synopsis"],"Full cast":["Full cast"],"Websockets closed":["Websockets closed"],"Websockets host":["Websockets host"],"Websockets port":["Websockets port"],"Default player":["Default player"],"Ignore article":["Ignore article"],"Album artists only":["Album artists only"],"Poll interval":["Poll interval"],"Reverse proxy support":["Reverse proxy support"],"Language":["Language"],"Preferred language":["Preferred language"],"Ignore articles (terms such as \"The\" and \"A\") when sorting lists":["Ignore articles (terms such as \"The\" and \"A\") when sorting lists"],"sec":["sec"],"Your browser doesn't support websockets! Get with the times and update your browser.":["Your browser doesn't support websockets! Get with the times and update your browser."],"Failed to connect to websockets":["Failed to connect to websockets, so I am falling back to polling for updates. Which makes things slower and uses more resources. Please ensure you have 'Allow programs on other systems to control Kodi' ENABLED in the Kodi settings (System > Services > Remote control). You may also get this if you are using proxies or accessing via an IP address when localhost will suffice. If websockets normally works, you might just need to refresh your browser."],"Video":["Video"],"Audio":["Audio"],"Cast":["Cast"],"Director":["Director","Directors"],"Writer":["Writer","Writers"],"Subtitle":["Subtitle","Subtitles"],"Result":["Result","Results"],"Loading things...":["Loading things..."],"Scan video library":["Scan video library"],"Scan audio library":["Scan audio library"],"About Chorus":["About Chorus"],"Recent":["Recent"],"Artists":["Artists"],"Albums":["Albums"],"Recent movies":["Recent movies"],"All movies":["All movies"],"Recent episodes":["Recent episodes"],"All TV shows":["All TV shows"],"Web settings":["Web settings"],"Kodi settings":["Kodi settings"],"Now Playing Playlists":["Now Playing Playlists"],"Switch between Kodi and local playback via the tabs. You can toggle visibility with the arrow in the top right":["Switch between Kodi and local playback via the tabs. You can toggle visibility with the arrow in the top right"],"Current playlist":["Current playlist"],"Clear playlist":["Clear playlist"],"Refresh playlist":["Refresh playlist"],"Party mode":["Party mode"],"Save Kodi playlist":["Save Kodi playlist"],"Preferred language, need to refresh browser to take effect":["Preferred language, need to refresh browser to take effect"],"Ignore articles (terms such as 'The' and 'A') when sorting lists":["Ignore articles (terms such as 'The' and 'A') when sorting lists"],"Vibrant headers":["Vibrant headers"],"Use colourful headers for media pages":["Use colourful headers for media pages"],"Enable support for reverse proxying.":["Enable support for reverse proxying."],"songs":["songs"],"artists":["artists"],"albums":["albums"],"movies":["movies"],"Searching for":["Searching for"],"and":["and"],"tvshows":["tvshows"],"no media in this folder":["no media in this folder"],"Browse files and add-ons":["Browse files and add-ons"],"This is where you can browse all Kodi content, not just what is in the library. Browse by source or add-on.":["This is where you can browse all Kodi content, not just what is in the library. Browse by source or add-on."],"Send text to Kodi":["Send text to Kodi"],"The lab":["The lab"],"Chorus lab":["Chorus lab"],"Warning":["Warning"],"Experimental code, use at own risk":["Experimental code, use at own risk"],"Kodi API browser":["Kodi API browser"],"This is a tool to test out the API. Select a method then execute it with parameters.":["This is a tool to test out the API. Select a method then execute it with parameters."],"You could potentially damage your system with this and there are no sanity checks. Use at own risk.":["You could potentially damage your system with this and there are no sanity checks. Use at own risk."],"Saved Kodi settings":["Saved Kodi settings"],"General":["General"],"Advanced setting level is recommended for those who know what they are doing.":["Advanced setting level is recommended for those who know what they are doing."],"Kodi settings level":["Kodi settings level"],"Remove":["Remove"],"cast":["cast"],"Add-ons":["Add-ons"],"Web interface":["Web interface"],"Readme":["Readme"],"Changelog":["Changelog"],"Translations":["Translations"],"Help topics":["Help topics"],"Overview":["Overview"],"Lab":["Lab"],"version":["version"],"Remote control":["Remote control"],"Remote control is set up correctly":["Remote control is set up correctly"],"About":["About"],"Local audio":["Local audio"],"Status report":["Status report"],"in":["in"],"Focus playlist on playing":["Focus playlist on playing"],"Automatically scroll the playlist to the current playing item. This happens whenever the playing item is changed":["Automatically scroll the playlist to the current playing item. This happens whenever the playing item is changed"],"Web Settings saved.":["Web Settings saved."],"Keyboard controls":["Keyboard controls"],"In Chorus, will you keyboard control Kodi, the browser or both":["In Chorus, will your keyboard control Kodi, the browser or both"],"Learn more":["Learn more"],"Resume playback":["Resume playback"],"Resume from":["Resume from"],"Start from the beginning":["Start from the beginning"],"Click here restore defaults":["Click here restore defaults"],"Main Menu Structure":["Main Menu Structure"],"Here you can change the title, url and %1$s for menu items. You can also remove, re-order and add new items.":["Here you can change the title, url and %1$s for menu items. You can also remove, re-order and add new items."],"Main Nav":["Main Nav"],"Add a new playlist":["Add a new playlist"],"Keyboard":["Keyboard"],"Music":["Music"],"Digital radio":["Digital radio"],"Movies":["Movies"],"TV shows":["TV shows"],"TV":["TV"],"Browser":["Browser"],"Thumbs up":["Thumbs up"],"Settings":["Settings"],"Help":["Help"],"Disable Thumbs Up":["Disable Thumbs Up"],"Remove the thumbs up button from media. Note: you may also want to remove the menu item from the %1$s":["Remove the thumbs up button from media. Note: you may also want to remove the menu item from the %1$s"],"You need to 'Allow remote control' for Kodi. You can do that":["You need to 'Allow remote control' for Kodi. You can do that"],"here":["here"],"yes":["yes"],"no":["no"],"close":["close"],"ok":["ok"],"Are you sure?":["Are you sure?"],"Set all episodes for this season as":["Set all episodes for this season as"],"Set all episodes for this TV show as":["Set all episodes for this TV show as"],"watched":["watched"],"unwatched":["unwatched"],"genre":["genre"],"studio":["studio"],"rated":["rated"],"episodes":["episodes"],"total":["total"],"set":["set"],"Show device name":["Show device name"],"Show the Kodi device name in the header of Chorus":["Show the Kodi device name in the header of Chorus"],"No results found":["No results found"],"Have you done a library scan?":["Have you done a library scan?"],"Play in browser":["Play in browser"],"Edit":["Edit"],"Add to Kodi":["Add to Kodi"],"Watched":["Watched"],"New playlist":["New playlist"],"Play in Kodi":["Play in Kodi"],"Export list":["Export list"],"Delete playlist":["Delete playlist"],"title":["title"],"year":["year"],"date added":["date added"],"rating":["rating"],"actor":["actor"],"mood":["mood"],"writer":["writer"],"director":["director"],"style":["style"],"items selected":["items selected"],"item selected":["item selected"],"Video library clean started":["Video library clean started"],"Video library clean finished":["Video library clean finished"],"Audio library clean started":["Audio library clean started"],"Audio library clean finished":["Audio library clean finished"],"This is a tool to test out the api. Select a method then execute it with parameters.":["This is a tool to test out the api. Select a method then execute it with parameters."],"Go to season":["Go to season"],"Queue in Kodi":["Queue in Kodi"],"Adding items to the queue":["Adding items to the queue"],"Live TV":["Live TV"],"Recently added albums":["Recently added albums"],"Random albums":["Random albums"],"Recently played albums":["Recently played albums"],"Random movies":["Random movies"],"Continue watching":["Continue watching"],"More from %1$s":["More from %1$s"],"More %1$s movies":["More %1$s movies"],"More movies staring %1$s":["More movies staring %1$s"],"Other movies released in %1$s":["Other movies released in %1$s"],"artist":["artist"],"random":["random"],"label":["label"],"formed":["formed"],"born":["born"],"died":["died"],"disbanded":["disbanded"],"years active":["years active"],"Click for more":["Click for more"],"Loading albums":["Loading albums"],"%1$d seconds ago, an input dialog opened in Kodi and it is still open! To prevent a mainframe implosion, you should probably give me some text. I don't really care what it is at this point, why not be creative? Do you have a %2$s? I won't tell...":["%1$d seconds ago, an input dialog opened in Kodi and it is still open! To prevent a mainframe implosion, you should probably give me some text. I don't really care what it is at this point, why not be creative? Do you have a %2$s? I won't tell..."],"all media":["all media"],"YouTube":["YouTube"],"SoundCloud":["SoundCloud"],"GoogleMusic":["GoogleMusic"],"Radio":["Radio"],"MixCloud":["MixCloud"],"First aired":["First aired"],"Updated %1$s details":["Updated %1$s details"],"Title":["Title"],"Plot":["Plot"],"Rating":["Rating"],"Original title":["Original title"],"Directors":["Directors"],"Writers":["Writers"],"File path":["File path"],"Artist":["Artist"],"Description":["Description"],"Label":["Label"],"Year":["Year"],"Genres":["Genres"],"Styles":["Styles"],"Themes":["Themes"],"Moods":["Moods"],"Album artist":["Album artist"],"Album":["Album"],"Track":["Track"],"Disc":["Disc"],"Tagline":["Tagline"],"Studio":["Studio"],"Content rating":["Content rating"],"Premiered":["Premiered"],"IMDb":["IMDb"],"Sort title":["Sort title"],"Country":["Country"],"Set":["Set"],"Tags":["Tags"],"Trailer":["Trailer"],"Formed":["Formed"],"Disbanded":["Disbanded"],"Years Active":["Years Active"],"Born":["Born"],"Died":["Died"],"Instruments":["Instruments"],"more":["more"],"in progress":["in progress"],"URL":["URL"],"Add an image via an external URL":["Add an image via an external URL"],"Searching for more images":["Searching for more images"],"Selector":["Selector"],"External Search":["External Search"],"Local media":["Local media"],"Chorus Search":["Chorus Search"],"YouTube Search":["YouTube Search"],"Executed addon":["Executed addon"],"all":["all"],"video":["video"],"audio":["audio"],"image":["image"],"picture":["picture"],"executable":["executable"],"settings":["settings"],"Refresh":["Refresh"],"Confirm refresh":["Refreshing '%1$s' will remove it from the library then re-add it, so the ID may change. I'll attempt to reload this page with the new ID in a few seconds. Click 'YES' to confirm refresh"],"Refresh Ignore NFO":["Refresh Ignore NFO"],"Ignore local NFO files when manually refreshing media.":["Ignore local NFO files when manually refreshing media."],"Show only":["Show only"],"Show and episodes":["Show and episodes"],"Top music":["Top music"],"%1$s Artists":["%1$s Artists"],"%1$s Albums":["%1$s Albums"],"%1$s Songs":["%1$s Songs"],"default":["default"],"Actions":["Actions"],"play files":["play files"],"queue files":["queue files"],"Sent text":["Sent text"],"License":["License"],"Main Menu":["Main Menu"],"Search":["Search"],"Custom Add-on search":["Custom Add-on search"],"Add custom add-on searches":["Chorus search supports searching not only local media but add-on content too. For example, you can use the search to find videos in YouTube or audio in SoundCloud. This page allows you to add custom add-on searches that are not included out of the box. See the %1$s for more information."],"Add-ons help page":["Add-ons help page"],"No %1$s found":["No %1$s found"],"results":["results"],"EPG data":["EPG data"],"PVR":["PVR"],"Recordings":["Recordings"],"Channel recording toggled":["Channel recording toggled"],"TV Channels":["TV Channels"],"Radio Stations":["Radio Stations"],"Record":["Record"],"Toggle timer":["Toggle timer"],"Now":["Now"],"Rename playlist":["Rename playlist"],"album":["album"],"Videos":["Videos"],"Lost connection to Kodi":["Lost connection to Kodi"],"Attempt to reconnect":["Attempt to reconnect"],"Attempting reconnect":["Attempting reconnect"],"Top Songs":["Top Songs"],"Top Albums":["Top Albums"],"Toggle select all":["Toggle select all"],"More like this":["More like this"],"music videos":["music videos"],"Related music videos from YouTube":["Related music videos from YouTube"],"Lost websocket connection":["Lost websocket connection"],"Attempting websockets reconnect":["Attempting websockets reconnect"],"This should be the play path for the trailer. Eg. %1$s":["This should be the play path for the trailer. Eg. %1$s"]}}}
\ No newline at end of file +{"domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural_forms":"nplurals=2; plural=(n != 1);","lang":"en"},"Nothing playing":["Nothing playing"],"Deselect all":["Deselect all"],"Filters":["Filters"],"Sort":["Sort"],"Select a filter":["Select a filter"],"Select an option":["Select an option"],"filter":["filter"],"Add filter":["Add filter"],"Which player to start with":["Which player to start with"],"Ignore terms such as 'The' and 'A' when sorting lists":["Ignore terms such as 'The' and 'A' when sorting lists"],"When listing artists should we only see artists with albums or all artists found. Warning: turning this off can impact performance with large libraries":["When listing artists should we only see artists with albums or all artists found. Warning: turning this off can impact performance with large libraries"],"is the default":["is the default"],"The hostname used for websockets connection. Set to 'auto' to use the current hostname.":["The hostname used for websockets connection. Set to 'auto' to use the current hostname."],"How often do I poll for updates from Kodi (Only applies when websockets inactive)":["How often do I poll for updates from Kodi (Only applies when websockets inactive)"],"Enable support for reverse proxy.":["Enable support for reverse proxy."],"Web settings saved.":["Web settings saved."],"Just a sec...":["Just a sec..."],"Unable to communicate with Kodi in a long time. I think it's dead Jim!":["Unable to communicate with Kodi in a long time. I think it's dead Jim!"],"Video library scan started":["Video library scan started"],"Video library scan complete":["Video library scan complete"],"Audio library scan started":["Audio library scan started"],"Audio library scan complete":["Audio library scan complete"],"Kodi has quit":["Kodi has quit"],"Sections":["Sections"],"Back":["Back"],"Loading folder...":["Loading folder..."],"Show more":["Show more"],"to Kodi":["to Kodi"],"Playlist refreshed":["Playlist refreshed"],"Kodi":["Kodi"],"Local":["Local"],"Playlists":["Playlists"],"Existing playlists":["Existing playlists"],"Empty playlist, you should probably add something to it?":["Empty playlist, you should probably add something to it?"],"Create a new list":["Create a new list"],"Add to playlist":["Add to playlist"],"Added to your playlist":["Added to your playlist"],"Give your playlist a name":["Give your playlist a name"],"Recently added":["Recently added"],"Recently played":["Recently played"],"Season":["Season"],"Episode":["Episode"],"Play":["Play"],"Queue":["Queue"],"View on IMDb":["View on IMDb"],"Stream":["Stream"],"Download":["Download"],"complete":["complete"],"Synopsis":["Synopsis"],"Full cast":["Full cast"],"Websockets closed":["Websockets closed"],"Websockets host":["Websockets host"],"Websockets port":["Websockets port"],"Default player":["Default player"],"Ignore article":["Ignore article"],"Album artists only":["Album artists only"],"Poll interval":["Poll interval"],"Reverse proxy support":["Reverse proxy support"],"Language":["Language"],"Preferred language":["Preferred language"],"Ignore articles (terms such as \"The\" and \"A\") when sorting lists":["Ignore articles (terms such as \"The\" and \"A\") when sorting lists"],"sec":["sec"],"Your browser doesn't support websockets! Get with the times and update your browser.":["Your browser doesn't support websockets! Get with the times and update your browser."],"Failed to connect to websockets":["Failed to connect to websockets, so I am falling back to polling for updates. Which makes things slower and uses more resources. Please ensure you have 'Allow programs on other systems to control Kodi' ENABLED in the Kodi settings (System > Services > Remote control). You may also get this if you are using proxies or accessing via an IP address when localhost will suffice. If websockets normally works, you might just need to refresh your browser."],"Video":["Video"],"Audio":["Audio"],"Cast":["Cast"],"Director":["Director","Directors"],"Writer":["Writer","Writers"],"Subtitle":["Subtitle","Subtitles"],"Result":["Result","Results"],"Loading things...":["Loading things..."],"Scan video library":["Scan video library"],"Scan audio library":["Scan audio library"],"About Chorus":["About Chorus"],"Recent":["Recent"],"Artists":["Artists"],"Albums":["Albums"],"Recent movies":["Recent movies"],"All movies":["All movies"],"Recent episodes":["Recent episodes"],"All TV shows":["All TV shows"],"Web settings":["Web settings"],"Kodi settings":["Kodi settings"],"Now Playing Playlists":["Now Playing Playlists"],"Switch between Kodi and local playback via the tabs. You can toggle visibility with the arrow in the top right":["Switch between Kodi and local playback via the tabs. You can toggle visibility with the arrow in the top right"],"Current playlist":["Current playlist"],"Clear playlist":["Clear playlist"],"Refresh playlist":["Refresh playlist"],"Party mode":["Party mode"],"Save Kodi playlist":["Save Kodi playlist"],"Preferred language, need to refresh browser to take effect":["Preferred language, need to refresh browser to take effect"],"Ignore articles (terms such as 'The' and 'A') when sorting lists":["Ignore articles (terms such as 'The' and 'A') when sorting lists"],"Vibrant headers":["Vibrant headers"],"Use colourful headers for media pages":["Use colourful headers for media pages"],"Enable support for reverse proxying.":["Enable support for reverse proxying."],"songs":["songs"],"artists":["artists"],"albums":["albums"],"movies":["movies"],"Searching for":["Searching for"],"and":["and"],"tvshows":["tvshows"],"no media in this folder":["no media in this folder"],"Browse files and add-ons":["Browse files and add-ons"],"This is where you can browse all Kodi content, not just what is in the library. Browse by source or add-on.":["This is where you can browse all Kodi content, not just what is in the library. Browse by source or add-on."],"Send text to Kodi":["Send text to Kodi"],"The lab":["The lab"],"Chorus lab":["Chorus lab"],"Warning":["Warning"],"Experimental code, use at own risk":["Experimental code, use at own risk"],"Kodi API browser":["Kodi API browser"],"This is a tool to test out the API. Select a method then execute it with parameters.":["This is a tool to test out the API. Select a method then execute it with parameters."],"You could potentially damage your system with this and there are no sanity checks. Use at own risk.":["You could potentially damage your system with this and there are no sanity checks. Use at own risk."],"Saved Kodi settings":["Saved Kodi settings"],"General":["General"],"Advanced setting level is recommended for those who know what they are doing.":["Advanced setting level is recommended for those who know what they are doing."],"Kodi settings level":["Kodi settings level"],"Remove":["Remove"],"cast":["cast"],"Add-ons":["Add-ons"],"Web interface":["Web interface"],"Readme":["Readme"],"Changelog":["Changelog"],"Translations":["Translations"],"Help topics":["Help topics"],"Overview":["Overview"],"Lab":["Lab"],"version":["version"],"Remote control":["Remote control"],"Remote control is set up correctly":["Remote control is set up correctly"],"About":["About"],"Local audio":["Local audio"],"Status report":["Status report"],"in":["in"],"Focus playlist on playing":["Focus playlist on playing"],"Automatically scroll the playlist to the current playing item. This happens whenever the playing item is changed":["Automatically scroll the playlist to the current playing item. This happens whenever the playing item is changed"],"Web Settings saved.":["Web Settings saved."],"Keyboard controls":["Keyboard controls"],"In Chorus, will you keyboard control Kodi, the browser or both":["In Chorus, will your keyboard control Kodi, the browser or both"],"Learn more":["Learn more"],"Resume playback":["Resume playback"],"Resume from":["Resume from"],"Start from the beginning":["Start from the beginning"],"Click here restore defaults":["Click here restore defaults"],"Main Menu Structure":["Main Menu Structure"],"Here you can change the title, url and %1$s for menu items. You can also remove, re-order and add new items.":["Here you can change the title, url and %1$s for menu items. You can also remove, re-order and add new items."],"Main Nav":["Main Nav"],"Add a new playlist":["Add a new playlist"],"Keyboard":["Keyboard"],"Music":["Music"],"Digital radio":["Digital radio"],"Movies":["Movies"],"TV shows":["TV shows"],"TV":["TV"],"Browser":["Browser"],"Thumbs up":["Thumbs up"],"Settings":["Settings"],"Help":["Help"],"Disable Thumbs Up":["Disable Thumbs Up"],"Remove the thumbs up button from media. Note: you may also want to remove the menu item from the %1$s":["Remove the thumbs up button from media. Note: you may also want to remove the menu item from the %1$s"],"You need to 'Allow remote control' for Kodi. You can do that":["You need to 'Allow remote control' for Kodi. You can do that"],"here":["here"],"yes":["yes"],"no":["no"],"close":["close"],"ok":["ok"],"Are you sure?":["Are you sure?"],"Set all episodes for this season as":["Set all episodes for this season as"],"Set all episodes for this TV show as":["Set all episodes for this TV show as"],"watched":["watched"],"unwatched":["unwatched"],"genre":["genre"],"studio":["studio"],"rated":["rated"],"episodes":["episodes"],"total":["total"],"set":["set"],"Show device name":["Show device name"],"Show the Kodi device name in the header of Chorus":["Show the Kodi device name in the header of Chorus"],"No results found":["No results found"],"Have you done a library scan?":["Have you done a library scan?"],"Play in browser":["Play in browser"],"Edit":["Edit"],"Add to Kodi":["Add to Kodi"],"Watched":["Watched"],"New playlist":["New playlist"],"Play in Kodi":["Play in Kodi"],"Export list":["Export list"],"Delete playlist":["Delete playlist"],"title":["title"],"year":["year"],"date added":["date added"],"rating":["rating"],"actor":["actor"],"mood":["mood"],"writer":["writer"],"director":["director"],"style":["style"],"items selected":["items selected"],"item selected":["item selected"],"Video library clean started":["Video library clean started"],"Video library clean finished":["Video library clean finished"],"Audio library clean started":["Audio library clean started"],"Audio library clean finished":["Audio library clean finished"],"This is a tool to test out the api. Select a method then execute it with parameters.":["This is a tool to test out the api. Select a method then execute it with parameters."],"Go to season":["Go to season"],"Queue in Kodi":["Queue in Kodi"],"Adding items to the queue":["Adding items to the queue"],"Live TV":["Live TV"],"Recently added albums":["Recently added albums"],"Random albums":["Random albums"],"Recently played albums":["Recently played albums"],"Random movies":["Random movies"],"Continue watching":["Continue watching"],"More from %1$s":["More from %1$s"],"More %1$s movies":["More %1$s movies"],"More movies staring %1$s":["More movies staring %1$s"],"Other movies released in %1$s":["Other movies released in %1$s"],"artist":["artist"],"random":["random"],"label":["label"],"formed":["formed"],"born":["born"],"died":["died"],"disbanded":["disbanded"],"years active":["years active"],"Click for more":["Click for more"],"Loading albums":["Loading albums"],"%1$d seconds ago, an input dialog opened in Kodi and it is still open! To prevent a mainframe implosion, you should probably give me some text. I don't really care what it is at this point, why not be creative? Do you have a %2$s? I won't tell...":["%1$d seconds ago, an input dialog opened in Kodi and it is still open! To prevent a mainframe implosion, you should probably give me some text. I don't really care what it is at this point, why not be creative? Do you have a %2$s? I won't tell..."],"all media":["all media"],"YouTube":["YouTube"],"SoundCloud":["SoundCloud"],"GoogleMusic":["GoogleMusic"],"Radio":["Radio"],"MixCloud":["MixCloud"],"First aired":["First aired"],"Updated %1$s details":["Updated %1$s details"],"Title":["Title"],"Plot":["Plot"],"Rating":["Rating"],"Original title":["Original title"],"Directors":["Directors"],"Writers":["Writers"],"File path":["File path"],"Artist":["Artist"],"Description":["Description"],"Label":["Label"],"Year":["Year"],"Genres":["Genres"],"Styles":["Styles"],"Themes":["Themes"],"Moods":["Moods"],"Album artist":["Album artist"],"Album":["Album"],"Track":["Track"],"Disc":["Disc"],"Tagline":["Tagline"],"Studio":["Studio"],"Content rating":["Content rating"],"Premiered":["Premiered"],"IMDb":["IMDb"],"Sort title":["Sort title"],"Country":["Country"],"Set":["Set"],"Tags":["Tags"],"Trailer":["Trailer"],"Formed":["Formed"],"Disbanded":["Disbanded"],"Years Active":["Years Active"],"Born":["Born"],"Died":["Died"],"Instruments":["Instruments"],"more":["more"],"in progress":["in progress"],"URL":["URL"],"Add an image via an external URL":["Add an image via an external URL"],"Searching for more images":["Searching for more images"],"Selector":["Selector"],"External Search":["External Search"],"Local media":["Local media"],"Chorus Search":["Chorus Search"],"YouTube Search":["YouTube Search"],"Executed addon":["Executed addon"],"all":["all"],"video":["video"],"audio":["audio"],"image":["image"],"picture":["picture"],"executable":["executable"],"settings":["settings"],"Refresh":["Refresh"],"Confirm refresh":["Refreshing '%1$s' will remove it from the library then re-add it, so the ID may change. I'll attempt to reload this page with the new ID in a few seconds. Click 'YES' to confirm refresh"],"Refresh Ignore NFO":["Refresh Ignore NFO"],"Ignore local NFO files when manually refreshing media.":["Ignore local NFO files when manually refreshing media."],"Show only":["Show only"],"Show and episodes":["Show and episodes"],"Top music":["Top music"],"%1$s Artists":["%1$s Artists"],"%1$s Albums":["%1$s Albums"],"%1$s Songs":["%1$s Songs"],"default":["default"],"Actions":["Actions"],"play files":["play files"],"queue files":["queue files"],"Sent text":["Sent text"],"License":["License"],"Main Menu":["Main Menu"],"Search":["Search"],"Custom Add-on search":["Custom Add-on search"],"Add custom add-on searches":["Chorus search supports searching not only local media but add-on content too. For example, you can use the search to find videos in YouTube or audio in SoundCloud. This page allows you to add custom add-on searches that are not included out of the box. See the %1$s for more information."],"Add-ons help page":["Add-ons help page"],"No %1$s found":["No %1$s found"],"results":["results"],"EPG data":["EPG data"],"PVR":["PVR"],"Recordings":["Recordings"],"Channel recording toggled":["Channel recording toggled"],"TV Channels":["TV Channels"],"Radio Stations":["Radio Stations"],"Record":["Record"],"Toggle timer":["Toggle timer"],"Now":["Now"],"Rename playlist":["Rename playlist"],"album":["album"],"Videos":["Videos"],"Lost connection to Kodi":["Lost connection to Kodi"],"Attempt to reconnect":["Attempt to reconnect"],"Attempting reconnect":["Attempting reconnect"],"Top Songs":["Top Songs"],"Top Albums":["Top Albums"],"Toggle select all":["Toggle select all"],"More like this":["More like this"],"music videos":["music videos"],"Related music videos from YouTube":["Related music videos from YouTube"],"Lost websocket connection":["Lost websocket connection"],"Attempting websockets reconnect":["Attempting websockets reconnect"],"This should be the play path for the trailer. Eg. %1$s":["This should be the play path for the trailer. Eg. %1$s"],"%1$s party mode toggled":["%1$s party mode toggled"]}}}
\ No newline at end of file diff --git a/addons/webinterface.default/lang/_strings/pl.json b/addons/webinterface.default/lang/_strings/pl.json index 5919a9290a..c6a2868982 100644 --- a/addons/webinterface.default/lang/_strings/pl.json +++ b/addons/webinterface.default/lang/_strings/pl.json @@ -1 +1 @@ -{"domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural_forms":"nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);","lang":"pl_PL"},"Nothing playing":["Odtwarzanie nieaktywne"],"Deselect all":["Odznacz wszystkie"],"Filters":["Filtry"],"Sort":["Sortowanie"],"Select a filter":["Wybierz filtr"],"Select an option":["Wybierz opcję"],"filter":["filtr"],"Add filter":["Dodaj filtr"],"Which player to start with":["Określa domyślnie używany odtwarzacz mediów"],"Ignore terms such as 'The' and 'A' when sorting lists":["Ignoruj wyrażenia takie, jak 'The' i 'A' podczas sortowania list"],"When listing artists should we only see artists with albums or all artists found. Warning: turning this off can impact performance with large libraries":["W trakcie przeglądania listy wykonawców, widoczni będą tylko wykonawcy z własnymi albumami lub wszyscy odnalezieni wykonawcy. Ostrzeżenie: dezaktywowanie tej funkcji może mieć negatywny wpływ na wydajność w przypadku dużych bibliotek."],"is the default":["jest domyślny"],"The hostname used for websockets connection. Set to 'auto' to use the current hostname.":["Nazwa serwera używanego do połączenia WebSocket. Ustaw na 'auto', aby używać nazwy lokalnego komputera."],"How often do I poll for updates from Kodi (Only applies when websockets inactive)":["Określa częstotliwość aktualizacji zawartości z Kodi (używane tylko w przypadku nieaktywnego połączenia WebSocket)"],"Enable support for reverse proxy.":["Umożliwia aktywację obsługi reverse proxy."],"Web settings saved.":["Zapisano ustawienia interfejsu webowego."],"Just a sec...":["Proszę czekać..."],"Unable to communicate with Kodi in a long time. I think it's dead Jim!":["Komunikacja z Kodi była niemożliwa przez dłuższy czas. Prawdopodobnie program się zawiesił!"],"Video library scan started":["Rozpoczęto skanowanie biblioteki wideo"],"Video library scan complete":["Zakończono skanowanie biblioteki wideo"],"Audio library scan started":["Rozpoczęto skanowanie biblioteki muzyki"],"Audio library scan complete":["Zakończono skanowanie biblioteki muzyki"],"Kodi has quit":["Proces Kodi został zamknięty"],"Sections":["Sekcje"],"Back":["Powrót"],"Loading folder...":["Wczytywanie folderu..."],"Show more":["Pokaż więcej"],"to Kodi":["do Kodi"],"Playlist refreshed":["Lista odtwarzania została odświeżona"],"Kodi":["Kodi"],"Local":["Przeglądarka"],"Playlists":["Listy odtwarzania"],"Existing playlists":["Istniejące listy odtwarzania"],"Empty playlist, you should probably add something to it?":["Lista odtwarzania jest pusta, powinieneś coś do niej dodać."],"Create a new list":["Utwórz nową listę"],"Add to playlist":["Dodaj do listy"],"Added to your playlist":["Dodano do listy odtwarzania"],"Give your playlist a name":["Nadaj nazwę swojej liście"],"Recently added":["Ostatnio dodane"],"Recently played":["Ostatnio odtwarzane"],"Season":["Sezon"],"Episode":["Odcinek"],"Play":["Odtwarzaj"],"Queue":["Dodaj do kolejki"],"View on IMDb":["Zobacz na IMDb"],"Stream":["Transmituj"],"Download":["Pobierz"],"complete":["zakończone"],"Synopsis":["Streszczenie"],"Full cast":["Pełna obsada"],"Websockets closed":["Połączenie WebSocket zostało zamknięte"],"Websockets host":["Serwer WebSocket"],"Websockets port":["Port WebSocket"],"Default player":["Odtwarzacz domyślny"],"Ignore article":["Ignoruj przedimki"],"Album artists only":["Tylko wykonawcy albumów"],"Poll interval":["Częstotliwość odświeżania zawartości"],"Reverse proxy support":["Obsługa reverse proxy"],"Language":["Język"],"Preferred language":["Język preferowany"],"Ignore articles (terms such as \"The\" and \"A\") when sorting lists":["Ignoruj przedimki (wyrażenia takie, jak \"The\" i \"A\") podczas sortowania list"],"sec":["sek."],"Your browser doesn't support websockets! Get with the times and update your browser.":["Twoja przeglądarka nie obsługuje połączeń WebSocket! Idź z duchem czasu i zaktualizuj swoją przeglądarkę."],"Failed to connect to websockets":["Nieudane połączenie WebSocket, awaryjna aktywacja połączenia bezstanowego z cykliczną aktualizacją zawartości. Połączenie tego typu jest wolniejsze i używa więcej zasobów. Upewnij się, że aktywowałeś opcję 'Zezwalaj zdalnym programom na sterowanie aplikacją' w ustawieniach Kodi (System -> Usługi -> Sterowanie). Innym powodem tego problemu może być korzystanie z serwera proxy lub dostęp za pośrednictwem adresu IP, gdy możliwy jest dostęp przy pomocy nazwy localhost. W przypadku poprawnego działania połączenia WebSocket, wystarczy odświeżyć zawartość przeglądarki."],"Video":["Wideo"],"Audio":["Dźwięk"],"Cast":["Obsada"],"Director":["Reżyser","Reżyserzy","Reżyserzy"],"Writer":["Scenarzysta","Scenarzyści","Scenarzyści"],"Subtitle":["Napisy","Napisy","Napisy"],"Result":["Wynik","Wyniki","Wyników"],"Loading things...":["Wczytywanie zawartości..."],"Scan video library":["Skanowanie biblioteki wideo"],"Scan audio library":["Skanowanie biblioteki muzyki"],"About Chorus":["O Chorusie"],"Recent":["Ostatnio"],"Artists":["Wykonawcy"],"Albums":["Albumy"],"Recent movies":["Najnowsze filmy"],"All movies":["Wszystkie filmy"],"Recent episodes":["Najnowsze odcinki"],"All TV shows":["Wszystkie seriale"],"Web settings":["Ustawienia webowe"],"Kodi settings":["Ustawienia Kodi"],"Now Playing Playlists":["Listy Teraz odtwarzane"],"Switch between Kodi and local playback via the tabs. You can toggle visibility with the arrow in the top right":["Umożliwia wybór odtwarzacza mediów, pomiędzy Kodi a przeglądarką, przy pomocy zakładek. Możesz zmienić widoczność zakładek przy pomocy strzałki w prawym górnym rogu."],"Current playlist":["Aktualna lista odtwarzania"],"Clear playlist":["Wyczyść listę"],"Refresh playlist":["Odśwież listę"],"Party mode":["Tryb Imprezy"],"Save Kodi playlist":["Zapisz listę w Kodi"],"Preferred language, need to refresh browser to take effect":["Zmiana języka preferowanego wymaga odświeżenia zawartości przeglądarki"],"Ignore articles (terms such as 'The' and 'A') when sorting lists":["Ignoruj przedminki (wyrażenia takie, jak: 'The' i 'A') podczas sortowania list"],"Vibrant headers":["Dynamiczne nagłówki"],"Use colourful headers for media pages":["Umożliwia używanie osobnego koloru nagłówka dla każdego typu mediów"],"Enable support for reverse proxying.":["Umożliwia aktywację obsługi reverse proxy."],"songs":["utwory"],"artists":["wykonawcy"],"albums":["albumy"],"movies":["filmy"],"Searching for":["Szukaj"],"and":["i"],"tvshows":["seriale"],"no media in this folder":["Brak mediów w folderze"],"Browse files and add-ons":["Przeglądaj pliki i dodatki"],"This is where you can browse all Kodi content, not just what is in the library. Browse by source or add-on.":["Miejsce, w którym możesz przeglądać całą zawartość Kodi, nie tylko to co znajduje się w bibliotece. Przeglądanie w podziale na źródła i dodatki."],"Send text to Kodi":["Wyślij tekst do Kodi"],"The lab":["Laboratorium"],"Chorus lab":["Laboratorium Chorusa"],"Warning":["Ostrzeżenie"],"Experimental code, use at own risk":["Funkcje eksperymentalne, używasz ich na własną odpowiedzialność."],"Kodi API browser":["Przeglądarka API Kodi"],"This is a tool to test out the API. Select a method then execute it with parameters.":["Narzędzie do testowania interfejsu programistycznego Kodi. Wybierz metodę, a następnie wykonaj ją z zadanymi parametrami"],"You could potentially damage your system with this and there are no sanity checks. Use at own risk.":["Istnieje potencjalna szansa na uszkodzenie Twojego systemu, ponieważ nie ma żadnej kontroli poprawności. Używasz na własną odpowiedzialność."],"Saved Kodi settings":["Zapisano zmiany ustawień Kodi"],"General":["Ogólne"],"Advanced setting level is recommended for those who know what they are doing.":["Poziom Zaawansowany jest rekomendowany tylko dla tych, którzy wiedzą co robią."],"Kodi settings level":["Poziom ustawień Kodi"],"Remove":["Usuń"],"cast":["obsada"],"Add-ons":["Dodatki"],"Web interface":["Interfejs webowy"],"Readme":["Dokumentacja"],"Changelog":["Dziennik zmian"],"Translations":["Tłumaczenia"],"Help topics":["Tematy pomocy"],"Overview":["Przegląd"],"Lab":["Laboratorium"],"version":["wersja"],"Remote control":["Sterowanie"],"Remote control is set up correctly":["Zdalne sterowanie zostało poprawnie skonfigurowane"],"About":["O Chorusie"],"Local audio":["Dźwięk"],"Status report":["Raport o stanie"],"in":["w"],"Focus playlist on playing":["Zaznaczaj odtwarzaną pozycję na liście"],"Automatically scroll the playlist to the current playing item. This happens whenever the playing item is changed":["Umożliwia automatyczne przewijanie listy do aktualnie odtwarzanej pozycji. Ta operacja jest wykonywana za każdym razem, gdy zmienia się odtwarzana pozycja."],"Web Settings saved.":["Zapisano ustawienia interfejsu webowego."],"Keyboard controls":["Sterowanie klawiaturą"],"In Chorus, will you keyboard control Kodi, the browser or both":["Umożliwia sterowanie przy pomocy klawiatury działaniem Kodi, przeglądarki lub oboma jednocześnie"],"Learn more":["Dowiedz się więcej"],"Resume playback":["Wznów odtwarzanie"],"Resume from":["Wznów od"],"Start from the beginning":["Zacznij od początku"],"Click here restore defaults":["Naciśnij, aby przywrócić domyślne ustawienia"],"Main Menu Structure":["Struktura menu"],"Here you can change the title, url and %1$s for menu items. You can also remove, re-order and add new items.":["Umożliwia zmianę tytułu, adresu URL i %1$s pozycji menu. Możesz także usunąć pozycje, zmienić ich kolejność lub dodać nowe pozycje."],"Main Nav":["Nawigacja"],"Add a new playlist":["Dodaj nową listę"],"Keyboard":["Klawiatura"],"Music":["Muzyka"],"Digital radio":["Radio"],"Movies":["Filmy"],"TV shows":["Seriale"],"TV":["Telewizja"],"Browser":["Przeglądarka"],"Thumbs up":["Lubię to!"],"Settings":["Ustawienia"],"Help":["Pomoc"],"Disable Thumbs Up":["Dezaktywuj funkcję 'Lubię to!'"],"Remove the thumbs up button from media. Note: you may also want to remove the menu item from the ":["Umożliwia usunięcie przycisku 'Lubię to' z panelu informacji o mediach. Uwaga: Możesz także usunąć pozycję menu z "],"You need to 'Allow remote control' for Kodi. You can do that":["Wymagana aktywacja opcji 'Zezwalaj na zdalne sterowanie Kodi przez HTTP'. Możesz to zrobić"],"here":["tutaj"],"yes":["tak"],"no":["nie"],"close":["zamknij"],"ok":["ok"],"Are you sure?":["Jesteś pewien?"],"Set all episodes for this season as":["Ustaw wszystkie odcinki tego sezonu jako"],"Set all episodes for this TV show as":["Ustaw wszystkie odcinki tego serialu jako"],"watched":["obejrzane"],"unwatched":["nieobejrzane"],"genre":["gatunek"],"studio":["wytwórnia"],"rated":["kategoria"],"episodes":["odcinki"],"total":["razem"],"set":["ustaw"],"Show device name":["Pokazuj nazwę urządzenia"],"Show the Kodi device name in the header of Chorus":["Umożliwia wyświetlanie nazwy urządzenia, na którym uruchomiono Kodi, w nagłówku strony Chorusa."],"No results found":["Brak wyników wyszukiwania"],"Have you done a library scan?":["Czy wykonałeś skanowanie biblioteki?"],"Play in browser":["Odtwarzaj w przeglądarce"],"Edit":["Edytuj"],"Add to Kodi":["Dodaj do Kodi"],"Watched":["Obejrzane"],"New playlist":["Nowa lista"],"Play in Kodi":["Odtwarzaj w Kodi"],"Export list":["Eksportuj listę"],"Delete playlist":["Usuń listę"],"title":["tytuł"],"year":["rok"],"date added":["data dodania"],"rating":["ocena"],"actor":["aktor"],"mood":["nastrój"],"writer":["scenarzysta"],"director":["reżyser"],"style":["styl"],"items selected":["pozycje zaznaczone"],"item selected":["pozycja zaznaczona"],"Video library clean started":["Rozpoczęto czyszczenie biblioteki wideo"],"Video library clean finished":["Zakończono czyszczenie biblioteki wideo"],"Audio library clean started":["Rozpoczęto czyszczenie biblioteki muzyki"],"Audio library clean finished":["Zakończono czyszczenie biblioteki muzyki"],"This is a tool to test out the api. Select a method then execute it with parameters.":["To jest narzędzie do testowania interfejsu programistycznego Kodi. Wybierz metodę, a następnie wykonaj ją z zadanymi parametrami"],"Go to season":["Przejdź do sezonu"],"Queue in Kodi":["Dodaj do kolejki Kodi"],"Adding items to the queue":["Dodawanie pozycji do kolejki"],"Live TV":["Telewizja"],"Recently added albums":["Albumy ostatnio dodane"],"Random albums":["Albumy losowe"],"Recently played albums":["Albumy ostatnio odtwarzane"],"Random movies":["Filmy losowe"],"Continue watching":["Kontynuuj odtwarzanie"],"More from %1$s":["Więcej z %1$s"],"More %1$s movies":["Więcej filmów z %1$s"],"More movies staring %1$s":["Więcej filmów z aktorem %1$s"],"Other movies released in %1$s":["Inne premiery filmów w %1$s"],"artist":["wykonawca"],"random":["losowo"],"label":["wytwórnia"],"formed":["założone"],"born":["urodzony"],"died":["zmarły"],"disbanded":["rozwiązany"],"years active":["lata aktywności"],"Click for more":["Naciśnij po więcej informacji"],"Loading albums":["Wczytywanie albumów"],"%1$d seconds ago, an input dialog opened in Kodi and it is still open! To prevent a mainframe implosion, you should probably give me some text. I don't really care what it is at this point, why not be creative? Do you have a %2$s? I won't tell...":["%1$d sekund temu okno dialogowe zostało otworzone i ciągle jest otwarte! Aby zapobiec implozji systemu, powinieneś wprowadzić jakiś tekst. Obecnie nie dbamy co to powinno być, więc dlaczego nie być kreatywnym? Czy posiadasz %2$s? Nie powiem..."],"all media":["wszystkie media"],"YouTube":["YouTube"],"SoundCloud":["SoundCloud"],"GoogleMusic":["GoogleMusic"],"Radio":["Radio"],"MixCloud":["MixCloud"],"First aired":["Premiera"],"Updated %1$s details":["Zaktualizowano informacje o %1$s"],"Title":["Tytuł"],"Plot":["Fabuła"],"Rating":["Ocena"],"Original title":["Tytuł oryginalny"],"Directors":["Reżyseria"],"Writers":["Scenariusz"],"File path":["Ścieżka pliku"],"Artist":["Wykonawca"],"Description":["Opis"],"Label":["Wytwórnia"],"Year":["Rok"],"Genres":["Gatunki"],"Styles":["Style"],"Themes":["Motywy"],"Moods":["Nastroje"],"Album artist":["Wykonawca albumu"],"Album":["Album"],"Track":["Utwór"],"Disc":["Dysk"],"Tagline":["Motto"],"Studio":["Wytwórnia"],"Content rating":["Kategoria wiekowa"],"Premiered":["Premiera"],"IMDb":["IMDb"],"Sort title":["Tytuł sortowania"],"Country":["Kraj"],"Set":["Seria"],"Tags":["Znaczniki"],"Trailer":["Zwiastun"],"Formed":["Założony"],"Disbanded":["Rozwiązany"],"Years Active":["Lata aktywności"],"Born":["Urodzony"],"Died":["Zmarły"],"Instruments":["Instrumenty"],"more":["więcej"],"in progress":["W trakcie"],"URL":["Adres URL"],"Add an image via an external URL":["Dodaj obraz za pomocą adresu URL"],"Searching for more images":["Wyszukiwanie dodatkowych obrazów"],"Image Selector":["Wybór obrazu"],"Image URL":["Adres URL obrazu"],"External Search":["Szukaj w Internecie"],"Local media":["Media lokalne"],"Chorus Search":["Szukaj w Chorusie"],"YouTube Search":["Szukaj w YouTube"],"Executed addon":["Uruchomiony dodatek"],"all":["wszystkie"],"video":["wideo"],"audio":["muzyka"],"image":["obraz"],"picture":["zdjęcie"],"executable":["program"],"settings":["ustawienia"],"Refresh":["Odśwież"],"Confirm refresh":["Odświeżenie informacji o pozycji '%1$s' spowoduje usunięcie jej z biblioteki, a następnie ponowne jej dodanie, co może zmienić jej identyfikator. Za kilka sekund nastąpi próba przeładowania strony z nowym identyfikatorem. Naciśnij 'TAK', aby potwierdzić odświeżenie"],"Refresh Ignore NFO":["Odświeżaj ignorując pliki NFO"],"Ignore local NFO files when manually refreshing media.":["Umożliwia ignorowanie lokalnych plików NFO podczas manualnego odświeżania informacji o mediach."],"Show only":["Tylko seriale"],"Show and episodes":["Seriale i odcinki"],"Top music":["Najlepsza muzyka"],"%1$s Artists":["%1$s Wykonawcy"],"%1$s Albums":["%1$s Albumy"],"%1$s Songs":["%1$s Utwory"],"default":["domyślne"],"Actions":["Akcje"],"play files":["odtwarzaj pliki"],"queue files":["dodaj pliki do kolejki"],"Sent text":["Wyślij tekst"],"License":["Licencja"],"Main Menu":["Menu startowe"],"Search":["Wyszukiwanie"],"Custom Add-on search":["Wyszukiwanie zawartości dodatku"],"Add custom add-on searches":["Mechanizm wyszukiwania Chorusa obsługuje nie tylko lokalne media, ale także zawartość dodatków. Dla przykładu, możesz użyć wyszukiwania, aby znaleźć wideo w YouTube lub muzykę w usłudze SoundCloud. Ta strona umożliwia dodanie niestandardowego wyszukiwania w zawartości dodatku, które domyślnie nie jest dostępne. Zobacz %1$s, aby dowiedzieć się więcej."],"Add-ons help page":["Strona pomocy dodatków"],"No %1$s found":["Brak %1$s"],"results":["wyniki"],"EPG data":["danych przewodnika"],"PVR":["Telewizja"],"Recordings":["Nagrania"],"Channel recording toggled":["Zmieniono status nagrywania kanału"],"TV Channels":["Kanały telewizyjne"],"Radio Stations":["Stacje radiowe"],"Record":["Nagraj"],"Toggle timer":["Przełącz zadanie"],"Now":["Teraz"],"Rename playlist":["Przemianuj listę"]}}}
\ No newline at end of file +{"domain":"messages","locale_data":{"messages":{"":{"domain":"messages","plural_forms":"nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);","lang":"pl_PL"},"Nothing playing":["Odtwarzanie nieaktywne"],"Deselect all":["Odznacz wszystkie"],"Filters":["Filtry"],"Sort":["Sortowanie"],"Select a filter":["Wybierz filtr"],"Select an option":["Wybierz opcję"],"filter":["filtr"],"Add filter":["Dodaj filtr"],"Which player to start with":["Określa domyślnie używany odtwarzacz mediów"],"Ignore terms such as 'The' and 'A' when sorting lists":["Ignoruj wyrażenia takie, jak 'The' i 'A' podczas sortowania list"],"When listing artists should we only see artists with albums or all artists found. Warning: turning this off can impact performance with large libraries":["W trakcie przeglądania listy wykonawców, widoczni będą tylko wykonawcy z własnymi albumami lub wszyscy odnalezieni wykonawcy. Ostrzeżenie: dezaktywowanie tej funkcji może mieć negatywny wpływ na wydajność w przypadku dużych bibliotek."],"is the default":["jest domyślny"],"The hostname used for websockets connection. Set to 'auto' to use the current hostname.":["Nazwa serwera używanego do połączenia WebSocket. Ustaw na 'auto', aby używać nazwy lokalnego komputera."],"How often do I poll for updates from Kodi (Only applies when websockets inactive)":["Określa częstotliwość aktualizacji zawartości z Kodi (używane tylko w przypadku nieaktywnego połączenia WebSocket)"],"Enable support for reverse proxy.":["Umożliwia aktywację obsługi reverse proxy."],"Web settings saved.":["Zapisano ustawienia interfejsu webowego."],"Just a sec...":["Proszę czekać..."],"Unable to communicate with Kodi in a long time. I think it's dead Jim!":["Komunikacja z Kodi była niemożliwa przez dłuższy czas. Prawdopodobnie program się zawiesił!"],"Video library scan started":["Rozpoczęto skanowanie biblioteki wideo"],"Video library scan complete":["Zakończono skanowanie biblioteki wideo"],"Audio library scan started":["Rozpoczęto skanowanie biblioteki muzyki"],"Audio library scan complete":["Zakończono skanowanie biblioteki muzyki"],"Kodi has quit":["Program Kodi został zamknięty"],"Sections":["Sekcje"],"Back":["Powrót"],"Loading folder...":["Wczytywanie folderu..."],"Show more":["Pokaż więcej"],"to Kodi":["do Kodi"],"Playlist refreshed":["Lista odtwarzania została odświeżona"],"Kodi":["Kodi"],"Local":["Przeglądarka"],"Playlists":["Listy odtwarzania"],"Existing playlists":["Istniejące listy odtwarzania"],"Empty playlist, you should probably add something to it?":["Lista odtwarzania jest pusta, powinieneś coś do niej dodać."],"Create a new list":["Utwórz nową listę"],"Add to playlist":["Dodaj do listy"],"Added to your playlist":["Dodano do listy odtwarzania"],"Give your playlist a name":["Nadaj nazwę swojej liście"],"Recently added":["Ostatnio dodane"],"Recently played":["Ostatnio odtwarzane"],"Season":["Sezon"],"Episode":["Odcinek"],"Play":["Odtwarzaj"],"Queue":["Dodaj do kolejki"],"View on IMDb":["Zobacz na IMDb"],"Stream":["Transmituj"],"Download":["Pobierz"],"complete":["zakończone"],"Synopsis":["Streszczenie"],"Full cast":["Pełna obsada"],"Websockets closed":["Połączenie WebSocket zostało zamknięte"],"Websockets host":["Serwer WebSocket"],"Websockets port":["Port WebSocket"],"Default player":["Odtwarzacz domyślny"],"Ignore article":["Ignoruj przedimki"],"Album artists only":["Tylko wykonawcy albumów"],"Poll interval":["Częstotliwość odświeżania zawartości"],"Reverse proxy support":["Obsługa reverse proxy"],"Language":["Język"],"Preferred language":["Język preferowany"],"Ignore articles (terms such as \"The\" and \"A\") when sorting lists":["Ignoruj przedimki (wyrażenia takie, jak \"The\" i \"A\") podczas sortowania list"],"sec":["sek."],"Your browser doesn't support websockets! Get with the times and update your browser.":["Twoja przeglądarka nie obsługuje połączeń WebSocket! Idź z duchem czasu i zaktualizuj swoją przeglądarkę."],"Failed to connect to websockets":["Nieudane połączenie WebSocket, awaryjna aktywacja połączenia bezstanowego z cykliczną aktualizacją zawartości. Połączenie tego typu jest wolniejsze i używa więcej zasobów. Upewnij się, że aktywowałeś opcję 'Zezwalaj zdalnym programom na sterowanie aplikacją' w ustawieniach Kodi (System -> Usługi -> Sterowanie). Innym powodem tego problemu może być korzystanie z serwera proxy lub dostęp za pośrednictwem adresu IP, gdy możliwy jest dostęp przy pomocy nazwy localhost. W przypadku poprawnego działania połączenia WebSocket, wystarczy odświeżyć zawartość przeglądarki."],"Video":["Wideo"],"Audio":["Dźwięk"],"Cast":["Obsada"],"Director":["Reżyser","Reżyserzy","Reżyserzy"],"Writer":["Scenarzysta","Scenarzyści","Scenarzyści"],"Subtitle":["Napisy","Napisy","Napisy"],"Result":["Wynik","Wyników","Wyników"],"Loading things...":["Wczytywanie zawartości..."],"Scan video library":["Skanowanie biblioteki wideo"],"Scan audio library":["Skanowanie biblioteki muzyki"],"About Chorus":["O Chorusie"],"Recent":["Ostatnio"],"Artists":["Wykonawcy"],"Albums":["Albumy"],"Recent movies":["Najnowsze filmy"],"All movies":["Wszystkie filmy"],"Recent episodes":["Najnowsze odcinki"],"All TV shows":["Wszystkie seriale"],"Web settings":["Ustawienia webowe"],"Kodi settings":["Ustawienia Kodi"],"Now Playing Playlists":["Listy Teraz odtwarzane"],"Switch between Kodi and local playback via the tabs. You can toggle visibility with the arrow in the top right":["Umożliwia wybór odtwarzacza mediów, pomiędzy Kodi a przeglądarką, przy pomocy zakładek. Możesz zmienić widoczność zakładek przy pomocy strzałki w prawym górnym rogu."],"Current playlist":["Aktualna lista odtwarzania"],"Clear playlist":["Wyczyść listę"],"Refresh playlist":["Odśwież listę"],"Party mode":["Tryb Imprezy"],"Save Kodi playlist":["Zapisz listę w Kodi"],"Preferred language, need to refresh browser to take effect":["Zmiana języka preferowanego wymaga odświeżenia zawartości przeglądarki"],"Ignore articles (terms such as 'The' and 'A') when sorting lists":["Ignoruj przedminki (wyrażenia takie, jak: 'The' i 'A') podczas sortowania list"],"Vibrant headers":["Dynamiczne nagłówki"],"Use colourful headers for media pages":["Umożliwia używanie osobnego koloru nagłówka dla każdego typu mediów"],"Enable support for reverse proxying.":["Umożliwia aktywację obsługi reverse proxy."],"songs":["utwory"],"artists":["wykonawcy"],"albums":["albumy"],"movies":["filmy"],"Searching for":["Szukaj"],"and":["i"],"tvshows":["seriale"],"no media in this folder":["Brak mediów w folderze"],"Browse files and add-ons":["Przeglądaj pliki i dodatki"],"This is where you can browse all Kodi content, not just what is in the library. Browse by source or add-on.":["Miejsce, w którym możesz przeglądać całą zawartość Kodi, nie tylko to co znajduje się w bibliotece. Przeglądanie w podziale na źródła i dodatki."],"Send text to Kodi":["Wyślij tekst do Kodi"],"The lab":["Laboratorium"],"Chorus lab":["Laboratorium Chorusa"],"Warning":["Ostrzeżenie"],"Experimental code, use at own risk":["Funkcje eksperymentalne, używasz ich na własną odpowiedzialność."],"Kodi API browser":["Przeglądarka API Kodi"],"This is a tool to test out the API. Select a method then execute it with parameters.":["Narzędzie do testowania interfejsu programistycznego Kodi. Wybierz metodę, a następnie wykonaj ją z zadanymi parametrami"],"You could potentially damage your system with this and there are no sanity checks. Use at own risk.":["Istnieje potencjalna szansa na uszkodzenie Twojego systemu, ponieważ nie ma żadnej kontroli poprawności. Używasz na własną odpowiedzialność."],"Saved Kodi settings":["Zapisano zmiany ustawień Kodi"],"General":["Ogólne"],"Advanced setting level is recommended for those who know what they are doing.":["Poziom Zaawansowany jest rekomendowany tylko dla tych, którzy wiedzą co robią."],"Kodi settings level":["Poziom ustawień Kodi"],"Remove":["Usuń"],"cast":["obsada"],"Add-ons":["Dodatki"],"Web interface":["Interfejs webowy"],"Readme":["Dokumentacja"],"Changelog":["Dziennik zmian"],"Translations":["Tłumaczenia"],"Help topics":["Tematy pomocy"],"Overview":["Przegląd"],"Lab":["Laboratorium"],"version":["wersja"],"Remote control":["Sterowanie"],"Remote control is set up correctly":["Zdalne sterowanie zostało poprawnie skonfigurowane"],"About":["O Chorusie"],"Local audio":["Dźwięk"],"Status report":["Raport o stanie"],"in":["w"],"Focus playlist on playing":["Zaznaczaj odtwarzaną pozycję na liście"],"Automatically scroll the playlist to the current playing item. This happens whenever the playing item is changed":["Umożliwia automatyczne przewijanie listy do aktualnie odtwarzanej pozycji. Ta operacja jest wykonywana za każdym razem, gdy zmienia się odtwarzana pozycja."],"Web Settings saved.":["Zapisano ustawienia interfejsu webowego."],"Keyboard controls":["Sterowanie klawiaturą"],"In Chorus, will you keyboard control Kodi, the browser or both":["Umożliwia sterowanie przy pomocy klawiatury działaniem Kodi, przeglądarki lub oboma jednocześnie"],"Learn more":["Dowiedz się więcej"],"Resume playback":["Wznów odtwarzanie"],"Resume from":["Wznów od"],"Start from the beginning":["Zacznij od początku"],"Click here restore defaults":["Naciśnij, aby przywrócić domyślne ustawienia"],"Main Menu Structure":["Struktura menu"],"Here you can change the title, url and %1$s for menu items. You can also remove, re-order and add new items.":["Umożliwia zmianę tytułu, adresu URL i %1$s pozycji menu. Możesz także usunąć pozycje, zmienić ich kolejność lub dodać nowe pozycje."],"Main Nav":["Nawigacja"],"Add a new playlist":["Dodaj nową listę"],"Keyboard":["Klawiatura"],"Music":["Muzyka"],"Digital radio":["Radio"],"Movies":["Filmy"],"TV shows":["Seriale"],"TV":["Telewizja"],"Browser":["Przeglądarka"],"Thumbs up":["Lubię to!"],"Settings":["Ustawienia"],"Help":["Pomoc"],"Disable Thumbs Up":["Dezaktywuj funkcję 'Lubię to!'"],"Remove the thumbs up button from media. Note: you may also want to remove the menu item from the ":["Umożliwia usunięcie przycisku 'Lubię to' z panelu informacji o mediach. Uwaga: Możesz także usunąć pozycję menu z "],"You need to 'Allow remote control' for Kodi. You can do that":["Wymagana aktywacja opcji 'Zezwalaj na zdalne sterowanie Kodi przez HTTP'. Możesz to zrobić"],"here":["tutaj"],"yes":["tak"],"no":["nie"],"close":["zamknij"],"ok":["ok"],"Are you sure?":["Jesteś pewien?"],"Set all episodes for this season as":["Ustaw wszystkie odcinki tego sezonu jako"],"Set all episodes for this TV show as":["Ustaw wszystkie odcinki tego serialu jako"],"watched":["obejrzane"],"unwatched":["nieobejrzane"],"genre":["gatunek"],"studio":["wytwórnia"],"rated":["kategoria"],"episodes":["odcinki"],"total":["razem"],"set":["ustaw"],"Show device name":["Pokazuj nazwę urządzenia"],"Show the Kodi device name in the header of Chorus":["Umożliwia wyświetlanie nazwy urządzenia, na którym uruchomiono Kodi, w nagłówku strony Chorusa."],"No results found":["Brak wyników wyszukiwania"],"Have you done a library scan?":["Czy wykonałeś skanowanie biblioteki?"],"Play in browser":["Odtwarzaj w przeglądarce"],"Edit":["Edytuj"],"Add to Kodi":["Dodaj do Kodi"],"Watched":["Obejrzane"],"New playlist":["Nowa lista"],"Play in Kodi":["Odtwarzaj w Kodi"],"Export list":["Eksportuj listę"],"Delete playlist":["Usuń listę"],"title":["tytuł"],"year":["rok"],"date added":["data dodania"],"rating":["ocena"],"actor":["aktor"],"mood":["nastrój"],"writer":["scenarzysta"],"director":["reżyser"],"style":["styl"],"items selected":["pozycje zaznaczone"],"item selected":["pozycja zaznaczona"],"Video library clean started":["Rozpoczęto czyszczenie biblioteki wideo"],"Video library clean finished":["Zakończono czyszczenie biblioteki wideo"],"Audio library clean started":["Rozpoczęto czyszczenie biblioteki muzyki"],"Audio library clean finished":["Zakończono czyszczenie biblioteki muzyki"],"This is a tool to test out the api. Select a method then execute it with parameters.":["To jest narzędzie do testowania interfejsu programistycznego Kodi. Wybierz metodę, a następnie wykonaj ją z zadanymi parametrami"],"Go to season":["Przejdź do sezonu"],"Queue in Kodi":["Dodaj do kolejki Kodi"],"Adding items to the queue":["Dodawanie pozycji do kolejki"],"Live TV":["Telewizja"],"Recently added albums":["Albumy ostatnio dodane"],"Random albums":["Albumy losowe"],"Recently played albums":["Albumy ostatnio odtwarzane"],"Random movies":["Filmy losowe"],"Continue watching":["Kontynuuj odtwarzanie"],"More from %1$s":["Więcej z %1$s"],"More %1$s movies":["Więcej filmów z %1$s"],"More movies staring %1$s":["Więcej filmów z aktorem %1$s"],"Other movies released in %1$s":["Inne premiery filmów w %1$s"],"artist":["wykonawca"],"random":["losowo"],"label":["wytwórnia"],"formed":["założone"],"born":["urodzony"],"died":["zmarły"],"disbanded":["rozwiązany"],"years active":["lata aktywności"],"Click for more":["Naciśnij po więcej informacji"],"Loading albums":["Wczytywanie albumów"],"%1$d seconds ago, an input dialog opened in Kodi and it is still open! To prevent a mainframe implosion, you should probably give me some text. I don't really care what it is at this point, why not be creative? Do you have a %2$s? I won't tell...":["%1$d sekund temu okno dialogowe zostało otworzone i ciągle jest otwarte! Aby zapobiec implozji systemu, powinieneś wprowadzić jakiś tekst. Obecnie nie dbamy co to powinno być, więc dlaczego nie być kreatywnym? Czy posiadasz %2$s? Nie powiem..."],"all media":["wszystkie media"],"YouTube":["YouTube"],"SoundCloud":["SoundCloud"],"GoogleMusic":["GoogleMusic"],"Radio":["Radio"],"MixCloud":["MixCloud"],"First aired":["Premiera"],"Updated %1$s details":["Zaktualizowano informacje o %1$s"],"Title":["Tytuł"],"Plot":["Fabuła"],"Rating":["Ocena"],"Original title":["Tytuł oryginalny"],"Directors":["Reżyseria"],"Writers":["Scenariusz"],"File path":["Ścieżka pliku"],"Artist":["Wykonawca"],"Description":["Opis"],"Label":["Wytwórnia"],"Year":["Rok"],"Genres":["Gatunki"],"Styles":["Style"],"Themes":["Motywy"],"Moods":["Nastroje"],"Album artist":["Wykonawca albumu"],"Album":["Album"],"Track":["Utwór"],"Disc":["Dysk"],"Tagline":["Motto"],"Studio":["Wytwórnia"],"Content rating":["Kategoria wiekowa"],"Premiered":["Premiera"],"IMDb":["IMDb"],"Sort title":["Tytuł sortowania"],"Country":["Kraj"],"Set":["Seria"],"Tags":["Znaczniki"],"Trailer":["Zwiastun"],"Formed":["Założony"],"Disbanded":["Rozwiązany"],"Years Active":["Lata aktywności"],"Born":["Urodzony"],"Died":["Zmarły"],"Instruments":["Instrumenty"],"more":["więcej"],"in progress":["W trakcie"],"URL":["Adres URL"],"Add an image via an external URL":["Dodaj obraz za pomocą adresu URL"],"Searching for more images":["Wyszukiwanie dodatkowych obrazów"],"Image Selector":["Wybór obrazu"],"Image URL":["Adres URL obrazu"],"External Search":["Szukaj w Internecie"],"Local media":["Media lokalne"],"Chorus Search":["Szukaj w Chorusie"],"YouTube Search":["Szukaj w YouTube"],"Executed addon":["Uruchomiony dodatek"],"all":["wszystkie"],"video":["wideo"],"audio":["muzyka"],"image":["obraz"],"picture":["zdjęcie"],"executable":["program"],"settings":["ustawienia"],"Refresh":["Odśwież"],"Confirm refresh":["Odświeżenie informacji o pozycji '%1$s' spowoduje usunięcie jej z biblioteki, a następnie ponowne jej dodanie, co może zmienić jej identyfikator. Za kilka sekund nastąpi próba przeładowania strony z nowym identyfikatorem. Naciśnij 'TAK', aby potwierdzić odświeżenie"],"Refresh Ignore NFO":["Odświeżaj ignorując pliki NFO"],"Ignore local NFO files when manually refreshing media.":["Umożliwia ignorowanie lokalnych plików NFO podczas manualnego odświeżania informacji o mediach."],"Show only":["Tylko seriale"],"Show and episodes":["Seriale i odcinki"],"Top music":["Ulubiona muzyka"],"%1$s Artists":["%1$s Wykonawcy"],"%1$s Albums":["%1$s Albumy"],"%1$s Songs":["%1$s Utwory"],"default":["domyślne"],"Actions":["Akcje"],"play files":["odtwarzaj pliki"],"queue files":["dodaj pliki do kolejki"],"Sent text":["Wyślij tekst"],"License":["Licencja"],"Main Menu":["Menu startowe"],"Search":["Wyszukiwanie"],"Custom Add-on search":["Wyszukiwanie zawartości dodatku"],"Add custom add-on searches":["Mechanizm wyszukiwania Chorusa obsługuje nie tylko lokalne media, ale także zawartość dodatków. Dla przykładu, możesz użyć wyszukiwania, aby znaleźć wideo w YouTube lub muzykę w usłudze SoundCloud. Ta strona umożliwia dodanie niestandardowego wyszukiwania w zawartości dodatku, które domyślnie nie jest dostępne. Zobacz %1$s, aby dowiedzieć się więcej."],"Add-ons help page":["Strona pomocy dodatków"],"No %1$s found":["Brak %1$s"],"results":["wyniki"],"EPG data":["danych przewodnika"],"PVR":["Telewizja"],"Recordings":["Nagrania"],"Channel recording toggled":["Zmieniono status nagrywania kanału"],"TV Channels":["Kanały telewizyjne"],"Radio Stations":["Stacje radiowe"],"Record":["Nagraj"],"Toggle timer":["Przełącz zadanie"],"Now":["Teraz"],"Rename playlist":["Przemianuj listę"],"album":["album"],"Videos":["Wideo"],"Lost connection to Kodi":["Zerwane połączenie z Kodi"],"Attempt to reconnect":["Próba ponownego połączenia"],"Attempting reconnect":["Trwa próba ponownego połączenia"],"Top Songs":["Ulubione Utwory"],"Top Albums":["Ulubione Albumy"],"Toggle select all":["Zmień zaznaczenie wszystkich pozycji"],"More like this":["Podobne"],"music videos":["teledyski"],"Related music videos from YouTube":["Powiązane teledyski na YouTube"],"Lost websocket connection":["Zerwane połączenie WebSocket"],"Attempting websockets reconnect":["Trwa próba ponownego połączenia WebSocket"],"This should be the play path for the trailer. Eg. %1$s":["To powinna być ścieżka odtwarzania zwiastuna. Np. %1$s"]}}}
\ No newline at end of file diff --git a/addons/webinterface.default/lang/de/app-readme.html b/addons/webinterface.default/lang/de/app-readme.html new file mode 100644 index 0000000000..dd9275f864 --- /dev/null +++ b/addons/webinterface.default/lang/de/app-readme.html @@ -0,0 +1,121 @@ +<h1 id="kodi-web-interface-chorus2">Kodi Web Interface - Chorus2</h1> +<p>Die Standardoberfläche für die Webansicht von Kodi.</p> +<p>Eine großartige, moderne Weboberfläche für Kodi. Stöbere durch deine Musik, Filme +oder TV-Sendungen - komfortabel mit dem Webbrowser. Du kannst Kodi fernsteuern +oder Medien in deinen Browser streamen. Am Besten funkioniert das mit Chrome, aber +auch gut mit den meisten anderen aktuellen Browsern.</p> +<p>Chorus2 ist der Nachfolger von <a href="https://github.com/jez500/chorus">Chorus</a>. +Von Grund auf neuprogrammiert auf Basis von Coffee Script, Backbone, Marionette +und vielem, vielem, mehr.</p> +<h2 id="autor">Autor</h2> +<p><a href="http://jez.me">Jeremy Graham </a> mit Hilfe von +<a href="https://github.com/xbmc/chorus2/graphs/contributors">diesen Typen</a>.</p> +<h2 id="aktueller-status">Aktueller Status</h2> +<p>Ziemlich gut, das Meiste funktioniert richtig gut. Anderes braucht noch +<a href="https://github.com/xbmc/chorus2/issues">Politur/Abschluss/Korrektur</a>. +Es steht beta drauf, also erwarte Fehler, Änderungen, den Atomkrieg usw.</p> +<h2 id="an-s-laufen-bekommen">An's Laufen bekommen</h2> +<p>Ab Kodi v17 ist Chorus2 vorinstalliert, du brauchst es nur zu aktvieren und ein +paar Häkchen zu setzen.</p> +<h3 id="aktivieren-und-einstellen">Aktivieren und Einstellen</h3> +<p>Kodi > Settings (cog) > Services > Control</p> +<ul> +<li>Aktiviere "Allow control of Kodi via HTTP"</li> +<li>Klicke auf "Web interface"</li> +<li>Klicke auf "Kodi web interface - Chorus2"</li> +<li>Aktiviere "Allow programs on this system to control Kodi"</li> +<li>Aktiviere "Allow programs on other systems to control Kodi"</li> +</ul> +<p><strong>Aus Sicherheitsgründen solltest du einen Benutzernamen und ein Passwort +einstellen, um unbefugten Zugriff über die Weboberfläche zu verhinden.</strong></p> +<h3 id="manuelle-installation">Manuelle Installation</h3> +<p>Es gibt Gründe, Kodi als zip zu installieren. Etwa, wenn Kodi v16 oder älter ist +oder wenn du direkt die aktuellste Version installieren möchtest. Lade die +aktuellste Version des <code>webinterface.default.2.X.X.zip</code> von der +<a href="https://github.com/xbmc/chorus2/releases">Seite mit den Veröffentlichungen</a> +herunter, dann installiere es <a href="http://kodi.wiki/view/Add-on_manager#How_to_install_from_a_ZIP_file">wie hier beschrieben</a>. +<strong>Hinweis:</strong> Chorus2 sollte mit der aktuellsten Version von Kodi benutzt werden, +einiges (oder sogar alles) könnte wegen Änderungen in der API mit älteren Versionen +nicht funktionieren.</p> +<h3 id="benutzung">Benutzung</h3> +<p>Rufe mit deinem Webbrowser die Adresse <code>http://localhost:8080</code> auf - ersetze dabei +<code>localhost</code> mit deiner IP-Adresse, wenn du auf einen anderen Rechner zugreifst. Wenn +du einen anderen Port als <code>8080</code> eingestellt hast, passe ihn bitte auch an. +Mehr Informationen und Tipps für fortgeschrittene Benutzung ist im +<a href="http://kodi.wiki/view/Web_interface">Kodi Wiki page</a> zu finden.</p> +<h2 id="feature-requests-bugs">Feature requests / Bugs</h2> +<p>Add them to the <a href="https://github.com/xbmc/chorus2/issues">list</a>. For bugs please include Kodi version, Web browser version, +Chorus version and any errors that display in the console. For feature requests, checkout the API browser to see if your +request is currently possible.</p> +<h2 id="streaming">Streaming</h2> +<p>Disclaimer: The success of this depends on the file formats vs what the browser supports. In general most things work.</p> +<h3 id="audio-streaming">Audio streaming</h3> +<p>In the top right there are some tabs, two of them are named Kodi and Local, this is how you toggle what player the UI +is controlling. In Local mode the logo and accents are pinky-red, In Kodi mode the logo is the Kodi blue. When you +are in a given mode, actions affect that player, so if you click Play on a track when in Local mode, it will play +through the browser, likewise, when in Kodi mode all commands are sent to Kodi. You can also add media to other +playlists by clicking the menu buttons (three dots vertical) on most media items.</p> +<h3 id="video-streaming">Video streaming</h3> +<p>Video streaming via HTML5 "sort of" works, it really depends on the codec used. An embedded VLC player is also available with better codec support. +This looks like the best we can get until Kodi supports transcoding. +<strong>Chrome users</strong>: Chrome has removed support for vlc/divx plugins so streaming a video requires a <a href="https://en.wikipedia.org/wiki/HTML5_video#Browser_support">Chrome friendly codec</a>. +For best results use Chrome with mp4 video that has 2 channel audio (5.1 audio doesn't seem to work).</p> +<h2 id="kodi-settings-via-the-web-interface">Kodi settings via the web interface</h2> +<p>You can change most of the settings you would find in Kodi via the settings page in the web interface. +Some settings have been omitted as they require interaction with the GUI and others are just a basic text field with no options.</p> +<h2 id="kodi-api-browser">Kodi API browser</h2> +<p>There is a hidden feature in Chorus that allows you to play with the Kodi API and see what is capable via the JSON-RPC +interface. If you are building an app or addon that uses the API this can be super useful for both finding and testing +all the methods and types available. If you are thinking about a new feature for Chorus, this is also a great place to +test if it is possible (and fast track development by adding a working example to an issue). You can find the API browser +via "Chorus Lab" (bottom right 3 vertical dots > "The Lab") or directly via <code>http://localhost:8080/#lab/api-browser</code>.</p> +<h2 id="contributing">Contributing</h2> +<p>If you would like to make this project better I would appreciate any help. Please do pull requests against the <code>develop</code> branch. +I am happy to assist with getting an development environment up and running if you are happy to contribute.</p> +<h3 id="translations">Translations</h3> +<p>I only know English so definitely need help with this. I also don't know heaps about javascript multilingual stuff but +thanks to <a href="https://github.com/mizaki">@mizaki</a> we have a structure ready to go. So it should be nice and easy to translate the UI.</p> +<p>At the moment, there are <a href="https://github.com/xbmc/chorus2/tree/master/src/lang/_strings">a handful</a> of languages available +but more can be easily added. More strings are always being added so always consider english as the source of truth.</p> +<p>So if you see something in english but want it in your language, I need you! To contribute, send me a PR on a new branch +against <code>develop</code>, or if you don't know git, a link to the language file.</p> +<p>Language Files <a href="https://github.com/xbmc/chorus2/tree/master/src/lang">here</a>. +<em>English is the only real complete translation file so start with that as your base.</em></p> +<h3 id="compiling">Compiling</h3> +<p>Sass and Grunt are used to compile css and js in the dist folder. +To get your environment setup first install <a href="http://bundler.io">Bundler</a> and <a href="https://www.npmjs.org/">npm</a>.</p> +<ul> +<li>Install required gems with <code>bundle install</code></li> +<li>Install NodeJs packages with <code>npm install</code></li> +<li>Run grunt <code>grunt</code></li> +</ul> +<p>If you are updating (eg. git pull), always do an <code>npm update</code> and <code>bundle update</code> to ensure all the tools are in the toolbox.</p> +<h3 id="build">Build</h3> +<p>A build will also include translation files.</p> +<ul> +<li>Run grunt <code>grunt build</code></li> +</ul> +<h2 id="spenden">Spenden</h2> +<p>Bist du ein Fan von Chorus2 geworden? Du kannst <a href="https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=ZCGV976794JHE&lc=AU&item_name=Chorus%20Beer%20Fund&currency_code=AUD&bn=PP%2dDonationsBF%3abtn_donate_SM%2egif%3aNonHosted">Jeremy ein Bier kaufen</a>, +um Danke zu sagen. :)</p> +<h2 id="lizenz">Lizenz</h2> +<p>Chorus2 steht unter der Creative Commons Attribution-Share Alike 3.0 United States License. +<a href="https://github.com/xbmc/chorus2/blob/master/src/lang/en/license.md">Hier klicken für Informationen.</a></p> +<h2 id="screenshots">Screenshots</h2> +<h3 id="homepage-wiedergabe-">Homepage (Wiedergabe)</h3> +<p><img src="https://raw.githubusercontent.com/xbmc/chorus2/master/dist/screenshots/now-playing.jpg" alt="alt text" title="Homepage/Now Playing"></p> +<h3 id="suchergebnisse">Suchergebnisse</h3> +<p><img src="https://raw.githubusercontent.com/xbmc/chorus2/master/dist/screenshots/search.jpg" alt="alt text" title="Search"></p> +<h3 id="k-nstler">Künstler</h3> +<p><img src="https://raw.githubusercontent.com/xbmc/chorus2/master/dist/screenshots/artists.jpg" alt="alt text" title="Artists"></p> +<p><img src="https://raw.githubusercontent.com/xbmc/chorus2/master/dist//screenshots/artist.jpg" alt="alt text" title="Artist"></p> +<h3 id="videobibliothek">Videobibliothek</h3> +<p><img src="https://raw.githubusercontent.com/xbmc/chorus2/master/dist/screenshots/tv.jpg" alt="alt text" title="TV"></p> +<h3 id="filterfunktionen">Filterfunktionen</h3> +<p><img src="https://raw.githubusercontent.com/xbmc/chorus2/master/dist/screenshots/movie.jpg" alt="alt text" title="Movies"></p> +<h3 id="einstellungen">Einstellungen</h3> +<p><img src="https://raw.githubusercontent.com/xbmc/chorus2/master/dist/screenshots/settings.jpg" alt="alt text" title="Settings"></p> +<h3 id="erweiterungen">Erweiterungen</h3> +<p><img src="https://raw.githubusercontent.com/xbmc/chorus2/master/dist/screenshots/addons.jpg" alt="alt text" title="Add-ons"></p> +<h3 id="medien-bearbeiten">Medien bearbeiten</h3> +<p><img src="https://raw.githubusercontent.com/xbmc/chorus2/master/dist/screenshots/edit-media.jpg" alt="alt text" title="Editing Media"></p> diff --git a/addons/webinterface.default/lang/de/keybind-readme.html b/addons/webinterface.default/lang/de/keybind-readme.html new file mode 100644 index 0000000000..836f1240a2 --- /dev/null +++ b/addons/webinterface.default/lang/de/keybind-readme.html @@ -0,0 +1,25 @@ +<h1 id="tastaturk-rzel">Tastaturkürzel</h1> +<p>Kodi kann mit der Tastatur bedient werden, unten wird die Standardbelegung beschrieben. Die Tastaturbelegung kann in <a href="#settings/web">Einstellungsseite</a> geändert werden, verfügbar sind:</p> +<h2 id="kodi">Kodi</h2> +<p>Die Tastaturbedienung von Kodi ist wegen der Standardfunktionen des Browsers zunächst deaktiviert (z.B. werden Pfeil hoch / Pfeil runter zum Scrollen benutzt). [Browser Befehl] = [Kodi Aktion].</p> +<pre><code>Pfeil LINKS = Richtung LINKS +Pfeil RECHTS = Richtung RECHTS +Pfeil HOCH = Richtung HOCH +Pfeil RUNTER = Richtung RUNTER +RÜCKSCHRITT = Zurück +ENTER = Auswählen +TAB = Schließen +LEERTASTE = Abspielen/<span class="hljs-keyword">Pause</span> +Taste <span class="hljs-string">"C"</span> = Kontextmenü +Taste <span class="hljs-string">"+"</span> = Lauter +Taste <span class="hljs-string">"-"</span> = Leiser +Taste <span class="hljs-string">"X"</span> = Stopp +Taste <span class="hljs-string">"T"</span> = Untertitel umschalten +Taste <span class="hljs-string">">"</span> = <span class="hljs-keyword">N</span>ächster +Taste <span class="hljs-string">"<"</span> = Vorheriger +Taste <span class="hljs-string">"\" = Vollbild</span> +</code></pre><p><a href="https://github.com/xbmc/chorus2/blob/master/src/js/apps/input/input_app.js.coffee">Verbesserungsverschläge? Klicke hier.</a></p> +<h2 id="browser">Browser</h2> +<p>Mit der Tastatur wird erstmal nur der Browser gesteuert. Wenn die <a href="#remote">Fernbedienung</a> geöffnet ist, steuern die Tasten jedoch nur Kodi.</p> +<h2 id="beides">Beides</h2> +<p>Tastaturbefehle werden in Kodi und im Browser ausgeführt. Wenn die <a href="#remote">Fernbedienung</a> geöffnet ist, wird nur Kodi gesteuert. HINWEIS: Viele Tasten sind sowohl im Browser als auch in Kodi belegt, z.B. Rückschritt/Löschen.</p> diff --git a/addons/webinterface.default/lang/de/lang-readme.html b/addons/webinterface.default/lang/de/lang-readme.html new file mode 100644 index 0000000000..6b84dd83de --- /dev/null +++ b/addons/webinterface.default/lang/de/lang-readme.html @@ -0,0 +1,60 @@ +<h1 id="-bersetzungen">Übersetzungen</h1> +<p>Um die Sprachdateien zu aktualisieren, brauchst du nicht viel über GIT zu wissen. +Diese Seite hilft dir dabei, mit Sprachdateien umzugehen.</p> +<h2 id="wo-sind-die-sprachdateien-">Wo sind die Sprachdateien?</h2> +<p>Die Sprachdateien werden an zwei Orten gespeichert. Das Sprachkürzel LANG_CODE +ist der zweistellige Code für diese Sprache, z.B. en, fr, de, pl, nl.</p> +<h3 id="zeichenketten-strings-">Zeichenketten (Strings)</h3> +<p><code>src/lang/_strings/LANG_CODE.po</code></p> +<ul> +<li>Das sind die Zeichenketten, die in der Anwendung verwendet werden. Üblicherweise +wird nur <code>msgstr</code> verändert.</li> +<li>Wenn <code>msgstr</code> für die Zeichenkette nicht vorhanden ist, kopier sie von en.po und +aktualisiere deine Sprachdatei, etwa de.po für Deutsch.</li> +</ul> +<pre><code>msgctxt <span class="hljs-string">""</span> +msgid <span class="hljs-string">"Select a filter"</span> +msgstr <span class="hljs-string">"Filter wählen"</span> +</code></pre><h3 id="seiten">Seiten</h3> +<p><code>src/lang/LANG_CODE/PAGE.md</code></p> +<ul> +<li>Das sind die Seiten, die in anderen Sprachen überschrieben werden können.</li> +<li>Die Seiten sind in <a href="https://en.wikipedia.org/wiki/Markdown">markdown</a> verfasst.</li> +<li>Wenn die Datei <em>PAGE</em>.md in deiner Sprache nicht vorhanden ist, kopier die aus +dem en-Ordner und bearbeite sie.</li> +<li>Mach das bitte nur, wenn du die Seite auch komplett übersetzt.</li> +</ul> +<h2 id="eine-neue-sprache-hinzuf-gen">Eine neue Sprache hinzufügen</h2> +<p><strong>Beispiel:</strong> Wenn deine Sprache <code>Deutsch</code> ist, würde sie das Kürzel (<em>LANG_KEY</em>) +<code>de</code> haben.</p> +<h3 id="sag-der-anwendung-bescheid">Sag der Anwendung Bescheid</h3> +<p>Die neue Sprache muss jetzt in der Anwendung eingetragen werden. Also trage in die +Datei <code>/src/js/helpers/translate.js.coffee</code> die neue Sprache <code>de: "Deutsch"</code> in +<code>getLanguages</code> ein. (Für Deutsch schon passiert.)</p> +<h3 id="ordner-und-dateistruktur-von-en-kopieren">Ordner- und Dateistruktur von en kopieren</h3> +<p>Kopiere die Dateien, die du übersetzen möchtest:</p> +<ul> +<li><strong>Strings:</strong> copy <code>/src/_strings/en.po</code> to <code>/src/_strings/fr.po</code></li> +<li><strong>Pages:</strong> copy <code>/src/en/readme.md</code> to <code>/src/fr/readme.md</code></li> +</ul> +<h2 id="ausprobieren">Ausprobieren</h2> +<p>Um deine Version zu testen, muss ein neue Version (build) erstellt werden, +vielleicht klappt es aber auch ohne, wenn du dich an die vorhandene Struktur +gehalten hast.</p> +<p>Wenn du <strong>wirklich</strong> deine neue Sprache in der Anwendung mit einer neuen Version +testen möchtest, kannst du:</p> +<ol> +<li>Sicherstellen, dass <code>nodejs</code>, <code>npm</code> installiert sind</li> +<li><code>cd /chorus/folder</code></li> +<li><code>npm install</code> (nur beim ersten Mal)</li> +<li><code>grunt lang</code> (das wird nur die Sprachen im Ordner <code>dist/lang</code> erneuern)</li> +<li>Chorus2 aktualisieren</li> +</ol> +<h2 id="r-ckgriff-auf-englisch">Rückgriff auf Englisch</h2> +<p>Solange <code>msgid</code> in deiner <code>LANG_CODE.po</code> noch nicht vorhanden sind, wird die +englische Zeichenkette als Standard verwendet. Gleiches gilt für die Seite +<code>LANG_CODE/PAGE.md</code>, falls sie vorhanden ist.</p> +<h2 id="eine-aktualisierung-einreichen">Eine Aktualisierung einreichen</h2> +<p>Einen <strong>pull request</strong> <a href="https://github.com/jez500/chorus2">GitHub</a> von einem +neuen Zweig (fork) aus zu senden, ist der beste Weg. +Aktualisierungen über andere Wege werden aber auch berücksichtigt.</p> diff --git a/addons/webinterface.default/lang/en/app-changelog.html b/addons/webinterface.default/lang/en/app-changelog.html index 78b09eafd7..3948cfb807 100644 --- a/addons/webinterface.default/lang/en/app-changelog.html +++ b/addons/webinterface.default/lang/en/app-changelog.html @@ -1,3 +1,13 @@ +<h2 id="version-2-4-3">Version 2.4.3</h2> +<ul> +<li>Fixed context menu in browser #226</li> +<li>Fixed BBcode tag stripping in browser #223</li> +<li>Added party mode functionality to local browser player #218</li> +<li>Updated to latest Soundmanager2 (297a-20150601)</li> +<li>Fixed selecting kodi/local/auto player on load</li> +<li>Updated Polish translation #227</li> +<li>German language updates #225</li> +</ul> <h2 id="version-2-4-2">Version 2.4.2</h2> <ul> <li>Added trailer selector to movie editor</li> diff --git a/addons/webinterface.default/lang/pl/app-changelog.html b/addons/webinterface.default/lang/pl/app-changelog.html index 3a1244b2d7..ad2a5d188c 100644 --- a/addons/webinterface.default/lang/pl/app-changelog.html +++ b/addons/webinterface.default/lang/pl/app-changelog.html @@ -1,3 +1,20 @@ +<h2 id="wersja-2-4-2">Wersja 2.4.2</h2> +<ul> +<li>Dodano do edytora filmu możliwość wyboru zwiastuna</li> +<li>Dodano obsługę przyciku Power na pilocie dzięku czemu możliwe jest: Zamknięcie Kodi, Zamknięcie systemu, Uruchomienie ponownie, Uśpienie i Hibernacja #28</li> +<li>Dodano funkcję ponownego połączenia WebSocket po zerwaniu połączenia #15</li> +<li>Dodano możliwość zaznaczenia wszystkich pozycji i wykonanie na nich akcji #156</li> +<li>Dodano do strony informacji o odcinku, pole z datą emisji #170</li> +<li>Dodano obsługę ChromeCast do funkcji odtwarzania w przeglądarce #220</li> +<li>Zamieniono biblioteki odtwarzacza wideo na lokalne odpowiedniki, ulepszono wygląd i naprawiono drobne błędy #219</li> +<li>Dodano możliwość sterowania głośnością przy pomocy klawiszy (- i =), użyteczne w przypadku braku klawiatury numerycznej #202</li> +<li>Usunięto biblioteki Cocktail i Mixins, które nie są już używane #179</li> +<li>Dodano zewnętrzne łącza do strony informacji o teledysku</li> +<li>Dodano możliwość wyszukiwania fototapet i miniatur dla teledysków w serwisach Fanart.tv i MusicBrainz</li> +<li>Dodano obsługę teledysków #217</li> +<li>Dodano powiadomienie o rozłączeniu w przypadku zamknięcia programu Kodi #10</li> +<li>Zaktualizowano tłumaczenie na język polski #216</li> +</ul> <h2 id="wersja-2-4-1">Wersja 2.4.1</h2> <ul> <li>Dodano album do tabeli utworu #212</li> diff --git a/addons/webinterface.default/lib/soundmanager/swf/soundmanager2.swf b/addons/webinterface.default/lib/soundmanager/swf/soundmanager2.swf Binary files differindex 009a856418..0403e0efd1 100644 --- a/addons/webinterface.default/lib/soundmanager/swf/soundmanager2.swf +++ b/addons/webinterface.default/lib/soundmanager/swf/soundmanager2.swf diff --git a/addons/webinterface.default/lib/soundmanager/swf/soundmanager2_debug.swf b/addons/webinterface.default/lib/soundmanager/swf/soundmanager2_debug.swf Binary files differindex f87f2ca460..9dbc7fe9a0 100644 --- a/addons/webinterface.default/lib/soundmanager/swf/soundmanager2_debug.swf +++ b/addons/webinterface.default/lib/soundmanager/swf/soundmanager2_debug.swf diff --git a/addons/webinterface.default/lib/soundmanager/swf/soundmanager2_flash9.swf b/addons/webinterface.default/lib/soundmanager/swf/soundmanager2_flash9.swf Binary files differindex 3c32d19983..f401b2ff5a 100644 --- a/addons/webinterface.default/lib/soundmanager/swf/soundmanager2_flash9.swf +++ b/addons/webinterface.default/lib/soundmanager/swf/soundmanager2_flash9.swf diff --git a/addons/webinterface.default/lib/soundmanager/swf/soundmanager2_flash9_debug.swf b/addons/webinterface.default/lib/soundmanager/swf/soundmanager2_flash9_debug.swf Binary files differindex 449402003b..cbc444257a 100644 --- a/addons/webinterface.default/lib/soundmanager/swf/soundmanager2_flash9_debug.swf +++ b/addons/webinterface.default/lib/soundmanager/swf/soundmanager2_flash9_debug.swf diff --git a/addons/webinterface.default/lib/soundmanager/swf/soundmanager2_flash_xdomain.zip b/addons/webinterface.default/lib/soundmanager/swf/soundmanager2_flash_xdomain.zip Binary files differindex 95b4631df7..7ebcecc2a1 100644 --- a/addons/webinterface.default/lib/soundmanager/swf/soundmanager2_flash_xdomain.zip +++ b/addons/webinterface.default/lib/soundmanager/swf/soundmanager2_flash_xdomain.zip diff --git a/addons/webinterface.default/themes/base/css/base.css b/addons/webinterface.default/themes/base/css/base.css index 45bb1eb6cf..c0df915c88 100644 --- a/addons/webinterface.default/themes/base/css/base.css +++ b/addons/webinterface.default/themes/base/css/base.css @@ -48,7 +48,7 @@ a{-webkit-transition:all 0.3s linear;-o-transition:all 0.3s linear;transition:al .active-player-kodi .details-header{background:#323537}.active-player-kodi .details-header .gradient{background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuMCIgeTE9IjAuNSIgeDI9IjEuMCIgeTI9IjAuNSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzMyMzUzNyIvPjxzdG9wIG9mZnNldD0iMzAlIiBzdG9wLWNvbG9yPSIjMzIzNTM3IiBzdG9wLW9wYWNpdHk9IjAuOSIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzMyMzUzNyIgc3RvcC1vcGFjaXR5PSIwLjAiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2dyYWQpIiAvPjwvc3ZnPiA=');background-size:100%;background-image:-webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #323537),color-stop(30%, rgba(50,53,55,0.9)),color-stop(100%, rgba(50,53,55,0)));background-image:-moz-linear-gradient(left, #323537 0%,rgba(50,53,55,0.9) 30%,rgba(50,53,55,0) 100%);background-image:-webkit-linear-gradient(left, #323537 0%,rgba(50,53,55,0.9) 30%,rgba(50,53,55,0) 100%);background-image:linear-gradient(to right, #323537 0%,rgba(50,53,55,0.9) 30%,rgba(50,53,55,0) 100%)}.active-player-local .details-header{background:#222425}.active-player-local .details-header .gradient{background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuMCIgeTE9IjAuNSIgeDI9IjEuMCIgeTI9IjAuNSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzIyMjQyNSIvPjxzdG9wIG9mZnNldD0iMzAlIiBzdG9wLWNvbG9yPSIjMjIyNDI1IiBzdG9wLW9wYWNpdHk9IjAuOSIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzIyMjQyNSIgc3RvcC1vcGFjaXR5PSIwLjAiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2dyYWQpIiAvPjwvc3ZnPiA=');background-size:100%;background-image:-webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, #222425),color-stop(30%, rgba(34,36,37,0.9)),color-stop(100%, rgba(34,36,37,0)));background-image:-moz-linear-gradient(left, #222425 0%,rgba(34,36,37,0.9) 30%,rgba(34,36,37,0) 100%);background-image:-webkit-linear-gradient(left, #222425 0%,rgba(34,36,37,0.9) 30%,rgba(34,36,37,0) 100%);background-image:linear-gradient(to right, #222425 0%,rgba(34,36,37,0.9) 30%,rgba(34,36,37,0) 100%)}.details-header{*zoom:1;position:relative;min-height:283px;padding-bottom:2em}.details-header:after{content:"";display:table;clear:both}.details-header a{color:rgba(255,255,255,0.6)}.details-header a:hover{color:rgba(255,255,255,0.9)}.details-header .region-details-side{padding:0.5em 0 0.5em 0.5em;display:none}@media (min-width: 45em){.details-header .region-details-side{width:190px}}@media (min-width: 75em){.details-header .region-details-side{width:280px}}@media (min-width: 45em){.details-header .region-details-side{display:block;padding:1.5em;position:absolute}}.details-header .region-details-meta-wrapper{padding:0.5em 2em;color:rgba(255,255,255,0.9);position:relative;z-index:20}@media (min-width: 45em){.details-header .region-details-meta-wrapper{margin-left:190px}}@media (min-width: 75em){.details-header .region-details-meta-wrapper{margin-left:280px}}@media (min-width: 45em){.details-header .region-details-meta-wrapper{padding:0.5em 1em 0 0.5em}}@media (min-width: 75em){.details-header .region-details-meta-wrapper{padding-top:1em}}@media (min-width: 90em){.details-header .region-details-meta-wrapper{margin-right:300px;color:rgba(255,255,255,0.9)}.shell-playlist-closed .details-header .region-details-meta-wrapper{margin-right:500px}}.details-header .region-details-title{color:rgba(255,255,255,0.95);margin-bottom:0.5em}.details-header .region-details-title .sub{font-weight:normal;font-size:14px;color:rgba(255,255,255,0.4)}@media (min-width: 45em){.details-header .region-details-title{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:75%;float:left}}.details-header .region-details-rating{width:73px;font-size:170%;color:rgba(255,255,255,0.7);white-space:nowrap;margin-top:0.8em;padding-right:2em;position:relative;text-align:right}.details-header .region-details-rating i{font-size:150%;top:-5px;right:0;position:absolute}.details-header .region-details-rating i:before{content:"\e631";display:inline-block;font-family:"Material-Design-Icons";font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;speak:none;font-variant:normal;text-transform:none}@media (min-width: 45em){.details-header .region-details-rating{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:25%;float:right}}.details-header .region-details-subtext{color:rgba(255,255,255,0.6);*zoom:1}.details-header .region-details-subtext:after{content:"";display:table;clear:both}.details-header .region-details-fanart{background-size:cover;background-position:50% 50%;width:100%;top:0;right:0;bottom:0;left:0;position:absolute;z-index:10;opacity:0.3}@media (min-width: 57em){.details-header .region-details-fanart{width:600px;margin-left:50px}}@media (min-width: 75em){.details-header .region-details-fanart{left:auto}}.details-header .region-details-fanart .gradient{content:"";top:0;bottom:0;left:0;position:absolute;width:60%}@media (min-width: 90em){.details-header .region-details-fanart{opacity:0.8}}.details-header .tagline,.details-header .description{margin-bottom:0.5em;max-height:22px;overflow:hidden;cursor:pointer;color:rgba(255,255,255,0.6)}.details-header .tagline.expanded,.details-header .description.expanded{max-height:none}@media (min-width: 75em){.details-header .tagline,.details-header .description{padding-right:10%}}.details-header .tagline{max-height:none;cursor:default;color:rgba(255,255,255,0.8)}.details-header .meta{margin:1em 0}.details-header .meta span{color:rgba(255,255,255,0.6)}.details-header .meta label{text-transform:capitalize}.details-header .runtime{font-size:120%;margin-bottom:0.6em;float:left}.details-header .genres{float:right}.details-header .streams span{color:rgba(255,255,255,0.6);text-transform:uppercase}.details-header .card-detail .artwork{position:relative;z-index:20}.details-header .card-detail .play{top:0;right:0;bottom:0;left:0;position:absolute;background:rgba(0,0,0,0.55);top:0;right:0;bottom:0;left:0;position:absolute;z-index:20;cursor:pointer;opacity:0}.details-header .card-detail .play:before{content:"\e6b9";display:inline-block;font-family:"Material-Design-Icons";font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;speak:none;font-variant:normal;text-transform:none}.details-header .card-detail .play:before{font-size:400%;color:rgba(255,255,255,0.8);top:0;right:0;bottom:0;left:0;position:absolute;margin:auto;width:55px;height:55px}.details-header .card-detail:hover .play{opacity:1}.details-header label{font-weight:normal}.details-header .dropdown>span{cursor:pointer}.tvshow-show .details-header,.season-details .details-header,.movie-show .details-header{min-height:315px}@media (min-width: 75em){.tvshow-show .details-header,.season-details .details-header,.movie-show .details-header{min-height:405px}}.section-movie .details-header .region-details-meta-below,.section-tvshow .details-header .region-details-meta-below{height:auto;overflow:initial}.layout-container.with-sidebar-first>.region-first{background:#f2f2f2;position:fixed;bottom:70px;top:50px;left:0;width:0;width:250px;left:-100%;-webkit-box-shadow:1px 0 3px 0 rgba(134,134,134,0.3);box-shadow:1px 0 3px 0 rgba(134,134,134,0.3);-webkit-transition:all 0.3s linear;-o-transition:all 0.3s linear;transition:all 0.3s linear;overflow-y:auto;z-index:25}@media (min-width: 57em){.layout-container.with-sidebar-first>.region-first{bottom:70px}}@media (min-width: 57em){.layout-container.with-sidebar-first>.region-first{left:50px}}@media (min-width: 57em){.layout-container.with-sidebar-first>.region-first{width:190px}}@media (min-width: 75em){.layout-container.with-sidebar-first>.region-first{width:250px}}@media (min-width: 57em){.layout-container.with-sidebar-first>.region-first{display:block;-webkit-box-shadow:1px 0 3px 0 rgba(134,134,134,0.05);box-shadow:1px 0 3px 0 rgba(134,134,134,0.05);left:50px}}.region-first-open .layout-container.with-sidebar-first>.region-first{left:0}@media (min-width: 57em){.region-first-open .layout-container.with-sidebar-first>.region-first{left:50px}}.layout-container.with-sidebar-first>.region-content-wrapper{margin-left:0;margin-left:0}@media (min-width: 57em){.layout-container.with-sidebar-first>.region-content-wrapper{margin-left:190px}}@media (min-width: 75em){.layout-container.with-sidebar-first>.region-content-wrapper{margin-left:250px}}.layout-container.with-header>.region-content-wrapper{position:relative}.layout-container.with-header>.region-content-wrapper>.region-content,.layout-container.with-header>.region-content{background:#f5f5f5;padding-top:2em;min-height:500px}.region-first-toggle{top:0;left:50px;position:fixed;display:table;width:50px;text-align:center;cursor:pointer;color:rgba(255,255,255,0.6);z-index:100;font-size:150%;opacity:0.5}.region-first-toggle:before{content:"\e8a3";display:inline-block;font-family:"Material-Design-Icons";font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;speak:none;font-variant:normal;text-transform:none}.region-first-toggle:before{display:table-cell;vertical-align:middle;height:50px}@media (min-width: 57em){.region-first-toggle{display:none}}.region-first-open .region-first-toggle{color:#fff}.region-first-open .region-first-toggle:before{content:"\e89a"}.content-container.with-sidebar .content-container-first{float:left;padding-right:2em;display:none}@media (min-width: 45em){.content-container.with-sidebar .content-container-first{width:190px}}@media (min-width: 75em){.content-container.with-sidebar .content-container-first{width:280px}}@media (min-width: 45em){.content-container.with-sidebar .content-container-content-wrapper{margin-left:190px}}@media (min-width: 75em){.content-container.with-sidebar .content-container-content-wrapper{margin-left:280px}} .section-content{max-width:1150px;margin-bottom:2em;padding-bottom:2em}.section-content h2{margin-bottom:1em}.section-content.section-full-width{max-width:none}.content-sections>.section-content:last-child{border:none}#loading-page{top:0;right:0;bottom:150px;left:0;position:fixed;left:0;right:0}@media (min-width: 57em){#loading-page{left:50px}}.shell-playlist-closed #loading-page{right:0}@media (min-width: 57em){#loading-page{right:310px}.shell-playlist-closed #loading-page{right:50px}}@media (min-width: 75em){#loading-page{right:400px}.shell-playlist-closed #loading-page{right:50px}}#loading-page.init{left:0 !important;right:0 !important}.shell-playlist-closed #loading-page{right:0}@media (min-width: 57em){.shell-playlist-closed #loading-page{right:50px}}@media (min-width: 75em){.shell-playlist-closed #loading-page{right:50px}}#loading-page h2{text-align:center;margin-top:18rem;font-size:1.5em;color:#a8a7a6}@media (min-width: 57em){#loading-page h2{margin-top:33rem}}.loader-inline #loading-page{position:relative;bottom:0;left:0 !important;right:0 !important}.loader-inline #loading-page h2{margin-top:10rem}@media (min-width: 57em){.loader-inline #loading-page h2{margin-top:12rem}}.search-page #loading-page{position:static;width:100%}.loader{position:absolute;margin:5rem auto 3rem auto;overflow:hidden}.loader>div{position:absolute;top:0;left:0;height:100%;width:100%}.orbit{height:20rem;width:20rem;top:0;left:0;bottom:0;right:0;margin:auto;overflow:visible;background-color:#ddd;-moz-border-radius:50%;-webkit-border-radius:50%;border-radius:50%}.orbit>div{top:2.5rem;left:2.5rem;font-size:1rem;height:15rem;width:15rem;-webkit-transform-origin:center center;-moz-transform-origin:center center;-ms-transform-origin:center center;transform-origin:center center}.orbit>div::before{position:absolute;left:calc(50% - .5em);display:block;content:'';height:1em;width:1em;-moz-border-radius:50%;-webkit-border-radius:50%;border-radius:50%;-moz-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1)}.orbit>div:nth-child(1)::before{background-color:#a8a7a6}.orbit>div:nth-child(2)::before{background-color:#a8a7a6}.orbit>div:nth-child(3)::before{background-color:#a8a7a6}.orbit>div:nth-child(4)::before{background-color:#a8a7a6}@-moz-keyframes loading-orbit{0%{-moz-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes loading-orbit{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes loading-orbit{0%{-moz-transform:rotate(0deg);-ms-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-moz-transform:rotate(360deg);-ms-transform:rotate(360deg);-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-moz-keyframes loading-orbit-before{0%{height:1em;width:1em;-moz-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);z-index:5}5%{height:1.25em;width:1.25em}25%{height:2em;width:2em;z-index:10;background-color:#12b2e7}50%{-moz-transform:translate3d(1rem, 15rem, 0);transform:translate3d(1rem, 15rem, 0);z-index:0;height:1em;width:1em}100%{-moz-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);z-index:0;height:1em;width:1em}}@-webkit-keyframes loading-orbit-before{0%{height:1em;width:1em;-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);z-index:5}5%{height:1.25em;width:1.25em}25%{height:2em;width:2em;z-index:10;background-color:#12b2e7}50%{-webkit-transform:translate3d(1rem, 15rem, 0);transform:translate3d(1rem, 15rem, 0);z-index:0;height:1em;width:1em}100%{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);z-index:0;height:1em;width:1em}}@keyframes loading-orbit-before{0%{height:1em;width:1em;-moz-transform:translate3d(0, 0, 0);-ms-transform:translate3d(0, 0, 0);-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);z-index:5}5%{height:1.25em;width:1.25em}25%{height:2em;width:2em;z-index:10;background-color:#12b2e7}50%{-moz-transform:translate3d(1rem, 15rem, 0);-ms-transform:translate3d(1rem, 15rem, 0);-webkit-transform:translate3d(1rem, 15rem, 0);transform:translate3d(1rem, 15rem, 0);z-index:0;height:1em;width:1em}100%{-moz-transform:translate3d(0, 0, 0);-ms-transform:translate3d(0, 0, 0);-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);z-index:0;height:1em;width:1em}}.loader.orbit>div{-webkit-animation:loading-orbit 6s infinite linear;-o-animation:loading-orbit 6s infinite linear;animation:loading-orbit 6s infinite linear}.loader.orbit>div::before{-webkit-animation:loading-orbit-before 2s infinite ease-in-out;-o-animation:loading-orbit-before 2s infinite ease-in-out;animation:loading-orbit-before 2s infinite ease-in-out}.loader.orbit>div:nth-child(1){-webkit-animation-delay:0s;animation-delay:0s}.loader.orbit>div:nth-child(2){-webkit-animation-delay:-0.75s;animation-delay:-0.75s}.loader.orbit>div:nth-child(3){-webkit-animation-delay:-1.5s;animation-delay:-1.5s}.loader.orbit>div:nth-child(4){-webkit-animation-delay:-2.25s;animation-delay:-2.25s}.loader.orbit>div:nth-child(1)::before{-webkit-animation-delay:0s;animation-delay:0s}.loader.orbit>div:nth-child(2)::before{-webkit-animation-delay:-0.5s;animation-delay:-0.5s}.loader.orbit>div:nth-child(3)::before{-webkit-animation-delay:-1s;animation-delay:-1s}.loader.orbit>div:nth-child(4)::before{-webkit-animation-delay:-1.5s;animation-delay:-1.5s}.spinner-double-section-far,.spinner-double-section{top:20em;right:0;bottom:0;left:0;position:absolute;margin:auto;width:80px;height:80px;border-radius:50%;border:4px solid rgba(170,170,170,0.2);-webkit-animation:spinner 3s linear infinite;-o-animation:spinner 3s linear infinite;animation:spinner 3s linear infinite}.loader-inline .spinner-double-section-far,.loader-inline .spinner-double-section{top:5em}@-moz-keyframes spinner{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@-webkit-keyframes spinner{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes spinner{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.spinner-double-section-far,.spinner-double-section{position:relative}.spinner-double-section-far:before,.spinner-double-section-far:after,.spinner-double-section:before,.spinner-double-section:after{content:'';position:absolute;top:-20px;left:-20px;display:block;width:80px;height:80px;border-radius:50%;border:4px solid transparent;border-top-color:#12b2e7}.spinner-double-section-far:after,.spinner-double-section:after{border-top-color:transparent;border-bottom-color:#12b2e7}.spinner-double-section-far{top:11em}.spinner-double-section-far:before,.spinner-double-section-far:after{top:-12px;left:-12px;width:96px;height:96px}@media (min-width: 57em){.spinner-double-section-far{top:20em}} @keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.loader-small-inline{border-radius:50%;width:20px;height:20px;border:0.25rem solid rgba(0,0,0,0.1);border-top-color:#12b2e7;animation:spin 1s infinite linear;display:inline-block}.local-playlist-list .region-first .new-list{display:inline-block;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background:#a8a7a6;padding:0.5em 1em;position:relative;cursor:pointer;margin:0 0.5em 0.5em 0;color:#fff;text-transform:capitalize;padding-right:2.5em;margin:2em 0}.local-playlist-list .region-first .new-list .text{position:relative;white-space:nowrap;overflow:hidden;display:block}.local-playlist-list .region-first .new-list .text:after{content:"";*zoom:1;filter:progid:DXImageTransform.Microsoft.gradient(gradientType=1, startColorstr='#00A8A7A6', endColorstr='#FFA8A7A6');background-image:url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuMCIgeTE9IjAuNSIgeDI9IjEuMCIgeTI9IjAuNSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2E4YTdhNiIgc3RvcC1vcGFjaXR5PSIwLjAiLz48c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNhOGE3YTYiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2dyYWQpIiAvPjwvc3ZnPiA=');background-size:100%;background-image:-webkit-gradient(linear, 0% 50%, 100% 50%, color-stop(0%, rgba(168,167,166,0)),color-stop(100%, #a8a7a6));background-image:-moz-linear-gradient(left, rgba(168,167,166,0) 0%,#a8a7a6 100%);background-image:-webkit-linear-gradient(left, rgba(168,167,166,0) 0%,#a8a7a6 100%);background-image:linear-gradient(to right, rgba(168,167,166,0) 0%,#a8a7a6 100%);top:0;right:0;bottom:0;position:absolute;width:1.5em}.local-playlist-list .region-first .new-list:hover{color:#fff}.local-playlist-list .region-first .new-list:before{content:"\e6fd";display:inline-block;font-family:"Material-Design-Icons";font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;speak:none;font-variant:normal;text-transform:none}.local-playlist-list .region-first .new-list:before{top:9px;right:0.5em;position:absolute;color:rgba(255,255,255,0.5);font-size:110%}.local-playlist-list .region-first .new-list:hover:before{color:#fff}.local-playlist-list .region-content{padding:0}.modal .playlist-selection-list h3{display:none}.modal .playlist-selection-list .lists li:after{display:none}.local-playlist .local-playlist-header{position:relative;background:#fff;padding:1em}.local-playlist .local-playlist-header h2{margin:0;font-size:18px;color:#888}.local-playlist .local-playlist-header .dropdown{position:absolute;right:1em;top:0.5em}.local-playlist .local-playlist-header .dropdown i{color:#888;display:table;width:1.5em;text-align:center;cursor:pointer;font-size:150%}.local-playlist .local-playlist-header .dropdown i:before{content:"\e8a3";display:inline-block;font-family:"Material-Design-Icons";font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;speak:none;font-variant:normal;text-transform:none}.local-playlist .local-playlist-header .dropdown i:before{display:table-cell;vertical-align:middle;height:1.5em}.local-playlist .local-playlist-header .dropdown ul{left:auto;right:0}.local-playlist .item-container{margin:1em}.local-playlist .empty-content{color:#888;text-align:center;font-size:150%;margin:2em}#modal-window .close,#modal-window .close:hover,#modal-window .close:focus{color:#fff}#modal-window .modal-dialog{-webkit-box-shadow:0 2px 11px 2px rgba(0,0,0,0.32);box-shadow:0 2px 11px 2px rgba(0,0,0,0.32)}@media (min-width: 45em){#modal-window .modal-dialog{min-width:500px}}#modal-window .modal-header{background:#2F3334;color:#fff}#modal-window .modal-header,#modal-window .modal-body{padding:15px 20px}#modal-window .modal-footer{background:rgba(0,0,0,0.05);padding:5px 20px}#modal-window.style-confirm .modal-body{padding:30px 20px}@media (min-width: 57em){#modal-window.style-video .modal-dialog{width:800px}}#modal-window.style-video .modal-body{padding:0;position:relative;padding-bottom:56.25%;padding-top:30px;height:0;overflow:hidden}#modal-window.style-video .modal-body iframe{position:absolute;top:0;left:0;width:100%;height:100%}#modal-window.style-video .modal-footer{display:none}#modal-window.style-edit-form .modal-footer,#modal-window.style-form .modal-footer{display:none}#modal-window.style-edit-form footer,#modal-window.style-form footer{margin:15px -20px -15px;padding:5px 20px;background:rgba(0,0,0,0.05);*zoom:1}#modal-window.style-edit-form footer:after,#modal-window.style-form footer:after{content:"";display:table;clear:both}#modal-window.style-edit-form footer .inline-list li,#modal-window.style-form footer .inline-list li{margin:0 0 0 2em;float:right}#nav-bar{background:rgba(255,255,255,0.9);width:50px;padding:0;top:0;left:0;position:fixed;margin:0;padding:0;-webkit-transition:all 0.3s linear;-o-transition:all 0.3s linear;transition:all 0.3s linear;z-index:50;-webkit-box-shadow:1px 0 3px 0 rgba(134,134,134,0.05);box-shadow:1px 0 3px 0 rgba(134,134,134,0.05);display:none}#nav-bar #nav-header{height:50px;background:#1e2122 url('../images/logo.png?1423030648') 0 0 no-repeat}.section-home #nav-bar{display:block}@media (min-width: 57em){#nav-bar{display:block}}#nav-bar nav{padding:1em 0}#nav-bar nav ul{margin:0;padding:0}#nav-bar nav ul li{margin:0;padding:0;list-style:none}#nav-bar nav ul a{display:block;padding:0.5em 0;color:#2b2f30;top:0;bottom:0;left:0;position:absolute;white-space:nowrap;-webkit-transition:none;-o-transition:none;transition:none}#nav-bar nav ul a span{display:none;padding-right:1em;font-weight:bold;padding-top:2px}#nav-bar nav ul a i{font-size:130%;width:50px;text-align:center}#nav-bar nav ul a i:before{top:10px;left:16px;position:absolute}#nav-bar nav ul ul{display:none}#nav-bar nav ul li{position:relative;height:38px}#nav-bar nav ul li:hover{white-space:nowrap}#nav-bar nav ul li:hover a{background:#12b2e7;color:#fff}#nav-bar nav ul li:hover a span{display:inline-block}.active-player-local #nav-bar nav ul li:hover a{background:#db2464}#player-wrapper{right:0;bottom:0;left:0;position:fixed;height:70px;background:#18191a;z-index:501}@media (min-width: 57em){#player-wrapper{height:70px}} -#player-local{display:none}.active-player-local #player-local{display:block}#player-kodi{display:block}.active-player-local #player-kodi{display:none}#player-kodi .playing-thumb:hover .remote-toggle{display:table}.player .controls-primary,.player .controls-secondary{background:rgba(255,255,255,0.05);height:70px}@media (min-width: 57em){.player .controls-primary,.player .controls-secondary{height:70px}}.player .controls-primary .control,.player .controls-secondary .control{cursor:pointer;height:70px;display:table;font-size:40px;color:rgba(255,255,255,0.5)}@media (min-width: 57em){.player .controls-primary .control,.player .controls-secondary .control{height:70px}}.player .controls-primary .control:hover,.player .controls-secondary .control:hover{color:#fff}.player .control{text-align:center}.player .control:before{display:table-cell;vertical-align:middle}.player .controls-primary{display:none;width:100%}@media (min-width: 57em){.player .controls-primary{width:300px}}.player .controls-primary .control{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:33.33%;float:left}@media (min-width: 57em){.player .controls-primary{float:left;display:block}}.player .controls-secondary{display:none;width:100%}@media (min-width: 57em){.player .controls-secondary{width:300px}}.player .controls-secondary .control{margin-top:-9px;font-size:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:25%;float:left}@media (min-width: 57em){.player .controls-secondary{float:right;display:block}}.player .now-playing{height:70px;position:relative;font-size:12px;font-weight:bold;color:#bac1c8}@media (min-width: 57em){.player .now-playing{height:70px}}.player .now-playing a{color:#bac1c8}@media (min-width: 57em){.player .now-playing{margin-right:300px;margin-left:300px}}.player .thumb{width:70px;height:70px;background-position:50% 50%;background-color:transparent;display:block;background-size:cover;background-repeat:no-repeat}.player .playing-thumb{top:0;bottom:0;left:0;position:absolute;width:70px;height:70px;z-index:10;overflow:hidden;background-color:rgba(255,255,255,0.2);background-size:cover;background-position:50% 50%}@media (min-width: 57em){.player .playing-thumb{width:70px}}@media (min-width: 57em){.player .playing-thumb{height:70px}}.player .remote-toggle{background:rgba(0,0,0,0.55);top:0;right:0;bottom:0;left:0;position:absolute;display:table;width:100px;text-align:center;cursor:pointer;display:none;color:#fff;font-size:200%;text-align:center;height:70px;width:70px;font-size:300%;opacity:0.8}.player .remote-toggle:before{content:"\e66f";display:inline-block;font-family:"Material-Design-Icons";font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;speak:none;font-variant:normal;text-transform:none}.player .remote-toggle:before{display:table-cell;vertical-align:middle;height:100px}.player .remote-toggle:before{padding-right:5px}@media (min-width: 57em){.player .remote-toggle{height:70px}}@media (min-width: 57em){.player .remote-toggle{width:70px}}.player .remote-toggle:before{display:table-cell;vertical-align:middle;height:70px;width:70px;padding:0}@media (min-width: 57em){.player .remote-toggle:before{height:70px}}@media (min-width: 57em){.player .remote-toggle:before{width:70px}}.player .playing-info{margin-left:70px}@media (min-width: 57em){.player .playing-info{margin-left:70px}}.player .playing-time{right:0;bottom:0;position:absolute;top:20px;margin:7px 10px 0 0;text-align:right}.player .playing-meta{margin:7px 0 0 10px}.player .playing-title a,.player .playing-time-current{color:#fff;font-size:14px}.player .slider-bar{height:20px;background:rgba(255,255,255,0.1);border-top:4px solid rgba(255,255,255,0);margin:0;cursor:pointer}.player .slider-bar .noUi-base,.player .slider-bar .noUi-handle,.player .slider-bar .noUi-origin{height:20px;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;top:0;border:none}.player .slider-bar .noUi-origin{background:#1f1f20;top:-4px}.player .slider-bar .noUi-handle{background:none;width:7px;left:-5px}.player .slider-bar:hover .noUi-handle{background:#6B6B6B}.player .volume{background:#36393a}.control-prev:before{content:"\e6a8"}.control-play:before{content:"\e6b9";font-size:150%}.control-next:before{content:"\e6a7"}.control-mute:before{content:"\e6d2"}.control-repeat:before{content:"\e6c2"}.control-shuffle:before{content:"\e6c5"}.control-menu:before{content:"\e8a3"}.player-menu-wrapper{right:0;position:fixed;width:100%;bottom:70px;z-index:50}@media (min-width: 57em){.player-menu-wrapper{width:300px}}@media (min-width: 57em){.player-menu-wrapper{bottom:70px}}.player-menu-wrapper ul{background:#fff;-webkit-box-shadow:-1px -1px 8px rgba(0,0,0,0.1);box-shadow:-1px -1px 8px rgba(0,0,0,0.1);height:0;-webkit-transition:height 0.5s ease-in;-o-transition:height 0.5s ease-in;transition:height 0.5s ease-in}.player-menu-wrapper ul li{padding:7px 13px;cursor:pointer}.player-menu-wrapper ul li:hover{background:rgba(0,0,0,0.1)}.player-menu-wrapper.opened ul{height:auto}#player-kodi{background:#18191a}.kodi-playing #player-kodi .control-play:before{content:"\e6b6"}.kodi-playing #player-kodi .playing-progress{border-top-color:#12b2e7}.kodi-paused #player-kodi .control-play:before{content:"\e6b9"}.kodi-mute-on #player-kodi .control-mute:hover{color:#12b2e7}.kodi-mute-on #player-kodi .control-mute:before{content:"\e6d0"}.kodi-repeat-one #player-kodi .control-repeat{color:#fff}.kodi-repeat-one #player-kodi .control-repeat:before{content:"\e6c3"}.kodi-repeat-one #player-kodi .control-repeat:hover{color:#12b2e7}.kodi-repeat-all #player-kodi .control-repeat{color:#fff}.kodi-repeat-all #player-kodi .control-repeat:hover{color:#12b2e7}.kodi-shuffled-on #player-kodi .control-shuffle{color:#fff}.kodi-shuffled-on #player-kodi .control-shuffle:hover{color:#12b2e7}#player-kodi .slider-bar{background:#2a2b2c}#player-kodi .slider-bar .noUi-origin{background:#151617}#player-local{background:#313233}.local-playing #player-local .control-play:before{content:"\e6b6"}.local-playing #player-local .playing-progress{border-top-color:#db2464}.local-paused #player-local .control-play:before{content:"\e6b9"}.local-mute-on #player-local .control-mute:hover{color:#db2464}.local-mute-on #player-local .control-mute:before{content:"\e6d0"}.local-repeat-one #player-local .control-repeat{color:#fff}.local-repeat-one #player-local .control-repeat:before{content:"\e6c3"}.local-repeat-one #player-local .control-repeat:hover{color:#db2464}.local-repeat-all #player-local .control-repeat{color:#fff}.local-repeat-all #player-local .control-repeat:hover{color:#db2464}.local-shuffled-on #player-local .control-shuffle{color:#fff}.local-shuffled-on #player-local .control-shuffle:hover{color:#db2464}#player-local .slider-bar{background:#414243}#player-local .slider-bar .noUi-origin{background:#2c2d2d}.playlist-items li{border-bottom:1px solid rgba(255,255,255,0.1);height:34px;position:relative;color:#999}.playlist-items li a{color:#999}.playlist-items li.sortable-ghost,.playlist-items li.row-playing,.playlist-items li.row-paused,.playlist-items li:hover{height:51px;background-color:#0b0c0c}.playlist-items li.sortable-ghost .thumb,.playlist-items li.row-playing .thumb,.playlist-items li.row-paused .thumb,.playlist-items li:hover .thumb{width:50px;height:50px;background-position:50% 50%;background-color:transparent;display:block;background-size:cover;background-repeat:no-repeat}.playlist-items li.sortable-ghost .subtitle,.playlist-items li.sortable-ghost .thumb,.playlist-items li.row-playing .subtitle,.playlist-items li.row-playing .thumb,.playlist-items li.row-paused .subtitle,.playlist-items li.row-paused .thumb,.playlist-items li:hover .subtitle,.playlist-items li:hover .thumb{display:block}.playlist-items li.sortable-ghost .title a,.playlist-items li.row-playing .title a,.playlist-items li.row-paused .title a,.playlist-items li:hover .title a{color:rgba(255,255,255,0.95)}.playlist-items li.row-playing,.playlist-items li.row-paused{height:80px;background-image:url('../images/row-playing-white.gif?1423213071');background-repeat:no-repeat;background-position:2px 1px}.playlist-items li.row-playing .remove,.playlist-items li.row-paused .remove{display:none !important}.playlist-items li.row-playing .thumb,.playlist-items li.row-paused .thumb{width:80px;height:80px;background-position:50% 50%;background-color:transparent;display:block;background-size:cover;background-repeat:no-repeat}.playlist-items li.row-playing .thumb,.playlist-items li.row-paused .thumb{top:0;right:0;bottom:0;position:absolute;margin:0}.playlist-items li.row-playing .thumb .play,.playlist-items li.row-paused .thumb .play{display:none !important}.playlist-items li.row-playing .thumb .thumbs,.playlist-items li.row-paused .thumb .thumbs{background:rgba(0,0,0,0.55);top:0;right:0;bottom:0;left:0;position:absolute;display:table;width:50px;text-align:center;cursor:pointer;display:none;color:#fff;font-size:200%;width:80px}.playlist-items li.row-playing .thumb .thumbs:before,.playlist-items li.row-paused .thumb .thumbs:before{content:"\e684";display:inline-block;font-family:"Material-Design-Icons";font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;speak:none;font-variant:normal;text-transform:none}.playlist-items li.row-playing .thumb .thumbs:before,.playlist-items li.row-paused .thumb .thumbs:before{display:table-cell;vertical-align:middle;height:50px}.playlist-items li.row-playing .thumb .thumbs:before,.playlist-items li.row-paused .thumb .thumbs:before{padding-right:5px}.playlist-items li.row-playing .thumb .thumbs:before,.playlist-items li.row-paused .thumb .thumbs:before{width:80px;height:80px}.playlist-items li.row-playing .thumb:hover .thumbs,.playlist-items li.row-paused .thumb:hover .thumbs{display:block}.playlist-items li.row-playing .meta,.playlist-items li.row-paused .meta{margin-right:90px;margin-left:27px}.playlist-items li.row-playing .meta .title,.playlist-items li.row-paused .meta .title{margin-top:5px;font-size:110%}.playlist-items li.row-paused{background-image:url('../images/row-pause-white.png?1423213243')}.playlist-items li.sortable-ghost{height:50px;background:rgba(255,255,255,0.3);opacity:0.5}.playlist-items li.thumbs-up .thumbs{color:#12b2e7 !important}.active-player-local .playlist-items li.thumbs-up .thumbs{color:#db2464 !important}.playlist-items .thumb{background:transparent;overflow:hidden;letter-spacing:-0.31em;width:50px;height:50px;float:left;margin-right:10px;display:none;position:relative}.playlist-items .thumb img{display:block;vertical-align:middle;width:50px;margin-top:50%}.playlist-items .thumb .thumb{width:50px;height:50px;background-position:50% 50%;background-color:transparent;display:block;background-size:cover;background-repeat:no-repeat}.playlist-items .thumb:hover .play{display:table}.playlist-items .play{background:rgba(0,0,0,0.55);top:0;right:0;bottom:0;left:0;position:absolute;display:table;width:50px;text-align:center;cursor:pointer;display:none;color:#fff;font-size:200%}.playlist-items .play:before{content:"\e6b9";display:inline-block;font-family:"Material-Design-Icons";font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;speak:none;font-variant:normal;text-transform:none}.playlist-items .play:before{display:table-cell;vertical-align:middle;height:50px}.playlist-items .play:before{padding-right:5px}.playlist-items .meta{margin:0 30px 0 0px;padding:9px 10px 5px 15px}.playlist-items .title,.playlist-items .subtitle{display:block;overflow:hidden;white-space:nowrap}.playlist-items .title,.playlist-items .title a{color:#bdc1c2}.playlist-items .subtitle{display:none;font-size:95%;margin-top:2px}.playlist-items .remove{top:0;right:0;bottom:0;position:absolute;display:table;width:34px;text-align:center;cursor:pointer;display:none}.playlist-items .remove:before{content:"\e89c";display:inline-block;font-family:"Material-Design-Icons";font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;speak:none;font-variant:normal;text-transform:none}.playlist-items .remove:before{display:table-cell;vertical-align:middle;height:50px}.playlist-items .remove:hover{font-size:120%;color:darkred}.playlist-items li:hover .remove{display:table}.playlists-wrapper{padding:1em;font-size:85%;overflow-y:auto;right:0;bottom:0;left:0;position:absolute;top:50px;z-index:500}.media-toggle{*zoom:1;background:rgba(255,255,255,0.1);margin-bottom:0.5em}.media-toggle:after{content:"";display:table;clear:both}.media-toggle li{float:left;padding:5px 15px;color:#999;cursor:pointer}.playlist-bar.media-audio .media-toggle li.audio{color:#fff;background:rgba(255,255,255,0.1)}.playlist-bar.media-video .media-toggle li.video{color:#fff;background:rgba(255,255,255,0.1)}.playlist-header{background:#313233;height:50px}.playlist-header .player-toggle{display:table}.playlist-header .player-toggle li{height:50px;display:table-cell;vertical-align:middle;padding:0 2em 0 2em;color:rgba(255,255,255,0.8);cursor:pointer}.playlist-header .player-toggle li:before{margin-right:0.5em;font-size:90%}.playlist-header .player-toggle li.kodi:before{content:"\e602";display:inline-block;font-family:"icomoon";font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;speak:none;font-variant:normal;text-transform:none}.playlist-header .player-toggle li.local:before{content:"\e7b0";display:inline-block;font-family:"Material-Design-Icons";font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;speak:none;font-variant:normal;text-transform:none}.active-player-kodi .playlist-header .player-toggle li.kodi{color:#12b2e7;background:#1b1c1d}.active-player-local .playlist-header .player-toggle li.local{color:#db2464;background:#1b1c1d}.playlist-header .playlist-menu{top:0;right:0;position:absolute}.playlist-header .playlist-menu .menu-toggle{display:table;width:50px;text-align:center;cursor:pointer;color:rgba(255,255,255,0.5);font-size:150%}.playlist-header .playlist-menu .menu-toggle:before{content:"\e8a3";display:inline-block;font-family:"Material-Design-Icons";font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;speak:none;font-variant:normal;text-transform:none}.playlist-header .playlist-menu .menu-toggle:before{display:table-cell;vertical-align:middle;height:50px}.playlist-header .playlist-menu .menu-toggle:hover{color:#fff}@media (min-width: 57em){.playlist-header .playlist-menu{right:50px}}.playlist-header .playlist-menu .dropdown-menu{background:#fff;padding:0;top:50px;margin-top:-5px}.playlist-header .playlist-menu .dropdown-menu li{padding:0;font-size:12px}.playlist-header .playlist-menu .dropdown-menu li.dropdown-header{background:rgba(0,0,0,0.1);color:rgba(0,0,0,0.6)}.playlist-header .playlist-menu .dropdown-menu li.dropdown-header,.playlist-header .playlist-menu .dropdown-menu li a{padding:0.6em 1em}.playlist-header .playlist-menu .dropdown-menu li a{color:rgba(0,0,0,0.5)}.playlist-header .playlist-menu .dropdown-menu li .party-mode i{display:none}.kodi-partymode-on .playlist-header .playlist-menu .dropdown-menu li .party-mode i{display:inline-block}.active-player-kodi .kodi-playlists{display:block}.active-player-kodi .local-playlists{display:none}.active-player-local .kodi-playlists{display:none}.active-player-local .local-playlists{display:block}.playlist-page__empty{text-align:right;margin-right:1em}.playlist-page__empty h3{margin-bottom:1em}.pvr-card{background:#fff;padding:1em;margin-bottom:0.5em;position:relative}.pvr-card.aired{background-color:#f0f0f0}.pvr-card.airing{background:#f4fcff}.pvr-card .title{margin-bottom:0.5em}.pvr-card .entity-progress{top:auto;bottom:0}.pvr-card .entity-progress .current-progress{height:4px;background:#12b2e7}.pvr-card .plot,.pvr-card .title span{color:#888;font-size:90%}.pvr-card .plot{margin-top:0.5em}.pvr-card .actions{top:0.5em;right:0.5em;position:absolute}.pvr-card .actions li{display:table;width:1.5em;text-align:center;cursor:pointer;color:rgba(0,0,0,0.3);float:left;font-size:140%}.pvr-card .actions li:before{content:"\e6b9";display:inline-block;font-family:"Material-Design-Icons";font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;speak:none;font-variant:normal;text-transform:none}.pvr-card .actions li:before{display:table-cell;vertical-align:middle;height:1.5em}.pvr-card .actions li:hover{color:rgba(0,0,0,0.6)}.pvr-card .actions li.play{font-size:190%;margin-top:-5px}.pvr-card .actions li.record:before{content:"\e7da"}.pvr-card .actions li.toggle-timer:before{content:"\e65e"}.pvr-card.has-timer .actions li.toggle-timer,.pvr-card.has-timer .actions li.record{color:#bf0a07}#remote{display:none;position:fixed;top:0;right:0;left:0;bottom:70px;top:50px;right:0;background-color:#18191a;z-index:500;background-size:cover}.section-remote #remote{display:block}@media (min-width: 57em){#remote{bottom:70px}}.shell-playlist-closed #remote{right:0}@media (min-width: 57em){#remote{right:310px}.shell-playlist-closed #remote{right:50px}}@media (min-width: 75em){#remote{right:400px}.shell-playlist-closed #remote{right:50px}} +#player-local{display:none}.active-player-local #player-local{display:block}#player-kodi{display:block}.active-player-local #player-kodi{display:none}#player-kodi .playing-thumb:hover .remote-toggle{display:table}.player .controls-primary,.player .controls-secondary{background:rgba(255,255,255,0.05);height:70px}@media (min-width: 57em){.player .controls-primary,.player .controls-secondary{height:70px}}.player .controls-primary .control,.player .controls-secondary .control{cursor:pointer;height:70px;display:table;font-size:40px;color:rgba(255,255,255,0.5)}@media (min-width: 57em){.player .controls-primary .control,.player .controls-secondary .control{height:70px}}.player .controls-primary .control:hover,.player .controls-secondary .control:hover{color:#fff}.player .control{text-align:center}.player .control:before{display:table-cell;vertical-align:middle}.player .controls-primary{display:none;width:100%}@media (min-width: 57em){.player .controls-primary{width:300px}}.player .controls-primary .control{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:33.33%;float:left}@media (min-width: 57em){.player .controls-primary{float:left;display:block}}.player .controls-secondary{display:none;width:100%}@media (min-width: 57em){.player .controls-secondary{width:300px}}.player .controls-secondary .control{margin-top:-9px;font-size:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:25%;float:left}@media (min-width: 57em){.player .controls-secondary{float:right;display:block}}.player .now-playing{height:70px;position:relative;font-size:12px;font-weight:bold;color:#bac1c8}@media (min-width: 57em){.player .now-playing{height:70px}}.player .now-playing a{color:#bac1c8}@media (min-width: 57em){.player .now-playing{margin-right:300px;margin-left:300px}}.player .thumb{width:70px;height:70px;background-position:50% 50%;background-color:transparent;display:block;background-size:cover;background-repeat:no-repeat}.player .playing-thumb{top:0;bottom:0;left:0;position:absolute;width:70px;height:70px;z-index:10;overflow:hidden;background-color:rgba(255,255,255,0.2);background-size:cover;background-position:50% 50%}@media (min-width: 57em){.player .playing-thumb{width:70px}}@media (min-width: 57em){.player .playing-thumb{height:70px}}.player .remote-toggle{background:rgba(0,0,0,0.55);top:0;right:0;bottom:0;left:0;position:absolute;display:table;width:100px;text-align:center;cursor:pointer;display:none;color:#fff;font-size:200%;text-align:center;height:70px;width:70px;font-size:300%;opacity:0.8}.player .remote-toggle:before{content:"\e66f";display:inline-block;font-family:"Material-Design-Icons";font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;speak:none;font-variant:normal;text-transform:none}.player .remote-toggle:before{display:table-cell;vertical-align:middle;height:100px}.player .remote-toggle:before{padding-right:5px}@media (min-width: 57em){.player .remote-toggle{height:70px}}@media (min-width: 57em){.player .remote-toggle{width:70px}}.player .remote-toggle:before{display:table-cell;vertical-align:middle;height:70px;width:70px;padding:0}@media (min-width: 57em){.player .remote-toggle:before{height:70px}}@media (min-width: 57em){.player .remote-toggle:before{width:70px}}.player .playing-info{margin-left:70px}@media (min-width: 57em){.player .playing-info{margin-left:70px}}.player .playing-time{right:0;bottom:0;position:absolute;top:20px;margin:7px 10px 0 0;text-align:right}.player .playing-meta{margin:7px 0 0 10px}.player .playing-title a,.player .playing-time-current{color:#fff;font-size:14px}.player .slider-bar{height:20px;background:rgba(255,255,255,0.1);border-top:4px solid rgba(255,255,255,0);margin:0;cursor:pointer}.player .slider-bar .noUi-base,.player .slider-bar .noUi-handle,.player .slider-bar .noUi-origin{height:20px;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;top:0;border:none}.player .slider-bar .noUi-origin{background:#1f1f20;top:-4px}.player .slider-bar .noUi-handle{background:none;width:7px;left:-5px}.player .slider-bar:hover .noUi-handle{background:#6B6B6B}.player .volume{background:#36393a}.control-prev:before{content:"\e6a8"}.control-play:before{content:"\e6b9";font-size:150%}.control-next:before{content:"\e6a7"}.control-mute:before{content:"\e6d2"}.control-repeat:before{content:"\e6c2"}.control-shuffle:before{content:"\e6c5"}.control-menu:before{content:"\e8a3"}.player-menu-wrapper{right:0;position:fixed;width:100%;bottom:70px;z-index:50}@media (min-width: 57em){.player-menu-wrapper{width:300px}}@media (min-width: 57em){.player-menu-wrapper{bottom:70px}}.player-menu-wrapper ul{background:#fff;-webkit-box-shadow:-1px -1px 8px rgba(0,0,0,0.1);box-shadow:-1px -1px 8px rgba(0,0,0,0.1);height:0;-webkit-transition:height 0.5s ease-in;-o-transition:height 0.5s ease-in;transition:height 0.5s ease-in}.player-menu-wrapper ul li{padding:7px 13px;cursor:pointer}.player-menu-wrapper ul li:hover{background:rgba(0,0,0,0.1)}.player-menu-wrapper.opened ul{height:auto}#player-kodi{background:#18191a}.kodi-playing #player-kodi .control-play:before{content:"\e6b6"}.kodi-playing #player-kodi .playing-progress{border-top-color:#12b2e7}.kodi-paused #player-kodi .control-play:before{content:"\e6b9"}.kodi-mute-on #player-kodi .control-mute:hover{color:#12b2e7}.kodi-mute-on #player-kodi .control-mute:before{content:"\e6d0"}.kodi-repeat-one #player-kodi .control-repeat{color:#fff}.kodi-repeat-one #player-kodi .control-repeat:before{content:"\e6c3"}.kodi-repeat-one #player-kodi .control-repeat:hover{color:#12b2e7}.kodi-repeat-all #player-kodi .control-repeat{color:#fff}.kodi-repeat-all #player-kodi .control-repeat:hover{color:#12b2e7}.kodi-shuffled-on #player-kodi .control-shuffle{color:#fff}.kodi-shuffled-on #player-kodi .control-shuffle:hover{color:#12b2e7}#player-kodi .slider-bar{background:#2a2b2c}#player-kodi .slider-bar .noUi-origin{background:#151617}#player-local{background:#313233}.local-playing #player-local .control-play:before{content:"\e6b6"}.local-playing #player-local .playing-progress{border-top-color:#db2464}.local-paused #player-local .control-play:before{content:"\e6b9"}.local-mute-on #player-local .control-mute:hover{color:#db2464}.local-mute-on #player-local .control-mute:before{content:"\e6d0"}.local-repeat-one #player-local .control-repeat{color:#fff}.local-repeat-one #player-local .control-repeat:before{content:"\e6c3"}.local-repeat-one #player-local .control-repeat:hover{color:#db2464}.local-repeat-all #player-local .control-repeat{color:#fff}.local-repeat-all #player-local .control-repeat:hover{color:#db2464}.local-shuffled-on #player-local .control-shuffle{color:#fff}.local-shuffled-on #player-local .control-shuffle:hover{color:#db2464}#player-local .slider-bar{background:#414243}#player-local .slider-bar .noUi-origin{background:#2c2d2d}.playlist-items li{border-bottom:1px solid rgba(255,255,255,0.1);height:34px;position:relative;color:#999}.playlist-items li a{color:#999}.playlist-items li.sortable-ghost,.playlist-items li.row-playing,.playlist-items li.row-paused,.playlist-items li:hover{height:51px;background-color:#0b0c0c}.playlist-items li.sortable-ghost .thumb,.playlist-items li.row-playing .thumb,.playlist-items li.row-paused .thumb,.playlist-items li:hover .thumb{width:50px;height:50px;background-position:50% 50%;background-color:transparent;display:block;background-size:cover;background-repeat:no-repeat}.playlist-items li.sortable-ghost .subtitle,.playlist-items li.sortable-ghost .thumb,.playlist-items li.row-playing .subtitle,.playlist-items li.row-playing .thumb,.playlist-items li.row-paused .subtitle,.playlist-items li.row-paused .thumb,.playlist-items li:hover .subtitle,.playlist-items li:hover .thumb{display:block}.playlist-items li.sortable-ghost .title a,.playlist-items li.row-playing .title a,.playlist-items li.row-paused .title a,.playlist-items li:hover .title a{color:rgba(255,255,255,0.95)}.playlist-items li.row-playing,.playlist-items li.row-paused{height:80px;background-image:url('../images/row-playing-white.gif?1423213071');background-repeat:no-repeat;background-position:2px 1px}.playlist-items li.row-playing .remove,.playlist-items li.row-paused .remove{display:none !important}.playlist-items li.row-playing .thumb,.playlist-items li.row-paused .thumb{width:80px;height:80px;background-position:50% 50%;background-color:transparent;display:block;background-size:cover;background-repeat:no-repeat}.playlist-items li.row-playing .thumb,.playlist-items li.row-paused .thumb{top:0;right:0;bottom:0;position:absolute;margin:0}.playlist-items li.row-playing .thumb .play,.playlist-items li.row-paused .thumb .play{display:none !important}.playlist-items li.row-playing .thumb .thumbs,.playlist-items li.row-paused .thumb .thumbs{background:rgba(0,0,0,0.55);top:0;right:0;bottom:0;left:0;position:absolute;display:table;width:50px;text-align:center;cursor:pointer;display:none;color:#fff;font-size:200%;width:80px}.playlist-items li.row-playing .thumb .thumbs:before,.playlist-items li.row-paused .thumb .thumbs:before{content:"\e684";display:inline-block;font-family:"Material-Design-Icons";font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;speak:none;font-variant:normal;text-transform:none}.playlist-items li.row-playing .thumb .thumbs:before,.playlist-items li.row-paused .thumb .thumbs:before{display:table-cell;vertical-align:middle;height:50px}.playlist-items li.row-playing .thumb .thumbs:before,.playlist-items li.row-paused .thumb .thumbs:before{padding-right:5px}.playlist-items li.row-playing .thumb .thumbs:before,.playlist-items li.row-paused .thumb .thumbs:before{width:80px;height:80px}.playlist-items li.row-playing .thumb:hover .thumbs,.playlist-items li.row-paused .thumb:hover .thumbs{display:block}.playlist-items li.row-playing .meta,.playlist-items li.row-paused .meta{margin-right:90px;margin-left:27px}.playlist-items li.row-playing .meta .title,.playlist-items li.row-paused .meta .title{margin-top:5px;font-size:110%}.playlist-items li.row-paused{background-image:url('../images/row-pause-white.png?1423213243')}.playlist-items li.sortable-ghost{height:50px;background:rgba(255,255,255,0.3);opacity:0.5}.playlist-items li.thumbs-up .thumbs{color:#12b2e7 !important}.active-player-local .playlist-items li.thumbs-up .thumbs{color:#db2464 !important}.playlist-items .thumb{background:transparent;overflow:hidden;letter-spacing:-0.31em;width:50px;height:50px;float:left;margin-right:10px;display:none;position:relative}.playlist-items .thumb img{display:block;vertical-align:middle;width:50px;margin-top:50%}.playlist-items .thumb .thumb{width:50px;height:50px;background-position:50% 50%;background-color:transparent;display:block;background-size:cover;background-repeat:no-repeat}.playlist-items .thumb:hover .play{display:table}.playlist-items .play{background:rgba(0,0,0,0.55);top:0;right:0;bottom:0;left:0;position:absolute;display:table;width:50px;text-align:center;cursor:pointer;display:none;color:#fff;font-size:200%}.playlist-items .play:before{content:"\e6b9";display:inline-block;font-family:"Material-Design-Icons";font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;speak:none;font-variant:normal;text-transform:none}.playlist-items .play:before{display:table-cell;vertical-align:middle;height:50px}.playlist-items .play:before{padding-right:5px}.playlist-items .meta{margin:0 30px 0 0px;padding:9px 10px 5px 15px}.playlist-items .title,.playlist-items .subtitle{display:block;overflow:hidden;white-space:nowrap}.playlist-items .title,.playlist-items .title a{color:#bdc1c2}.playlist-items .subtitle{display:none;font-size:95%;margin-top:2px}.playlist-items .remove{top:0;right:0;bottom:0;position:absolute;display:table;width:34px;text-align:center;cursor:pointer;display:none}.playlist-items .remove:before{content:"\e89c";display:inline-block;font-family:"Material-Design-Icons";font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;speak:none;font-variant:normal;text-transform:none}.playlist-items .remove:before{display:table-cell;vertical-align:middle;height:50px}.playlist-items .remove:hover{font-size:120%;color:darkred}.playlist-items li:hover .remove{display:table}.playlists-wrapper{padding:1em;font-size:85%;overflow-y:auto;right:0;bottom:0;left:0;position:absolute;top:50px;z-index:500}.media-toggle{*zoom:1;background:rgba(255,255,255,0.1);margin-bottom:0.5em}.media-toggle:after{content:"";display:table;clear:both}.media-toggle li{float:left;padding:5px 15px;color:#999;cursor:pointer}.playlist-bar.media-audio .media-toggle li.audio{color:#fff;background:rgba(255,255,255,0.1)}.playlist-bar.media-video .media-toggle li.video{color:#fff;background:rgba(255,255,255,0.1)}.playlist-header{background:#313233;height:50px}.playlist-header .player-toggle{display:table}.playlist-header .player-toggle li{height:50px;display:table-cell;vertical-align:middle;padding:0 2em 0 2em;color:rgba(255,255,255,0.8);cursor:pointer}.playlist-header .player-toggle li:before{margin-right:0.5em;font-size:90%}.playlist-header .player-toggle li.kodi:before{content:"\e602";display:inline-block;font-family:"icomoon";font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;speak:none;font-variant:normal;text-transform:none}.playlist-header .player-toggle li.local:before{content:"\e7b0";display:inline-block;font-family:"Material-Design-Icons";font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;speak:none;font-variant:normal;text-transform:none}.active-player-kodi .playlist-header .player-toggle li.kodi{color:#12b2e7;background:#1b1c1d}.active-player-local .playlist-header .player-toggle li.local{color:#db2464;background:#1b1c1d}.playlist-header .playlist-menu{top:0;right:0;position:absolute}.playlist-header .playlist-menu .menu-toggle{display:table;width:50px;text-align:center;cursor:pointer;color:rgba(255,255,255,0.5);font-size:150%}.playlist-header .playlist-menu .menu-toggle:before{content:"\e8a3";display:inline-block;font-family:"Material-Design-Icons";font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;speak:none;font-variant:normal;text-transform:none}.playlist-header .playlist-menu .menu-toggle:before{display:table-cell;vertical-align:middle;height:50px}.playlist-header .playlist-menu .menu-toggle:hover{color:#fff}@media (min-width: 57em){.playlist-header .playlist-menu{right:50px}}.playlist-header .playlist-menu .dropdown-menu{background:#fff;padding:0;top:50px;margin-top:-5px}.playlist-header .playlist-menu .dropdown-menu li{padding:0;font-size:12px}.playlist-header .playlist-menu .dropdown-menu li.dropdown-header{background:rgba(0,0,0,0.1);color:rgba(0,0,0,0.6)}.playlist-header .playlist-menu .dropdown-menu li.dropdown-header,.playlist-header .playlist-menu .dropdown-menu li a{padding:0.6em 1em}.playlist-header .playlist-menu .dropdown-menu li a{color:rgba(0,0,0,0.5)}.playlist-header .playlist-menu .dropdown-menu li .party-mode i{display:none}.active-player-local.local-partymode-on .playlist-header .playlist-menu .dropdown-menu li .party-mode i,.active-player-kodi.kodi-partymode-on .playlist-header .playlist-menu .dropdown-menu li .party-mode i{display:inline-block}.active-player-kodi .kodi-playlists{display:block}.active-player-kodi .local-playlists{display:none}.active-player-local .kodi-playlists{display:none}.active-player-local .local-playlists{display:block}.playlist-page__empty{text-align:right;margin-right:1em}.playlist-page__empty h3{margin-bottom:1em}.pvr-card{background:#fff;padding:1em;margin-bottom:0.5em;position:relative}.pvr-card.aired{background-color:#f0f0f0}.pvr-card.airing{background:#f4fcff}.pvr-card .title{margin-bottom:0.5em}.pvr-card .entity-progress{top:auto;bottom:0}.pvr-card .entity-progress .current-progress{height:4px;background:#12b2e7}.pvr-card .plot,.pvr-card .title span{color:#888;font-size:90%}.pvr-card .plot{margin-top:0.5em}.pvr-card .actions{top:0.5em;right:0.5em;position:absolute}.pvr-card .actions li{display:table;width:1.5em;text-align:center;cursor:pointer;color:rgba(0,0,0,0.3);float:left;font-size:140%}.pvr-card .actions li:before{content:"\e6b9";display:inline-block;font-family:"Material-Design-Icons";font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;speak:none;font-variant:normal;text-transform:none}.pvr-card .actions li:before{display:table-cell;vertical-align:middle;height:1.5em}.pvr-card .actions li:hover{color:rgba(0,0,0,0.6)}.pvr-card .actions li.play{font-size:190%;margin-top:-5px}.pvr-card .actions li.record:before{content:"\e7da"}.pvr-card .actions li.toggle-timer:before{content:"\e65e"}.pvr-card.has-timer .actions li.toggle-timer,.pvr-card.has-timer .actions li.record{color:#bf0a07}#remote{display:none;position:fixed;top:0;right:0;left:0;bottom:70px;top:50px;right:0;background-color:#18191a;z-index:500;background-size:cover}.section-remote #remote{display:block}@media (min-width: 57em){#remote{bottom:70px}}.shell-playlist-closed #remote{right:0}@media (min-width: 57em){#remote{right:310px}.shell-playlist-closed #remote{right:50px}}@media (min-width: 75em){#remote{right:400px}.shell-playlist-closed #remote{right:50px}} #remote-background{top:0;right:0;bottom:360px;left:0;position:absolute;background-color:#2b2f30;background-position:50% 50%;background-size:cover}@media (min-width: 57em){#remote-background{bottom:0;z-index:1;background-color:#f5f5f5}} .kodi-remote{position:absolute;bottom:180px;left:0;right:0;font-size:1.7em;color:#6F7374;overflow:hidden;z-index:500;width:auto}@media (min-width: 57em){.kodi-remote{bottom:0}}@media (min-width: 57em){.kodi-remote{width:371px}}.kodi-remote .ibut{background:#222324}.kodi-remote .ibut:hover{color:#ccc;cursor:pointer}.kodi-remote .main-controls{background:#18191a;*zoom:1}.kodi-remote .main-controls:after{content:"";display:table;clear:both}.kodi-remote .direction{background:#222324;height:155px;margin-top:-12px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:75%;float:left;position:relative;z-index:10}.kodi-remote .direction .pad{margin:5px auto;width:240px;position:relative;text-align:center}.kodi-remote .direction .pad .ibut{height:145px;position:absolute;top:0;left:80px;width:80px;font-size:125%}.kodi-remote .direction .pad .ibut.up,.kodi-remote .direction .pad .ibut.down,.kodi-remote .direction .pad .ibut.ok{height:48.3333333333px;line-height:48.3333333333px}.kodi-remote .direction .pad .ibut.down{top:96.6666666667px}.kodi-remote .direction .pad .ibut.ok{top:48.3333333333px;font-size:12px}.kodi-remote .direction .pad .ibut.left{bottom:0;left:0;line-height:145px;padding-left:20px}.kodi-remote .direction .pad .ibut.right{bottom:0;right:0;left:auto;line-height:145px;padding-right:20px}.kodi-remote .buttons{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:25%;float:right;padding:6px 8px 4px;margin-top:-20px}.kodi-remote .buttons .ibut{display:block;padding:11px 0;text-align:center;margin:1px 0 9px 0}.kodi-remote .alt-controls .row,.kodi-remote .secondary-controls{clear:both;background:#18191a;height:70px}.kodi-remote .alt-controls .row .ibut,.kodi-remote .secondary-controls .ibut{background:#222324;width:33%;padding:0;line-height:70px;font-size:1.5em;text-align:center;float:left;margin-bottom:12px}@media (min-width: 57em){.kodi-remote .alt-controls .row .ibut,.kodi-remote .secondary-controls .ibut{line-height:70px}}.kodi-remote .secondary-controls{height:auto}.kodi-remote .alt-controls .row{margin:8px 0}.kodi-remote .playing-area{height:150px;position:relative;font-size:15px;color:#838b8d}.kodi-remote .playing-area .not-playing,.kodi-remote .playing-area .playing{padding:10px 20px 35px;text-align:right}.kodi-remote .playing-area .playing{background:#3b3f40 0 0 no-repeat;background-size:cover;display:none}.kodi-remote .playing-area:after{content:"";position:absolute;left:0;bottom:0;right:0;height:24px;z-index:5}.section-remote .player .now-playing .remote-toggle,.section-remote .player .now-playing .thumb{height:75px;width:75px}.section-remote .player .controls-secondary,.section-remote .player .controls-secondary .control,.section-remote .player .controls-primary,.section-remote .player .controls-primary .control,.section-remote .player .now-playing,.section-remote .player .now-playing .thumb{height:75px}.section-remote #player-wrapper{height:250px}.section-remote .player .controls-secondary,.section-remote .player .controls-primary{display:block;margin-bottom:12px}.section-remote .player .now-playing{margin:10px 0 0 0}.section-remote .player .playing-info{margin-left:75px}@media (min-width: 57em){.section-remote #player-wrapper{height:70px}.section-remote .player .now-playing,.section-remote .player .controls-secondary,.section-remote .player .controls-primary{margin:0}.section-remote .player .now-playing,.section-remote .player .now-playing .control,.section-remote .player .controls-secondary,.section-remote .player .controls-secondary .control,.section-remote .player .controls-primary,.section-remote .player .controls-primary .control{height:70px}.section-remote .player .now-playing,.section-remote .player .now-playing .thumb,.section-remote .player .controls-secondary,.section-remote .player .controls-secondary .thumb,.section-remote .player .controls-primary,.section-remote .player .controls-primary .thumb{height:70px}.section-remote .player .now-playing .thumb,.section-remote .player .controls-secondary .thumb,.section-remote .player .controls-primary .thumb{width:70px}.section-remote .player .now-playing .playing-info,.section-remote .player .controls-secondary .playing-info,.section-remote .player .controls-primary .playing-info{margin-left:70px}.section-remote .player .now-playing{margin-left:300px;margin-right:300px}} #modal-window.style-system .modal-dialog{width:300px;min-width:300px}#search-region{background:rgba(255,255,255,0.9);height:50px;margin-left:0}@media (min-width: 57em){#search-region{display:block}}#search-region:after{content:"";height:3px;background:#12b2e7;opacity:0.3;bottom:0;left:0;position:absolute;width:0%}#search-region.pre-search:after{display:block;width:100%;-webkit-transition:2s all linear;-o-transition:2s all linear;transition:2s all linear}#search{background:none;border:none;height:50px;width:100%;outline:none;padding:0 0.5em 0 50px;color:rgba(0,0,0,0.4)}@media (min-width: 57em){#search{width:200px}} diff --git a/configure.ac b/configure.ac index 028915158e..078cfee281 100644 --- a/configure.ac +++ b/configure.ac @@ -2198,6 +2198,7 @@ OUTPUT_FILES="Makefile \ lib/addons/library.kodi.peripheral/Makefile \ lib/addons/library.xbmc.pvr/Makefile \ lib/addons/library.kodi.inputstream/Makefile \ + tools/Linux/kodi.desktop \ tools/Linux/kodi.sh \ tools/Linux/kodi-standalone.sh \ tools/Linux/kodi-xsession.desktop \ diff --git a/project/cmake/CMakeLists.txt b/project/cmake/CMakeLists.txt index 504e4c046b..cebc751de6 100644 --- a/project/cmake/CMakeLists.txt +++ b/project/cmake/CMakeLists.txt @@ -28,6 +28,7 @@ include(scripts/common/AddOptions.cmake) include(scripts/common/ArchSetup.cmake) include(scripts/common/Macros.cmake) include(scripts/common/ProjectMacros.cmake) +core_find_versions() include(scripts/${CORE_SYSTEM_NAME}/PathSetup.cmake) include(ExternalProject) @@ -75,7 +76,6 @@ else() endif() core_find_git_rev(APP_SCMID FULL) -core_find_versions() # Dynamically loaded libraries built with the project add_custom_target(${APP_NAME_LC}-libraries) @@ -332,7 +332,7 @@ unset(_MAIN_LIBRARIES) if(WIN32) set_target_properties(${APP_NAME_LC} PROPERTIES WIN32_EXECUTABLE ON) set_property(DIRECTORY PROPERTY VS_STARTUP_PROJECT ${APP_NAME_LC}) - target_sources(kodi PRIVATE ${CORE_SOURCE_DIR}/xbmc/platform/win32/app.manifest) + target_sources(${APP_NAME_LC} PRIVATE ${CORE_SOURCE_DIR}/xbmc/platform/win32/app.manifest) elseif(CORE_SYSTEM_NAME STREQUAL android) # Nothing else() diff --git a/project/cmake/scripts/android/PathSetup.cmake b/project/cmake/scripts/android/PathSetup.cmake index 69de88318e..1274fcfa76 100644 --- a/project/cmake/scripts/android/PathSetup.cmake +++ b/project/cmake/scripts/android/PathSetup.cmake @@ -29,5 +29,5 @@ list(APPEND final_message "Includedir: ${includedir}") list(APPEND final_message "Datarootdir: ${datarootdir}") list(APPEND final_message "Datadir: ${datadir}") -set(PATH_DEFINES -DBIN_INSTALL_PATH=\"${libdir}/kodi\" - -DINSTALL_PATH=\"${datarootdir}/kodi\") +set(PATH_DEFINES -DBIN_INSTALL_PATH=\"${libdir}/${APP_NAME_LC}\" + -DINSTALL_PATH=\"${datarootdir}/${APP_NAME_LC}\") diff --git a/project/cmake/scripts/linux/ExtraTargets.cmake b/project/cmake/scripts/linux/ExtraTargets.cmake index 6c770846a9..0b350b3f65 100644 --- a/project/cmake/scripts/linux/ExtraTargets.cmake +++ b/project/cmake/scripts/linux/ExtraTargets.cmake @@ -7,6 +7,9 @@ if(ENABLE_X11 AND X_FOUND AND XRANDR_FOUND) endif() # WiiRemote -if(ENABLE_EVENTCLIENTS AND BLUETOOTH_FOUND AND CWIID_FOUND) - add_subdirectory(${CORE_SOURCE_DIR}/tools/EventClients/Clients/WiiRemote build/WiiRemote) +if(ENABLE_EVENTCLIENTS AND BLUETOOTH_FOUND) + find_package(CWiid QUIET) + if(CWIID_FOUND) + add_subdirectory(${CORE_SOURCE_DIR}/tools/EventClients/Clients/WiiRemote build/WiiRemote) + endif() endif() diff --git a/project/cmake/scripts/linux/Install.cmake b/project/cmake/scripts/linux/Install.cmake index 4372a750bb..038110d146 100644 --- a/project/cmake/scripts/linux/Install.cmake +++ b/project/cmake/scripts/linux/Install.cmake @@ -41,6 +41,10 @@ configure_file(${PROJECT_SOURCE_DIR}/KodiConfig.cmake.in # Configure xsession entry configure_file(${CORE_SOURCE_DIR}/tools/Linux/kodi-xsession.desktop.in + ${CORE_BUILD_DIR}/${APP_NAME_LC}-xsession.desktop @ONLY) + +# Configure desktop entry +configure_file(${CORE_SOURCE_DIR}/tools/Linux/kodi.desktop.in ${CORE_BUILD_DIR}/${APP_NAME_LC}.desktop @ONLY) # Install app @@ -78,12 +82,13 @@ foreach(file ${install_data}) endforeach() # Install xsession entry -install(FILES ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/${APP_NAME_LC}.desktop +install(FILES ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/${APP_NAME_LC}-xsession.desktop + RENAME ${APP_NAME_LC}.desktop DESTINATION ${datarootdir}/xsessions COMPONENT kodi) # Install desktop entry -install(FILES ${CORE_SOURCE_DIR}/tools/Linux/kodi.desktop +install(FILES ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/${APP_NAME_LC}.desktop DESTINATION ${datarootdir}/applications COMPONENT kodi) @@ -264,7 +269,7 @@ if(ENABLE_EVENTCLIENTS) DESTINATION ${bindir} COMPONENT kodi-eventclients-ps3) - if(BLUETOOTH_FOUND) + if(BLUETOOTH_FOUND AND CWIID_FOUND) # Install kodi-eventclients-wiiremote install(PROGRAMS ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/WiiRemote/${APP_NAME_LC}-wiiremote DESTINATION ${bindir} diff --git a/project/cmake/scripts/linux/PathSetup.cmake b/project/cmake/scripts/linux/PathSetup.cmake index 5532c2d962..f9f78ba622 100644 --- a/project/cmake/scripts/linux/PathSetup.cmake +++ b/project/cmake/scripts/linux/PathSetup.cmake @@ -36,5 +36,5 @@ list(APPEND final_message "Datarootdir: ${datarootdir}") list(APPEND final_message "Datadir: ${datadir}") list(APPEND final_message "Docdir: ${docdir}") -set(PATH_DEFINES -DBIN_INSTALL_PATH=\"${libdir}/kodi\" - -DINSTALL_PATH=\"${datarootdir}/kodi\") +set(PATH_DEFINES -DBIN_INSTALL_PATH=\"${libdir}/${APP_NAME_LC}\" + -DINSTALL_PATH=\"${datarootdir}/${APP_NAME_LC}\") diff --git a/project/cmake/scripts/osx/PathSetup.cmake b/project/cmake/scripts/osx/PathSetup.cmake index 071dfd45ea..ddb417697e 100644 --- a/project/cmake/scripts/osx/PathSetup.cmake +++ b/project/cmake/scripts/osx/PathSetup.cmake @@ -28,5 +28,5 @@ list(APPEND final_message "Includedir: ${includedir}") list(APPEND final_message "Datarootdir: ${datarootdir}") list(APPEND final_message "Datadir: ${datadir}") -set(PATH_DEFINES -DBIN_INSTALL_PATH=\"${libdir}/kodi\" - -DINSTALL_PATH=\"${datarootdir}/kodi\") +set(PATH_DEFINES -DBIN_INSTALL_PATH=\"${libdir}/${APP_NAME_LC}\" + -DINSTALL_PATH=\"${datarootdir}/${APP_NAME_LC}\") diff --git a/project/cmake/scripts/windows/PathSetup.cmake b/project/cmake/scripts/windows/PathSetup.cmake index 8550616cd7..f6defdeae7 100644 --- a/project/cmake/scripts/windows/PathSetup.cmake +++ b/project/cmake/scripts/windows/PathSetup.cmake @@ -30,5 +30,5 @@ list(APPEND final_message "Includedir: ${includedir}") list(APPEND final_message "Datarootdir: ${datarootdir}") list(APPEND final_message "Datadir: ${datadir}") -set(PATH_DEFINES -DBIN_INSTALL_PATH=\"${libdir}/kodi\" - -DINSTALL_PATH=\"${datarootdir}/kodi\") +set(PATH_DEFINES -DBIN_INSTALL_PATH=\"${libdir}/${APP_NAME_LC}\" + -DINSTALL_PATH=\"${datarootdir}/${APP_NAME_LC}\") diff --git a/system/settings/settings.xml b/system/settings/settings.xml index 496f30b95d..6a619aef67 100644 --- a/system/settings/settings.xml +++ b/system/settings/settings.xml @@ -2780,7 +2780,7 @@ </setting> <setting id="general.addonnotifications" type="boolean" label="36609" help="36612"> <level>0</level> - <default>true</default> + <default>false</default> <control type="toggle" /> <dependencies> <dependency type="enable" setting="general.addonupdates">0</dependency> diff --git a/tools/Linux/kodi.desktop b/tools/Linux/kodi.desktop.in index f45ba157f1..3cb11e59e4 100644 --- a/tools/Linux/kodi.desktop +++ b/tools/Linux/kodi.desktop.in @@ -1,10 +1,10 @@ [Desktop Entry] Version=1.0 -Name=Kodi +Name=@APP_NAME@ GenericName=Media Center Comment=Manage and view your media -Exec=kodi -Icon=kodi +Exec=@APP_NAME_LC@ +Icon=@APP_NAME_LC@ Terminal=false Type=Application Categories=AudioVideo;Video;Player;TV; @@ -13,8 +13,8 @@ Actions=Fullscreen;Standalone; [Desktop Action Fullscreen] Name=Open in fullscreen -Exec=kodi -fs +Exec=@APP_NAME_LC@ -fs [Desktop Action Standalone] Name=Open in standalone mode -Exec=kodi --standalone +Exec=@APP_NAME_LC@ --standalone diff --git a/tools/Linux/kodi.sh.in b/tools/Linux/kodi.sh.in index 9fc75dd830..0a00a32034 100644 --- a/tools/Linux/kodi.sh.in +++ b/tools/Linux/kodi.sh.in @@ -32,6 +32,9 @@ USERDATA_DIR="${HOME}/.${bin_name}" # Workaround for high CPU load with nvidia GFX export __GL_YIELD=USLEEP +# Fix wasting RAM due to fragmentation +export MALLOC_MMAP_THRESHOLD_=131072 + # Check for some options used by this script while [ "$#" -gt "0" ] diff --git a/xbmc/addons/AddonDatabase.cpp b/xbmc/addons/AddonDatabase.cpp index d6c4e85afc..f56fbc2ebc 100644 --- a/xbmc/addons/AddonDatabase.cpp +++ b/xbmc/addons/AddonDatabase.cpp @@ -539,7 +539,6 @@ bool CAddonDatabase::GetAvailableVersions(const std::string& addonId, "WHERE " "repo.checksum IS NOT NULL AND repo.checksum != '' " "AND EXISTS (SELECT * FROM installed WHERE installed.addonID=repoID AND installed.enabled=1) " - "AND NOT EXISTS (SELECT * FROM broken WHERE broken.addonID=addons.addonID) " "AND addons.addonID='%s'", addonId.c_str()); m_pDS->query(sql.c_str()); diff --git a/xbmc/addons/AddonInstaller.cpp b/xbmc/addons/AddonInstaller.cpp index 7782890378..b39c370dc3 100644 --- a/xbmc/addons/AddonInstaller.cpp +++ b/xbmc/addons/AddonInstaller.cpp @@ -227,14 +227,15 @@ void CAddonInstaller::Install(const std::string& addonId, const AddonVersion& ve } bool CAddonInstaller::DoInstall(const AddonPtr &addon, const RepositoryPtr& repo, - const std::string &hash /* = "" */, bool background /* = true */, bool modal /* = false */) + const std::string &hash /* = "" */, bool background /* = true */, bool modal /* = false */, + bool autoUpdate /* = false*/) { // check whether we already have the addon installing CSingleLock lock(m_critSection); if (m_downloadJobs.find(addon->ID()) != m_downloadJobs.end()) return false; - CAddonInstallJob* installJob = new CAddonInstallJob(addon, repo, hash); + CAddonInstallJob* installJob = new CAddonInstallJob(addon, repo, hash, autoUpdate); if (background) { // Workaround: because CAddonInstallJob is blocking waiting for other jobs, it needs to be run @@ -430,9 +431,18 @@ void CAddonInstaller::InstallUpdates() for (const auto& addon : updates) { if (!CAddonMgr::GetInstance().IsBlacklisted(addon->ID())) - CAddonInstaller::GetInstance().InstallOrUpdate(addon->ID()); + { + AddonPtr toInstall; + RepositoryPtr repo; + std::string hash; + if (CAddonInstallJob::GetAddonWithHash(addon->ID(), repo, toInstall, hash)) + DoInstall(toInstall, repo, hash, true, false, true); + } } +} +void CAddonInstaller::InstallUpdatesAndWait() +{ CSingleLock lock(m_critSection); if (!m_downloadJobs.empty()) { @@ -463,13 +473,15 @@ int64_t CAddonInstaller::EnumeratePackageFolder(std::map<std::string,CFileItemLi return size; } -CAddonInstallJob::CAddonInstallJob(const AddonPtr &addon, const AddonPtr &repo, const std::string &hash /* = "" */) +CAddonInstallJob::CAddonInstallJob(const AddonPtr &addon, const AddonPtr &repo, + const std::string &hash, bool isAutoUpdate) : m_addon(addon), m_repo(repo), - m_hash(hash) + m_hash(hash), + m_isAutoUpdate(isAutoUpdate) { AddonPtr dummy; - m_update = CAddonMgr::GetInstance().GetAddon(addon->ID(), dummy, ADDON_UNKNOWN, false); + m_isUpdate = CAddonMgr::GetInstance().GetAddon(addon->ID(), dummy, ADDON_UNKNOWN, false); } bool CAddonInstallJob::GetAddonWithHash(const std::string& addonID, RepositoryPtr& repo, @@ -604,19 +616,27 @@ bool CAddonInstallJob::DoWork() g_localizeStrings.LoadAddonStrings(URIUtils::AddFileToFolder(m_addon->Path(), "resources/language/"), CSettings::GetInstance().GetString(CSettings::SETTING_LOCALE_LANGUAGE), m_addon->ID()); - ADDON::OnPostInstall(m_addon, m_update, IsModal()); + ADDON::OnPostInstall(m_addon, m_isUpdate, IsModal()); { CAddonDatabase database; database.Open(); database.SetOrigin(m_addon->ID(), m_repo ? m_repo->ID() : ""); - if (m_update) + if (m_isUpdate) database.SetLastUpdated(m_addon->ID(), CDateTime::GetCurrentDateTime()); } + bool notify = (CSettings::GetInstance().GetBool(CSettings::SETTING_ADDONS_NOTIFICATIONS) + || !m_isAutoUpdate) && !IsModal(); CEventLog::GetInstance().Add( - EventPtr(new CAddonManagementEvent(m_addon, m_update ? 24065 : 24064)), - !IsModal() && CSettings::GetInstance().GetBool(CSettings::SETTING_ADDONS_NOTIFICATIONS), false); + EventPtr(new CAddonManagementEvent(m_addon, m_isUpdate ? 24065 : 24084)), notify, false); + + if (m_isAutoUpdate && !m_addon->Broken().empty()) + { + CLog::Log(LOGDEBUG, "CAddonInstallJob[%s]: auto-disabling due to being marked as broken", m_addon->ID().c_str()); + CAddonMgr::GetInstance().DisableAddon(m_addon->ID()); + CEventLog::GetInstance().Add(EventPtr(new CAddonManagementEvent(m_addon, 24094)), true, false); + } // and we're done! MarkFinished(); @@ -724,7 +744,7 @@ bool CAddonInstallJob::Install(const std::string &installFrom, const AddonPtr& r return false; } - CAddonInstallJob dependencyJob(addon, repoForDep, hash); + CAddonInstallJob dependencyJob(addon, repoForDep, hash, false); // pass our progress indicators to the temporary job and don't allow it to // show progress or information updates (no progress, title or text changes) diff --git a/xbmc/addons/AddonInstaller.h b/xbmc/addons/AddonInstaller.h index 252dc7ccf1..6fd60435e0 100644 --- a/xbmc/addons/AddonInstaller.h +++ b/xbmc/addons/AddonInstaller.h @@ -95,6 +95,7 @@ public: bool HasJob(const std::string& ID) const; /*! Install update and block until all updates have installed. */ + void InstallUpdatesAndWait(); void InstallUpdates(); void OnJobComplete(unsigned int jobID, bool success, CJob* job); @@ -129,7 +130,7 @@ private: \return true on successful install, false on failure. */ bool DoInstall(const ADDON::AddonPtr &addon, const ADDON::RepositoryPtr &repo, - const std::string &hash = "", bool background = true, bool modal = false); + const std::string &hash = "", bool background = true, bool modal = false, bool autoUpdate = false); /*! \brief Check whether dependencies of an addon exist or are installable. Iterates through the addon's dependencies, checking they're installed or installable. @@ -153,7 +154,8 @@ private: class CAddonInstallJob : public CFileOperationJob { public: - CAddonInstallJob(const ADDON::AddonPtr &addon, const ADDON::AddonPtr &repo, const std::string &hash = ""); + CAddonInstallJob(const ADDON::AddonPtr& addon, const ADDON::AddonPtr& repo, + const std::string& hash, bool isAutoUpdate); virtual bool DoWork(); @@ -185,7 +187,8 @@ private: ADDON::AddonPtr m_addon; ADDON::AddonPtr m_repo; std::string m_hash; - bool m_update; + bool m_isUpdate; + bool m_isAutoUpdate; }; class CAddonUnInstallJob : public CFileOperationJob diff --git a/xbmc/addons/AddonManager.cpp b/xbmc/addons/AddonManager.cpp index 6721f07450..0f0da4f917 100644 --- a/xbmc/addons/AddonManager.cpp +++ b/xbmc/addons/AddonManager.cpp @@ -842,19 +842,7 @@ bool CAddonMgr::IsAddonInstalled(const std::string& ID) bool CAddonMgr::CanAddonBeInstalled(const AddonPtr& addon) { - if (addon == NULL) - return false; - - CSingleLock lock(m_critSection); - // can't install already installed addon - if (IsAddonInstalled(addon->ID())) - return false; - - // can't install broken addons - if (!addon->Broken().empty()) - return false; - - return true; + return addon != nullptr &&!IsAddonInstalled(addon->ID()); } bool CAddonMgr::CanUninstall(const AddonPtr& addon) diff --git a/xbmc/addons/AddonSystemSettings.cpp b/xbmc/addons/AddonSystemSettings.cpp index 620fcd7184..c0a421e9f4 100644 --- a/xbmc/addons/AddonSystemSettings.cpp +++ b/xbmc/addons/AddonSystemSettings.cpp @@ -147,7 +147,7 @@ std::vector<std::string> CAddonSystemSettings::MigrateAddons(std::function<void( CRepositoryUpdater::GetInstance().Await(); CLog::Log(LOGINFO, "ADDON: waiting for add-ons to update..."); - CAddonInstaller::GetInstance().InstallUpdates(); + CAddonInstaller::GetInstance().InstallUpdatesAndWait(); } auto incompatible = getIncompatible(); diff --git a/xbmc/addons/Repository.cpp b/xbmc/addons/Repository.cpp index e64a3665c1..ce1e8ab7ed 100644 --- a/xbmc/addons/Repository.cpp +++ b/xbmc/addons/Repository.cpp @@ -257,48 +257,5 @@ bool CRepositoryUpdateJob::DoWork() } database.UpdateRepositoryContent(m_repo->ID(), m_repo->Version(), newChecksum, addons); - - //Notify about broken status changes - for (const auto& addon : addons) - { - AddonPtr localAddon; - if (!CAddonMgr::GetInstance().GetAddon(addon->ID(), localAddon)) - continue; - - if (localAddon && localAddon->Version() > addon->Version()) - //We have a newer version locally - continue; - - AddonPtr oldAddon; - database.GetAddon(addon->ID(), oldAddon); - - if (database.GetAddonVersion(addon->ID()).first > addon->Version()) - //Newer version in db (ie. in a different repo) - continue; - - std::string broken = addon->Broken(); - bool isBroken = !addon->Broken().empty(); - bool isBrokenInDb = oldAddon && !oldAddon->Broken().empty(); - if (isBroken && !isBrokenInDb) - { - //newly broken - if (HELPERS::ShowYesNoDialogLines(CVariant{addon->Name()}, CVariant{24096}, CVariant{24097}, CVariant{""}) - == DialogResponse::YES) - { - CAddonMgr::GetInstance().DisableAddon(addon->ID()); - } - - CLog::Log(LOGDEBUG, "CRepositoryUpdateJob[%s] addon '%s' marked broken. reason: \"%s\"", - m_repo->ID().c_str(), addon->ID().c_str(), broken.c_str()); - - CEventLog::GetInstance().Add(EventPtr(new CAddonManagementEvent(addon, 24096))); - } - else if (!isBroken && isBrokenInDb) - { - //Unbroken - CLog::Log(LOGDEBUG, "CRepositoryUpdateJob[%s] addon '%s' unbroken", - m_repo->ID().c_str(), addon->ID().c_str()); - } - } return true; } diff --git a/xbmc/addons/RepositoryUpdater.cpp b/xbmc/addons/RepositoryUpdater.cpp index 357f4f8af0..fcf127c529 100644 --- a/xbmc/addons/RepositoryUpdater.cpp +++ b/xbmc/addons/RepositoryUpdater.cpp @@ -86,11 +86,7 @@ void CRepositoryUpdater::OnJobComplete(unsigned int jobID, bool success, CJob* j if (CSettings::GetInstance().GetInt(CSettings::SETTING_ADDONS_AUTOUPDATES) == AUTO_UPDATES_ON) { - for (const auto& addon : updates) - { - if (!CAddonMgr::GetInstance().IsBlacklisted(addon->ID())) - CAddonInstaller::GetInstance().InstallOrUpdate(addon->ID()); - } + CAddonInstaller::GetInstance().InstallUpdates(); } ScheduleUpdate(); diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkPULSE.cpp b/xbmc/cores/AudioEngine/Sinks/AESinkPULSE.cpp index 50d729bd42..31d003967c 100644 --- a/xbmc/cores/AudioEngine/Sinks/AESinkPULSE.cpp +++ b/xbmc/cores/AudioEngine/Sinks/AESinkPULSE.cpp @@ -795,8 +795,11 @@ void CAESinkPULSE::Deinitialize() if (m_Stream) Drain(); - if (m_MainLoop) - pa_threaded_mainloop_stop(m_MainLoop); + { + CSingleExit exit(m_sec); + if (m_MainLoop) + pa_threaded_mainloop_stop(m_MainLoop); + } if (m_Stream) { diff --git a/xbmc/cores/VideoPlayer/DVDMessage.h b/xbmc/cores/VideoPlayer/DVDMessage.h index 88988ef832..bb284fe4c6 100644 --- a/xbmc/cores/VideoPlayer/DVDMessage.h +++ b/xbmc/cores/VideoPlayer/DVDMessage.h @@ -87,10 +87,6 @@ public: VIDEO_SET_ASPECT, // set aspectratio of video VIDEO_DRAIN, // wait for decoder to output last frame - // audio related messages - - AUDIO_SILENCE, - // subtitle related messages SUBTITLE_CLUTCHANGE, SUBTITLE_ADDFILE @@ -221,7 +217,6 @@ public: int time = 0; bool relative = false; bool backward = false; - bool flush = true; bool accurate = true; bool sync = true; bool restore = true; @@ -234,7 +229,6 @@ public: int GetTime() { return m_mode.time; } bool GetRelative() { return m_mode.relative; } bool GetBackward() { return m_mode.backward; } - bool GetFlush() { return m_mode.flush; } bool GetAccurate() { return m_mode.accurate; } bool GetRestore() { return m_mode.restore; } bool GetTrickPlay() { return m_mode.trickplay; } diff --git a/xbmc/cores/VideoPlayer/Edl.cpp b/xbmc/cores/VideoPlayer/Edl.cpp index 0292047347..e47553f471 100644 --- a/xbmc/cores/VideoPlayer/Edl.cpp +++ b/xbmc/cores/VideoPlayer/Edl.cpp @@ -46,6 +46,7 @@ void CEdl::Clear() m_vecCuts.clear(); m_vecSceneMarkers.clear(); m_iTotalCutTime = 0; + m_lastQueryTime = 0; } bool CEdl::ReadEditDecisionLists(const std::string& strMovie, const float fFrameRate, const int iHeight) @@ -822,8 +823,10 @@ std::string CEdl::GetInfo() const return strInfo.empty() ? "-" : strInfo; } -bool CEdl::InCut(const int iSeek, Cut *pCut) const +bool CEdl::InCut(const int iSeek, Cut *pCut) { + m_lastQueryTime = iSeek; + for (int i = 0; i < (int)m_vecCuts.size(); i++) { if (iSeek < m_vecCuts[i].start) // Early exit if not even up to the cut start time. @@ -840,6 +843,11 @@ bool CEdl::InCut(const int iSeek, Cut *pCut) const return false; } +int CEdl::GetLastQueryTime() const +{ + return m_lastQueryTime; +} + bool CEdl::GetNearestCut(bool bPlus, const int iSeek, Cut *pCut) const { if (bPlus) @@ -885,7 +893,7 @@ bool CEdl::GetNearestCut(bool bPlus, const int iSeek, Cut *pCut) const } } -bool CEdl::GetNextSceneMarker(bool bPlus, const int iClock, int *iSceneMarker) const +bool CEdl::GetNextSceneMarker(bool bPlus, const int iClock, int *iSceneMarker) { if (!HasSceneMarker()) return false; diff --git a/xbmc/cores/VideoPlayer/Edl.h b/xbmc/cores/VideoPlayer/Edl.h index c19b69fa5c..21c99088ea 100644 --- a/xbmc/cores/VideoPlayer/Edl.h +++ b/xbmc/cores/VideoPlayer/Edl.h @@ -53,18 +53,19 @@ public: int RemoveCutTime(int iSeek) const; int RestoreCutTime(int iClock) const; - bool InCut(int iSeek, Cut *pCut = NULL) const; + bool InCut(int iSeek, Cut *pCut = NULL); bool GetNearestCut(bool bPlus, const int iSeek, Cut *pCut) const; + int GetLastQueryTime() const; - bool GetNextSceneMarker(bool bPlus, const int iClock, int *iSceneMarker) const; + bool GetNextSceneMarker(bool bPlus, const int iClock, int *iSceneMarker); static std::string MillisecondsToTimeString(const int iMilliseconds); -protected: private: int m_iTotalCutTime; // ms std::vector<Cut> m_vecCuts; std::vector<int> m_vecSceneMarkers; + int m_lastQueryTime; bool ReadEdl(const std::string& strMovie, const float fFramesPerSecond); bool ReadComskip(const std::string& strMovie, const float fFramesPerSecond); diff --git a/xbmc/cores/VideoPlayer/VideoPlayer.cpp b/xbmc/cores/VideoPlayer/VideoPlayer.cpp index bd11cd8a76..f7459d0a76 100644 --- a/xbmc/cores/VideoPlayer/VideoPlayer.cpp +++ b/xbmc/cores/VideoPlayer/VideoPlayer.cpp @@ -633,7 +633,6 @@ CVideoPlayer::CVideoPlayer(IPlayerCallback& callback) m_dvd.Clear(); m_State.Clear(); - m_EdlAutoSkipMarkers.Clear(); m_UpdateApplication = 0; m_bAbortRequest = false; @@ -745,7 +744,6 @@ bool CVideoPlayer::CloseFile(bool reopen) StopThread(); m_Edl.Clear(); - m_EdlAutoSkipMarkers.Clear(); m_HasVideo = false; m_HasAudio = false; @@ -1272,7 +1270,6 @@ void CVideoPlayer::Process() // look for any EDL files m_Edl.Clear(); - m_EdlAutoSkipMarkers.Clear(); if (m_CurrentVideo.id >= 0 && m_CurrentVideo.hint.fpsrate > 0 && m_CurrentVideo.hint.fpsscale > 0) { float fFramesPerSecond = (float)m_CurrentVideo.hint.fpsrate / (float)m_CurrentVideo.hint.fpsscale; @@ -1286,7 +1283,7 @@ void CVideoPlayer::Process() */ CEdl::Cut cut; int starttime = 0; - if(m_PlayerOptions.starttime > 0 || m_PlayerOptions.startpercent > 0) + if (m_PlayerOptions.starttime > 0 || m_PlayerOptions.startpercent > 0) { if (m_PlayerOptions.startpercent > 0 && m_pDemuxer) { @@ -1299,7 +1296,7 @@ void CVideoPlayer::Process() } CLog::Log(LOGDEBUG, "%s - Start position set to last stopped position: %d", __FUNCTION__, starttime); } - else if(m_Edl.InCut(0, &cut)) + else if (m_Edl.InCut(starttime, &cut)) { if (cut.action == CEdl::CUT) { @@ -1316,20 +1313,13 @@ void CVideoPlayer::Process() std::string strTimeString = StringUtils::SecondsToTimeString(cut.end / 1000, TIME_FORMAT_MM_SS); CGUIDialogKaiToast::QueueNotification(g_localizeStrings.Get(25011), strTimeString); - - /* - * Setup auto skip markers as if the commercial break had been skipped using standard - * detection. - */ - m_EdlAutoSkipMarkers.commbreak_start = cut.start; - m_EdlAutoSkipMarkers.commbreak_end = cut.end; - m_EdlAutoSkipMarkers.seek_to_start = true; } } - if(starttime > 0) + + if (starttime > 0) { double startpts = DVD_NOPTS_VALUE; - if(m_pDemuxer) + if (m_pDemuxer) { if (m_pDemuxer->SeekTime(starttime, false, &startpts)) CLog::Log(LOGDEBUG, "%s - starting demuxer from: %d", __FUNCTION__, starttime); @@ -1337,13 +1327,15 @@ void CVideoPlayer::Process() CLog::Log(LOGDEBUG, "%s - failed to start demuxing from: %d", __FUNCTION__, starttime); } - if(m_pSubtitleDemuxer) + if (m_pSubtitleDemuxer) { if(m_pSubtitleDemuxer->SeekTime(starttime, false, &startpts)) CLog::Log(LOGDEBUG, "%s - starting subtitle demuxer from: %d", __FUNCTION__, starttime); else CLog::Log(LOGDEBUG, "%s - failed to start subtitle demuxing from: %d", __FUNCTION__, starttime); } + + m_clock.Discontinuity(DVD_MSEC_TO_TIME(starttime)); } // make sure application know our info @@ -1370,7 +1362,6 @@ void CVideoPlayer::Process() CDVDMsgPlayerSeek::CMode mode; mode.time = (int)GetTime(); mode.backward = true; - mode.flush = true; mode.accurate = true; mode.sync = true; m_messenger.Put(new CDVDMsgPlayerSeek(mode)); @@ -1385,6 +1376,9 @@ void CVideoPlayer::Process() continue; } + // check if in a cut or commercial break that should be automatically skipped + CheckAutoSceneSkip(); + // handle messages send to this thread, like seek or demuxer reset requests HandleMessages(); @@ -1625,9 +1619,6 @@ void CVideoPlayer::Process() // process the packet ProcessPacket(pStream, pPacket); - // check if in a cut or commercial break that should be automatically skipped - CheckAutoSceneSkip(); - // update the player info for streams if (m_player_status_timer.IsTimePast()) { @@ -1725,24 +1716,13 @@ void CVideoPlayer::ProcessAudioData(CDemuxStream* pStream, DemuxPacket* pPacket) /* * If CheckSceneSkip() returns true then demux point is inside an EDL cut and the packets are dropped. - * If not inside a hard cut, but the demux point has reached an EDL mute section then trigger the - * AUDIO_SILENCE state. The AUDIO_SILENCE state is reverted as soon as the demux point is outside - * of any EDL section while EDL mute is still active. */ CEdl::Cut cut; if (CheckSceneSkip(m_CurrentAudio)) drop = true; - else if (m_Edl.InCut(DVD_TIME_TO_MSEC(m_CurrentAudio.dts + m_offset_pts), &cut) && cut.action == CEdl::MUTE // Inside EDL mute - && !m_EdlAutoSkipMarkers.mute) // Mute not already triggered - { - m_VideoPlayerAudio->SendMessage(new CDVDMsgBool(CDVDMsg::AUDIO_SILENCE, true)); - m_EdlAutoSkipMarkers.mute = true; - } - else if (!m_Edl.InCut(DVD_TIME_TO_MSEC(m_CurrentAudio.dts + m_offset_pts), &cut) // Outside of any EDL - && m_EdlAutoSkipMarkers.mute) // But the mute hasn't been removed yet + else if (m_Edl.InCut(DVD_TIME_TO_MSEC(m_CurrentAudio.dts + m_offset_pts), &cut) && cut.action == CEdl::MUTE) { - m_VideoPlayerAudio->SendMessage(new CDVDMsgBool(CDVDMsg::AUDIO_SILENCE, false)); - m_EdlAutoSkipMarkers.mute = false; + drop = true; } m_VideoPlayerAudio->SendMessage(new CDVDMsgDemuxerPacket(pPacket, drop)); @@ -1949,7 +1929,7 @@ void CVideoPlayer::HandlePlaySpeed() { CLog::Log(LOGDEBUG, "Stream stalled, start buffering. Audio: %d - Video: %d", m_VideoPlayerAudio->GetLevel(),m_VideoPlayerVideo->GetLevel()); - FlushBuffers(false); + FlushBuffers(DVD_NOPTS_VALUE, true, true); } } else @@ -1965,11 +1945,10 @@ void CVideoPlayer::HandlePlaySpeed() m_VideoPlayerAudio->GetLevel() == 0) { CLog::Log(LOGDEBUG,"CVideoPlayer::HandlePlaySpeed - audio stream stalled, triggering re-sync"); - FlushBuffers(false); + FlushBuffers(DVD_NOPTS_VALUE, true, true); CDVDMsgPlayerSeek::CMode mode; mode.time = (int)GetTime(); mode.backward = false; - mode.flush = true; mode.accurate = true; mode.sync = true; m_messenger.Put(new CDVDMsgPlayerSeek(mode)); @@ -2074,6 +2053,7 @@ void CVideoPlayer::HandlePlaySpeed() m_VideoPlayerAudio->SendMessage(new CDVDMsgDouble(CDVDMsg::GENERAL_RESYNC, clock), 1); m_VideoPlayerVideo->SendMessage(new CDVDMsgDouble(CDVDMsg::GENERAL_RESYNC, clock), 1); SetCaching(CACHESTATE_DONE); + UpdatePlayState(0); m_syncTimer.Set(3000); } @@ -2087,7 +2067,7 @@ void CVideoPlayer::HandlePlaySpeed() m_VideoPlayerVideo->IsStalled()) { CLog::Log(LOGWARNING, "VideoPlayer::Sync - stream player video does not start, flushing buffers"); - FlushBuffers(false); + FlushBuffers(DVD_NOPTS_VALUE, true, true); } } } @@ -2162,7 +2142,6 @@ void CVideoPlayer::HandlePlaySpeed() CDVDMsgPlayerSeek::CMode mode; mode.time = iTime; mode.backward = (GetPlaySpeed() < 0); - mode.flush = true; mode.accurate = false; mode.restore = false; mode.trickplay = true; @@ -2345,86 +2324,71 @@ void CVideoPlayer::CheckAutoSceneSkip() if (!m_Edl.HasCut()) return; - // Check that there is an audio and video stream. - if(m_CurrentAudio.id < 0 || - m_CurrentVideo.id < 0) + if((m_CurrentAudio.id < 0 || m_CurrentAudio.syncState != IDVDStreamPlayer::SYNC_INSYNC) || + (m_CurrentVideo.id < 0 || m_CurrentVideo.syncState != IDVDStreamPlayer::SYNC_INSYNC)) return; - // If there is a startpts defined for either the audio or video stream then VideoPlayer is still // still decoding frames to get to the previously requested seek point. - if (m_CurrentAudio.inited == false || m_CurrentVideo.inited == false) return; - if (m_CurrentAudio.dts == DVD_NOPTS_VALUE || - m_CurrentVideo.dts == DVD_NOPTS_VALUE) - return; - - const int64_t clock = m_omxplayer_mode ? GetTime() : DVD_TIME_TO_MSEC(std::min(m_CurrentAudio.dts, m_CurrentVideo.dts) + m_offset_pts); + const int64_t clock = GetTime(); + int lastPos = m_Edl.GetLastQueryTime(); CEdl::Cut cut; if (!m_Edl.InCut(clock, &cut)) return; - if (cut.action == CEdl::CUT && - !(cut.end == m_EdlAutoSkipMarkers.cut || cut.start == m_EdlAutoSkipMarkers.cut)) // To prevent looping if same cut again + if (cut.action == CEdl::CUT) { - CLog::Log(LOGDEBUG, "%s - Clock in EDL cut [%s - %s]: %s. Automatically skipping over.", - __FUNCTION__, CEdl::MillisecondsToTimeString(cut.start).c_str(), - CEdl::MillisecondsToTimeString(cut.end).c_str(), CEdl::MillisecondsToTimeString(clock).c_str()); - - //Seeking either goes to the start or the end of the cut depending on the play direction. - int seek = GetPlaySpeed() >= 0 ? cut.end : cut.start; - - // Seeking is NOT flushed so any content up to the demux point is retained when playing forwards. - CDVDMsgPlayerSeek::CMode mode; - mode.time = seek; - mode.backward = true; - mode.flush = false; - mode.accurate = false; - mode.restore = true; - mode.trickplay = false; - mode.sync = true; - m_messenger.Put(new CDVDMsgPlayerSeek(mode)); - - // Seek doesn't always work reliably. Last physical seek time is recorded to prevent looping - // if there was an error with seeking and it landed somewhere unexpected, perhaps back in the - // cut. The cut automatic skip marker is reset every 500ms allowing another attempt at the seek. - m_EdlAutoSkipMarkers.cut = GetPlaySpeed() >= 0 ? cut.end : cut.start; - } - else if (cut.action == CEdl::COMM_BREAK && GetPlaySpeed() >= 0 && - cut.start > m_EdlAutoSkipMarkers.commbreak_end) - { - std::string strTimeString = StringUtils::SecondsToTimeString((cut.end - cut.start) / 1000, TIME_FORMAT_MM_SS); - CGUIDialogKaiToast::QueueNotification(g_localizeStrings.Get(25011), strTimeString); - - if (m_SkipCommercials) + if ((GetPlaySpeed() > 0 && clock < cut.end - 1000) || + (GetPlaySpeed() < 0 && clock < cut.start + 1000)) { - CLog::Log(LOGDEBUG, "%s - Clock in commercial break [%s - %s]: %s. Automatically skipping to end of commercial break (only done once per break)", - __FUNCTION__, CEdl::MillisecondsToTimeString(cut.start).c_str(), CEdl::MillisecondsToTimeString(cut.end).c_str(), - CEdl::MillisecondsToTimeString(clock).c_str()); + CLog::Log(LOGDEBUG, "%s - Clock in EDL cut [%s - %s]: %s. Automatically skipping over.", + __FUNCTION__, CEdl::MillisecondsToTimeString(cut.start).c_str(), + CEdl::MillisecondsToTimeString(cut.end).c_str(), CEdl::MillisecondsToTimeString(clock).c_str()); + + //Seeking either goes to the start or the end of the cut depending on the play direction. + int seek = GetPlaySpeed() >= 0 ? cut.end : cut.start; - // Seeking is NOT flushed so any content up to the demux point is retained when playing forwards. CDVDMsgPlayerSeek::CMode mode; - mode.time = cut.end + 1; + mode.time = seek; mode.backward = true; - mode.flush = false; - mode.accurate = false; + mode.accurate = true; mode.restore = true; mode.trickplay = false; mode.sync = true; m_messenger.Put(new CDVDMsgPlayerSeek(mode)); } + } + else if (cut.action == CEdl::COMM_BREAK) + { + // marker for commbrak may be inaccurate. allow user to skip into break from the back + if (GetPlaySpeed() >= 0 && lastPos <= cut.start && clock < cut.end - 1000) + { + std::string strTimeString = StringUtils::SecondsToTimeString((cut.end - cut.start) / 1000, TIME_FORMAT_MM_SS); + CGUIDialogKaiToast::QueueNotification(g_localizeStrings.Get(25011), strTimeString); + + if (m_SkipCommercials) + { + CLog::Log(LOGDEBUG, "%s - Clock in commercial break [%s - %s]: %s. Automatically skipping to end of commercial break", + __FUNCTION__, CEdl::MillisecondsToTimeString(cut.start).c_str(), + CEdl::MillisecondsToTimeString(cut.end).c_str(), + CEdl::MillisecondsToTimeString(clock).c_str()); - // Each commercial break is only skipped once so poorly detected commercial breaks can be - // manually re-entered. Start and end are recorded to prevent looping and to allow seeking back - // to the start of the commercial break if incorrectly flagged. - m_EdlAutoSkipMarkers.commbreak_start = cut.start; - m_EdlAutoSkipMarkers.commbreak_end = cut.end; - m_EdlAutoSkipMarkers.seek_to_start = true; // Allow backwards Seek() to go directly to the start + CDVDMsgPlayerSeek::CMode mode; + mode.time = cut.end; + mode.backward = true; + mode.accurate = true; + mode.restore = false; + mode.trickplay = false; + mode.sync = true; + m_messenger.Put(new CDVDMsgPlayerSeek(mode)); + } + } } } @@ -2557,8 +2521,7 @@ void CVideoPlayer::HandleMessages() if (!msg.GetTrickPlay()) { g_infoManager.SetDisplayAfterSeek(100000); - if(msg.GetFlush()) - SetCaching(CACHESTATE_FLUSH); + SetCaching(CACHESTATE_FLUSH); } double start = DVD_NOPTS_VALUE; @@ -2594,7 +2557,7 @@ void CVideoPlayer::HandleMessages() m_State.dts = start; m_State.lastSeek = m_clock.GetAbsoluteClock(); - FlushBuffers(!msg.GetFlush(), start, msg.GetAccurate(), msg.GetSync()); + FlushBuffers(start, msg.GetAccurate(), msg.GetSync()); } else if (m_pDemuxer) { @@ -2605,7 +2568,7 @@ void CVideoPlayer::HandleMessages() m_State.dts = start; - FlushBuffers(false, start, false, true); + FlushBuffers(start, false, true); if (m_playSpeed != DVD_PLAYSPEED_PAUSE) { SetPlaySpeed(DVD_PLAYSPEED_NORMAL); @@ -2637,7 +2600,7 @@ void CVideoPlayer::HandleMessages() // This should always be the case. if(m_pDemuxer && m_pDemuxer->SeekChapter(msg.GetChapter(), &start)) { - FlushBuffers(false, start, true); + FlushBuffers(start, true, true); offset = DVD_TIME_TO_MSEC(start) - beforeSeek; m_callback.OnPlayBackSeekChapter(msg.GetChapter()); } @@ -2673,7 +2636,6 @@ void CVideoPlayer::HandleMessages() CDVDMsgPlayerSeek::CMode mode; mode.time = (int)GetTime(); mode.backward = true; - mode.flush = true; mode.accurate = true; mode.trickplay = true; mode.sync = true; @@ -2689,7 +2651,6 @@ void CVideoPlayer::HandleMessages() CDVDMsgPlayerSeek::CMode mode; mode.time = (int)GetTime(); mode.backward = true; - mode.flush = true; mode.accurate = true; mode.trickplay = true; mode.sync = true; @@ -2714,7 +2675,6 @@ void CVideoPlayer::HandleMessages() CDVDMsgPlayerSeek::CMode mode; mode.time = (int)GetTime(); mode.backward = true; - mode.flush = true; mode.accurate = true; mode.trickplay = true; mode.sync = true; @@ -2728,7 +2688,6 @@ void CVideoPlayer::HandleMessages() CDVDMsgPlayerSeek::CMode mode; mode.time = (int)GetTime(); mode.backward = true; - mode.flush = true; mode.accurate = true; mode.trickplay = true; mode.sync = true; @@ -2791,7 +2750,7 @@ void CVideoPlayer::HandleMessages() } else if (pMsg->IsType(CDVDMsg::GENERAL_FLUSH)) { - FlushBuffers(false); + FlushBuffers(DVD_NOPTS_VALUE, true, true); } else if (pMsg->IsType(CDVDMsg::PLAYER_SETSPEED)) { @@ -2837,7 +2796,6 @@ void CVideoPlayer::HandleMessages() CDVDMsgPlayerSeek::CMode mode; mode.time = iTime; mode.backward = m_playSpeed < 0; - mode.flush = true; mode.accurate = false; mode.trickplay = true; mode.sync = true; @@ -2856,7 +2814,6 @@ void CVideoPlayer::HandleMessages() CDVDMsgPlayerSeek::CMode mode; mode.time = (int)GetTime(); mode.backward = (speed < 0); - mode.flush = true; mode.accurate = true; mode.restore = false; mode.trickplay = true; @@ -2885,7 +2842,7 @@ void CVideoPlayer::HandleMessages() else if (pMsg->IsType(CDVDMsg::PLAYER_CHANNEL_SELECT_NUMBER) && m_messenger.GetPacketCount(CDVDMsg::PLAYER_CHANNEL_SELECT_NUMBER) == 0) { - FlushBuffers(false); + FlushBuffers(DVD_NOPTS_VALUE, true, true); CDVDInputStreamPVRManager* input = dynamic_cast<CDVDInputStreamPVRManager*>(m_pInputStream); //! @todo find a better solution for the "otherStreaHack" //! a stream is not sopposed to be terminated before demuxer @@ -2912,7 +2869,7 @@ void CVideoPlayer::HandleMessages() else if (pMsg->IsType(CDVDMsg::PLAYER_CHANNEL_SELECT) && m_messenger.GetPacketCount(CDVDMsg::PLAYER_CHANNEL_SELECT) == 0) { - FlushBuffers(false); + FlushBuffers(DVD_NOPTS_VALUE, true, true); CDVDInputStreamPVRManager* input = dynamic_cast<CDVDInputStreamPVRManager*>(m_pInputStream); if (input && input->IsOtherStreamHack()) { @@ -2945,7 +2902,7 @@ void CVideoPlayer::HandleMessages() if (!bShowPreview) { g_infoManager.SetDisplayAfterSeek(100000); - FlushBuffers(false); + FlushBuffers(DVD_NOPTS_VALUE, true, true); if (input->IsOtherStreamHack()) { CloseDemuxer(); @@ -3183,52 +3140,6 @@ void CVideoPlayer::Seek(bool bPlus, bool bLargeStep, bool bChapterOverride) } bool restore = true; - if (m_Edl.HasCut()) - { - /* - * Alter the standard seek position based on whether any commercial breaks have been - * automatically skipped. - */ - const int clock = DVD_TIME_TO_MSEC(m_clock.GetClock()); - /* - * If a large backwards seek occurs within 10 seconds of the end of the last automated - * commercial skip, then seek back to the start of the commercial break under the assumption - * it was flagged incorrectly. 10 seconds grace period is allowed in case the watcher has to - * fumble around finding the remote. Only happens once per commercial break. - * - * Small skip does not trigger this in case the start of the commercial break was in fact fine - * but it skipped too far into the program. In that case small skip backwards behaves as normal. - */ - if (!bPlus && bLargeStep && - m_EdlAutoSkipMarkers.seek_to_start && - clock >= m_EdlAutoSkipMarkers.commbreak_end && - clock <= m_EdlAutoSkipMarkers.commbreak_end + 10*1000) // Only if within 10 seconds of the end (in msec) - { - CLog::Log(LOGDEBUG, "%s - Seeking back to start of commercial break [%s - %s] as large backwards skip activated within 10 seconds of the automatic commercial skip (only done once per break).", - __FUNCTION__, CEdl::MillisecondsToTimeString(m_EdlAutoSkipMarkers.commbreak_start).c_str(), - CEdl::MillisecondsToTimeString(m_EdlAutoSkipMarkers.commbreak_end).c_str()); - seekTarget = m_EdlAutoSkipMarkers.commbreak_start; - restore = false; - m_EdlAutoSkipMarkers.seek_to_start = false; // So this will only happen within the 10 second grace period once. - } - /* - * If big skip forward within the last "reverted" commercial break, seek to the end of the - * commercial break under the assumption that the break was incorrectly flagged and playback has - * now reached the actual start of the commercial break. Assume that the end is flagged more - * correctly than the landing point for a standard big skip (ends seem to be flagged more - * accurately than the start). - */ - else if (bPlus && bLargeStep && - clock >= m_EdlAutoSkipMarkers.commbreak_start && - clock <= m_EdlAutoSkipMarkers.commbreak_end) - { - CLog::Log(LOGDEBUG, "%s - Seeking to end of previously skipped commercial break [%s - %s] as big forwards skip activated within the break.", - __FUNCTION__, CEdl::MillisecondsToTimeString(m_EdlAutoSkipMarkers.commbreak_start).c_str(), - CEdl::MillisecondsToTimeString(m_EdlAutoSkipMarkers.commbreak_end).c_str()); - seekTarget = m_EdlAutoSkipMarkers.commbreak_end; - restore = false; - } - } int64_t time = GetTime(); if(g_application.CurrentFileItem().IsStack() && @@ -3243,7 +3154,6 @@ void CVideoPlayer::Seek(bool bPlus, bool bLargeStep, bool bChapterOverride) CDVDMsgPlayerSeek::CMode mode; mode.time = (int)seekTarget; mode.backward = !bPlus; - mode.flush = true; mode.accurate = false; mode.restore = restore; mode.trickplay = false; @@ -3278,7 +3188,6 @@ bool CVideoPlayer::SeekScene(bool bPlus) CDVDMsgPlayerSeek::CMode mode; mode.time = iScenemarker; mode.backward = !bPlus; - mode.flush = true; mode.accurate = false; mode.restore = false; mode.trickplay = false; @@ -3576,7 +3485,6 @@ void CVideoPlayer::SeekTime(int64_t iTime) CDVDMsgPlayerSeek::CMode mode; mode.time = (int)iTime; mode.backward = true; - mode.flush = true; mode.accurate = true; mode.trickplay = false; mode.sync = true; @@ -3594,7 +3502,6 @@ bool CVideoPlayer::SeekTimeRelative(int64_t iTime) mode.time = (int)iTime; mode.relative = true; mode.backward = (iTime < 0) ? true : false; - mode.flush = true; mode.accurate = false; mode.trickplay = false; mode.sync = true; @@ -4026,7 +3933,7 @@ bool CVideoPlayer::CloseStream(CCurrentStream& current, bool bWaitForBuffers) return true; } -void CVideoPlayer::FlushBuffers(bool queued, double pts, bool accurate, bool sync) +void CVideoPlayer::FlushBuffers(double pts, bool accurate, bool sync) { CLog::Log(LOGDEBUG, "CVideoPlayer::FlushBuffers - flushing buffers"); @@ -4067,63 +3974,45 @@ void CVideoPlayer::FlushBuffers(bool queued, double pts, bool accurate, bool syn m_CurrentRadioRDS.startpts = startpts; m_CurrentRadioRDS.packets = 0; - if (queued) - { - m_VideoPlayerAudio->SendMessage(new CDVDMsg(CDVDMsg::GENERAL_RESET)); - m_VideoPlayerVideo->SendMessage(new CDVDMsg(CDVDMsg::GENERAL_RESET)); - m_VideoPlayerSubtitle->SendMessage(new CDVDMsg(CDVDMsg::GENERAL_RESET)); - m_VideoPlayerTeletext->SendMessage(new CDVDMsg(CDVDMsg::GENERAL_RESET)); - m_VideoPlayerRadioRDS->SendMessage(new CDVDMsg(CDVDMsg::GENERAL_RESET)); + m_VideoPlayerAudio->Flush(sync); + m_VideoPlayerVideo->Flush(sync); + m_VideoPlayerSubtitle->Flush(); + m_VideoPlayerTeletext->Flush(); + m_VideoPlayerRadioRDS->Flush(); + + // clear subtitle and menu overlays + m_overlayContainer.Clear(); - CDVDMsgGeneralSynchronize* msg = new CDVDMsgGeneralSynchronize(10*1000, SYNCSOURCE_AUDIO | SYNCSOURCE_VIDEO); + if(m_playSpeed == DVD_PLAYSPEED_NORMAL || + m_playSpeed == DVD_PLAYSPEED_PAUSE) + { + // make sure players are properly flushed, should put them in stalled state + CDVDMsgGeneralSynchronize* msg = new CDVDMsgGeneralSynchronize(1000, SYNCSOURCE_AUDIO | SYNCSOURCE_VIDEO); m_VideoPlayerAudio->SendMessage(msg->Acquire(), 1); m_VideoPlayerVideo->SendMessage(msg->Acquire(), 1); msg->Wait(m_bStop, 0); msg->Release(); - } - else - { - m_VideoPlayerAudio->Flush(sync); - m_VideoPlayerVideo->Flush(sync); - m_VideoPlayerSubtitle->Flush(); - m_VideoPlayerTeletext->Flush(); - m_VideoPlayerRadioRDS->Flush(); - // clear subtitle and menu overlays - m_overlayContainer.Clear(); + // purge any pending PLAYER_STARTED messages + m_messenger.Flush(CDVDMsg::PLAYER_STARTED); - if(m_playSpeed == DVD_PLAYSPEED_NORMAL - || m_playSpeed == DVD_PLAYSPEED_PAUSE) + // we should now wait for init cache + SetCaching(CACHESTATE_FLUSH); + if (sync) { - // make sure players are properly flushed, should put them in stalled state - CDVDMsgGeneralSynchronize* msg = new CDVDMsgGeneralSynchronize(1000, SYNCSOURCE_AUDIO | SYNCSOURCE_VIDEO); - m_VideoPlayerAudio->SendMessage(msg->Acquire(), 1); - m_VideoPlayerVideo->SendMessage(msg->Acquire(), 1); - msg->Wait(m_bStop, 0); - msg->Release(); - - // purge any pending PLAYER_STARTED messages - m_messenger.Flush(CDVDMsg::PLAYER_STARTED); - - // we should now wait for init cache - SetCaching(CACHESTATE_FLUSH); - if (sync) - { - m_CurrentAudio.syncState = IDVDStreamPlayer::SYNC_STARTING; - m_CurrentVideo.syncState = IDVDStreamPlayer::SYNC_STARTING; - } + m_CurrentAudio.syncState = IDVDStreamPlayer::SYNC_STARTING; + m_CurrentVideo.syncState = IDVDStreamPlayer::SYNC_STARTING; } - - if(pts != DVD_NOPTS_VALUE && sync) - m_clock.Discontinuity(pts); - UpdatePlayState(0); } + if(pts != DVD_NOPTS_VALUE && sync) + m_clock.Discontinuity(pts); + UpdatePlayState(0); + if (m_omxplayer_mode) { m_OmxPlayerState.av_clock.OMXFlush(); - if (!queued) - m_OmxPlayerState.av_clock.OMXStop(); + m_OmxPlayerState.av_clock.OMXStop(); m_OmxPlayerState.av_clock.OMXPause(); m_OmxPlayerState.av_clock.OMXMediaTime(0.0); } @@ -4314,7 +4203,7 @@ int CVideoPlayer::OnDVDNavResult(void* pData, int iMessage) else { bool sync = !IsInMenuInternal(); - FlushBuffers(false, DVD_NOPTS_VALUE, false, sync); + FlushBuffers(DVD_NOPTS_VALUE, false, sync); m_dvd.syncClock = true; m_dvd.state = DVDSTATE_NORMAL; if (m_pDemuxer) @@ -4571,7 +4460,6 @@ bool CVideoPlayer::OnAction(const CAction &action) CDVDMsgPlayerSeek::CMode mode; mode.time = cut.end + 1; mode.backward = false; - mode.flush = true; mode.accurate = false; mode.restore = true; mode.trickplay = false; @@ -4611,7 +4499,6 @@ bool CVideoPlayer::OnAction(const CAction &action) CDVDMsgPlayerSeek::CMode mode; mode.time = cut.start - 1; mode.backward = true; - mode.flush = true; mode.accurate = false; mode.restore = true; mode.trickplay = false; @@ -4626,7 +4513,6 @@ bool CVideoPlayer::OnAction(const CAction &action) CDVDMsgPlayerSeek::CMode mode; mode.time = 0; mode.backward = true; - mode.flush = true; mode.accurate = false; mode.restore = true; mode.trickplay = false; diff --git a/xbmc/cores/VideoPlayer/VideoPlayer.h b/xbmc/cores/VideoPlayer/VideoPlayer.h index 41ff6b4c86..e6cd2a8637 100644 --- a/xbmc/cores/VideoPlayer/VideoPlayer.h +++ b/xbmc/cores/VideoPlayer/VideoPlayer.h @@ -463,8 +463,7 @@ protected: double GetQueueTime(); bool GetCachingTimes(double& play_left, double& cache_left, double& file_offset); - - void FlushBuffers(bool queued, double pts = DVD_NOPTS_VALUE, bool accurate = true, bool sync = true); + void FlushBuffers(double pts, bool accurate, bool sync); void HandleMessages(); void HandlePlaySpeed(); @@ -586,25 +585,6 @@ protected: CEdl m_Edl; bool m_SkipCommercials; - struct SEdlAutoSkipMarkers { - - void Clear() - { - cut = -1; - commbreak_start = -1; - commbreak_end = -1; - seek_to_start = false; - mute = false; - } - - int cut; // last automatically skipped EDL cut seek position - int commbreak_start; // start time of the last commercial break automatically skipped - int commbreak_end; // end time of the last commercial break automatically skipped - bool seek_to_start; // whether seeking can go back to the start of a previously skipped break - bool mute; // whether EDL mute is on - - } m_EdlAutoSkipMarkers; - CPlayerOptions m_PlayerOptions; bool m_HasVideo; diff --git a/xbmc/cores/VideoPlayer/VideoPlayerAudio.cpp b/xbmc/cores/VideoPlayer/VideoPlayerAudio.cpp index f822935ab7..ec5f91443f 100644 --- a/xbmc/cores/VideoPlayer/VideoPlayerAudio.cpp +++ b/xbmc/cores/VideoPlayer/VideoPlayerAudio.cpp @@ -69,7 +69,6 @@ CVideoPlayerAudio::CVideoPlayerAudio(CDVDClock* pClock, CDVDMessageQueue& parent m_stalled = true; m_paused = false; m_syncState = IDVDStreamPlayer::SYNC_STARTING; - m_silence = false; m_synctype = SYNC_DISCON; m_setsynctype = SYNC_DISCON; m_prevsynctype = -1; @@ -150,7 +149,6 @@ void CVideoPlayerAudio::OpenStream(CDVDStreamInfo &hints, CDVDAudioCodec* codec) m_prevsynctype = -1; m_prevskipped = false; - m_silence = false; m_maxspeedadjust = 5.0; @@ -345,12 +343,6 @@ void CVideoPlayerAudio::Process() } m_speed = speed; } - else if (pMsg->IsType(CDVDMsg::AUDIO_SILENCE)) - { - m_silence = static_cast<CDVDMsgBool*>(pMsg)->m_value; - CLog::Log(LOGDEBUG, "CVideoPlayerAudio - CDVDMsg::AUDIO_SILENCE(%f, %d)" - , m_audioClock, m_silence); - } else if (pMsg->IsType(CDVDMsg::GENERAL_STREAMCHANGE)) { CDVDMsgAudioCodecChange* msg(static_cast<CDVDMsgAudioCodecChange*>(pMsg)); @@ -457,14 +449,6 @@ void CVideoPlayerAudio::Process() m_messageParent.Put(new CDVDMsg(CDVDMsg::PLAYER_AVCHANGE)); } - // Zero out the frame data if we are supposed to silence the audio - if (m_silence) - { - int size = audioframe.nb_frames * audioframe.framesize / audioframe.planes; - for (unsigned int i=0; i<audioframe.planes; i++) - memset(audioframe.data[i], 0, size); - } - SetSyncType(audioframe.passthrough); if (!bPacketDrop) diff --git a/xbmc/cores/VideoPlayer/VideoPlayerAudio.h b/xbmc/cores/VideoPlayer/VideoPlayerAudio.h index 7f8197a22e..10ca3c0571 100644 --- a/xbmc/cores/VideoPlayer/VideoPlayerAudio.h +++ b/xbmc/cores/VideoPlayer/VideoPlayerAudio.h @@ -96,7 +96,6 @@ protected: int m_speed; bool m_stalled; - bool m_silence; bool m_paused; IDVDStreamPlayer::ESyncState m_syncState; XbmcThreads::EndTime m_syncTimer; diff --git a/xbmc/cores/omxplayer/OMXPlayerAudio.cpp b/xbmc/cores/omxplayer/OMXPlayerAudio.cpp index 1e5d2b98bb..3fa9e11bf5 100644 --- a/xbmc/cores/omxplayer/OMXPlayerAudio.cpp +++ b/xbmc/cores/omxplayer/OMXPlayerAudio.cpp @@ -87,7 +87,6 @@ OMXPlayerAudio::OMXPlayerAudio(OMXClock *av_clock, CDVDMessageQueue& parent, CPr m_messageQueue.SetMaxTimeSize(8.0); m_passthrough = false; - m_silence = false; m_flush = false; } @@ -136,7 +135,6 @@ void OMXPlayerAudio::OpenStream(CDVDStreamInfo &hints, COMXAudioCodecOMX *codec) m_speed = DVD_PLAYSPEED_NORMAL; m_audioClock = DVD_NOPTS_VALUE; - m_silence = false; m_syncState = IDVDStreamPlayer::SYNC_STARTING; m_flush = false; m_stalled = m_messageQueue.GetPacketCount(CDVDMsg::DEMUXER_PACKET) == 0; @@ -279,12 +277,7 @@ bool OMXPlayerAudio::Decode(DemuxPacket *pkt, bool bDropPacket, bool bTrickPlay) if(!bDropPacket) { - // Zero out the frame data if we are supposed to silence the audio - if(m_silence) - memset(decoded, 0x0, decoded_size); - ret = m_omxAudio.AddPackets(decoded, decoded_size, dts, pts, m_pAudioCodec->GetFrameSize(), settings_changed); - if(ret != decoded_size) { CLog::Log(LOGERROR, "error ret %d decoded_size %d\n", ret, decoded_size); @@ -318,9 +311,6 @@ bool OMXPlayerAudio::Decode(DemuxPacket *pkt, bool bDropPacket, bool bTrickPlay) if(!bDropPacket) { - if(m_silence) - memset(pkt->pData, 0x0, pkt->iSize); - m_omxAudio.AddPackets(pkt->pData, pkt->iSize, m_audioClock, m_audioClock, 0, settings_changed); } @@ -458,14 +448,6 @@ void OMXPlayerAudio::Process() CLog::Log(LOGDEBUG, "COMXPlayerAudio - CDVDMsg::PLAYER_SETSPEED %d", m_speed); } } - else if (pMsg->IsType(CDVDMsg::AUDIO_SILENCE)) - { - m_silence = static_cast<CDVDMsgBool*>(pMsg)->m_value; - if (m_silence) - CLog::Log(LOGDEBUG, "COMXPlayerAudio - CDVDMsg::AUDIO_SILENCE(%f, 1)", m_audioClock); - else - CLog::Log(LOGDEBUG, "COMXPlayerAudio - CDVDMsg::AUDIO_SILENCE(%f, 0)", m_audioClock); - } else if (pMsg->IsType(CDVDMsg::GENERAL_STREAMCHANGE)) { COMXMsgAudioCodecChange* msg(static_cast<COMXMsgAudioCodecChange*>(pMsg)); diff --git a/xbmc/epg/GUIEPGGridContainer.cpp b/xbmc/epg/GUIEPGGridContainer.cpp index 16fee97192..44ff0dd816 100644 --- a/xbmc/epg/GUIEPGGridContainer.cpp +++ b/xbmc/epg/GUIEPGGridContainer.cpp @@ -39,10 +39,8 @@ using namespace PVR; using namespace EPG; -#define SHORTGAP 5 // how many blocks is considered a short-gap in nav logic #define BLOCKJUMP 4 // how many blocks are jumped with each analogue scroll action static const int BLOCK_SCROLL_OFFSET = 60 / CGUIEPGGridContainerModel::MINSPERBLOCK; // how many blocks are jumped if we are at left/right edge of grid -static const int PAGE_NOW_OFFSET = CGUIEPGGridContainerModel::GRID_START_PADDING / CGUIEPGGridContainerModel::MINSPERBLOCK; // this is the 'now' block relative to page start CGUIEPGGridContainer::CGUIEPGGridContainer(int parentID, int controlID, float posX, float posY, float width, float height, int scrollTime, int preloadItems, int timeBlocks, int rulerUnit, @@ -62,6 +60,7 @@ CGUIEPGGridContainer::CGUIEPGGridContainer(int parentID, int controlID, float po m_blocksPerPage(timeBlocks), m_blockCursor(0), m_blockOffset(0), + m_blockTravelAxis(0), m_cacheChannelItems(preloadItems), m_cacheProgrammeItems(preloadItems), m_cacheRulerItems(preloadItems), @@ -698,8 +697,8 @@ void CGUIEPGGridContainer::OnDown() } else if (action.GetNavigation() == GetID() || !action.HasActionsMeetingCondition()) // wrap around { - SetChannel(0); ScrollToChannelOffset(0); + SetChannel(0); } else CGUIControl::OnDown(); @@ -784,31 +783,24 @@ void CGUIEPGGridContainer::SetChannel(const CPVRChannelPtr &channel) } } -void CGUIEPGGridContainer::SetChannel(int channel, bool bFindClosestItem /* = true */) +void CGUIEPGGridContainer::SetChannel(int channel) { CSingleLock lock(m_critSection); - if (!bFindClosestItem || m_blockCursor + m_blockOffset == 0 || m_blockOffset + m_blockCursor + GetItemSize(m_item) == m_gridModel->GetBlockCount()) + int channelIndex = channel + m_channelOffset; + int blockIndex = m_blockCursor + m_blockOffset; + if (channelIndex < m_gridModel->ChannelItemsSize() && blockIndex < m_gridModel->GetBlockCount()) { - m_item = GetItem(channel); + m_item = m_gridModel->GetGridItemPtr(channelIndex, m_blockTravelAxis); if (m_item) { m_channelCursor = channel; - SetBlock(GetBlock(m_item->item, channel)); + SetBlock(GetBlock(m_item->item, channel), false); } - return; - } - - /* basic checks failed, need to correctly identify nearest item */ - m_item = GetClosestItem(channel); - if (m_item) - { - m_channelCursor = channel; - SetBlock(GetBlock(m_item->item, m_channelCursor)); } } -void CGUIEPGGridContainer::SetBlock(int block) +void CGUIEPGGridContainer::SetBlock(int block, bool bUpdateBlockTravelAxis /* = true */) { CSingleLock lock(m_critSection); @@ -819,6 +811,9 @@ void CGUIEPGGridContainer::SetBlock(int block) else m_blockCursor = block; + if (bUpdateBlockTravelAxis) + m_blockTravelAxis = m_blockOffset + m_blockCursor; + m_item = GetItem(m_channelCursor); } @@ -1036,6 +1031,11 @@ CEpgInfoTagPtr CGUIEPGGridContainer::GetSelectedEpgInfoTag() const return tag; } +unsigned int CGUIEPGGridContainer::GetPageNowOffset() const +{ + return m_gridModel->GetGridStartPadding() / CGUIEPGGridContainerModel::MINSPERBLOCK; // this is the 'now' block relative to page start +} + CGUIListItemPtr CGUIEPGGridContainer::GetListItem(int offset, unsigned int flag) const { if (!m_gridModel->HasChannelItems()) @@ -1090,48 +1090,6 @@ std::string CGUIEPGGridContainer::GetLabel(int info) const return label; } -GridItem *CGUIEPGGridContainer::GetClosestItem(int channel) -{ - GridItem *closest = GetItem(channel); - - if (!closest) - return nullptr; - - int block = GetBlock(closest->item, channel); - int left; // num blocks to start of previous item - int right; // num blocks to start of next item - - if (block == m_blockCursor) - return closest; // item & m_item start together - - if (block + GetItemSize(closest) == m_blockCursor + GetItemSize(m_item)) - return closest; // closest item ends when current does - - if (block > m_blockCursor) // item starts after m_item - { - left = m_blockCursor - GetBlock(closest->item, channel); - right = block - m_blockCursor; - } - else - { - left = m_blockCursor - block; - right = GetBlock(GetNextItem(channel)->item, channel) - m_blockCursor; - } - - if (right <= SHORTGAP && right <= left && m_blockCursor + right < m_blocksPerPage) - return m_gridModel->GetGridItemPtr(channel + m_channelOffset, m_blockCursor + right + m_blockOffset); - - return m_gridModel->GetGridItemPtr(channel + m_channelOffset, m_blockCursor - left + m_blockOffset); -} - -int CGUIEPGGridContainer::GetItemSize(GridItem *item) -{ - if (!item) - return MathUtils::round_int(m_blockSize); // stops it crashing - - return MathUtils::round_int(item->width / m_blockSize); -} - int CGUIEPGGridContainer::GetBlock(const CGUIListItemPtr &item, int channel) { if (!item) @@ -1385,9 +1343,9 @@ void CGUIEPGGridContainer::GoToEnd() void CGUIEPGGridContainer::GoToNow() { CDateTime currentDate = CDateTime::GetCurrentDateTime().GetAsUTCDateTime(); - int offset = (currentDate - m_gridModel->GetGridStart()).GetSecondsTotal() / 60 / CGUIEPGGridContainerModel::MINSPERBLOCK - PAGE_NOW_OFFSET; + int offset = (currentDate - m_gridModel->GetGridStart()).GetSecondsTotal() / 60 / CGUIEPGGridContainerModel::MINSPERBLOCK - GetPageNowOffset(); ScrollToBlockOffset(offset); - SetBlock(PAGE_NOW_OFFSET); + SetBlock(GetPageNowOffset()); } void CGUIEPGGridContainer::SetTimelineItems(const std::unique_ptr<CFileItemList> &items, const CDateTime &gridStart, const CDateTime &gridEnd) @@ -1428,18 +1386,18 @@ void CGUIEPGGridContainer::GoToChannel(int channelIndex) { // last page ScrollToChannelOffset(m_gridModel->ChannelItemsSize() - m_channelsPerPage); - SetChannel(channelIndex - (m_gridModel->ChannelItemsSize() - m_channelsPerPage), false); + SetChannel(channelIndex - (m_gridModel->ChannelItemsSize() - m_channelsPerPage)); } else if (channelIndex < m_channelsPerPage) { // first page ScrollToChannelOffset(0); - SetChannel(channelIndex, false); + SetChannel(channelIndex); } else { ScrollToChannelOffset(channelIndex - m_channelCursor); - SetChannel(m_channelCursor, false); + SetChannel(m_channelCursor); } } diff --git a/xbmc/epg/GUIEPGGridContainer.h b/xbmc/epg/GUIEPGGridContainer.h index 55f3af91c8..cf6a901cfe 100644 --- a/xbmc/epg/GUIEPGGridContainer.h +++ b/xbmc/epg/GUIEPGGridContainer.h @@ -90,8 +90,8 @@ namespace EPG bool OnClick(int actionID); bool SelectItemFromPoint(const CPoint &point, bool justGrid = true); - void SetChannel(int channel, bool bFindClosestItem = true); - void SetBlock(int block); + void SetChannel(int channel); + void SetBlock(int block, bool bUpdateBlockTravelAxis = true); void ChannelScroll(int amount); void ProgrammesScroll(int amount); void ValidateOffset(); @@ -100,9 +100,7 @@ namespace EPG GridItem *GetItem(int channel); GridItem *GetNextItem(int channel); GridItem *GetPrevItem(int channel); - GridItem *GetClosestItem(int channel); - int GetItemSize(GridItem *item); int GetBlock(const CGUIListItemPtr &item, int channel); int GetRealBlock(const CGUIListItemPtr &item, int channel); void MoveToRow(int row); @@ -155,6 +153,8 @@ namespace EPG EPG::CEpgInfoTagPtr GetSelectedEpgInfoTag() const; + unsigned int GetPageNowOffset() const; + int m_rulerUnit; //! number of blocks that makes up one element of the ruler int m_channelsPerPage; int m_programmesPerPage; @@ -163,6 +163,7 @@ namespace EPG int m_blocksPerPage; int m_blockCursor; int m_blockOffset; + int m_blockTravelAxis; int m_cacheChannelItems; int m_cacheProgrammeItems; int m_cacheRulerItems; diff --git a/xbmc/epg/GUIEPGGridContainerModel.cpp b/xbmc/epg/GUIEPGGridContainerModel.cpp index dbc867cdd1..1abc733f16 100644 --- a/xbmc/epg/GUIEPGGridContainerModel.cpp +++ b/xbmc/epg/GUIEPGGridContainerModel.cpp @@ -18,12 +18,14 @@ * */ +#include "GUIEPGGridContainerModel.h" + #include "FileItem.h" #include "epg/EpgInfoTag.h" +#include "settings/AdvancedSettings.h" #include "utils/Variant.h" -#include "pvr/channels/PVRChannel.h" -#include "GUIEPGGridContainerModel.h" +#include "pvr/channels/PVRChannel.h" class CGUIListItem; typedef std::shared_ptr<CGUIListItem> CGUIListItemPtr; @@ -31,6 +33,8 @@ typedef std::shared_ptr<CGUIListItem> CGUIListItemPtr; using namespace EPG; using namespace PVR; +static const unsigned int GRID_START_PADDING = 30; // minutes + void CGUIEPGGridContainerModel::SetInvalid() { for (const auto &programme : m_programmeItems) @@ -109,13 +113,13 @@ void CGUIEPGGridContainerModel::Refresh(const std::unique_ptr<CFileItemList> &it if (gridStart >= gridEnd) { // default to start "now minus GRID_START_PADDING minutes" and end "start plus one page". - m_gridStart = CDateTime::GetCurrentDateTime().GetAsUTCDateTime() - CDateTimeSpan(0, 0, GRID_START_PADDING, 0); + m_gridStart = CDateTime::GetCurrentDateTime().GetAsUTCDateTime() - CDateTimeSpan(0, 0, GetGridStartPadding(), 0); m_gridEnd = m_gridStart + CDateTimeSpan(0, 0, iBlocksPerPage * MINSPERBLOCK, 0); } - else if (gridStart > (CDateTime::GetCurrentDateTime().GetAsUTCDateTime() - CDateTimeSpan(0, 0, GRID_START_PADDING, 0))) + else if (gridStart > (CDateTime::GetCurrentDateTime().GetAsUTCDateTime() - CDateTimeSpan(0, 0, GetGridStartPadding(), 0))) { // adjust to start "now minus GRID_START_PADDING minutes". - m_gridStart = CDateTime::GetCurrentDateTime().GetAsUTCDateTime() - CDateTimeSpan(0, 0, GRID_START_PADDING, 0); + m_gridStart = CDateTime::GetCurrentDateTime().GetAsUTCDateTime() - CDateTimeSpan(0, 0, GetGridStartPadding(), 0); m_gridEnd = gridEnd; } else @@ -312,6 +316,16 @@ void CGUIEPGGridContainerModel::FindChannelAndBlockIndex(int channelUid, unsigne } } +unsigned int CGUIEPGGridContainerModel::GetGridStartPadding() const +{ + int iEpgLingerTime = g_advancedSettings.m_iEpgLingerTime; + + if (iEpgLingerTime < GRID_START_PADDING) + return iEpgLingerTime; + + return GRID_START_PADDING; // minutes +} + void CGUIEPGGridContainerModel::FreeChannelMemory(int keepStart, int keepEnd) { if (keepStart < keepEnd) diff --git a/xbmc/epg/GUIEPGGridContainerModel.h b/xbmc/epg/GUIEPGGridContainerModel.h index 3ad9a36bf5..06e66ecaa0 100644 --- a/xbmc/epg/GUIEPGGridContainerModel.h +++ b/xbmc/epg/GUIEPGGridContainerModel.h @@ -44,9 +44,8 @@ namespace EPG class CGUIEPGGridContainerModel { public: - static const int MINSPERBLOCK = 5; // minutes - static const int MAXBLOCKS = 33 * 24 * 60 / MINSPERBLOCK; //! 33 days of 5 minute blocks (31 days for upcoming data + 1 day for past data + 1 day for fillers) - static const int GRID_START_PADDING = 30; // minutes; latest grid start 'now - GRID_START_PADDING', will be adjusted to this value if shall be set to later + static const int MINSPERBLOCK = 5; // minutes + static const int MAXBLOCKS = 33 * 24 * 60 / MINSPERBLOCK; //! 33 days of 5 minute blocks (31 days for upcoming data + 1 day for past data + 1 day for fillers) CGUIEPGGridContainerModel() : m_blocks(0) {} virtual ~CGUIEPGGridContainerModel() { Reset(); } @@ -84,6 +83,8 @@ namespace EPG const CDateTime &GetGridStart() const { return m_gridStart; } const CDateTime &GetGridEnd() const { return m_gridEnd; } + unsigned int GetGridStartPadding() const; + private: void FreeItemsMemory(); void Reset(); diff --git a/xbmc/music/tags/TagLoaderTagLib.cpp b/xbmc/music/tags/TagLoaderTagLib.cpp index 013a9d183f..703289e728 100644 --- a/xbmc/music/tags/TagLoaderTagLib.cpp +++ b/xbmc/music/tags/TagLoaderTagLib.cpp @@ -506,7 +506,7 @@ bool CTagLoaderTagLib::ParseTag(APE::Tag *ape, EmbeddedArt *art, CMusicInfoTag& AddArtistRole(tag, "Orchestra", StringListToVectorString(it->second.toStringList())); else if (it->first == "LYRICIST") AddArtistRole(tag, "Lyricist", StringListToVectorString(it->second.toStringList())); - else if (it->first == "MIXARTIST") + else if ((it->first == "MIXARTIST") || (it->first == "REMIXER")) AddArtistRole(tag, "Remixer", StringListToVectorString(it->second.toStringList())); else if (it->first == "ARRANGER") AddArtistRole(tag, "Arranger", StringListToVectorString(it->second.toStringList())); @@ -605,7 +605,7 @@ bool CTagLoaderTagLib::ParseTag(Ogg::XiphComment *xiph, EmbeddedArt *art, CMusic AddArtistRole(tag, "Orchestra", StringListToVectorString(it->second)); else if (it->first == "LYRICIST") AddArtistRole(tag, "Lyricist", StringListToVectorString(it->second)); - else if (it->first == "MIXARTIST") + else if ((it->first == "MIXARTIST") || (it->first == "REMIXER")) AddArtistRole(tag, "Remixer", StringListToVectorString(it->second)); else if (it->first == "ARRANGER") AddArtistRole(tag, "Arranger", StringListToVectorString(it->second)); diff --git a/xbmc/music/windows/GUIWindowMusicBase.cpp b/xbmc/music/windows/GUIWindowMusicBase.cpp index 0ebdf4863d..2475fdd25e 100644 --- a/xbmc/music/windows/GUIWindowMusicBase.cpp +++ b/xbmc/music/windows/GUIWindowMusicBase.cpp @@ -1394,7 +1394,7 @@ void CGUIWindowMusicBase::OnPrepareFileItems(CFileItemList &items) { CGUIMediaWindow::OnPrepareFileItems(items); - if (!items.IsMusicDb()) + if (!items.IsMusicDb() && !items.IsSmartPlayList()) RetrieveMusicInfo(); } diff --git a/xbmc/platform/win32/WIN32Util.cpp b/xbmc/platform/win32/WIN32Util.cpp index 14d2ac68c0..77d9461858 100644 --- a/xbmc/platform/win32/WIN32Util.cpp +++ b/xbmc/platform/win32/WIN32Util.cpp @@ -39,6 +39,7 @@ #include "utils/Environment.h" #include "utils/StringUtils.h" #include "platform/win32/crts_caller.h" +#include "CompileInfo.h" #include <cassert> @@ -405,7 +406,7 @@ std::string CWIN32Util::GetProfilePath() std::string strHomePath = CUtil::GetHomePath(); if(g_application.PlatformDirectoriesEnabled()) - strProfilePath = URIUtils::AddFileToFolder(GetSpecialFolder(CSIDL_APPDATA|CSIDL_FLAG_CREATE), "Kodi"); + strProfilePath = URIUtils::AddFileToFolder(GetSpecialFolder(CSIDL_APPDATA|CSIDL_FLAG_CREATE), CCompileInfo::GetAppName()); else strProfilePath = URIUtils::AddFileToFolder(strHomePath , "portable_data"); diff --git a/xbmc/utils/SeekHandler.cpp b/xbmc/utils/SeekHandler.cpp index 9163426a4b..e70626f782 100644 --- a/xbmc/utils/SeekHandler.cpp +++ b/xbmc/utils/SeekHandler.cpp @@ -361,6 +361,7 @@ bool CSeekHandler::SeekTimeCode(const CAction &action) case ACTION_STEP_BACK: case ACTION_BIG_STEP_BACK: case ACTION_CHAPTER_OR_BIG_STEP_BACK: + case ACTION_MOVE_LEFT: { SeekSeconds(-GetTimeCodeSeconds()); return true; @@ -368,6 +369,7 @@ bool CSeekHandler::SeekTimeCode(const CAction &action) case ACTION_STEP_FORWARD: case ACTION_BIG_STEP_FORWARD: case ACTION_CHAPTER_OR_BIG_STEP_FORWARD: + case ACTION_MOVE_RIGHT: { SeekSeconds(GetTimeCodeSeconds()); return true; |