diff --git a/plugin.video.alfa/channels/inkapelis.py b/plugin.video.alfa/channels/inkapelis.py
index f967d593..1172655f 100644
--- a/plugin.video.alfa/channels/inkapelis.py
+++ b/plugin.video.alfa/channels/inkapelis.py
@@ -28,6 +28,8 @@ list_language = IDIOMAS.values()
list_quality = ['Cam', 'TSHQ', 'Dvdrip', 'Blurayrip', 'HD Rip 320p', 'hd rip 320p', 'HD Real 720p', 'Full HD 1080p']
list_servers = ['openload', 'gamovideo', 'streamplay', 'streamango', 'vidoza']
+host = 'https://www.inkapelis.to/'
+
def mainlist(item):
logger.info()
@@ -35,28 +37,28 @@ def mainlist(item):
autoplay.init(item.channel, list_servers, list_quality)
itemlist = []
- itemlist.append(Item(channel=item.channel, title="Novedades", action="entradas", url="http://www.inkapelis.com/",
+ itemlist.append(Item(channel=item.channel, title="Novedades", action="entradas", url=host,
extra="Novedades", text_color=color1, thumbnail=get_thumb('newest', auto=True)))
#itemlist.append(Item(channel=item.channel, title="Estrenos", action="entradas", url="http://www.inkapelis.com/genero/estrenos/",
# text_color=color1, thumbnail=get_thumb('premieres', auto=True)))
itemlist.append(Item(channel=item.channel, title="Castellano", action="entradas",
- url="https://www.inkapelis.com/?anio=&genero=&calidad=&idioma=Castellano&s=",
+ url=host+"?anio=&genero=&calidad=&idioma=Castellano&s=",
extra="Buscar", text_color=color1, thumbnail=get_thumb('espanolas', auto=True)))
itemlist.append(Item(channel=item.channel, title="Latino", action="entradas",
- url="https://www.inkapelis.com/?anio=&genero=&calidad=&idioma=Latino&s=",
+ url=host+"?anio=&genero=&calidad=&idioma=Latino&s=",
extra="Buscar", text_color=color1, thumbnail=get_thumb('latino', auto=True)))
itemlist.append(Item(channel=item.channel, title="VOSE", action="entradas",
- url="https://www.inkapelis.com/?anio=&genero=&calidad=&idioma=Subtitulada&s=",
+ url=host+"?anio=&genero=&calidad=&idioma=Subtitulada&s=",
extra="Buscar", text_color=color1, thumbnail=get_thumb('newest', auto=True)))
- itemlist.append(Item(channel=item.channel, title="Géneros", action="generos", url="http://www.inkapelis.com/", text_color=color1,
+ itemlist.append(Item(channel=item.channel, title="Géneros", action="generos", url=host, text_color=color1,
thumbnail=get_thumb('genres', auto=True),))
- itemlist.append(Item(channel=item.channel, title="Buscar...", action="search", url="http://www.inkapelis.com/?s=", text_color=color1))
+ itemlist.append(Item(channel=item.channel, title="Buscar...", action="search", url=host+"?s=", text_color=color1))
itemlist.append(Item(channel=item.channel, action="", title=""))
itemlist.append(
- Item(channel=item.channel, action="filtro", title="Filtrar películas", url="http://www.inkapelis.com/?s=", text_color=color1))
+ Item(channel=item.channel, action="filtro", title="Filtrar películas", url=host+"?s=", text_color=color1))
# Filtros personalizados para peliculas
for i in range(1, 4):
filtros = config.get_setting("pers_peliculas" + str(i), item.channel)
@@ -65,7 +67,7 @@ def mainlist(item):
new_item = item.clone()
new_item.values = filtros
itemlist.append(
- new_item.clone(action="filtro", title=title, url="http://www.inkapelis.com/?s=", text_color=color2))
+ new_item.clone(action="filtro", title=title, url=host+"?s=", text_color=color2))
itemlist.append(Item(channel=item.channel, action="configuracion", title="Configurar canal...", text_color="gold", folder=False))
autoplay.show_option(item.channel, itemlist)
@@ -86,21 +88,21 @@ def newest(categoria):
item = Item()
try:
if categoria == "peliculas":
- item.url = "http://www.inkapelis.com/"
+ item.url = host
item.action = "entradas"
item.extra = "Novedades"
if categoria == "terror":
- item.url = "https://www.inkapelis.com/genero/terror/"
+ item.url = host+"genero/terror/"
item.action = "entradas"
if categoria == "castellano":
- item.url = "https://www.inkapelis.com/?anio=&genero=&calidad=&idioma=Castellano&s="
+ item.url = host+"?anio=&genero=&calidad=&idioma=Castellano&s="
item.extra = "Buscar"
item.action = "entradas"
if categoria == "latino":
- item.url = "https://www.inkapelis.com/?anio=&genero=&calidad=&idioma=Latino&s="
+ item.url = host+"?anio=&genero=&calidad=&idioma=Latino&s="
item.extra = "Buscar"
item.action = "entradas"
itemlist = entradas(item)
@@ -122,7 +124,7 @@ def search(item, texto):
logger.info()
itemlist = []
item.extra = "Buscar"
- item.url = "http://www.inkapelis.com/?s=%s" % texto
+ item.url = host+"?s=%s" % texto
try:
return entradas(item)
@@ -254,7 +256,7 @@ def filtrado(item, values):
item.valores = "Filtro: " + ", ".join(sorted(strings))
item.strings = ""
- item.url = "http://www.inkapelis.com/?anio=%s&genero=%s&calidad=%s&idioma=%s&s=%s" % \
+ item.url = host+"?anio=%s&genero=%s&calidad=%s&idioma=%s&s=%s" % \
(year, genero, calidad, idioma, texto)
item.extra = "Buscar"
@@ -292,7 +294,7 @@ def entradas(item):
else:
# Extrae las entradas
if item.extra == "Novedades":
- data2 = data.split("
Últimas Películas Agregadas y Actualizadas
", 1)[1]
+ data2 = data.split("Últimas Películas Agregadas y Actualizadas
", 1)[1]
entradas = scrapertools.find_multiple_matches(data2, '(.*?)
')
else:
diff --git a/plugin.video.alfa/channels/tvmoviedb.json b/plugin.video.alfa/channels/tvmoviedb.json
index e82411cb..4f07d4dc 100755
--- a/plugin.video.alfa/channels/tvmoviedb.json
+++ b/plugin.video.alfa/channels/tvmoviedb.json
@@ -15,7 +15,7 @@
"id": "tmdb",
"type": "list",
"label": "@70418",
- "default": 3,
+ "default": 4,
"enabled": true,
"visible": true,
"lvalues": [
@@ -52,7 +52,7 @@
"type": "list",
"label": "@70427",
"color": "0xFFE0F04B",
- "default": 3,
+ "default": 4,
"enabled": true,
"visible": true,
"lvalues": [
diff --git a/plugin.video.alfa/lib/alfaresolver.py b/plugin.video.alfa/lib/alfaresolver.py
index 34e59d85..6c2703c9 100644
--- a/plugin.video.alfa/lib/alfaresolver.py
+++ b/plugin.video.alfa/lib/alfaresolver.py
@@ -1 +1 @@
-import base64; exec(base64.b64decode('aW1wb3J0IG1hcnNoYWwKZXhlYyhtYXJzaGFsLmxvYWRzKGJhc2U2NC5iNjRkZWNvZGUoJ1l3QUFBQUFBQUFBQUdRQUFBRUFBQUFCejRRQUFBR1FBQUdRQkFHd0FBRm9BQUdRQUFHUUJBR3dCQUZvQkFHUUFBR1FCQUd3Q0FGb0NBR1FBQUdRQkFHd0RBRm9EQUdRQUFHUUNBR3dFQUcwRkFGb0ZBRzBHQUZvR0FBRmtBd0JsQndCbUFRQmtCQUNFQUFDREFBQlpXZ2dBWkFVQWhBQUFXZ2tBWkFZQWhBQUFXZ29BWkFjQWhBQUFXZ3NBWkFnQWhBQUFXZ3dBWkFrQWhBQUFXZzBBWndBQVpBb0FaQXNBWkF3QVpBMEFaQTRBWkE4QVpCQUFaQkVBWkJJQVpCTUFaQTRBWkJRQVpBNEFaQXNBWkJVQVpCWUFaQklBWkJjQVpCZ0FaQmtBWkE0QVpCY0FaQm9BWkJzQVp4Z0Fad0lBV2c0QVpBRUFVeWdjQUFBQWFmLy8vLzlPS0FJQUFBQjBCZ0FBQUd4dloyZGxjblFHQUFBQVkyOXVabWxuZEFZQUFBQnNiREV4YkRGakFBQUFBQUFBQUFBQ0FBQUFRZ0FBQUhNdkFBQUFaUUFBV2dFQVpBQUFoQUFBV2dJQVpBRUFoQUFBV2dNQVpBSUFaQU1BaEFFQVdnUUFaQVFBaEFBQVdnVUFVbE1vQlFBQUFHTUNBQUFBQndBQUFBVUFBQUJEQUFBQWM4VURBQUI4QVFCOEFBQmZBQUJrQVFCOEFBQmZBUUJuQUFCOEFBQmZBZ0I4QUFCcUF3Q0RBQUJjQWdCOEFBQmZCQUI4QUFCZkJRQjhBQUJxQkFCeXdRTjBCZ0JxQndCa0FnQjhBQUJxQVFBV2d3RUFhZ2dBZkFBQWFnQUFnd0VBZlFJQWVOUUFkQWtBZkFJQWd3RUFSRjNHQUZ3Q0FIMERBSDBFQUh3RUFHUURBQmxrQXdBZ1pBUUFhd0lBY3A0QWZBQUFhZ29BZkFRQVpBTUFHWU1CQUc0SEFId0VBR1FEQUJsOUJRQjhBQUJxQ3dCMERBQjhCQUJrQlFBWlpBWUFnd0lBZkFVQWd3SUFmUVlBWkFjQWZBWUFhd2NBY3ZvQWZBQUFhZ0FBYWcwQWZBUUFaQWdBR1dRSEFId0dBQmRrQndBWGd3SUFmQUFBWHdBQWNXc0FaQWtBZkFZQWF3Y0FjaTBCZkFBQWFnQUFhZzBBZkFRQVpBZ0FHV1FKQUh3R0FCZGtDUUFYZ3dJQWZBQUFYd0FBY1dzQVpBQUFVM0ZyQUZkMEJnQnFCd0JrQ2dCOEFBQnFBUUFXZ3dFQWFnZ0FmQUFBYWdBQWd3RUFmUUlBZU5RQWRBa0FmQUlBZ3dFQVJGM0dBRndDQUgwREFIMEVBSHdFQUdRREFCbGtBd0FnWkFRQWF3SUFjcGNCZkFBQWFnb0FmQVFBWkFNQUdZTUJBRzRIQUh3RUFHUURBQmw5QlFCOEFBQnFDd0IwREFCOEJBQmtCUUFaWkFZQWd3SUFmQVVBZ3dJQWZRWUFaQWNBZkFZQWF3Y0Fjdk1CZkFBQWFnQUFhZzBBZkFRQVpBZ0FHV1FMQUh3R0FCZGtDd0FYZ3dJQWZBQUFYd0FBY1dRQlpBa0FmQVlBYXdjQWNpWUNmQUFBYWdBQWFnMEFmQVFBWkFnQUdXUU1BSHdHQUJka0RBQVhnd0lBZkFBQVh3QUFjV1FCWkFBQVUzRmtBVmQwQmdCcUJ3QmtEUUI4QUFCcUFRQVdnd0VBYWdnQWZBQUFhZ0FBZ3dFQWZRSUFlS01BZEFrQWZBSUFnd0VBUkYyVkFGd0NBSDBEQUgwRUFId0FBR29MQUhRTUFId0VBR1FGQUJsa0JnQ0RBZ0JrQVFDREFnQjlCZ0JrQndCOEJnQnJCd0J5dXdKOEFBQnFBQUJxRFFCOEJBQmtDQUFaWkFjQWZBWUFGMlFIQUJlREFnQjhBQUJmQUFCeFhRSmtDUUI4QmdCckJ3Qnk3Z0o4QUFCcUFBQnFEUUI4QkFCa0NBQVpaQWtBZkFZQUYyUUpBQmVEQWdCOEFBQmZBQUJ4WFFKa0FBQlRjVjBDVjNRR0FHb0hBR1FPQUh3QUFHb0JBQmFEQVFCcUNBQjhBQUJxQUFDREFRQjlBZ0I0cGdCMENRQjhBZ0NEQVFCRVhaVUFYQUlBZlFNQWZRUUFmQUFBYWdzQWRBd0FmQVFBWkFVQUdXUUdBSU1DQUdRQkFJTUNBSDBHQUdRSEFId0dBR3NIQUhLREEzd0FBR29BQUdvTkFId0VBR1FJQUJsa0N3QjhCZ0FYWkFzQUY0TUNBSHdBQUY4QUFIRWxBMlFKQUh3R0FHc0hBSEsyQTN3QUFHb0FBR29OQUh3RUFHUUlBQmxrREFCOEJnQVhaQXdBRjRNQ0FId0FBRjhBQUhFbEEyUUFBRk54SlFOWGJnQUFaQUFBVXlnUEFBQUFUblFBQUFBQWN4NEFBQUFvSlhOY0tDY29XMTRuWFNvcEp5eGNjeW9uS0Z0ZUoxMHFLU2RjS1NscEFnQUFBSE1DQUFBQVhIaHBBUUFBQUdrUUFBQUFkQUVBQUFBbmFRQUFBQUIwQVFBQUFDSnpJZ0FBQUNnbGMxd29YRnduS0M0cVB5bGNYQ2NzWEhNcVhGd25LQzRxUHlsY1hDZGNLU2x6QWdBQUFGd25jd0lBQUFCY0luTVJBQUFBS0NWelhDZ25LRnRlSjEwcUtTZGNLU2x6RXdBQUFDZ2xjMXdvWEZ3bktDNHFQeWxjWENkY0tTa29EZ0FBQUhRRUFBQUFaR0YwWVhRSEFBQUFablZ1WTJsdmJuUUZBQUFBYkdsemRHRjBCZ0FBQUd3eGJHd3hNWFFHQUFBQWJERnNNVEV4ZEFNQUFBQnRjMmQwQWdBQUFISmxkQWNBQUFCamIyMXdhV3hsZEFjQUFBQm1hVzVrWVd4c2RBa0FBQUJsYm5WdFpYSmhkR1YwQlFBQUFIVnVhR1Y0ZEFZQUFBQnNNV3d4TVd4MEF3QUFBR2x1ZEhRSEFBQUFjbVZ3YkdGalpTZ0hBQUFBZEFRQUFBQnpaV3htVWdZQUFBQjBCZ0FBQUd4c01URXhNWFFCQUFBQWFYUUZBQUFBYldGMFkyaDBBUUFBQUhoMEJRQUFBSFpoYkc5eUtBQUFBQUFvQUFBQUFITUlBQUFBUEhOMGNtbHVaejUwQ0FBQUFGOWZhVzVwZEY5ZktRQUFBSE5PQUFBQUFBRUpBZ2tCQ1FJWUF3a0NJZ0VaQVRFQkh3SU1BU2NCREFFbkF3Z0RJZ0VaQVRFQkh3SU1BU2NCREFFbkF3Z0RJZ0VaQVI4Q0RBRW5BUXdCSndNSUF5SUJHUUVmQWd3Qkp3RU1BU2NEWXdFQUFBQUhBQUFBQlFBQUFFTUFBQUJ6QUFJQUFIUUFBR29CQUdRQkFId0FBR29DQUlNQ0FIMEJBSHdCQUhNbEFIUURBR1FDQUdZQ0FGTjhBUUJxQkFCa0F3Q0RBUUI5QWdCOEFRQnFCQUJrQkFDREFRQnFCUUJrQlFDREFRQjhBQUJmQmdCNE53QjBCd0I4QUFCcUJnQ0RBUUJFWFNZQVhBSUFmUU1BZlFRQWZBUUFhZ2dBZ3dBQVpBTUFaQVlBSVh3QUFHb0dBSHdEQUR4eFh3QlhmQUFBYWdZQVpBY0FHV1FFQUNCa0NBQnJBZ0J5MlFCNE5nQjBCd0I4QUFCcUJnQ0RBUUJFWFNJQVhBSUFmUU1BZlFRQWZBQUFhZ2tBZkFRQWd3RUFmQUFBYWdZQWZBTUFQSEd3QUZkdUFBQjhBQUJxQWdCcUNnQjhBUUJxQkFCa0J3Q0RBUUJrQWdDREFnQjhBQUJmQWdCMEFBQnFBUUJrQ1FCOEFnQVdmQUFBYWdJQVpBb0FkQUFBYWdzQWd3SUJmUUVBZkFFQWN5d0JkQU1BWkFJQVpnSUFVM1FNQUh3QkFHb0VBR1FEQUlNQkFHUUhBSU1DQUgwRkFId0FBR29DQUdvS0FId0JBR29FQUdRSEFJTUJBR1FDQUlNQ0FId0FBRjhDQUhnd0FIUU5BSHdGQUlNQkFFUmRJZ0I5QmdCOEFBQnFCZ0JxRGdCOEFBQnFCZ0JxRHdCa0J3Q0RBUUNEQVFBQmNYSUJWM1FBQUdvQkFHUUxBSHdBQUdvQ0FJTUNBSDBCQUh3QkFITzlBWFFEQUdRQ0FHWUNBRk44QVFCcUJBQmtBd0NEQVFCcUNBQ0RBQUI4QUFCZkVBQjhBQUJxQWdCcUNnQjhBUUJxQkFCa0J3Q0RBUUJrQWdDREFnQjhBQUJmQWdCMEVRQmtBZ0JtQWdCVEtBd0FBQUJPY3hvQUFBQjJZWElnS0Z4M0tpbGNjeW85WEhNcVhGc29MaW8vS1Z4ZE8xSURBQUFBYVFFQUFBQnBBZ0FBQUhRQkFBQUFMR24vLy8vL2FRQUFBQUJ6QWdBQUFGeDRjeVVBQUFCY0tHWjFibU4wYVc5dVhDZ3VLajk5WENnbGN5eGNjeW9vVzE1Y0tWMHFLVndwWENrN2RBVUFBQUJtYkdGbmMzTnVBQUFBZG1GeUlDaGNkeW9wWEhNcVBWeHpLbVoxYm1OMGFXOXVYSE1xWENoY2N5cGJYaXhkS2l4Y2N5cGJYbHdwWFNwY0tWeHpLbHg3TGlvL1hIMWNjeXBsYkhObFhIdGNjeXBjZHlwY2N5bzlYSE1xWEhjcU8xeHpLbHg5WEhNcWNtVjBkWEp1SUZ4M0tqdGNjeXBjZlRzb0VnQUFBRklNQUFBQWRBWUFBQUJ6WldGeVkyaFNCZ0FBQUhRRkFBQUFSbUZzYzJWMEJRQUFBR2R5YjNWd2RBVUFBQUJ6Y0d4cGRGSUlBQUFBVWc4QUFBQjBCUUFBQUhOMGNtbHdVaEFBQUFCU0V3QUFBSFFHQUFBQVJFOVVRVXhNVWhJQUFBQjBCUUFBQUhKaGJtZGxkQVlBQUFCaGNIQmxibVIwQXdBQUFIQnZjRklIQUFBQWRBUUFBQUJVY25WbEtBY0FBQUJTRkFBQUFIUUJBQUFBYlhRR0FBQUFibTl0WW5KbFVoWUFBQUIwQVFBQUFIWjBCZ0FBQUc1MWJXVnliMUlZQUFBQUtBQUFBQUFvQUFBQUFITUlBQUFBUEhOMGNtbHVaejVTQ1FBQUFHd0FBQUJ6TUFBQUFBQUVGUUVHQUFvQ0R3RWJBUndBSGdJWEFSd0FIUUloQmlJQkJnQUtBaGdDSVFJVEFDQUZGUUVHQUFvQ0dBSWhBbElEQUFBQVl3TUFBQUFMQUFBQUNBQUFBRU1BQUFCenZBRUFBSFFBQUh3QUFHb0JBSHdCQUJtREFRQjlBd0IwQWdCcUF3QjhBd0NEQVFCOUF3QmtBUUI5QkFCNFJBQjBCQUIwQlFCOEF3Q0RBUUNEQVFCRVhUQUFmUVVBZkFRQVpBSUFaQU1BZEFZQWRBY0FmQU1BZkFVQUdZTUJBSU1CQUdRRUFCOFhaQVVBSHhjM2ZRUUFjVHNBVjNRSUFIUUpBR29LQUh3RUFJTUJBR1FHQUlNQ0FIMERBSHdDQUdRQkFHc0NBSEtYQUh3REFGTjBCQUJrQndDREFRQjlCZ0JrQ0FCOUJ3QmtBUUI5Q0FCNFlBQjBCQUJrQndDREFRQkVYVklBZlFVQWZBY0FmQVlBZkFVQUdSZDBCd0I4QWdCOEJRQjBCUUI4QWdDREFRQVdHWU1CQUJka0J3QVdmUWNBZkFZQWZBVUFHWDBKQUh3R0FId0hBQmw4QmdCOEJRQThmQWtBZkFZQWZBY0FQSEc4QUZka0NBQjlDZ0JrQ0FCOUJ3QjRqZ0IwQkFCMEJRQjhBd0NEQVFDREFRQkVYWG9BZlFVQWZBb0FaQWtBRjJRSEFCWjlDZ0I4QndCOEJnQjhDZ0FaRjJRSEFCWjlCd0I4QmdCOENnQVpmUWtBZkFZQWZBY0FHWHdHQUh3S0FEeDhDUUI4QmdCOEJ3QThmQWdBZEFzQWRBY0FmQU1BZkFVQUdZTUJBSHdHQUh3R0FId0tBQmw4QmdCOEJ3QVpGMlFIQUJZWlFZTUJBRGQ5Q0FCeE1RRlhmQWdBYWd3QVpBWUFnd0VBVXlnS0FBQUFUbElEQUFBQWRBRUFBQUFsZEFJQUFBQXdNR2tDQUFBQWFmNy8vLzkwQkFBQUFIVjBaamhwQUFFQUFHa0FBQUFBYVFFQUFBQW9EUUFBQUhRREFBQUFjM1J5VWdnQUFBQjBCZ0FBQUdKaGMyVTJOSFFKQUFBQVlqWTBaR1ZqYjJSbFVpTUFBQUIwQXdBQUFHeGxiblFEQUFBQWFHVjRkQU1BQUFCdmNtUjBCd0FBQUhWdWFXTnZaR1YwQmdBQUFIVnliR3hwWW5RSEFBQUFkVzV4ZFc5MFpYUUdBQUFBZFc1cFkyaHlkQVlBQUFCbGJtTnZaR1VvQ3dBQUFGSVVBQUFBZEFNQUFBQnVkVzEwQVFBQUFITjBBUUFBQUhKU0dBQUFBSFFCQUFBQWVYUUJBQUFBZEhRQkFBQUFkWFFCQUFBQWQxSXBBQUFBZEFFQUFBQkJLQUFBQUFBb0FBQUFBSE1JQUFBQVBITjBjbWx1Wno1U0VRQUFBSmdBQUFCek5BQUFBQUFCRXdJUEFnWUJHUUV1QWhnQkRBQUVBZ3dCQmdBR0FSTUJLZ0VLQVE0QkRnSUdBQVlCR1FFT0FSSUJDZ0VPQVFvQk5nSmpBZ0FBQUFJQUFBQUVBQUFBUXdBQUFITVdBQUFBZEFBQWFnRUFaQUVBWkFJQWhBQUFmQUVBZ3dNQVV5Z0RBQUFBVG5NVEFBQUFYRng0VzJFdFpqQXRPVjFiWVMxbU1DMDVYV01CQUFBQUFRQUFBQUlBQUFCVEFBQUFjeGNBQUFCOEFBQnFBQUNEQUFCa0FRQWZhZ0VBWkFJQWd3RUFVeWdEQUFBQVRta0NBQUFBVWpJQUFBQW9BZ0FBQUZJZkFBQUFkQVlBQUFCa1pXTnZaR1VvQVFBQUFGSW5BQUFBS0FBQUFBQW9BQUFBQUhNSUFBQUFQSE4wY21sdVp6NTBDQUFBQUR4c1lXMWlaR0UrdXdBQUFITUFBQUFBS0FJQUFBQlNEQUFBQUhRREFBQUFjM1ZpS0FJQUFBQlNGQUFBQUhRREFBQUFkSGgwS0FBQUFBQW9BQUFBQUhNSUFBQUFQSE4wY21sdVp6NVNFQUFBQUxvQUFBQnpBZ0FBQUFBQktBWUFBQUIwQ0FBQUFGOWZibUZ0WlY5ZmRBb0FBQUJmWDIxdlpIVnNaVjlmVWhvQUFBQlNDUUFBQUZJUkFBQUFVaEFBQUFBb0FBQUFBQ2dBQUFBQUtBQUFBQUJ6Q0FBQUFEeHpkSEpwYm1jK1VnSUFBQUFuQUFBQWN3Z0FBQUFHQWdsRENTd01JbU1BQUFBQUF3QUFBQUlBQUFCREFBQUFjMklBQUFCa0FRQmtBQUJzQUFCOUFBQjBBUUJxQWdDREFBQnpIQUIwQXdCVGZBQUFhZ1FBZ3dBQWFnVUFaQUlBZ3dFQWZRRUFkQVlBYWdjQVpBTUFHWDBDQUh3QkFHUUVBR3NEQUhOV0FId0NBR1FGQUdzREFISmFBSFFJQUZOMEF3QlRaQUFBVXlnR0FBQUFUbW4vLy8vL2RBWUFBQUJoZFhSb2IzSnBBQUFBQUhNS0FBQUFRV3htWVNCQlpHUnZibk1iQUFBQWNHeDFaMmx1T2k4dmNHeDFaMmx1TG5acFpHVnZMbUZzWm1FdktBa0FBQUIwQ1FBQUFIaGliV05oWkdSdmJsSUJBQUFBZEFjQUFBQnBjMTk0WW0xalVpWUFBQUIwQlFBQUFFRmtaRzl1ZEF3QUFBQm5aWFJCWkdSdmJrbHVabTkwQXdBQUFITjVjM1FFQUFBQVlYSm5kbEllQUFBQUtBTUFBQUJTU0FBQUFGSkhBQUFBZEFvQUFBQmhaR1J2Ymw5dVlXMWxLQUFBQUFBb0FBQUFBSE1JQUFBQVBITjBjbWx1Wno1MEJBQUFBR055WVdIREFBQUFjeEFBQUFBQUFRd0NEQUVFQWhVQkRRSVlBUVFDWXdFQUFBQUdBQUFBQkFBQUFFTUFBQUJ6cHdBQUFHUUJBR1FBQUd3QUFIMEJBR1FCQUdRQUFHd0JBSDBDQUhRQ0FId0FBSU1CQUdRQ0FHc0VBSEtqQUhRREFJTUFBSE9qQUh3QkFHb0VBR1FDQUhRQ0FId0FBSU1CQUlNQ0FIMERBSFFGQUh3QUFJTUJBSDBFQUh3RUFId0RBQmw5QlFCNEtnQjhCQUI4QXdBWmZBVUFhd0lBY28wQWZBRUFhZ1lBZkFJQWFnY0Fnd0VBZkFRQWZBTUFQSEZrQUZka0F3QnFDQUI4QkFDREFRQjlBQUJ4b3dCdUFBQjhBQUJUS0FRQUFBQk9hZi8vLy85cEFBQUFBRklEQUFBQUtBa0FBQUIwQmdBQUFISmhibVJ2YlhRR0FBQUFjM1J5YVc1blVqRUFBQUJTVHdBQUFIUUhBQUFBY21GdVpHbHVkSFFFQUFBQWJHbHpkSFFHQUFBQVkyaHZhV05sZEFjQUFBQnNaWFIwWlhKemRBUUFBQUJxYjJsdUtBWUFBQUIwQXdBQUFIVnliRkpRQUFBQVVsRUFBQUIwQmdBQUFHTm9ZVzVuWlhRSUFBQUFkR1Z0Y0Y5MWNteDBBd0FBQUc5c1pDZ0FBQUFBS0FBQUFBQnpDQUFBQUR4emRISnBibWMrZEFJQUFBQmhkdElBQUFCekZnQUFBQUFCREFFTUFoSUJDUUVZQVF3QkNnRVRBUm9CRlFGakFBQUFBQVFBQUFBSUFBQUFRd0FBQUhON0FBQUFaQUVBZEFBQWF3Y0FjaEFBZEFFQVUyUUNBR1FBQUd3Q0FIMEFBSHdBQUdvREFHUURBSU1CQUgwQkFIaEpBSFFFQUVSZFFRQjlBZ0I4QVFCMEJRQnFCZ0JrQkFCcUJ3Qm5BQUI4QWdCRVhSSUFmUU1BZEFnQWZBTUFnd0VBWGdJQWNVNEFnd0VBZ3dFQWF3SUFjaklBZEFrQVUzRXlBRmQwQVFCVEtBVUFBQUJPY3c4QUFBQmhiR1poY21WemIyeDJaWEl1Y0hscC8vLy8vM01VQUFBQVEyOXVkR0ZwYm1WeUxsQnNkV2RwYms1aGJXVlNBd0FBQUNnS0FBQUFkQWdBQUFCZlgyWnBiR1ZmWDFJZUFBQUFkQVFBQUFCNFltMWpkQXdBQUFCblpYUkpibVp2VEdGaVpXeDBBZ0FBQUd3eFVpOEFBQUJTTUFBQUFGSldBQUFBZEFNQUFBQmphSEpTSmdBQUFDZ0VBQUFBVWwwQUFBQjBBUUFBQUdGU0dBQUFBRkk4QUFBQUtBQUFBQUFvQUFBQUFITUlBQUFBUEhOMGNtbHVaejUwQmdBQUFHd3hNVEZzTWVJQUFBQnpFQUFBQUFBQkRBQUVBUXdCRHdFTkFUY0FDQUZqQVFBQUFBUUFBQUFEQUFBQVF3QUFBSFBNQUFBQWRBQUFhZ0VBWkFFQWd3RUFhZ0lBZkFBQWd3RUFmUUVBZEFNQWZBRUFnd0VBWkFJQWF3UUFjbHNBZEFRQWZBRUFaQUlBR1dRQ0FCbGtBd0NEQWdCOUFnQjBCQUI4QVFCa0FnQVpaQVFBR1dRREFJTUNBSDBEQUc1bkFIUUFBR29CQUdRRkFJTUJBR29DQUh3QUFJTUJBSDBCQUhRREFId0JBSU1CQUdRQ0FHc0VBSEsyQUhRRUFId0JBR1FDQUJsa0FnQVpaQVlBZ3dJQWZRSUFkQVFBZkFFQVpBSUFHV1FFQUJsa0JnQ0RBZ0I5QXdCdURBQmtBZ0I5QWdCa0FnQjlBd0I4QWdCOEF3Qm1BZ0JUS0FjQUFBQk9jeWNBQUFBd2VDaGJNQzA1WVMxbVFTMUdYU3NwWEhNcUxGeHpLakI0S0Zzd0xUbGhMV1pCTFVaZEt5bHBBQUFBQUdrUUFBQUFhUUVBQUFCekZBQUFBRnh6S2loY1pDc3BYSE1xTEZ4ektpaGNaQ3NwYVFvQUFBQW9CUUFBQUZJTUFBQUFVZzBBQUFCU0RnQUFBRkl4QUFBQVVoSUFBQUFvQkFBQUFGSkVBQUFBVWhVQUFBQjBCUUFBQUdSbGMyUmxVamtBQUFBb0FBQUFBQ2dBQUFBQWN3Z0FBQUE4YzNSeWFXNW5QblFHQUFBQWJERXhNVEV4N1FBQUFITVdBQUFBQUFFWUFSSUJGd0VhQWhnQkVnRVhBUm9DQmdFR0FXTUNBQUFBRHdBQUFBWUFBQUJEQUFBQWMxTUNBQUIwQUFDREFBQnpEUUI4QUFCVGRBRUFhZ0lBWkFFQWd3RUFhZ01BZkFFQWd3RUFmUUlBZkFJQWN6d0FkQVFBYWdVQWZBRUFnd0VBQVh3QUFGTjBCZ0I4QWdCa0FnQVpnd0VBZlFNQWZBTUFhZ2NBYzJZQWRBUUFhZ1VBZkFFQWd3RUFBWHdBQUZOMEFRQnFBZ0JrQXdCMEFRQnFDQUNEQWdCcUF3QjhBQUNEQVFCa0FnQVpmUVFBZkFRQVpBQUFaQUFBWkFRQWhRTUFHWDBGQUhRQkFHb0pBR1FGQUdRR0FId0RBR29LQUlNREFId0RBRjhLQUhnMUFHUUhBR1FJQUdRSkFHUUtBR1FMQUdjRkFFUmRIZ0I5QmdCOEF3QnFDZ0JxQ3dCOEJnQmtEQUNEQWdCOEF3QmZDZ0J4ekFCWGRBRUFhZ0lBWkEwQWd3RUFhZ01BZkFNQWFnb0Fnd0VBZlFJQWZBSUFjaWdCZEF3QWZBSUFaQUlBR1lNQkFGd0NBSDBIQUgwSUFHNUdBSFFCQUdvQ0FHUU9BSU1CQUdvREFId0RBR29LQUlNQkFIMENBSHdDQUhKaUFYUU1BSHdDQUdRQ0FCbURBUUJjQWdCOUJ3QjlDQUJ1REFCa0FnQjlCd0JrQWdCOUNBQjhCd0JrQWdCckFnQnloQUY4QlFCOENBQWZiaE1BZkFVQWZBY0FJSHdGQUh3SEFId0lBQmNmRjMwSkFIUU5BSHdKQUlNQkFIMEtBSFFCQUdvQ0FHUVBBSU1CQUdvREFId0RBR29LQUlNQkFIMENBSHdDQUhJM0FuaHRBSHdDQUVSZFlnQmNCQUI5Q3dCOURBQjlEUUI5RGdCOERRQmtFQUJyQWdCeXpnRjhDd0I4RGdCckFnQnl6Z0Y4Q2dCMERnQjhEQUNEQVFBWmZBb0FkQTRBZkFzQWd3RUFHUUo4Q2dCMERnQjhDd0NEQVFBOGZBb0FkQTRBZkF3QWd3RUFQSEhPQVhIT0FWZHVBQUIwQVFCcUNRQjhCQUJrRVFCcUR3QjhDZ0NEQVFCOEFBQ0RBd0JUS0JJQUFBQk9jeWdBQUFBb2RtRnlJRngzSzF4ektqMWNjeXBjV3k0cVAxeGRPMXdvWm5WdVkzUnBiMjVjS0M0cVB5a0thUUFBQUFCekRRQUFBRnN3TFRsaExYcGRlelF3TEgxcC8vLy8vM01JQUFBQVhITXFYQ3RjY3lwMEFRQUFBQ3R6Q1FBQUFITndiQ2NySjJsalpYTUpBQUFBY3ljckozQnNhV05sY3drQUFBQnpjQ2NySjJ4cFkyVnpDUUFBQUhOd2JHa25LeWRqWlhNSkFBQUFjM0JzYVdNbkt5ZGxkQVlBQUFCemNHeHBZMlZ6RXdBQUFGd3VjM0JzYVdObFhDZ29XMTRwWFNzcFhDbHpGd0FBQUZ4YkozTndiR2xqWlNkY1hWd29LRnRlS1YwcktWd3BjMHdBQUFCY2R5dGNXeWhjWkNzcFhGMWNjeW85WEhNcVhIY3JYQzV6Y0d4cFkyVmNjeXBjS0NoY1pDc3BYSE1xTEZ4ektpaGNaQ3NwWEhNcUxGeHpLbHgzSzF4YktGeGtLeWxjWFZ4ektsd3BkQUVBQUFBeFVnTUFBQUFvRUFBQUFGSmlBQUFBVWd3QUFBQlNEUUFBQUZJT0FBQUFVZ0FBQUFCMEJBQUFBR2x1Wm05U0FnQUFBRklLQUFBQWRBb0FBQUJKUjA1UFVrVkRRVk5GVWtNQUFBQlNCZ0FBQUZJVEFBQUFVbVFBQUFCU1V3QUFBRklTQUFBQVVsWUFBQUFvRHdBQUFGSlhBQUFBVWdZQUFBQlNGUUFBQUhRREFBQUFibVYwZEFZQUFBQnNNVEV4TVd4MEJnQUFBR3d4TVd4c2JIUURBQUFBY21Wd1VtTUFBQUJTT1FBQUFGSVlBQUFBVWpzQUFBQjBBd0FBQUhWdWIzUURBQUFBWkc5emRBTUFBQUIwWVcxMEF3QUFBR1pwYmlnQUFBQUFLQUFBQUFCekNBQUFBRHh6ZEhKcGJtYytkQkFBQUFCa1pXTnZaR1ZmZG1sa1pXOWZkWEpzL1FBQUFITStBQUFBQUFNSkFBUUVHQUVHQVEwQkJBSVFBUWtCRFFFRUNDSUJFd01iQXh3QkhBTWJBUVlCR1FJYkFRWUJHUUlHQUFZQkxBUU1BaHNCQmdFWkFSZ0JQd05wWXdBQUFHbEhBQUFBYVhnQUFBQnBNUUFBQUdsYUFBQUFhVElBQUFCcGJBQUFBR2wxQUFBQWFVd0FBQUJwYmdBQUFHbHdBQUFBYVZZQUFBQnBkZ0FBQUdsdEFBQUFhVVlBQUFCcGN3QUFBR2xGQUFBQWFUMEFBQUFvRHdBQUFGSU1BQUFBVWt3QUFBQlNMd0FBQUZJMUFBQUFkQXdBQUFCd2JHRjBabTl5YldOdlpHVlNBQUFBQUZJQkFBQUFkQVlBQUFCdlltcGxZM1JTQWdBQUFGSlBBQUFBVWxzQUFBQlNZZ0FBQUZKa0FBQUFVbklBQUFCU1h3QUFBQ2dBQUFBQUtBQUFBQUFvQUFBQUFITUlBQUFBUEhOMGNtbHVaejUwQ0FBQUFEeHRiMlIxYkdVK0F3QUFBSE1RQUFBQU1BRVdJeGFjQ1E4SkVBa0xDUkFKUFE9PScpKSk='))
\ No newline at end of file
+import base64; exec(base64.b64decode('aW1wb3J0IG1hcnNoYWwKZXhlYyhtYXJzaGFsLmxvYWRzKGJhc2U2NC5iNjRkZWNvZGUoJ1l3QUFBQUFBQUFBQUdRQUFBRUFBQUFCekhnRUFBR1FBQUdRQkFHd0FBRm9BQUdRQUFHUUJBR3dCQUZvQkFHUUFBR1FCQUd3Q0FGb0NBR1FBQUdRQkFHd0RBRm9EQUdRQUFHUUJBR3dFQUZvRUFHUUFBR1FCQUd3RkFGb0ZBR1FBQUdRQ0FHd0dBRzBIQUZvSEFBRmtBQUJrQXdCc0JnQnRDQUJhQ0FBQlpBUUFXZ2tBWkFVQVdnb0FaQVlBV2dzQVpBY0FaUXdBWmdFQVpBZ0FoQUFBZ3dBQVdWb05BR1FKQUlRQUFGb09BR1FLQUlRQUFGb1BBR1FMQUlRQUFGb1FBR1FNQUlRQUFGb1JBR1FOQUlRQUFGb1NBR1FPQUlRQUFGb1RBR2NBQUdRUEFHUVFBR1FSQUdRU0FHUVRBR1FVQUdRVkFHUVdBR1FYQUdRWUFHUVRBR1FaQUdRVEFHUVFBR1FhQUdRYkFHUVhBR1FjQUdRZEFHUWVBR1FUQUdRY0FHUWZBR1FnQUdjWUFHY0NBRm9VQUdRQkFGTW9JUUFBQUduLy8vLy9UaWdCQUFBQWRBWUFBQUJqYjI1bWFXY29BUUFBQUhRR0FBQUFiRzluWjJWeWFRd0FBQUJwQkFBQUFHbmpCd0FBZEFZQUFBQnNiREV4Ykd4akFBQUFBQUFBQUFBQ0FBQUFRZ0FBQUhNdkFBQUFaUUFBV2dFQVpBQUFoQUFBV2dJQVpBRUFoQUFBV2dNQVpBSUFaQU1BaEFFQVdnUUFaQVFBaEFBQVdnVUFVbE1vQlFBQUFHTUNBQUFBQndBQUFBVUFBQUJEQUFBQWM4VURBQUI4QVFCOEFBQmZBQUJrQVFCOEFBQmZBUUJuQUFCOEFBQmZBZ0I4QUFCcUF3Q0RBQUJjQWdCOEFBQmZCQUI4QUFCZkJRQjhBQUJxQkFCeXdRTjBCZ0JxQndCa0FnQjhBQUJxQVFBV2d3RUFhZ2dBZkFBQWFnQUFnd0VBZlFJQWVOUUFkQWtBZkFJQWd3RUFSRjNHQUZ3Q0FIMERBSDBFQUh3RUFHUURBQmxrQXdBZ1pBUUFhd0lBY3A0QWZBQUFhZ29BZkFRQVpBTUFHWU1CQUc0SEFId0VBR1FEQUJsOUJRQjhBQUJxQ3dCMERBQjhCQUJrQlFBWlpBWUFnd0lBZkFVQWd3SUFmUVlBWkFjQWZBWUFhd2NBY3ZvQWZBQUFhZ0FBYWcwQWZBUUFaQWdBR1dRSEFId0dBQmRrQndBWGd3SUFmQUFBWHdBQWNXc0FaQWtBZkFZQWF3Y0FjaTBCZkFBQWFnQUFhZzBBZkFRQVpBZ0FHV1FKQUh3R0FCZGtDUUFYZ3dJQWZBQUFYd0FBY1dzQVpBQUFVM0ZyQUZkMEJnQnFCd0JrQ2dCOEFBQnFBUUFXZ3dFQWFnZ0FmQUFBYWdBQWd3RUFmUUlBZU5RQWRBa0FmQUlBZ3dFQVJGM0dBRndDQUgwREFIMEVBSHdFQUdRREFCbGtBd0FnWkFRQWF3SUFjcGNCZkFBQWFnb0FmQVFBWkFNQUdZTUJBRzRIQUh3RUFHUURBQmw5QlFCOEFBQnFDd0IwREFCOEJBQmtCUUFaWkFZQWd3SUFmQVVBZ3dJQWZRWUFaQWNBZkFZQWF3Y0Fjdk1CZkFBQWFnQUFhZzBBZkFRQVpBZ0FHV1FMQUh3R0FCZGtDd0FYZ3dJQWZBQUFYd0FBY1dRQlpBa0FmQVlBYXdjQWNpWUNmQUFBYWdBQWFnMEFmQVFBWkFnQUdXUU1BSHdHQUJka0RBQVhnd0lBZkFBQVh3QUFjV1FCWkFBQVUzRmtBVmQwQmdCcUJ3QmtEUUI4QUFCcUFRQVdnd0VBYWdnQWZBQUFhZ0FBZ3dFQWZRSUFlS01BZEFrQWZBSUFnd0VBUkYyVkFGd0NBSDBEQUgwRUFId0FBR29MQUhRTUFId0VBR1FGQUJsa0JnQ0RBZ0JrQVFDREFnQjlCZ0JrQndCOEJnQnJCd0J5dXdKOEFBQnFBQUJxRFFCOEJBQmtDQUFaWkFjQWZBWUFGMlFIQUJlREFnQjhBQUJmQUFCeFhRSmtDUUI4QmdCckJ3Qnk3Z0o4QUFCcUFBQnFEUUI4QkFCa0NBQVpaQWtBZkFZQUYyUUpBQmVEQWdCOEFBQmZBQUJ4WFFKa0FBQlRjVjBDVjNRR0FHb0hBR1FPQUh3QUFHb0JBQmFEQVFCcUNBQjhBQUJxQUFDREFRQjlBZ0I0cGdCMENRQjhBZ0NEQVFCRVhaVUFYQUlBZlFNQWZRUUFmQUFBYWdzQWRBd0FmQVFBWkFVQUdXUUdBSU1DQUdRQkFJTUNBSDBHQUdRSEFId0dBR3NIQUhLREEzd0FBR29BQUdvTkFId0VBR1FJQUJsa0N3QjhCZ0FYWkFzQUY0TUNBSHdBQUY4QUFIRWxBMlFKQUh3R0FHc0hBSEsyQTN3QUFHb0FBR29OQUh3RUFHUUlBQmxrREFCOEJnQVhaQXdBRjRNQ0FId0FBRjhBQUhFbEEyUUFBRk54SlFOWGJnQUFaQUFBVXlnUEFBQUFUblFBQUFBQWN4NEFBQUFvSlhOY0tDY29XMTRuWFNvcEp5eGNjeW9uS0Z0ZUoxMHFLU2RjS1NscEFnQUFBSE1DQUFBQVhIaHBBUUFBQUdrUUFBQUFkQUVBQUFBbmFRQUFBQUIwQVFBQUFDSnpJZ0FBQUNnbGMxd29YRnduS0M0cVB5bGNYQ2NzWEhNcVhGd25LQzRxUHlsY1hDZGNLU2x6QWdBQUFGd25jd0lBQUFCY0luTVJBQUFBS0NWelhDZ25LRnRlSjEwcUtTZGNLU2x6RXdBQUFDZ2xjMXdvWEZ3bktDNHFQeWxjWENkY0tTa29EZ0FBQUhRRUFBQUFaR0YwWVhRSEFBQUFablZ1WTJsdmJuUUZBQUFBYkdsemRHRjBCZ0FBQUd3eE1URnNiSFFHQUFBQWJERXhiREV4ZEFNQUFBQnRjMmQwQWdBQUFISmxkQWNBQUFCamIyMXdhV3hsZEFjQUFBQm1hVzVrWVd4c2RBa0FBQUJsYm5WdFpYSmhkR1YwQlFBQUFIVnVhR1Y0ZEFZQUFBQnNiR3d4Ykd4MEF3QUFBR2x1ZEhRSEFBQUFjbVZ3YkdGalpTZ0hBQUFBZEFRQUFBQnpaV3htVWdZQUFBQjBCZ0FBQUd3eE1URXhNWFFCQUFBQWFYUUZBQUFBYldGMFkyaDBBUUFBQUhoMEJRQUFBSFpoYkc5eUtBQUFBQUFvQUFBQUFITUlBQUFBUEhOMGNtbHVaejUwQ0FBQUFGOWZhVzVwZEY5Zk1nQUFBSE5PQUFBQUFBRUpBZ2tCQ1FJWUF3a0NJZ0VaQVRFQkh3SU1BU2NCREFFbkF3Z0RJZ0VaQVRFQkh3SU1BU2NCREFFbkF3Z0RJZ0VaQVI4Q0RBRW5BUXdCSndNSUF5SUJHUUVmQWd3Qkp3RU1BU2NEWXdFQUFBQUhBQUFBQlFBQUFFTUFBQUJ6QUFJQUFIUUFBR29CQUdRQkFId0FBR29DQUlNQ0FIMEJBSHdCQUhNbEFIUURBR1FDQUdZQ0FGTjhBUUJxQkFCa0F3Q0RBUUI5QWdCOEFRQnFCQUJrQkFDREFRQnFCUUJrQlFDREFRQjhBQUJmQmdCNE53QjBCd0I4QUFCcUJnQ0RBUUJFWFNZQVhBSUFmUU1BZlFRQWZBUUFhZ2dBZ3dBQVpBTUFaQVlBSVh3QUFHb0dBSHdEQUR4eFh3QlhmQUFBYWdZQVpBY0FHV1FFQUNCa0NBQnJBZ0J5MlFCNE5nQjBCd0I4QUFCcUJnQ0RBUUJFWFNJQVhBSUFmUU1BZlFRQWZBQUFhZ2tBZkFRQWd3RUFmQUFBYWdZQWZBTUFQSEd3QUZkdUFBQjhBQUJxQWdCcUNnQjhBUUJxQkFCa0J3Q0RBUUJrQWdDREFnQjhBQUJmQWdCMEFBQnFBUUJrQ1FCOEFnQVdmQUFBYWdJQVpBb0FkQUFBYWdzQWd3SUJmUUVBZkFFQWN5d0JkQU1BWkFJQVpnSUFVM1FNQUh3QkFHb0VBR1FEQUlNQkFHUUhBSU1DQUgwRkFId0FBR29DQUdvS0FId0JBR29FQUdRSEFJTUJBR1FDQUlNQ0FId0FBRjhDQUhnd0FIUU5BSHdGQUlNQkFFUmRJZ0I5QmdCOEFBQnFCZ0JxRGdCOEFBQnFCZ0JxRHdCa0J3Q0RBUUNEQVFBQmNYSUJWM1FBQUdvQkFHUUxBSHdBQUdvQ0FJTUNBSDBCQUh3QkFITzlBWFFEQUdRQ0FHWUNBRk44QVFCcUJBQmtBd0NEQVFCcUNBQ0RBQUI4QUFCZkVBQjhBQUJxQWdCcUNnQjhBUUJxQkFCa0J3Q0RBUUJrQWdDREFnQjhBQUJmQWdCMEVRQmtBZ0JtQWdCVEtBd0FBQUJPY3hvQUFBQjJZWElnS0Z4M0tpbGNjeW85WEhNcVhGc29MaW8vS1Z4ZE8xSURBQUFBYVFFQUFBQnBBZ0FBQUhRQkFBQUFMR24vLy8vL2FRQUFBQUJ6QWdBQUFGeDRjeVVBQUFCY0tHWjFibU4wYVc5dVhDZ3VLajk5WENnbGN5eGNjeW9vVzE1Y0tWMHFLVndwWENrN2RBVUFBQUJtYkdGbmMzTnVBQUFBZG1GeUlDaGNkeW9wWEhNcVBWeHpLbVoxYm1OMGFXOXVYSE1xWENoY2N5cGJYaXhkS2l4Y2N5cGJYbHdwWFNwY0tWeHpLbHg3TGlvL1hIMWNjeXBsYkhObFhIdGNjeXBjZHlwY2N5bzlYSE1xWEhjcU8xeHpLbHg5WEhNcWNtVjBkWEp1SUZ4M0tqdGNjeXBjZlRzb0VnQUFBRklNQUFBQWRBWUFBQUJ6WldGeVkyaFNCZ0FBQUhRRkFBQUFSbUZzYzJWMEJRQUFBR2R5YjNWd2RBVUFBQUJ6Y0d4cGRGSUlBQUFBVWc4QUFBQjBCUUFBQUhOMGNtbHdVaEFBQUFCU0V3QUFBSFFHQUFBQVJFOVVRVXhNVWhJQUFBQjBCUUFBQUhKaGJtZGxkQVlBQUFCaGNIQmxibVIwQXdBQUFIQnZjRklIQUFBQWRBUUFBQUJVY25WbEtBY0FBQUJTRkFBQUFIUUJBQUFBYlhRR0FBQUFibTl0WW5KbFVoWUFBQUIwQVFBQUFIWjBCZ0FBQUc1MWJXVnliMUlZQUFBQUtBQUFBQUFvQUFBQUFITUlBQUFBUEhOMGNtbHVaejVTQ1FBQUFIVUFBQUJ6TUFBQUFBQUVGUUVHQUFvQ0R3RWJBUndBSGdJWEFSd0FIUUloQmlJQkJnQUtBaGdDSVFJVEFDQUZGUUVHQUFvQ0dBSWhBbElEQUFBQVl3TUFBQUFMQUFBQUNBQUFBRU1BQUFCenZBRUFBSFFBQUh3QUFHb0JBSHdCQUJtREFRQjlBd0IwQWdCcUF3QjhBd0NEQVFCOUF3QmtBUUI5QkFCNFJBQjBCQUIwQlFCOEF3Q0RBUUNEQVFCRVhUQUFmUVVBZkFRQVpBSUFaQU1BZEFZQWRBY0FmQU1BZkFVQUdZTUJBSU1CQUdRRUFCOFhaQVVBSHhjM2ZRUUFjVHNBVjNRSUFIUUpBR29LQUh3RUFJTUJBR1FHQUlNQ0FIMERBSHdDQUdRQkFHc0NBSEtYQUh3REFGTjBCQUJrQndDREFRQjlCZ0JrQ0FCOUJ3QmtBUUI5Q0FCNFlBQjBCQUJrQndDREFRQkVYVklBZlFVQWZBY0FmQVlBZkFVQUdSZDBCd0I4QWdCOEJRQjBCUUI4QWdDREFRQVdHWU1CQUJka0J3QVdmUWNBZkFZQWZBVUFHWDBKQUh3R0FId0hBQmw4QmdCOEJRQThmQWtBZkFZQWZBY0FQSEc4QUZka0NBQjlDZ0JrQ0FCOUJ3QjRqZ0IwQkFCMEJRQjhBd0NEQVFDREFRQkVYWG9BZlFVQWZBb0FaQWtBRjJRSEFCWjlDZ0I4QndCOEJnQjhDZ0FaRjJRSEFCWjlCd0I4QmdCOENnQVpmUWtBZkFZQWZBY0FHWHdHQUh3S0FEeDhDUUI4QmdCOEJ3QThmQWdBZEFzQWRBY0FmQU1BZkFVQUdZTUJBSHdHQUh3R0FId0tBQmw4QmdCOEJ3QVpGMlFIQUJZWlFZTUJBRGQ5Q0FCeE1RRlhmQWdBYWd3QVpBWUFnd0VBVXlnS0FBQUFUbElEQUFBQWRBRUFBQUFsZEFJQUFBQXdNR2tDQUFBQWFmNy8vLzkwQkFBQUFIVjBaamhwQUFFQUFHa0FBQUFBYVFFQUFBQW9EUUFBQUhRREFBQUFjM1J5VWdnQUFBQjBCZ0FBQUdKaGMyVTJOSFFKQUFBQVlqWTBaR1ZqYjJSbFVpTUFBQUIwQXdBQUFHeGxiblFEQUFBQWFHVjRkQU1BQUFCdmNtUjBCd0FBQUhWdWFXTnZaR1YwQmdBQUFIVnliR3hwWW5RSEFBQUFkVzV4ZFc5MFpYUUdBQUFBZFc1cFkyaHlkQVlBQUFCbGJtTnZaR1VvQ3dBQUFGSVVBQUFBZEFNQUFBQnVkVzEwQVFBQUFITjBBUUFBQUhKU0dBQUFBSFFCQUFBQWVYUUJBQUFBZEhRQkFBQUFkWFFCQUFBQWQxSXBBQUFBZEFFQUFBQkJLQUFBQUFBb0FBQUFBSE1JQUFBQVBITjBjbWx1Wno1U0VRQUFBS0VBQUFCek5BQUFBQUFCRXdJUEFnWUJHUUV1QWhnQkRBQUVBZ3dCQmdBR0FSTUJLZ0VLQVE0QkRnSUdBQVlCR1FFT0FSSUJDZ0VPQVFvQk5nSmpBZ0FBQUFJQUFBQUVBQUFBUXdBQUFITVdBQUFBZEFBQWFnRUFaQUVBWkFJQWhBQUFmQUVBZ3dNQVV5Z0RBQUFBVG5NVEFBQUFYRng0VzJFdFpqQXRPVjFiWVMxbU1DMDVYV01CQUFBQUFRQUFBQUlBQUFCVEFBQUFjeGNBQUFCOEFBQnFBQUNEQUFCa0FRQWZhZ0VBWkFJQWd3RUFVeWdEQUFBQVRta0NBQUFBVWpJQUFBQW9BZ0FBQUZJZkFBQUFkQVlBQUFCa1pXTnZaR1VvQVFBQUFGSW5BQUFBS0FBQUFBQW9BQUFBQUhNSUFBQUFQSE4wY21sdVp6NTBDQUFBQUR4c1lXMWlaR0UreEFBQUFITUFBQUFBS0FJQUFBQlNEQUFBQUhRREFBQUFjM1ZpS0FJQUFBQlNGQUFBQUhRREFBQUFkSGgwS0FBQUFBQW9BQUFBQUhNSUFBQUFQSE4wY21sdVp6NVNFQUFBQU1NQUFBQnpBZ0FBQUFBQktBWUFBQUIwQ0FBQUFGOWZibUZ0WlY5ZmRBb0FBQUJmWDIxdlpIVnNaVjlmVWhvQUFBQlNDUUFBQUZJUkFBQUFVaEFBQUFBb0FBQUFBQ2dBQUFBQUtBQUFBQUJ6Q0FBQUFEeHpkSEpwYm1jK1VnSUFBQUF3QUFBQWN3Z0FBQUFHQWdsRENTd01JbU1BQUFBQUF3QUFBQUlBQUFCREFBQUFjMFlBQUFCa0FRQmtBQUJzQUFCOUFBQjhBQUJxQVFDREFBQnFBZ0JrQWdDREFRQjlBUUIwQXdCcUJBQmtBd0FaZlFJQWZBRUFaQVFBYXdNQWNqNEFkQVVBVTNRR0FGTmtBQUJUS0FVQUFBQk9hZi8vLy85MEJnQUFBR0YxZEdodmNta0FBQUFBY3dvQUFBQkJiR1poSUVGa1pHOXVLQWNBQUFCMENRQUFBSGhpYldOaFpHUnZiblFGQUFBQVFXUmtiMjUwREFBQUFHZGxkRUZrWkc5dVNXNW1iM1FEQUFBQWMzbHpkQVFBQUFCaGNtZDJVaDRBQUFCU0pnQUFBQ2dEQUFBQVVrZ0FBQUJTUndBQUFIUUtBQUFBWVdSa2IyNWZibUZ0WlNnQUFBQUFLQUFBQUFCekNBQUFBRHh6ZEhKcGJtYytkQWNBQUFCMWNHUmhkR1ZrekFBQUFITU1BQUFBQUFJTUFSVUJEUUlNQVFRQ1l3QUFBQUFMQUFBQUJRQUFBRU1BQUFCekx3RUFBR1FCQUdRQUFHd0FBSDBBQUdRQkFHUUFBR3dCQUgwQkFHUUJBR1FBQUd3Q0FIMENBSFFEQUgwREFIUUVBR29FQUdvRkFJTUFBSDBFQUh3QkFHb0dBSHdDQUdvSEFHUUNBR1FEQUlNQUFXb0lBR1FFQUlNQkFJTUJBSDBGQUhRSkFHb0tBR29MQUh3RkFHUUZBR1FHQUlNREFIMEdBR1FIQUhRTUFId0dBSU1CQUdvTkFJTUFBR3NIQUhJckFYd0VBR29PQUhRT0FHc0ZBSElyQVh3RUFHb1BBSFFQQUdzRkFISXJBWHdFQUdvUUFIUVFBR3NGQUhJckFYd0RBQXh5S3dGa0NBQjlCd0JrQ1FCa0VBQVhaQXdBRjJRUkFCZGtEUUFYZlFnQWVFZ0FkQkVBZkFBQWFoSUFmQVlBWkE0QVpBOEFnd0VCZ3dFQVJGMG9BRndDQUgwSkFIMEtBSFFUQUdvVUFHb1ZBSHdLQUdvV0FId0hBSHdJQUlNQ0FJTUJBQUZ4K1FCWGNTc0JiZ0FBWkFBQVV5Z1NBQUFBVG1uLy8vLy9kQUlBQUFCcFpITVJBQUFBY0d4MVoybHVMblpwWkdWdkxtRnNabUYwQkFBQUFGQmhkR2gwREFBQUFIQnNZWFJtYjNKdFkyOWtaWE1RQUFBQWNHeGhkR1p2Y20xMGIyOXNjeTV3ZVhNbEFBQUFabkp2YlNCc2FXSXVZV3htWVhKbGMyOXNkbVZ5SUdsdGNHOXlkQ0JuWlhSZmFXNW1iM01uQUFBQUl5QnpaU0J2WW5ScFpXNWxJR3hoSUdsdVptOXliV0ZqYWNPemJpQmtaV3dnZG1sa1pXOHVjeWdBQUFBaklITmxJRzlpZEdsbGJtVWdiR0VnYVc1bWIzSnRZV05wdzdOdUlHUmxiQ0IyYVdSbGJ5NEtkQUVBQUFBZ2FRUUFBQUJ6SmdBQUFHWnliMjBnYkdsaUxtRnNabUZ5WlhOdmJIWmxjaUJwYlhCdmNuUWdaMlYwWDJsdVptOEtjeHNBQUFCdFpXUnBZWFZ5YkQxblpYUmZhVzVtYnlodFpXUnBZWFZ5YkNsMEJ3QUFBR2x1Y0d4aFkyVnBBUUFBQUhNRUFBQUFJQ0FnSUhNRUFBQUFJQ0FnSUNnWEFBQUFkQWtBQUFCbWFXeGxhVzV3ZFhSMEJBQUFBSGhpYldOU1NBQUFBRkllQUFBQWRBZ0FBQUJrWVhSbGRHbHRaWFFEQUFBQWJtOTNkQTBBQUFCMGNtRnVjMnhoZEdWUVlYUm9Va2tBQUFCU1NnQUFBSFFDQUFBQWIzTjBCQUFBQUhCaGRHaDBCQUFBQUdwdmFXNTBCQUFBQUc5d1pXNTBCQUFBQUhKbFlXUjBBd0FBQUdSaGVYUUZBQUFBYlc5dWRHaDBCQUFBQUhsbFlYSlNEd0FBQUhRRkFBQUFhVzV3ZFhSU1N3QUFBSFFHQUFBQWMzUmtiM1YwZEFVQUFBQjNjbWwwWlZJVEFBQUFLQXNBQUFCU1ZBQUFBRkpWQUFBQVVrZ0FBQUIwQndBQUFIQmhkR05vWldSMEJBQUFBR1JoZEdWMENnQUFBR0ZrWkc5dVgzQmhkR2gwQ1FBQUFHWnBiR1ZmY0dGMGFIUUpBQUFBY21WaGJGOTBaWGgwZEFnQUFBQnVaWGRmZEdWNGRGSVdBQUFBZEFRQUFBQnNhVzVsS0FBQUFBQW9BQUFBQUhNSUFBQUFQSE4wY21sdVp6NTBDZ0FBQUhWd1pHRjBaVjl1YjNmWEFBQUFjeDRBQUFBQUFRd0JEQUVNQVFZQkR3RWtBUmdCR0FFMEFRWUJEd0VIQVNnQkpnRmpBUUFBQUFjQUFBQUVBQUFBUXdBQUFIUExBQUFBWkFFQVpBQUFiQUFBZlFFQVpBRUFaQUFBYkFFQWZRSUFkQUlBYWdJQWFnTUFnd0FBZlFNQWZBTUFhZ1FBZEFRQWF3VUFjc2NBZkFNQWFnVUFkQVVBYXdVQWNzY0FkQVlBZkFBQWd3RUFaQUlBYXdRQWNzY0FmQUVBYWdjQVpBSUFkQVlBZkFBQWd3RUFnd0lBZlFRQWRBZ0FmQUFBZ3dFQWZRVUFmQVVBZkFRQUdYMEdBSGdxQUh3RkFId0VBQmw4QmdCckFnQnlzUUI4QVFCcUNRQjhBZ0JxQ2dDREFRQjhCUUI4QkFBOGNZZ0FWMlFEQUdvTEFId0ZBSU1CQUgwQUFISEhBRzRBQUh3QUFGTW9CQUFBQUU1cC8vLy8vMmtBQUFBQVVnTUFBQUFvREFBQUFIUUdBQUFBY21GdVpHOXRkQVlBQUFCemRISnBibWRTVmdBQUFGSlhBQUFBVWw4QUFBQlNZQUFBQUZJeEFBQUFkQWNBQUFCeVlXNWthVzUwZEFRQUFBQnNhWE4wZEFZQUFBQmphRzlwWTJWMEJ3QUFBR3hsZEhSbGNuTlNXd0FBQUNnSEFBQUFkQU1BQUFCMWNteFNiQUFBQUZKdEFBQUFVbVVBQUFCMEJnQUFBR05vWVc1blpYUUlBQUFBZEdWdGNGOTFjbXgwQXdBQUFHOXNaQ2dBQUFBQUtBQUFBQUJ6Q0FBQUFEeHpkSEpwYm1jK2RBZ0FBQUJuWlhSZmFXNW1iK2tBQUFCekdBQUFBQUFCREFFTUFROEJIZ0VTQVJnQkRBRUtBUk1CR2dFVkFXTUFBQUFBQkFBQUFBZ0FBQUJEQUFBQWMzc0FBQUJrQVFCMEFBQnJCd0J5RUFCMEFRQlRaQUlBWkFBQWJBSUFmUUFBZkFBQWFnTUFaQU1BZ3dFQWZRRUFlRWtBZEFRQVJGMUJBSDBDQUh3QkFIUUZBR29HQUdRRUFHb0hBR2NBQUh3Q0FFUmRFZ0I5QXdCMENBQjhBd0NEQVFCZUFnQnhUZ0NEQVFDREFRQnJBZ0J5TWdCMENRQlRjVElBVjNRQkFGTW9CUUFBQUU1ekR3QUFBR0ZzWm1GeVpYTnZiSFpsY2k1d2VXbi8vLy8vY3hRQUFBQkRiMjUwWVdsdVpYSXVVR3gxWjJsdVRtRnRaVklEQUFBQUtBb0FBQUIwQ0FBQUFGOWZabWxzWlY5ZlVoNEFBQUJTVlFBQUFIUU1BQUFBWjJWMFNXNW1iMHhoWW1Wc2RBSUFBQUJzTVZJdkFBQUFVakFBQUFCU1d3QUFBSFFEQUFBQVkyaHlVaVlBQUFBb0JBQUFBRkpWQUFBQWRBRUFBQUJoVWhnQUFBQlNQQUFBQUNnQUFBQUFLQUFBQUFCekNBQUFBRHh6ZEhKcGJtYytkQVlBQUFCc2JERXhNV3o1QUFBQWN4QUFBQUFBQVF3QUJBRU1BUThCRFFFM0FBZ0JZd0VBQUFBRUFBQUFBd0FBQUVNQUFBQnp6QUFBQUhRQUFHb0JBR1FCQUlNQkFHb0NBSHdBQUlNQkFIMEJBSFFEQUh3QkFJTUJBR1FDQUdzRUFISmJBSFFFQUh3QkFHUUNBQmxrQWdBWlpBTUFnd0lBZlFJQWRBUUFmQUVBWkFJQUdXUUVBQmxrQXdDREFnQjlBd0J1WndCMEFBQnFBUUJrQlFDREFRQnFBZ0I4QUFDREFRQjlBUUIwQXdCOEFRQ0RBUUJrQWdCckJBQnl0Z0IwQkFCOEFRQmtBZ0FaWkFJQUdXUUdBSU1DQUgwQ0FIUUVBSHdCQUdRQ0FCbGtCQUFaWkFZQWd3SUFmUU1BYmd3QVpBSUFmUUlBWkFJQWZRTUFmQUlBZkFNQVpnSUFVeWdIQUFBQVRuTW5BQUFBTUhnb1d6QXRPV0V0WmtFdFJsMHJLVnh6S2l4Y2N5b3dlQ2hiTUMwNVlTMW1RUzFHWFNzcGFRQUFBQUJwRUFBQUFHa0JBQUFBY3hRQUFBQmNjeW9vWEdRcktWeHpLaXhjY3lvb1hHUXJLV2tLQUFBQUtBVUFBQUJTREFBQUFGSU5BQUFBVWc0QUFBQlNNUUFBQUZJU0FBQUFLQVFBQUFCU1JBQUFBRklWQUFBQWRBVUFBQUJrWlhOa1pWSTVBQUFBS0FBQUFBQW9BQUFBQUhNSUFBQUFQSE4wY21sdVp6NTBCZ0FBQUd4c2JHd3hNUVFCQUFCekZnQUFBQUFCR0FFU0FSY0JHZ0lZQVJJQkZ3RWFBZ1lCQmdGakFnQUFBQThBQUFBR0FBQUFRd0FBQUhOakFnQUFkQUFBZ3dBQWN3MEFmQUFBVTNRQkFHb0NBR1FCQUlNQkFHb0RBSHdCQUlNQkFIMENBSHdDQUhNOEFIUUVBR29GQUh3QkFJTUJBQUY4QUFCVGRBWUFmQUlBWkFJQUdZTUJBSDBEQUh3REFHb0hBSE5tQUhRRUFHb0ZBSHdCQUlNQkFBRjhBQUJUZEFRQWFnVUFmQU1BYWdnQWd3RUFBWFFCQUdvQ0FHUURBSFFCQUdvSkFJTUNBR29EQUh3QUFJTUJBR1FDQUJsOUJBQjhCQUJrQUFCa0FBQmtCQUNGQXdBWmZRVUFkQUVBYWdvQVpBVUFaQVlBZkFNQWFnZ0Fnd01BZkFNQVh3Z0FlRFVBWkFjQVpBZ0FaQWtBWkFvQVpBc0Fad1VBUkYwZUFIMEdBSHdEQUdvSUFHb0xBSHdHQUdRTUFJTUNBSHdEQUY4SUFISGNBRmQwQVFCcUFnQmtEUUNEQVFCcUF3QjhBd0JxQ0FDREFRQjlBZ0I4QWdCeU9BRjBEQUI4QWdCa0FnQVpnd0VBWEFJQWZRY0FmUWdBYmtZQWRBRUFhZ0lBWkE0QWd3RUFhZ01BZkFNQWFnZ0Fnd0VBZlFJQWZBSUFjbklCZEF3QWZBSUFaQUlBR1lNQkFGd0NBSDBIQUgwSUFHNE1BR1FDQUgwSEFHUUNBSDBJQUh3SEFHUUNBR3NDQUhLVUFYd0ZBSHdJQUI5dUV3QjhCUUI4QndBZ2ZBVUFmQWNBZkFnQUZ4OFhmUWtBZEEwQWZBa0Fnd0VBZlFvQWRBRUFhZ0lBWkE4QWd3RUFhZ01BZkFNQWFnZ0Fnd0VBZlFJQWZBSUFja2NDZUcwQWZBSUFSRjFpQUZ3RUFIMExBSDBNQUgwTkFIME9BSHdOQUdRUUFHc0NBSExlQVh3TEFId09BR3NDQUhMZUFYd0tBSFFPQUh3TUFJTUJBQmw4Q2dCMERnQjhDd0NEQVFBWkFud0tBSFFPQUh3TEFJTUJBRHg4Q2dCMERnQjhEQUNEQVFBOGNkNEJjZDRCVjI0QUFIUUJBR29LQUh3RUFHUVJBR29QQUh3S0FJTUJBSHdBQUlNREFGTW9FZ0FBQUU1ektBQUFBQ2gyWVhJZ1hIY3JYSE1xUFZ4ektseGJMaW8vWEYwN1hDaG1kVzVqZEdsdmJsd29MaW8vS1FwcEFBQUFBSE1OQUFBQVd6QXRPV0V0ZWwxN05EQXNmV24vLy8vL2N3Z0FBQUJjY3lwY0sxeHpLblFCQUFBQUszTUpBQUFBYzNCc0p5c25hV05sY3drQUFBQnpKeXNuY0d4cFkyVnpDUUFBQUhOd0p5c25iR2xqWlhNSkFBQUFjM0JzYVNjckoyTmxjd2tBQUFCemNHeHBZeWNySjJWMEJnQUFBSE53YkdsalpYTVRBQUFBWEM1emNHeHBZMlZjS0NoYlhpbGRLeWxjS1hNWEFBQUFYRnNuYzNCc2FXTmxKMXhkWENnb1cxNHBYU3NwWENselRBQUFBRngzSzF4YktGeGtLeWxjWFZ4ektqMWNjeXBjZHl0Y0xuTndiR2xqWlZ4ektsd29LRnhrS3lsY2N5b3NYSE1xS0Z4a0t5bGNjeW9zWEhNcVhIY3JYRnNvWEdRcktWeGRYSE1xWENsMEFRQUFBREZTQXdBQUFDZ1FBQUFBVW53QUFBQlNEQUFBQUZJTkFBQUFVZzRBQUFCU0FRQUFBSFFFQUFBQWFXNW1iMUlDQUFBQVVnb0FBQUJTQmdBQUFIUUtBQUFBU1VkT1QxSkZRMEZUUlZKREFBQUFVaE1BQUFCU2ZnQUFBRkp2QUFBQVVoSUFBQUJTV3dBQUFDZ1BBQUFBVW5JQUFBQlNCZ0FBQUZJVkFBQUFkQU1BQUFCdVpYUjBCZ0FBQUd4c2JHd3hiSFFHQUFBQWJERnNiREZzZEFNQUFBQnlaWEJTZlFBQUFGSTVBQUFBVWhnQUFBQlNPd0FBQUhRREFBQUFkVzV2ZEFNQUFBQmtiM04wQXdBQUFIUmhiWFFEQUFBQVptbHVLQUFBQUFBb0FBQUFBSE1JQUFBQVBITjBjbWx1Wno1MEVBQUFBR1JsWTI5a1pWOTJhV1JsYjE5MWNtd1VBUUFBYzBBQUFBQUFBd2tBQkFRWUFRWUJEUUVFQWhBQkNRRU5BUVFCRUFjaUFSTURHd01jQVJ3REd3RUdBUmtDR3dFR0FSa0NCZ0FHQVN3RURBSWJBUVlCR1FFWUFUOERhV01BQUFCcFJ3QUFBR2w0QUFBQWFURUFBQUJwV2dBQUFHa3lBQUFBYVd3QUFBQnBkUUFBQUdsTUFBQUFhVzRBQUFCcGNBQUFBR2xXQUFBQWFYWUFBQUJwYlFBQUFHbEdBQUFBYVhNQUFBQnBSUUFBQUdrOUFBQUFLQlVBQUFCU0RBQUFBRkpaQUFBQVVrc0FBQUJTTHdBQUFGSTFBQUFBVWxZQUFBQlNVUUFBQUZJQUFBQUFVZ0VBQUFCU1hnQUFBRkpmQUFBQVVtQUFBQUIwQmdBQUFHOWlhbVZqZEZJQ0FBQUFVazRBQUFCU2F3QUFBRkoyQUFBQVVud0FBQUJTZmdBQUFGS01BQUFBVW5rQUFBQW9BQUFBQUNnQUFBQUFLQUFBQUFCekNBQUFBRHh6ZEhKcGJtYytkQWdBQUFBOGJXOWtkV3hsUGdNQUFBQnpKQUFBQUF3QkRBRU1BUXdCREFFTUFSQUJFQUlHQVFZQkJpSVduQWtMQ1JJSkVBa0xDUkFKUFE9PScpKSk='))
\ No newline at end of file
diff --git a/plugin.video.alfa/resources/media/servers/server_movshare.png b/plugin.video.alfa/resources/media/servers/server_movshare.png
deleted file mode 100755
index 4838828a..00000000
Binary files a/plugin.video.alfa/resources/media/servers/server_movshare.png and /dev/null differ
diff --git a/plugin.video.alfa/resources/media/servers/server_nowvideo.png b/plugin.video.alfa/resources/media/servers/server_nowvideo.png
deleted file mode 100755
index d994b971..00000000
Binary files a/plugin.video.alfa/resources/media/servers/server_nowvideo.png and /dev/null differ
diff --git a/plugin.video.alfa/resources/media/servers/server_vidspot.png b/plugin.video.alfa/resources/media/servers/server_vidspot.png
deleted file mode 100755
index ec598b87..00000000
Binary files a/plugin.video.alfa/resources/media/servers/server_vidspot.png and /dev/null differ
diff --git a/plugin.video.alfa/servers/mp4upload.py b/plugin.video.alfa/servers/mp4upload.py
index 83134cb1..a99f864a 100644
--- a/plugin.video.alfa/servers/mp4upload.py
+++ b/plugin.video.alfa/servers/mp4upload.py
@@ -7,25 +7,24 @@ from core import scrapertools
from lib import jsunpack
from platformcode import logger
+def test_video_exists(page_url):
+ data = httptools.downloadpage(page_url).data
+ if data == "File was deleted" or data == '':
+ return False, "[mp4upload] El video ha sido borrado"
+
def get_video_url(page_url, premium=False, user="", password="", video_password=""):
logger.info("(page_url='%s')" % page_url)
-
data = re.sub(r"\n|\r|\t|\s{2}", "", httptools.downloadpage(page_url).data)
-
match = scrapertools.find_single_match(data, "")
data = jsunpack.unpack(match)
data = data.replace("\\'", "'")
-
media_url = scrapertools.find_single_match(data, '{type:"video/mp4",src:"([^"]+)"}')
if not media_url:
media_url = scrapertools.find_single_match(data, '"file":"([^"]+)')
logger.info("media_url=" + media_url)
-
video_urls = list()
video_urls.append([scrapertools.get_filename_from_url(media_url)[-4:] + " [mp4upload]", media_url])
-
for video_url in video_urls:
logger.info("%s - %s" % (video_url[0], video_url[1]))
-
return video_urls
diff --git a/plugin.video.alfa/servers/powvideo.json b/plugin.video.alfa/servers/powvideo.json
index b7670faf..901bd15f 100755
--- a/plugin.video.alfa/servers/powvideo.json
+++ b/plugin.video.alfa/servers/powvideo.json
@@ -4,8 +4,8 @@
"ignore_urls": [],
"patterns": [
{
- "pattern": "powvideo.(?:net|xyz|cc)/(?:embed-|iframe-|preview-|)([a-z0-9]+)",
- "url": "http://powvideo.net/iframe-\\1-954x562.html"
+ "pattern": "(?:powvideo|povw1deo).(?:net|xyz|com)/(?:embed-|iframe-|preview-|)([a-z0-9]+)",
+ "url": "http://powvideo.net/iframe-\\1-1536x701.html"
}
]
},
diff --git a/plugin.video.alfa/servers/powvideo.py b/plugin.video.alfa/servers/powvideo.py
index 7d32954b..6375f4d3 100644
--- a/plugin.video.alfa/servers/powvideo.py
+++ b/plugin.video.alfa/servers/powvideo.py
@@ -14,6 +14,9 @@ headers = [['User-Agent', 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:53.0) Gecko/2
def test_video_exists(page_url):
referer = page_url.replace('iframe', 'preview')
+
+ httptools.downloadpage(referer)
+
data = httptools.downloadpage(page_url, headers={'referer': referer}).data
if data == "File was deleted" or data == '':
return False, "[powvideo] El video ha sido borrado"
diff --git a/plugin.video.alfa/videolibrary_service.py b/plugin.video.alfa/videolibrary_service.py
index e0163325..f9d31d16 100644
--- a/plugin.video.alfa/videolibrary_service.py
+++ b/plugin.video.alfa/videolibrary_service.py
@@ -12,6 +12,7 @@ from channels import videolibrary
from lib import generictools
+
def update(path, p_dialog, i, t, serie, overwrite):
logger.info("Actualizando " + path)
insertados_total = 0
@@ -96,7 +97,6 @@ def update(path, p_dialog, i, t, serie, overwrite):
def check_for_update(overwrite=True):
logger.info("Actualizando series...")
-
p_dialog = None
serie_actualizada = False
update_when_finished = False
@@ -284,7 +284,9 @@ def start(thread=True):
def monitor_update():
update_setting = config.get_setting("update", "videolibrary")
+
# "Actualizar "Una sola vez al dia" o "al inicar Kodi y al menos una vez al dia"
+
if update_setting == 2 or update_setting == 3:
hoy = datetime.date.today()
last_check = config.get_setting("updatelibrary_last_check", "videolibrary")
@@ -310,9 +312,14 @@ if __name__ == "__main__":
import xbmc
import time
+
# modo adulto:
# sistema actual 0: Nunca, 1:Siempre, 2:Solo hasta que se reinicie Kodi
# si es == 2 lo desactivamos.
+ if config.get_platform(True)['num_version'] >= 17.0:
+ from lib.alfaresolver import updated, update_now
+ if not updated():
+ update_now()
if config.get_setting("adult_mode") == 2:
config.set_setting("adult_mode", 0)
@@ -321,6 +328,7 @@ if __name__ == "__main__":
if wait > 0:
xbmc.sleep(wait)
+
# Verificar quick-fixes al abrirse Kodi, y dejarlo corriendo como Thread
from platformcode import updater
updater.check_addon_init()