
    }DjCO                        S SK r S SKrS SKrS SKrS SKrS SKJr  S SKJ	r	  S SK
Jr  \ R                  r\ R                  S\ R                  \R                   4u  rrrr\R(                  \ R*                  \ R,                  \R.                  \R0                  4u  rrrrr\R2                  \R4                  \R6                  \R8                  \R:                  \R<                  4u  rrrrrr\ R>                  \ R@                  \ RB                  \RD                  4u  r#r$r%r&\ RN                  \ RP                  \ RR                  \ RT                  \ RV                  4u  r'r,r)r*r+\RZ                  r.\R^                  \R`                  \Rb                  \Rd                  \Rf                  4u  r/r0r1r2r3\Rh                  \Rj                  \Rl                  \Rn                  4u  r4r5r6r8\Rr                  r:Sr;SSS	.r<\;\Rz                  -  \;\R|                  -  sr?r>\;\R                  -  r@S
rASrBSrCSSSS.rDSSSS S.rES SS.rFSrGSrHSrI/ SQrJSSSSSSSSSSSS .rK0 S!S"_S#S$_S%S&_S'S(_S)S*_S+S,_S-S._S/S0_S1S2_S3S4_S5S6_S7S8_S9S:_S;S<_S=S>_S?S@_0 SASB_S#S$_S%S&_S'S(_S)S*_SCSD_S-S._S/S0_S1S2_S3S4_SESF_S7S8_S9S:_S;S<_S=S>_S?S@_SG.rLSHrMSIrNSJrOSK rPSL rQSM rRSN rSSO rTSP rUSQ rVSR rWSS rXST rYSSU jrZSV r[SW r\SX r]SY r^SZ r_SS[ jr`SS\ jraS] rbS^ rcS_ rdS` reSa rfSb rgSc rhSd riSSe jrjSf rkSg rlSh rmSi rnSSj jroSSk jrpSl rqSm rrSn rsSSo jrtSp ruSq rvSSr jrwSs rxSt rySu rzSv r{Sw r|Sx r(SSy jr}Sz r~S{ rS| rS} rS~ rS rS rSS jrS rSS jrS rS rS rS rS rS rSS jrSS jrSS jrSS jrS rSS jrSS jrSS jrS rSS jrS r/ SQ4S jrSS/4S jrSS jrS rS rSS jrS rSS jrSS jrSS jrSS jrS rS rS rSS jrS rS rS rg!   Sr GN= f)    Npath)	urlencode)icons   zHhttps://external-content.duckduckgo.com/iu/?u=https://i.imgur.com/%s.pngfalsetrue)r	   r    7e4d48e68abb9a4f2c86a1cc143cd8b5@17d84db50cb16624adc67401637f0995949fb8dce2110100d0cb6c0750d273b3@a69c7bb0bad9774f6a216a306410bd303d7e92ad92c67c057b0389ad99b8491a119121124)                  )episodesfileslabelnone)musicvideo)adultbackdrop_path	genre_idsoriginal_languageoriginal_titleoverview
popularity
vote_countr   origin_countryoriginal_name)descriptionprivacytype
share_linkdisplay_numbersallow_commentssort_bysort_how
created_at
updated_atcomment_count)zepisode.progresszepisode.recently_watchedzepisode.next_traktzepisode.next_fenlightzepisode.trakt_recently_airedzepisode.trakt_calendar)zEXTERNAL SCRAPERSEASYNEWSzRD CLOUDzPM CLOUDzAD CLOUDzOC CLOUDzTB CLOUDzFOLDERS 1-5movietvshowseasonepisodesingle_episode
trakt_list)build_movie_listbuild_tvshow_listbuild_season_listbuild_episode_listbuild_in_progress_episodebuild_recently_watched_episodebuild_next_episodebuild_my_calendarbuild_trakt_listsztrakt.list.build_trakt_listbuild_trakt_my_lists_contentsmovies_playPlaybackshow_trailersTrailershow_imagesImagesshow_extrainfoz
Extra Infoshow_genresGenresshow_directorDirectorshow_optionsOptionsshow_recommendedRecommendedshow_more_like_thiszMore Like Thisshow_trakt_managerzTrakt Managerplayback_choicezPlayback Optionsshow_favorites_managerzFavorites Manager	show_plotPlotshow_keywordsKeywordsshow_in_trakt_listszIn Trakt Lists	close_allzClose All Dialogstvshow_browseBrowseplay_nextepz	Play Nextplay_random_episodezPlay Random)r2   r3   )Im4v3g23gpnsvtptstyplsrmrmvbmpdifomovqtdivxxvidbivxvobnrgimgisoudfpvawmvasfasxogmm2vavibindatmpgmpegmp4mkvmk3davcvp3svq3nuvvivdvfliflvwplxspfvdrzdvr-msxspmtsm2tm2tsevoogvsdpavsrecurlpxmlvc1h264rcvrssmplsmplwebmbdmvbdmwtvtrpf4vpvrdisc)jpgjpegjpejifjfifjfibmpdibpnggifwebptifftifpsdrawarwcr2nrwk25jp2j2kjpfjpxjpmmj2plugin.video.ultimate-nondebridc                  ,    [         R                  " 5       $ N)xbmcguiDialog     V/home/rurouni/addon-audit/build/ultimate-nondebrid/resources/lib/modules/kodi_utils.py<lambda>r   6   s    gnn&r   c                 T    [         R                  " [        5      R                  U 5      $ r   )	xbmcaddonAddonADDON_IDgetAddonInfo)infos    r   r   r   7   s    )//(3@@Fr   c                  <    [        S5      =(       d    [        S5      $ )Nz ultimate_nondebrid.addon_versionversionget_property
addon_infor   r   r   r   r   8   s    %GHaJW`Laar   c                  <    [        S5      =(       d    [        S5      $ )Nzultimate_nondebrid.addon_pathr   r   r   r   r   r   r   9       \"ABXjQWFXXr   c                  N    [        S5      =(       d    [        [        S5      5      $ )Nz ultimate_nondebrid.addon_profileprofile)r   translatePathr   r   r   r   r   r   :   s    %GHpMZdenZoLppr   c                  <    [        S5      =(       d    [        S5      $ )Nzultimate_nondebrid.addon_iconiconr   r   r   r   r   r   ;   r   r   c                  <    [        S5      =(       d    [        S5      $ )Nzultimate_nondebrid.addon_fanartfanartr   r   r   r   r   r   <   s    |$EF^*U]J^^r   c                 2    [         [        [        U S5      -  $ )NI1JJhji)img_urlgetattrr   )
image_names    r   get_iconr   >   s    '%Y777r   c                  :    [        S5      =(       d
    [        5       $ )Nz'ultimate_nondebrid.default_addon_fanart)r   addon_fanartr   r   r   get_addon_fanartr   A   s    >?Q<>Qr   c                 0    S[         < S[        U 5      < 3$ )N	plugin://z/?)r   r   )
url_paramss    r   	build_urlr   D   s    %y'<==r   c                    U=(       d
    [        5       n[        U5      n[        U 5      n[        5       n	U	R	                  U5        U	R                  XwXvUS.5        U	R                  5       n
U
R                  S5        [        X(X5        g )N)r   posterthumbr   banner )	r   r   r   make_listitemsetLabelsetArtgetVideoInfoTagsetPlotadd_item)r   	list_namehandle	iconImagefanartImageisFolderr   r   r   listiteminfo_tags              r   add_dirr   G   ss    

+)+O	9	$[abc$$&	#	&x*r   c                      [        SS9$ )NT)	offscreen)ListItemr   r   r   r   r   R   s    4  r   c                     [        XX#5        g r   )addDirectoryItem)r   r   r   r   s       r   r   r   U   s    &x2r   c                     [        X5        g r   )addDirectoryItems)r   	item_lists     r   	add_itemsr  X   s
    6%r   c                     [        X5        g r   )
setContent)r   contents     r   set_contentr	  [   s
    Fr   c                     [        X5        g r   )setCategory)r   r   s     r   set_categoryr  ^   s
    Vr   c                     [        XS9  g )N)cacheToDisc)endOfDirectory)r   r  s     r   end_directoryr  a   s
    0r   c                 D   [        S5      S:X  d  g US :X  a
  [        5       nU(       a  g [        SU -  5      =(       d    S nU(       d  g  Sn[        S5        [        5       U:X  d(  US-  nUS:  a  [        S5        Og [        5       U:X  d  M(  [	        SU-  5        g !    g = f)	Nz ultimate_nondebrid.use_viewtypesr	   zultimate_nondebrid.%sr   d   r   i  zContainer.SetViewMode(%s))r   externalsleepcontainer_contentexecute_builtin)	view_typer  is_externalview_idholds        r   set_view_moder  d   s    78FBF4xz/);<D	
$*7*194
Tk58	 7* -78s   	2B <B B Bc                 :    U H  o R                  US 5        M     U $ r   )pop)	dict_itemdict_removalsks      r   remove_keysr!  t   s    
Qq$/-r   c                 T    SS K nUR                  R                  [        U 5      5        g )Nr   )sysr   appendr   )_pathr#  s     r   append_pathr&  x   s    u%&r   c                 ,    [        SU < SU< 3S5        g )Nz###z###: r   )log)headingfunctions     r   loggerr+  |   s    w)1-r   c                      [        S5      $ Ni'  )Windowr   r   r   kodi_windowr/     s    ur   c                 4    [        5       R                  U 5      $ r   )r/  getPropertyprops    r   r   r      s    !!$''r   c                 4    [        5       R                  X5      $ r   )r/  setProperty)r3  values     r   set_propertyr7     s    !!$..r   c                 4    [        5       R                  U 5      $ r   )r/  clearPropertyr2  s    r   clear_propertyr:     s    ##D))r   c                  2    [        5       R                  5       $ r   )r/  clearPropertiesr   r   r   clear_all_propertiesr=     s    %%''r   c                 *    [         R                  " U S9$ )N)id)r   r   addon_ids    r   addonrB     s    8$$r   c                     [        SU -  5      $ )NzSystem.HasAddon(%s)get_visibilityr@  s    r   addon_installedrF     s    ,x788r   c                     [        SU -  5      $ )NzSystem.AddonIsEnabled(%s)rD  r@  s    r   addon_enabledrH     s    2X=>>r   c                      [        S5      $ )NzContainer.Contentget_infolabelr   r   r   r  r     s    )**r   c                 *    [        U [        U   5        g r   )addSortMethodsort_method_dict)r   methods     r   set_sort_methodrP     s    v'/0r   c                 ~    SS K nUR                  5       nUR                  XR                  R	                  SS95        U$ )Nr   r  )pool_maxsize)requestsSessionmountadaptersHTTPAdapter)r   rS  sessions      r   make_sessionrY     s8    s%%11s1CDr   c                 &    [        [        U    5      $ r   )PlayListplaylist_type_dict)playlist_types    r   make_playlistr^     s    #M233r   c                     [        U S5      $ )Nr   )convertLanguage)langs    r   convert_languagerb     s    a  r   c                      [        S5      $ )Nr   )getSupportedMediar   r   r   supported_mediare     s    '""r   c                     [        U 5      $ r   )existsr   s    r   path_existsrh     s    tr   c                     [        X5      $ r   )File)_filemodes     r   	open_filerm     s    Ur   c                     [        X5      $ r   )copy)sourcedestinations     r   	copy_filerr     s    V!!r   c                     [        U 5        g r   )delete)rk  s    r   delete_fileru     s	    r   c                     [        X5        g r   )rmdir)_folderforces     r   delete_folderrz     s
    wr   c                     [        X5        g r   )rename)oldnews     r   rename_filer     s
    r   c                     [        U 5      $ r   )listdir)locations    r   	list_dirsr     s    r   c                     [        U 5        g r   )mkdirr   s    r   make_directoryr     s	    tr   c                     [        U 5        g r   )mkdirsr   s    r   make_directoriesr     s	    r   c                     [        U 5      $ r   )r   r   s    r   translate_pathr     s    dr   c                     [        U 5      $ r   )
xbmc_sleep)times    r   r  r     s    4r   c                     [        X5      $ r   )executebuiltin)commandblocks     r   r  r     s    w&&r   c                      [        5       $ r   )
getSkinDirr   r   r   current_skinr     s
    r   c                      [        5       $ r   getCurrentWindowIdr   r   r   get_window_idr     s    r   c                  (    [        [        5       5      $ r   )r.  r  r   r   r   current_window_objectr     s    }r   c                  0    [        [        S5      SS 5      $ )NzSystem.BuildVersionr   r   )intrK  r   r   r   kodi_versionr     s    M/01566r   c                  <    [        S[        [        5          -  5      $ )Nz(special://profile/Database/MyVideos%s.db)r  myvideos_db_pathsr  r   r   r   get_video_database_pathr     s    ADUVbVdDeeffr   c                      [        S5      $ )Nz"ActivateWindow(busydialognocancel)r  r   r   r   show_busy_dialogr     s    <==r   c                  0    [        S5        [        S5        g )Nz Dialog.Close(busydialognocancel)zDialog.Close(busydialog)r  r   r   r   hide_busy_dialogr     s    34+,r   c                 "    [        SU -  U5        g )NzDialog.Close(%s,true)r  )dialogr  s     r   close_dialogr     s    (6159r   c                      [        S5        g )NzDialog.Close(all,true)r  r   r   r   close_all_dialogr     s    )*r   c                      [        SU -  U5      $ )NzRunAddon(%s)r  )rB  r  s     r   	run_addonr     s    .66r   c                      S[        S5      ;  $ )Nultimate_nondebridzContainer.PluginNamerJ  r   r   r   r  r     s    M2H$IIIr   c                      [        5       S:H  $ r-  r  r   r   r   homer     s    %%r   c                      [        S5      $ )NzContainer.FolderPathrJ  r   r   r   folder_pathr     s    ,--r   c                     U [        5       ;   $ r   )r  )strings    r   
path_checkr     s    +-r   c                      [        S5        g )NzReloadSkin()r  r   r   r   reload_skinr     s
     r   c                      [        S5        g )Nz'UpdateLibrary(video,special://skin/foo)r  r   r   r   kodi_refreshr     s    :;r   c                     [        SS5        [        S5        [        SS0SS9  U S:X  a  [        SS	5        [        S
5        [	        S5        g )Nz"ultimate_nondebrid.refresh_widgetsr	      rl  r  T)r  zWidgets Refreshed	    )r7  r  
run_pluginnotificationr:  )show_notifications    r   refresh_widgetsr    sE    2F;sV^$D1.A4!Ht45r   c                 `    [        U [        5      (       a  [        U 5      n [        SU -  U5      $ )NzRunPlugin(%s)
isinstancedictr   r  paramsr  s     r   r  r  	  s*    vty'8f&0%88r   c                 `    [        U [        5      (       a  [        U 5      n [        SU -  U5      $ )NzContainer.Update(%s)r  r  s     r   container_updater    s+    vty'8f.7??r   c                 `    [        U [        5      (       a  [        U 5      n [        SU -  U5      $ )Nz ActivateWindow(Videos,%s,return)r  r  s     r   activate_windowr    s+    vty'8f:VCUKKr   c                      [        S5      $ )NzContainer.Refreshr  r   r   r   container_refreshr    s    +,,r   c                 `    [        U [        5      (       a  [        U 5      n [        SU -  U5      $ )NzContainer.Refresh(%s)r  r  s     r   container_refresh_inputr    s+    vty'8f/&8%@@r   c                 `    [        U [        5      (       a  [        U 5      n [        SU -  U5      $ )NzReplaceWindow(Videos,%s)r  r  s     r   replace_windowr    s+    vty'8f2V;UCCr   c           
          SS K n [        UR                  SSSU SS.S.5      5        [        UR                  SSSU SS.S.5      5        g !    g = f)	Nr   2.0r   zAddons.SetAddonEnabledF)addonidenabledjsonrpcr?  rO  r  T)jsonexecute_JSONdumps)
addon_namer  s     r   disable_enable_addonr     sw    tzze1@Xpz  HM  eN  O  P  Qtzze1@Xpz  HL  eM  N  O  Ps   AA Ac                  2    [        SS5        [        S5        g )NUpdateLocalAddonsTr  )r  r  r   r   r   update_local_addonsr  '  s    $d+tr   c                     SS K nSS Kn UR                  S5      nUR                  [	        S5      SS9nUR                  SU SU45        UR                  5         g !    g = f)Nr   z%Y-%m-%d %H:%M:%Szspecial://database/Addons33.db      D@timeoutzQINSERT OR REPLACE INTO installed (addonID, enabled, lastUpdated) VALUES (?, ?, ?)r   )r  sqlite3strftimeconnectr  executeclose)r  r  databasedatedbcons        r   update_kodi_addons_dbr  +  sa    	*	+$


>*JKUY

Z%--cfprsuyez{++-s   AA Ac                     SS K n[        UR                  U 5      5      nUR                  U5      nUR	                  SS 5      $ )Nr   result)r  r  r  loadsget)requestr  responser  s       r   get_jsonrpcr  5  s7    G,-
**X


8T""r   )titlefile	thumbnailc                     SSSU SUS.S.n[        U5      R                  S5       Vs/ s H*  o3S   R                  S5      (       d  M  US	   S
:X  d  M(  UPM,     nnU$ s  snf !   S n U$ = f)Nr  r   zFiles.GetDirectoryr   )	directorymedia
propertiesr  r  r   filetyper  )r  r  
startswith)r  r  r  iresultss        r   jsonrpc_get_directoryr   ;  s    A1E_hsz  KU  RV  W'044W=  E=q6AUAUVaAbghisgt  yD  hD=g  E E4s(   A" AAAA" A" "A)r  namec                 L    SSXS.SS.n[        U5      R                  S5      nU$ )Nr  zAddons.GetAddons)r(   r  1)r  rO  r  r?  addons)r  r  )_typer  r  r  s       r   jsonrpc_get_addonsr  A  s/    (:EDltwxw##H-r   c                 H    SSSSU 0S.n[        U5      S   nU$ !   Un U$ = f)Nr  r   zSettings.GetSettingValuesettingr  r6  )r  )
setting_idsetting_valuer  r  s       r   jsonrpc_get_system_settingr  F  s<    A1KXacmWno7#G,f  -s    !c                  "    SSK Jn   U " SS5        g )Nr   open_window)zwindows.settings_managerSettingsManagerzsettings_manager.xmlwindows.base_windowr  r  s    r   open_settingsr  L  s    ,<>TUr   c                  T     [        S5      n U S;   a  g [        SU -  5        g !    g = f)Nz*ultimate_nondebrid.external_scraper.module)empty_setting zAddon.OpenSettings(%s))r   r  )r  s    r   external_scraper_settingsr  P  s2    FG(&&*X56s   # # 'c                     SSK Jn  SSKJn  U" SSX=(       d
    [	        5       S9nU" UR
                  S9R                  5         U$ )Nr   )Thread)create_window)zwindows.progressProgresszprogress.xml)r)  r   )target)	threadingr  r  r  
addon_iconrunstart)r)  r   r  r  progress_dialogs        r   r   r   W  s>    . !A>[bi}q{q}~""#))+r   c                     SSK Jn  U" S0 UD6nUS / 4;   a  U$ UR                  SS5      S:X  a  U Vs/ s H  o@U   PM	     sn$ X   $ s  snf )Nr   r  multi_choicer   r	   ))windows.default_dialogsSelectz
select.xml)r  r  r  )function_listkwargsr  	selectionr  s        r   select_dialogr(  ^  sa    ,WPVW$I-
JJ~w'61U^:_U^PQ;KU^:_3_   ;`s   Ac                 *    SSK Jn  XX#US.nU" S0 UD6$ )Nr   r  )r)  textok_labelcancel_labeldefault_control))r#  Confirmzconfirm.xmlr  )r)  r*  r+  r,  r-  r  r&  s          r   confirm_dialogr/  e  s'    ,  uD  ETVTTr   c                 (    SSK Jn  XUS.nU" S0 UD6$ )Nr   r  )r)  r*  r+  ))r#  OKzok.xmlr  )r)  r*  r+  r  r&  s        r   	ok_dialogr2  j  s    ,
BJ6JJr   c                   ^ SSK Jn  U R                  SS5      R                  SS5      n U(       a"  [        USS9 ofR	                  5       nS S S 5        U(       aH  [        SS	S
S9nUS :X  a  g U(       a/  U V^s/ s H!  m[        U4S jS 5       5      (       d  M  TPM#     nnSR                  U5      nU" SSXUS9$ ! , (       d  f       Nw= fs  snf )Nr   r  z[B]r  z[/B]utf-8)encodingzShow Log Errors Only?YesNo)r*  r+  r,  c              3   H   >#    U  H  oTR                  5       ;   v   M     g 7fr   )lower).0xr  s     r   	<genexpr>show_text.<locals>.<genexpr>w  s     ,fEe!'')^Ees   ")	exceptionerrorz[test])zwindows.textviewer
TextViewerztextviewer.xml)r)  r*  	font_size)r  r  replaceopen	readlinesr/  anyjoin)	r)  r*  r  rA  kodi_logr  rconfirmr  s	           `r   	show_textrJ  o  s    ,??5"%--fb9D7#q$# 7%VZ['_fgA,fEe,f)fadg
8:JT[r{|| $# hs   B<8CC<
C
c                 \    [        5       R                  SX=(       d
    [        5       U5        g )Nz
Fen Light+)kodi_dialogr  r  )line1r  r   s      r   r  r  {  s    L%1EtLr   c                 <   ^ ^^ SS K mT R                  mUU U4S jnU$ )Nr   c                     > TR                  5       nT" U 0 UD6n[        [        < ST< 3TR                  5       U-
  5        U$ )N.)r  r+  __name__)argsr&  
started_atr  fnc_namefuncr  s       r   wraptimeIt.<locals>.wrap  s<    yy{*  &Hx	(499;+CE	-r   )r  rQ  )rU  rV  rT  r  s   ` @@r   timeItrX  ~  s    MM
 	r   c            
      P    [        S5      S:X  d  [        S5      (       a  g SSKJn   [	        [        [        S5      =(       d    S5      S5      n[        S[        U " [        S	5      R                  S
5      S   5      5      S-  S-  -
  5      U:  a  [        SU-  5        g g !    g = f)Nz/ultimate_nondebrid.playback.volumecheck_enabledr   zPlayer.Mutedr   )string_alphanum_to_numz/ultimate_nondebrid.playback.volumecheck_percent50r  zPlayer.VolumerP  <   zSetVolume(%d))
r   rE  modules.utilsrZ  minr  floatrK  splitr  )rZ  
max_volumes     r   volume_checkerrb    s    CDOSabpSqSqsy23|$UV^Z^_ade*,]?-K-Q-QRU-VWX-YZ[\^^`cc	cdgqq  tC  DS  V`  D`  taqs   B! A=B! !B%c                     [        5       nUR                  5       nUR                  U5      R                  U 5        g !    g = fr   )r  
getFocusId
getControl
selectItem)indexcurrent_windowfocus_ids      r   focus_indexrj    s8    ')%%')44U;s	    < A c                 R   U (       aK  [        [        5      R                  5        VVs/ s H   u  pUR                  S5      (       a  M  X4PM"     snn$ [        [        5      R                  5        VVs/ s H  u  pUR                  S5      (       a  M  UPM!     snn$ s  snnf s  snnf )N__)varsr   itemsr  )include_valuesr   vs      r   get_all_icon_varsrq    st    tE{/@/@/B]/Btq!,,W[J\FQF/B]]!%[..0K0TQT8Jq0KK ^Ks   BB3B#B#c                     SSK Jn   [        5         [        S5      nU " U5      nUR	                  S5      S   R
                  nUR                  n[        U   n[        SUS:X  a  SOS-  S	9(       d  g XSl        [        UR                  5       5      R                  S
S5      n[        US5       owR                  U5        S S S 5        [        SS5        [        5         [!        5         g ! , (       d  f       N/= f)Nr   )parsez?special://home/addons/plugin.video.ultimate-nondebrid/addon.xmlreuselanguageinvokerz'Turn [B]Reuse Langauage Invoker[/B] %s?r	   OnOffr*  z<?xml version="1.0" ?>r  wzActivateWindow(Home)T)xml.dom.minidomrs  r  r  getElementsByTagName
firstChilddatainvoker_switch_dictr/  strtoxmlrB  rC  writer  r  r  )mdParse	addon_xmlrootinvoker_instancecurrent_invoker_setting	new_valuenew_xmlfs           r   toggle_language_invokerr    s    -]^	--.DEaHSS+00 !89EQZ^dQdjopqsy"tzz|$$%=rB
9ca!1'. s   ,C&&
C4c                    SS K nSS KnSS/nU Vs/ s H
  nSUS   0PM     nnUR                  U5      SSS.n[        U40 UD6nUS :X  a  g Uu  p[	        US9(       d  g [        5         S	n	[        S
U-  5      n[        U5      (       d	  [        SS9$  [        U5       oR                  5       nS S S 5        S[        5       -  nUR                  U	< S< 3WR                  SSS9SU0S9R                  5       nUS   nSU;   a%   SSKJn  U" U	< U< 35        [        U	< U< 3S9  O
[        SS9   [!        5         g s  snf ! , (       d  f       N= f!    N?= f!   [        SS9   N5= f)Nr   )zCurrent Kodi Logzkodi.log)zPrevious Kodi Logzkodi.old.logrM  zChoose Which Log File to Uploadr	   )rn  r)  narrow_window)r)  zhttps://paste.kodi.tv/zspecial://logpath/%szError. Log Upload Failedrw  zFenlight %s	documentsr4  ignore)errorsz
User-Agent)r|  headerskey)	copy2clip)r  rS  r  r(  r/  r  r  rh  r2  rm  readaddon_versionpostencoder]  r  r  )r  r  rS  	log_filesr  
list_itemsr&  log_filelog_namer   r  r*  	UserAgentr  	user_coder  s                   r   upload_logfiler    sy   .0UV(12	11	2JJz*7Xkq
r).v.fx(&1H<=Hi5O&PP4amo-)]]S+6T[[Ya[=bmy  |E  mF]  G  L  L  N(uo)
h'Y'(C+,12/ 3  4 42	3sH   D=E E.AE E E (	E 
EE EE E'c                     SS K nS n UR                  [        S5      SS9nUR                  5       nUR	                  SU 45        UR                  5       S   nU$ !    U$ = f)Nr   z special://database/Textures13.dbr  r  z+SELECT cachedurl FROM texture WHERE url = ?)r  r  r  cursorr  fetchone)imager  r  r  dbcurs        r   fetch_kodi_imagecacher    sk    



>*LMW[

\%
,,.%--=xH>>A& s   AA A)folderNT)T)r   N)r   )zhttps://)r   )rH  )F)r   F)r   )r  )r  N)r  zAre you sure?r1  Cancel   )r  z
No Resultsr1  )NNsmallF)r  N)xbmcr   
xbmcpluginxbmcvfsr   osr   osPathurllib.parser   modulesr   Actor
xbmc_actorPlayerMonitorr   xbmc_playernumeric_inputxbmc_monitorr   r  r(  r  r.  rj  rg  ro  rt  rw  r|  getInfoLabelgetCondVisibilityexecuteJSONRPCWindowXMLDialogrK  rE  r  window_xml_dialogr  r  r`  rd  r[  r  DialogProgressBGprogressDialogBGr  rM  r  r  r  r  r  r  setPluginCategoryr  rF  	path_joinr   r}  
box_officenextpageempty_posternextpage_landscapetmdb_default_apitrakt_default_idtrakt_default_secretr  rN  r\  tmdb_dict_removalswith_media_removalssingle_ep_listscraper_namesrandom_valid_type_checkextras_button_label_valuesvideo_extensionsimage_extensionsr   rL  r   r  
addon_pathaddon_profiler  r   r   r   r   r   r   r   r  r	  r  r  r  r!  r&  r+  r/  r   r7  r:  r=  rB  rF  rH  r  rP  rY  r^  rb  re  rh  rm  rr  ru  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r   r(  r/  r2  rJ  r  rX  rb  rj  rq  r  r  r  r   r   r   <module>r     s   4 4 4  " **Z:>++q$,,X_XmXm:m 7]L-8?8H8H$//[_[c[celee  BI  BP  BP  9P 5*c-v,3LL'..',,X_XfXfhohuhuw~  xF  xF  -F )fdFE6AEARARTXTjTjlpll  BI  BY  BY  BY >~|->KOK^K^`d`j`jlp  mA  mA  CG  CY  CY  [_  [h  [h  Lh H
O->++ 8B8Q8QS]SkSkmtm|m|  F  L  L  NU  N\  N\  9\ 5wv?I?Z?Z\f\x\x  {E  {P  {P  R\  Rn  Rn  @n < #ZKK	
T&8  5#3#33Wu~~5M hu777 5 U Y Eu5  "QAF  1-  x  p  k|/6Xlt  MV!1Ue  ~N)my  ]ij 
mmZ m) m]H mWgiu m  xE  GO mjm"0)m=OQ^m`u  xHm?m,=?QmSk  nAm CN  PVm jm #89Im LWXkm
mox m) m]H mVfht m  wD  FN mKm!/m<NP]m_t  wGm?m,A=mRjlm BM  OUm jm #89Im LWXkm
n 8 Y  -&F
aX
pX
^8R>	+!3&1 '.(/*(%9?+14!#"' 7g>-:+7J&. !<69@L-AD# 1O  +6v)> 
V!U
K

}M	L :	E T
s   P P