diff --git a/南风/api.json b/南风/api.json index e1def7f..6d5eff6 100644 --- a/南风/api.json +++ b/南风/api.json @@ -53,6 +53,16 @@ "quickSearch": 1, "filterable": 1 }, + { + "key": "kafeiys", + "name": "💢狂风", + "type": 3, + "api": "csp_Qiji", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "ext": "7lj763gg402i7942522k849kg4499i9hl1k5ik48i38l292l1l4l1klgl41255091i8313k2ik478h8j751kh28kh9gk56l3k874684ll3h7j9k83l9034li7lhi5g45k8k3j6hkk760276g8h5h295i9jk7597177g3kk7g3hh79ili" + }, { "key": "巧技二", "name": "💢聚搜┃仅搜索", @@ -103,6 +113,26 @@ "filterable": 1, "ext": "7lj763gg0939795i0678i481k40hi2i3ghlg840i9lj166700g1449g3k5244k2017h35698h4739ih31117kigil3k02hl2jk6i5155ih9kkgl311gl37g240g85111ggg2" }, + { + "key": "时常", + "name": "💢时常", + "type": 3, + "api": "csp_Muou", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "ext": "7lj763gg402i79425i3l85i6h14i9ijiljqiaojihhj910il877129534l1ik9l1184k401g9g54gk8j5i9097751kh28kh9j12ji8i541446kghk19hg576j46gg538l41l0kkkklj6hk72gjj3li45h3h492747k8g976kk5h43i69h6" + }, + { + "key": "柚子", + "name": "💢柚子", + "type": 3, + "api": "csp_Muou", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "ext": "7lj763gg402i79425i3l85i6hqiaoji14i9ijiljhhj910il877129534l1ik9l1184k401g9g54gk8j5i9097751kh28kh9j12ji8i541446kghk792gj76jj64g621h95554k67k18797k9jl3l058g4h59763kh1i2823llg3" + }, { "key": "huomaoys", "name": "💢火猫", @@ -163,26 +193,6 @@ "filterable": 1, "ext": "7lj763gg402i794247258k9jh6598585l3g6ij13il8g20g9qiaoji8j9i9k1g3k90h7i507i213k5j602" }, - { - "key": "柚子", - "name": "💢柚子", - "type": 3, - "api": "csp_Muou", - "searchable": 1, - "quickSearch": 1, - "filterable": 1, - "ext": "7lj763gg0939790i413gi4igh94585i7g0l98449i399qiaoji20187h78327624i6j3i9lj8g09l9ig1ii3" - }, - { - "key": "专业", - "name": "💢专业", - "type": 3, - "api": "csp_Shark", - "searchable": 1, - "quickSearch": 1, - "filterable": 1, - "ext": "7lj763gg0939795i007ii481k008i2i3g5l8840l9kjk6670031743g2h6164h07558245g3845392972819h994k1k400khli736i0lligk9gh273ih6jkl7jg84k54lhl9i5gkl376266h9k4624548kl649676gg9k2763llkj6gj818l" - }, { "key": "csp_Qiyou", "name": "🦌奇优", diff --git a/南风/jars/弹幕.jar b/南风/jars/弹幕.jar index f8eadac..820a418 100644 Binary files a/南风/jars/弹幕.jar and b/南风/jars/弹幕.jar differ diff --git a/南风/json/peizhi.json b/南风/json/peizhi.json index 30deab9..05f08be 100644 --- a/南风/json/peizhi.json +++ b/南风/json/peizhi.json @@ -20,5 +20,5 @@ "tgPic": "true", //tgsou 图片显示与否 //每次更新jar 该值都必须更新 - "exeMd5": "Be9p9RdUTwf3oDeNxM+MTREbI4RBVi4ASccT1fRGRiaJmP9Jz/vEtEoqo+P8hfwORRCZSCAnuQUcsu6hbSC/LN3c71aKNdXZfrwtniQNBgDgszyJtZXLb7VqhFS5LpOmKxSUsTSiwbSdbUQ7IVK37KaEHJ/znUzJV1xrv9LbujH9Y9+uMJCGRR3ZUBAYKcyc8pGJcaFtlrBIbRhuVBlxv2/4atnoIlwjCvxMV1ezgA4DyPQ63RhaX56qnqGL2AiGZkRGDvmEZgEfTX6OcO+IUWdxits+ln6kW8UCgbROiypI8GsyJo+1r/ibQl3VdnD053JuHoqZzY45ECfCO5IuGVKM90XOa+5rMRFcFomfGYcL+VIBktpDtIy8qOodWKVHztHZ2pWxVQgM0RhCukbkJqk4UR4UJGwsoGYYpw8QQqH0qhNRikzKtVJ8V7ycY/xCWdcPH/60uhBupOcp+frwdA==" + "exeMd5": "LHFymn1Et59Vb5lbfwcXXL4I6c97ZuhxPKzXB7nzMY66HrL4dhXeyPCTtIsxJ8NRwNInixUWp4sa8Uy166b8+DICyJPyTcua8Cmjay4TAhLvmBMJXYf5+HDQBmAuDvhKqjV807KHROzSUbygOvKkWKA237z3BgQr1786Kws3LuYdMPL56qEoZPm8D0WfJb3vF59VsK2lvXnqMGfEL4X1dHjsV+VuvWFQfl+uVuj8LmPoRbNVXi1Azpi6XzhvbBgxKGZYSU5lv6bdzH8inALg3HnEnYG+lk2UDLf3lieYBc6WKjY8FSBOVoAH681ErB1sJ+QC+mpEjHq9f0ZKglaSDxwGQsfHxz/lHCZU0glX1lk5MrDxPpNzw0C1HlHD1JYE9iHLiLKtLna7tRUdOx6Z7yY6AFfPfhcUTX28C/k0u4XKm8qvgAZusns6C5+XeD5zxE2zXrndWo1NJtKkzQ==" } diff --git a/南风/spider.jar b/南风/spider.jar index 35cfc06..f3ef44c 100644 Binary files a/南风/spider.jar and b/南风/spider.jar differ diff --git a/小米/api.json b/小米/api.json index 0c2ab09..ba27b3a 100644 --- a/小米/api.json +++ b/小米/api.json @@ -53,10 +53,10 @@ "filterable": 1, "ext": { "site_urls": [ - "http://www.2xiaopan.fun/", + "https://www.2xiaopan.fun/", "https://2xiaopan.fun/", - "https://erxiaofn.click/", - "https://erixaopan.fun/", + "https://www.2xiaoyun.fun/", + "https://www.2xiaoyun.fun/", "https://www.xhww.net/" ], "url_key": "UC", @@ -190,7 +190,7 @@ "searchable": 1, "quickSearch": 1, "api": "csp_AppGet", - "ext": "XRksEN3W20hd3bSb1cdiKgyQTbBO6aM0THhjKXE4Nl7W0aOx624xuIFTAGd0lwLd+GTB05zPlJYlZO1OgsJ6tfUd3LU926poUPnJ/jPh+h8GMdpo75H2pTl+Wb4waE5COjhN/OQGW7RRuI3cdPEtNw==" + "ext": "rP+4azM8YFgp3eAhyeALtUUEFpbkqmzGj2V5VZryxRbpkSjlsHbarRCZPOInvId4s3WK9rZ2YJsDy8NvMqQKQXowVmh33j+qD55VxmvMzzfiJ2fHkCRZg4+8NFWs+b1X" }, { "key": "QD4K", @@ -202,6 +202,15 @@ "playerType": 2, "ext": "./txt/cs.txt" }, + { + "key": "咖啡", + "name": "☕咖啡┃影视", + "type": 3, + "quickSearch": 1, + "searchable": 1, + "api": "csp_AppGet", + "ext": "Koog6uPyOjHNZh8eY8CgUL+XGp1zR8d/K2NE9Ls6xomS8zNeZA6OEFwcZ27Zy0ZH9i0JczXR1zmcv9qIihz837BdnQrvJfE8QEyUmS3qKxs=" + }, { "key": "海豚", "name": "🍁海豚┃影视", @@ -209,7 +218,7 @@ "searchable": 1, "quickSearch": 1, "api": "csp_AppGet", - "ext": "XRksEN3W20hd3bSb1cdiKs8RUIegfh9/V/YlhVyjCL0eqxZYfImI5sC9kLAqQXjv66FYClFaEI40zh/NzOUPsBYCLt4NsSH1V+UpZf/dKjEDsI0tm9aILcvqHG2qxVoV8AVi+Ij/7n9IRf3pTN1BxQ==" + "ext": "QxNFQL63IQgXoB/O+Q12SpWJNcSeybsKVx0uAk9+pBwLEYRybmr89ubfoMpO9ZMnmJwYP5eKIrLK/w5t9S+6+F2ZlfWUyUoDUP2rV9QVabZh8nM+rBV7F/sxe+7GgsdL" }, { "key": "巧技", @@ -272,20 +281,6 @@ "playerType": 2, "ext": "7lj763gg402i7942463ji4qiaojijjh456889il6k6i35kj995h4j18li7kl2870klhg8hi647j5707k4ki7ig6953kj" }, - { - "key": "咖啡", - "name": "☕咖啡┃影视", - "type": 3, - "quickSearch": 1, - "searchable": 1, - "api": "./api/get3.py", - "ext": { - "host": "./txt/2.txt", - "api": "/api.php/qijiappapi", - "datakey": "qwertyuiopqwertt", - "dataiv": "qwertyuiopqwertt" - } - }, { "key": "牛牛", "name": "🍁牛牛┃影视", diff --git a/小米/api/get3.py b/小米/api/get3.py deleted file mode 100644 index 18dfa05..0000000 --- a/小米/api/get3.py +++ /dev/null @@ -1,337 +0,0 @@ -import re -import sys -import uuid -import json -import base64 -from Crypto.Cipher import AES -from base.spider import Spider -from Crypto.Util.Padding import pad -from Crypto.Util.Padding import unpad -sys.path.append('..') - -headerx = { - 'User-Agent': 'okhttp/3.10.0' # okhttp/3.14.9 -} - -class Spider(Spider): - global headerx - init_data = '' - search_verify = '' - - def getName(self): - return "首页" - - def init(self, extend): - js1=json.loads(extend) - host = js1['host'] - if re.match(r'^https:\/\/.*\.(txt|json)$',host): - host = self.fetch(host, headers=headerx, timeout=10).text.rstrip('/') - self.xurl = host + js1.get('api','/api.php/getappapi') - self.key = js1['datakey'] - self.iv = js1.get('dataiv',self.key) - - res = self.fetch(self.xurl + '.index/initV119', headers=headerx).json() - encrypted_data = res['data'] - response = self.decrypt(encrypted_data) - init_data = json.loads(response) - self.init_data = init_data - self.search_verify = init_data['config'].get('system_search_verify_status',False) - - def homeContent(self, filter): - kjson = self.init_data - result = {"class": [], "filters": {}} - for i in kjson['type_list']: - if not(i['type_name'] in ['全部', 'QQ', 'juo.one'] or '企鹅群' in i['type_name']): - result['class'].append({ - "type_id": i['type_id'], - "type_name": i['type_name'] - }) - name_mapping = {'class': '类型', 'area': '地区', 'lang': '语言', 'year': '年份', 'sort': '排序'} - filter_items = [] - for filter_type in i.get('filter_type_list', []): - filter_name = filter_type.get('name') - values = filter_type.get('list', []) - - if not values: - continue - - value_list = [{"n": value, "v": value} for value in values] - display_name = name_mapping.get(filter_name, filter_name) - key = 'by' if filter_name == 'sort' else filter_name - - filter_items.append({ - "key": key, - "name": display_name, - "value": value_list - }) - - type_id = i.get('type_id') - if filter_items: - result["filters"][str(type_id)] = filter_items - - return result - - def homeVideoContent(self): - videos = [] - kjson = self.init_data - for i in kjson['type_list']: - for item in i['recommend_list']: - vod_id = item['vod_id'] - name = item['vod_name'] - pic = item['vod_pic'] - remarks = item['vod_remarks'] - video = { - "vod_id": vod_id, - "vod_name": name, - "vod_pic": pic, - "vod_remarks": remarks - } - videos.append(video) - return {'list': videos} - - def categoryContent(self, cid, pg, filter, ext): - videos = [] - payload = { - 'area': ext.get('area','全部'), - 'year': ext.get('year','全部'), - 'type_id': cid, - 'page': str(pg), - 'sort': ext.get('sort','最新'), - 'lang': ext.get('lang','全部'), - 'class': ext.get('class','全部') - } - url = f'{self.xurl}.index/typeFilterVodList' - res = self.post(url=url, headers=headerx,data=payload).json() - encrypted_data = res['data'] - kjson = self.decrypt(encrypted_data) - kjson1 = json.loads(kjson) - for i in kjson1['recommend_list']: - id = i['vod_id'] - name = i['vod_name'] - pic = i['vod_pic'] - remarks = i['vod_remarks'] - video = { - "vod_id": id, - "vod_name": name, - "vod_pic": pic, - "vod_remarks": remarks - } - videos.append(video) - return {'list': videos, 'page': pg, 'pagecount': 9999, 'limit': 90, 'total': 999999} - - def detailContent(self, ids): - did = ids[0] - payload = { - 'vod_id': did, - } - api_endpoints = ['vodDetail', 'vodDetail2'] - - for endpoint in api_endpoints: - url = f'{self.xurl}.index/{endpoint}' - response = self.post(url=url, headers=headerx, data=payload) - - if response.status_code == 200: - response_data = response.json() - encrypted_data = response_data['data'] - kjson1 = self.decrypt(encrypted_data) - kjson = json.loads(kjson1) - break - videos = [] - play_form = '' - play_url = '' - - actor = kjson['vod']['vod_actor'] - director = kjson['vod'].get('vod_director', '') - area = kjson['vod']['vod_area'] - name = kjson['vod']['vod_name'] - year = kjson['vod']['vod_year'] - content = kjson['vod']['vod_content'] - subtitle = kjson['vod']['vod_remarks'] - desc = kjson['vod']['vod_lang'] - remark = '时间:' + subtitle + ' 语言:' + desc - for line in kjson['vod_play_list']: - keywords = ['防走丢', '群', '防失群', 'Q','juo.one',] - if any(keyword in line['player_info']['show'] for keyword in keywords): - continue - play_form += line['player_info']['show'] + '$$$' - parse = line['player_info']['parse'] - player_parse_type = line['player_info']['player_parse_type'] - kurls = "" - for vod in line['urls']: - kurl = vod['url'] - if '.m3u8' in kurl: - kurls += str(vod['name']) + '$' + vod['url'] + '#' - else: - if 'm3u8' not in kurl: - token = 'token+' + vod['token'] - kurls += str(vod['name']) + '$' + parse + ',' + vod[ - 'url'] + ',' + token + ',' + player_parse_type + '#' - kurls = kurls.rstrip('#') - play_url += kurls + '$$$' - play_form = play_form.rstrip('$$$') - play_url = play_url.rstrip('$$$') - videos.append({ - "vod_id": did, - "vod_name": name, - "vod_actor": actor.replace('演员', ''), - "vod_director": director.replace('导演', ''), - "vod_content": content, - "vod_remarks": remark, - "vod_year": year + '年', - "vod_area": area, - "vod_play_from": play_form, - "vod_play_url": play_url - }) - return {'list': videos} - - def playerContent(self, flag, id, vipFlags): - url = '' - if re.search(r'https?:\/\/.*\.(m3u8|mp4|flv)', id): - url = id - elif 'url=' in id: - aid = id.split(',') - uid = aid[0] - kurl = aid[1] - kjson = uid + kurl - url2 = f"{kjson}" - response = self.fetch(url=url2) - if response.status_code == 200: - kjson1 = response.json() - url = kjson1['url'] - else: - aid = id.split(',') - bid = aid[-1] - uid = aid[0] - kurl = aid[1] - token = aid[2].replace('token+', '') - id1 = self.decrypt_wb(kurl) - payload = { - 'parse_api': uid, - 'url': id1, - 'player_parse_type': bid, - 'token': token - } - url1 = f"{self.xurl}.index/vodParse" - response = self.post(url=url1, headers=headerx, data=payload) - if response.status_code == 200: - response_data = response.json() - encrypted_data = response_data['data'] - kjson = self.decrypt(encrypted_data) - kjson1 = json.loads(kjson) - kjson2 = kjson1['json'] - kjson3 = json.loads(kjson2) - url = kjson3['url'] - return {"parse": 0, "playUrl": '', "url": url, "header": {'User-Agent': 'Dalvik/2.1.0 (Linux; U; Android 14; 23113RK12C Build/SKQ1.231004.001)'}} - - def searchContent(self, key, quick, pg="1"): - videos = [] - # 使用urllib.parse.quote确保关键词被正确编码 - import urllib.parse - encoded_key = urllib.parse.quote(key) - - # 构建POST请求的表单数据,使用编码后的关键词 - payload = { - 'keywords': encoded_key, - 'type_id': "0", - 'page': str(pg) - } - - if self.search_verify: - verifi = self.verification() - if verifi is None: - return {'list':[]} - payload['code'] = verifi['code'] - payload['key'] = verifi['uuid'] - - url = f'{self.xurl}.index/searchList' - # 发送POST请求并携带表单数据 - res = self.post(url=url, data=payload, headers=headerx).json() - - if not res.get('data'): - return {'list':[] ,'msg': res.get('msg')} - - encrypted_data = res['data'] - kjson = self.decrypt(encrypted_data) - kjson1 = json.loads(kjson) - - for i in kjson1['search_list']: - id = i['vod_id'] - name = i['vod_name'] - pic = i['vod_pic'] - remarks = i['vod_year'] + ' ' + i['vod_class'] - - video = { - "vod_id": id, - "vod_name": name, - "vod_pic": pic, - "vod_remarks": remarks - } - videos.append(video) - - return {'list': videos, 'page': pg, 'pagecount': 9999, 'limit': 90, 'total': 999999} - - def localProxy(self, params): - if params['type'] == "m3u8": - return self.proxyM3u8(params) - elif params['type'] == "media": - return self.proxyMedia(params) - elif params['type'] == "ts": - return self.proxyTs(params) - return None - - def isVideoFormat(self, url): - pass - - def manualVideoCheck(self): - pass - - def decrypt(self, encrypted_data_b64): - key_text = self.key - iv_text = self.iv - key_bytes = key_text.encode('utf-8') - iv_bytes = iv_text.encode('utf-8') - encrypted_data = base64.b64decode(encrypted_data_b64) - cipher = AES.new(key_bytes, AES.MODE_CBC, iv_bytes) - decrypted_padded = cipher.decrypt(encrypted_data) - decrypted = unpad(decrypted_padded, AES.block_size) - return decrypted.decode('utf-8') - - def decrypt_wb(self, sencrypted_data): - key_text = self.key - iv_text = self.iv - key_bytes = key_text.encode('utf-8') - iv_bytes = iv_text.encode('utf-8') - data_bytes = sencrypted_data.encode('utf-8') - padded_data = pad(data_bytes, AES.block_size) - cipher = AES.new(key_bytes, AES.MODE_CBC, iv_bytes) - encrypted_bytes = cipher.encrypt(padded_data) - encrypted_data_b64 = base64.b64encode(encrypted_bytes).decode('utf-8') - return encrypted_data_b64 - - def ocr(self,base64Img): - dat2 = self.post("https://api.nn.ci/ocr/b64/text",data=base64Img,headers=headerx).text - if dat2: - return dat2 - else: - return None - - def verification(self): - random_uuid = str(uuid.uuid4()) - dat = self.fetch(f'{self.xurl}.verify/create?key={random_uuid}',headers=headerx).content - base64_img = base64.b64encode(dat).decode('utf-8') - if not dat: - return None - code = self.ocr(base64_img) - if not code: - return None - code = replace_code(code) - if not (len(code) == 4 and code.isdigit()): - return None - return {'uuid': random_uuid, 'code': code} - -def replace_code(text): - replacements = {'y': '9','口': '0','q': '0','u': '0','o': '0','>': '1','d': '0','b': '8','已': '2','D': '0','五': '5'} - if len(text) == 3: - text = text.replace('066', '1666') - text = text.replace('566', '5066') - return ''.join(replacements.get(c, c) for c in text) \ No newline at end of file diff --git a/小米/spider.jar b/小米/spider.jar index 5751e60..a57cb88 100644 Binary files a/小米/spider.jar and b/小米/spider.jar differ diff --git a/小米/txt/2.txt b/小米/txt/2.txt deleted file mode 100644 index 36f4aa3..0000000 --- a/小米/txt/2.txt +++ /dev/null @@ -1 +0,0 @@ -http://160.202.244.9:9788/ \ No newline at end of file diff --git a/小虎斑/spider.jar b/小虎斑/spider.jar index a461a23..4791a63 100644 Binary files a/小虎斑/spider.jar and b/小虎斑/spider.jar differ diff --git a/摸鱼儿/api.json b/摸鱼儿/api.json index 1f24f44..95066ce 100644 --- a/摸鱼儿/api.json +++ b/摸鱼儿/api.json @@ -69,19 +69,6 @@ "key3": "aassddwwxxllsx1x" } }, - { - "key": "斗量", - "name": "🌀斗量┃超清┃弹幕", - "type": 3, - "api": "csp_AppSy", - "jar": "./jars/config.jar", - "ext": { - "url": "https://app.ystva.com", - "key1": "hsZwQK5yrnefW7OJ", - "key2": "hsZwQK5yrnefW7OJ", - "key3": "hsZwQK5yrnefW7OJ" - } - }, { "key": "追忆", "name": "🌀追忆┃超清┃弹幕", @@ -112,18 +99,19 @@ } }, { - "key": "橘猫", - "name": "🌀橘猫┃超清┃弹幕", + "key": "灵虎", + "name": "🌀灵虎┃超清┃弹幕", "type": 3, "quickSearch": 1, - "api": "csp_AppGet2", + "api": "csp_AppGet", "jar": "./jars/config.jar", "ext": { - "url": "https://qjappcms.jm4k.top", - "dataKey": "pBVmysmGX8TsgrQN", - "dataIv": "pBVmysmGX8TsgrQN", + "url": "", + "site": "./txt/89.txt", + "dataKey": "#getapp@TMD@2025", + "dataIv": "#getapp@TMD@2025", "deviceId": "", - "version": "120" + "version": "" } }, { @@ -187,18 +175,31 @@ } }, { - "key": "光盘", - "name": "🌀光盘┃超清┃弹幕", + "key": "码头", + "name": "🌀码头┃超清┃弹幕", "type": 3, - "quickSearch": 1, "api": "csp_AppGet", "jar": "./jars/config.jar", "ext": { - "url": "http://119.13.88.18", - "dataKey": "xnybssspqtwotuwj", - "dataIv": "xnybssspqtwotuwj", + "url": "https://www.lgmt.cc", + "dataKey": "asfjaskasgggassf", + "dataIv": "asfjaskasgggassf", "deviceId": "", - "version": "101" + "version": "" + } + }, + { + "key": "米诺", + "name": "🌀米诺┃超清┃弹幕", + "type": 3, + "api": "csp_AppGet", + "jar": "./jars/config.jar", + "ext": { + "url": "http://www.milkidc.cn", + "dataKey": "20c79c979da8db0f", + "dataIv": "20c79c979da8db0f", + "deviceId": "", + "version": "" } }, { @@ -247,28 +248,13 @@ "version": "119" } }, - { - "key": "魔方", - "name": "🌀魔方┃超清┃弹幕", - "type": 3, - "quickSearch": 1, - "api": "csp_AppGet", - "jar": "./jars/config.jar", - "ext": { - "url": "https://mfsp33.top", - "dataKey": "1234567887654321", - "dataIv": "1234567887654321", - "deviceId": "", - "version": "" - } - }, { "key": "海豚", "name": "🌀海豚┃超清┃弹幕", - "jar": "./jars/config.jar", "type": 3, "quickSearch": 1, "api": "csp_AppGet", + "jar": "./jars/config.jar", "ext": { "url": "https://appcms.htsp4k.top", "dataKey": "7CYQQzwchRQpHCOj", @@ -277,6 +263,21 @@ "version": "" } }, + { + "key": "溜溜", + "name": "🌀溜溜┃超清┃弹幕", + "type": 3, + "quickSearch": 1, + "api": "csp_AppGet", + "jar": "./jars/config.jar", + "ext": { + "url": "https://appcms.ll4k.xyz", + "dataKey": "NiDGaKiVnkO3QX1Q", + "dataIv": "NiDGaKiVnkO3QX1Q", + "deviceId": "2fbaf48ee97783260bc907e3ab0bd40c3", + "version": "200" + } + }, { "key": "瓜萌", "name": "🌀瓜萌┃超清┃弹幕", @@ -337,21 +338,6 @@ "version": "300" } }, - { - "key": "彼岸", - "name": "🌀彼岸┃超清┃弹幕", - "jar": "./jars/config.jar", - "type": 3, - "quickSearch": 1, - "api": "csp_AppGet", - "ext": { - "url": "https://mfsp33.top", - "dataKey": "1234567887654321", - "dataIv": "1234567887654321", - "deviceId": "298e5fe29c74b35aabb9836ee2f6f449f", - "version": "315" - } - }, { "key": "雨滴", "name": "🌀雨滴┃超清┃弹幕", @@ -367,6 +353,51 @@ "version": "100" } }, + { + "key": "萝卜", + "name": "🌀萝卜┃超清┃弹幕", + "type": 3, + "quickSearch": 1, + "api": "csp_AppGet", + "jar": "./jars/config.jar", + "ext": { + "url": "https://apiapplbys.lbys.app:5678", + "dataKey": "apiapplbyskey168", + "dataIv": "apiapplbyskey168", + "deviceId": "", + "version": "107" + } + }, + { + "key": "小红", + "name": "🌀小红┃超清┃弹幕", + "type": 3, + "quickSearch": 1, + "api": "csp_AppGet", + "jar": "./jars/config.jar", + "ext": { + "url": "https://www.xiaohys.com", + "dataKey": "ENonBHeVBoYZhVUV", + "dataIv": "ENonBHeVBoYZhVUV", + "deviceId": "298e5fe29c74b35aabb9836ee2f6f449f", + "version": "166" + } + }, + { + "key": "在看", + "name": "🌀小红┃超清┃弹幕", + "type": 3, + "quickSearch": 1, + "api": "csp_AppGet", + "jar": "./jars/config.jar", + "ext": { + "url": "http://149.88.64.161:9525", + "dataKey": "123456789ABCDEFG", + "dataIv": "123456789ABCDEFG", + "deviceId": "", + "version": "" + } + }, { "key": "若惜", "name": "🌀若惜┃超清┃弹幕", diff --git a/摸鱼儿/api/drpy.min.js b/摸鱼儿/api/drpy.min.js new file mode 100644 index 0000000..7111baf --- /dev/null +++ b/摸鱼儿/api/drpy.min.js @@ -0,0 +1,2317 @@ +import cheerio from "assets://js/lib/cheerio.min.js"; +import "assets://js/lib/crypto-js.js"; +import "./jsencrypt.js"; +import 模板 from "./模板.js"; +import { + gbkTool +} +from "./gbk.js"; + +function init_test() { + console.log("init_test_start"); + console.log("当前版本号:" + VERSION); + console.log(RKEY); + console.log(JSON.stringify(rule)); + console.log("init_test_end") +} +function pre() { + if (typeof rule.预处理 === "string" && rule.预处理 && rule.预处理.trim()) { + let code = rule.预处理.trim(); + console.log("执行预处理代码:" + code); + if (code.startsWith("js:")) { + code = code.replace("js:", "") + } + try { + eval(code) + } catch (e) { + console.log("预处理执行失败:" + e.message) + } + } +} +let rule = {}; +let vercode = typeof pdfl === "function" ? "drpy2.1" : "drpy2"; +const VERSION = vercode + " 3.9.49beta40 202400426"; +const MOBILE_UA = "Mozilla/5.0 (Linux; Android 11; M2007J3SC Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045714 Mobile Safari/537.36"; +const PC_UA = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36"; +const UA = "Mozilla/5.0"; +const UC_UA = "Mozilla/5.0 (Linux; U; Android 9; zh-CN; MI 9 Build/PKQ1.181121.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.5.5.1035 Mobile Safari/537.36"; +const IOS_UA = "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1"; +const RULE_CK = "cookie"; +const CATE_EXCLUDE = "首页|留言|APP|下载|资讯|新闻|动态"; +const TAB_EXCLUDE = "猜你|喜欢|下载|剧情|热播"; +const OCR_RETRY = 3; +const OCR_API = "http://drpy.nokia.press:8028/ocr/drpy/text"; +if (typeof MY_URL === "undefined") { + var MY_URL +} +var HOST; +var RKEY; +var fetch; +var print; +var log; +var rule_fetch_params; +var fetch_params; +var oheaders; +var _pdfh; +var _pdfa; +var _pd; +const DOM_CHECK_ATTR = /(url|src|href|-original|-src|-play|-url|style)$/; +const SPECIAL_URL = /^(ftp|magnet|thunder|ws):/; +const NOADD_INDEX = /:eq|:lt|:gt|:first|:last|^body$|^#/; +const URLJOIN_ATTR = /(url|src|href|-original|-src|-play|-url|style)$/; +const SELECT_REGEX = /:eq|:lt|:gt|#/g; +const SELECT_REGEX_A = /:eq|:lt|:gt/g; +if (typeof Object.assign != "function") { + Object.assign = function() { + let target = arguments[0]; + for (let i = 1; i < arguments.length; i++) { + let source = arguments[i]; + for (let key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key] + } + } + } + return target + } +} +if (!String.prototype.includes) { + String.prototype.includes = function(search, start) { + if (typeof start !== "number") { + start = 0 + } + if (start + search.length > this.length) { + return false + } else { + return this.indexOf(search, start) !== -1 + } + } +} +if (!Array.prototype.includes) { + Object.defineProperty(Array.prototype, "includes", { + value: function(searchElement, fromIndex) { + if (this == null) { + throw new TypeError('"this" is null or not defined') + } + var o = Object(this); + var len = o.length >>> 0; + if (len === 0) { + return false + } + var n = fromIndex | 0; + var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0); + while (k < len) { + if (o[k] === searchElement) { + return true + } + k++ + } + return false + } + }) +} +if (typeof String.prototype.startsWith != "function") { + String.prototype.startsWith = function(prefix) { + return this.slice(0, prefix.length) === prefix + } +} +if (typeof String.prototype.endsWith != "function") { + String.prototype.endsWith = function(suffix) { + return this.indexOf(suffix, this.length - suffix.length) !== -1 + } +} +Object.prototype.myValues = function(obj) { + if (obj == null) { + throw new TypeError("Cannot convert undefined or null to object") + } + var res = []; + for (var k in obj) { + if (obj.hasOwnProperty(k)) { + res.push(obj[k]) + } + } + return res +}; +if (typeof Object.prototype.values != "function") { + Object.prototype.values = function(obj) { + if (obj == null) { + throw new TypeError("Cannot convert undefined or null to object") + } + var res = []; + for (var k in obj) { + if (obj.hasOwnProperty(k)) { + res.push(obj[k]) + } + } + return res + } +} +if (typeof Array.prototype.join != "function") { + Array.prototype.join = function(emoji) { + emoji = emoji || ""; + let self = this; + let str = ""; + let i = 0; + if (!Array.isArray(self)) { + throw String(self) + "is not Array" + } + if (self.length === 0) { + return "" + } + if (self.length === 1) { + return String(self[0]) + } + i = 1; + str = this[0]; + for (; i < self.length; i++) { + str += String(emoji) + String(self[i]) + } + return str + } +} +if (typeof Array.prototype.toReversed != "function") { + Array.prototype.toReversed = function() { + const clonedList = this.slice(); + const reversedList = clonedList.reverse(); + return reversedList + } +} +String.prototype.rstrip = function(chars) { + let regex = new RegExp(chars + "$"); + return this.replace(regex, "") +}; +Array.prototype.append = Array.prototype.push; +String.prototype.strip = String.prototype.trim; + +function 是否正版(vipUrl) { + let flag = new RegExp("qq.com|iqiyi.com|youku.com|mgtv.com|bilibili.com|sohu.com|ixigua.com|pptv.com|miguvideo.com|le.com|1905.com|fun.tv"); + return flag.test(vipUrl) +} +function urlDeal(vipUrl) { + if (!vipUrl) { + return "" + } + if (!是否正版(vipUrl)) { + return vipUrl + } + if (!/miguvideo/.test(vipUrl)) { + vipUrl = vipUrl.split("#")[0].split("?")[0] + } + return vipUrl +} +function setResult(d) { + if (!Array.isArray(d)) { + return [] + } + VODS = []; + d.forEach(function(it) { + let obj = { + vod_id: it.url || "", + vod_name: it.title || "", + vod_remarks: it.desc || "", + vod_content: it.content || "", + vod_pic: it.pic_url || it.img || "" + }; + let keys = Object.keys(it); + if (keys.includes("tname")) { + obj.type_name = it.tname || "" + } + if (keys.includes("tid")) { + obj.type_id = it.tid || "" + } + if (keys.includes("year")) { + obj.vod_year = it.year || "" + } + if (keys.includes("actor")) { + obj.vod_actor = it.actor || "" + } + if (keys.includes("director")) { + obj.vod_director = it.director || "" + } + if (keys.includes("area")) { + obj.vod_area = it.area || "" + } + VODS.push(obj) + }); + return VODS +} +function setResult2(res) { + VODS = res.list || []; + return VODS +} +function setHomeResult(res) { + if (!res || typeof res !== "object") { + return [] + } + return setResult(res.list) +} +function rc(js) { + if (js === "maomi_aes.js") { + var a = CryptoJS.enc.Utf8.parse("625222f9149e961d"); + var t = CryptoJS.enc.Utf8.parse("5efdtf6060e2o330"); + return { + De: function(word) { + word = CryptoJS.enc.Hex.parse(word); + return CryptoJS.AES.decrypt(CryptoJS.enc.Base64.stringify(word), a, { + iv: t, + mode: CryptoJS.mode.CBC, + padding: CryptoJS.pad.Pkcs7 + }) + .toString(CryptoJS.enc.Utf8) + }, + En: function(word) { + var Encrypted = CryptoJS.AES.encrypt(word, a, { + iv: t, + mode: CryptoJS.mode.CBC, + padding: CryptoJS.pad.Pkcs7 + }); + return Encrypted.ciphertext.toString() + } + } + } + return {} +} +function maoss(jxurl, ref, key) { + fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); + eval(getCryptoJS()); + try { + var getVideoInfo = function(text) { + return CryptoJS.AES.decrypt(text, key, { + iv: iv, + padding: CryptoJS.pad.Pkcs7 + }) + .toString(CryptoJS.enc.Utf8) + }; + var token_key = key == undefined ? "dvyYRQlnPRCMdQSe" : key; + if (ref) { + var html = request(jxurl, { + headers: { + Referer: ref + } + }) + } else { + var html = request(jxurl) + } + if (html.indexOf("&btwaf=") != -1) { + html = request(jxurl + "&btwaf" + html.match(/&btwaf(.*?)"/)[1], { + headers: { + Referer: ref + } + }) + } + var token_iv = html.split('_token = "')[1].split('"')[0]; + var key = CryptoJS.enc.Utf8.parse(token_key); + var iv = CryptoJS.enc.Utf8.parse(token_iv); + eval(html.match(/var config = {[\s\S]*?}/)[0] + ""); + if (!config.url.startsWith("http")) { + config.url = CryptoJS.AES.decrypt(config.url, key, { + iv: iv, + padding: CryptoJS.pad.Pkcs7 + }) + .toString(CryptoJS.enc.Utf8) + } + return config.url + } catch (e) { + return "" + } +} +function urlencode(str) { + str = (str + "") + .toString(); + return encodeURIComponent(str) + .replace(/!/g, "%21") + .replace(/'/g, "%27") + .replace(/\(/g, "%28") + .replace(/\)/g, "%29") + .replace(/\*/g, "%2A") + .replace(/%20/g, "+") +} +function base64Encode(text) { + return CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(text)) +} +function base64Decode(text) { + return CryptoJS.enc.Utf8.stringify(CryptoJS.enc.Base64.parse(text)) +} +function md5(text) { + return CryptoJS.MD5(text) + .toString() +} +function encodeStr(input, encoding) { + encoding = encoding || "gbk"; + if (encoding.startsWith("gb")) { + const strTool = gbkTool(); + input = strTool.encode(input) + } + return input +} +function decodeStr(input, encoding) { + encoding = encoding || "gbk"; + if (encoding.startsWith("gb")) { + const strTool = gbkTool(); + input = strTool.decode(input) + } + return input +} +function getCryptoJS() { + return 'console.log("CryptoJS已装载");' +} +const RSA = { + decode: function(data, key, option) { + option = option || {}; + if (typeof JSEncrypt === "function") { + let chunkSize = option.chunkSize || 117; + let privateKey = this.getPrivateKey(key); + const decryptor = new JSEncrypt; + decryptor.setPrivateKey(privateKey); + let uncrypted = ""; + uncrypted = decryptor.decryptUnicodeLong(data); + return uncrypted + } else { + return false + } + }, + encode: function(data, key, option) { + option = option || {}; + if (typeof JSEncrypt === "function") { + let chunkSize = option.chunkSize || 117; + let publicKey = this.getPublicKey(key); + const encryptor = new JSEncrypt; + encryptor.setPublicKey(publicKey); + let encrypted = ""; + encrypted = encryptor.encryptUnicodeLong(data); + return encrypted + } else { + return false + } + }, + fixKey(key, prefix, endfix) { + if (!key.includes(prefix)) { + key = prefix + key + } + if (!key.includes(endfix)) { + key += endfix + } + return key + }, + getPrivateKey(key) { + let prefix = "-----BEGIN RSA PRIVATE KEY-----"; + let endfix = "-----END RSA PRIVATE KEY-----"; + return this.fixKey(key, prefix, endfix) + }, + getPublicKey(key) { + let prefix = "-----BEGIN PUBLIC KEY-----"; + let endfix = "-----END PUBLIC KEY-----"; + return this.fixKey(key, prefix, endfix) + } +}; + +function getProxyUrl() { + if (typeof getProxy === "function") { + return getProxy(true) + } else { + return "http://127.0.0.1:9978/proxy?do=js" + } +} +function fixAdM3u8(m3u8_text, m3u8_url, ad_remove) { + if (!m3u8_text && !m3u8_url || !m3u8_text && m3u8_url && !m3u8_url.startsWith("http")) { + return "" + } + if (!m3u8_text) { + log("m3u8_url:" + m3u8_url); + m3u8_text = request(m3u8_url) + } + log("len(m3u8_text):" + m3u8_text.length); + if (!ad_remove) { + return m3u8_text + } + if (ad_remove.startsWith("reg:")) { + ad_remove = ad_remove.slice(4) + } else if (ad_remove.startsWith("js:")) { + ad_remove = ad_remove.slice(3) + } + let m3u8_start = m3u8_text.slice(0, m3u8_text.indexOf("#EXTINF")) + .trim(); + let m3u8_body = m3u8_text.slice(m3u8_text.indexOf("#EXTINF"), m3u8_text.indexOf("#EXT-X-ENDLIST")) + .trim(); + let m3u8_end = m3u8_text.slice(m3u8_text.indexOf("#EXT-X-ENDLIST")) + .trim(); + let murls = []; + let m3_body_list = m3u8_body.split("\n"); + let m3_len = m3_body_list.length; + let i = 0; + while (i < m3_len) { + let mi = m3_body_list[i]; + let mi_1 = m3_body_list[i + 1]; + if (mi.startsWith("#EXTINF")) { + murls.push([mi, mi_1].join("&")); + i += 2 + } else if (mi.startsWith("#EXT-X-DISCONTINUITY")) { + let mi_2 = m3_body_list[i + 2]; + murls.push([mi, mi_1, mi_2].join("&")); + i += 3 + } else { + break + } + } + let new_m3u8_body = []; + for (let murl of murls) { + if (ad_remove && new RegExp(ad_remove) + .test(murl)) {} else { + let murl_list = murl.split("&"); + if (!murl_list[murl_list.length - 1].startsWith("http") && m3u8_url.startsWith("http")) { + murl_list[murl_list.length - 1] = urljoin(m3u8_url, murl_list[murl_list.length - 1]) + } + murl_list.forEach(it => { + new_m3u8_body.push(it) + }) + } + } + new_m3u8_body = new_m3u8_body.join("\n") + .trim(); + m3u8_text = [m3u8_start, new_m3u8_body, m3u8_end].join("\n") + .trim(); + return m3u8_text +} +function fixAdM3u8Ai(m3u8_url) { + let ts = (new Date) + .getTime(); + + function b(s1, s2) { + let i = 0; + while (i < s1.length) { + if (s1[i] !== s2[i]) { + break + } + i++ + } + return i + } + function reverseString(str) { + return str.split("") + .reverse() + .join("") + } + let m3u8 = request(m3u8_url); + m3u8 = m3u8.trim() + .split("\n") + .map(it => it.startsWith("#") ? it : urljoin(m3u8_url, it)) + .join("\n"); + let last_url = m3u8.split("\n") + .slice(-1)[0]; + if (last_url.includes(".m3u8") && last_url !== m3u8_url) { + m3u8_url = last_url; + m3u8 = request(m3u8_url) + } + let s = m3u8.trim() + .split("\n") + .filter(it => it.trim()) + .join("\n"); + let ss = s.split("\n"); + let firststr = ss.find(x => !x.startsWith("#")); + let maxl = 0; + let firststrlen = firststr.length; + let ml = Math.round(ss.length / 2) + .toString() + .length; + let laststr = ss.toReversed() + .find(x => { + if (!x.startsWith("#")) { + let k = b(reverseString(firststr), reverseString(x)); + maxl = b(firststr, x); + if (firststrlen - maxl <= ml + k) { + return true + } + } + return false + }); + log("最后一条切片:" + laststr); + let ad_urls = []; + for (let i = 0; i < ss.length; i++) { + let s = ss[i]; + if (!s.startsWith("#")) { + if (b(firststr, s) < maxl) { + ad_urls.push(s); + ss.splice(i - 1, 2); + i = i - 2 + } else { + ss[i] = urljoin(m3u8_url, s) + } + } else { + ss[i] = s.replace(/URI=\"(.*)\"/, 'URI="' + urljoin(m3u8_url, "$1") + '"') + } + } + log("处理的m3u8地址:" + m3u8_url); + log("----广告地址----"); + log(ad_urls); + m3u8 = ss.join("\n"); + log("处理耗时:" + ((new Date) + .getTime() - ts) + .toString()); + return m3u8 +} +function forceOrder(lists, key, option) { + let start = Math.floor(lists.length / 2); + let end = Math.min(lists.length - 1, start + 1); + if (start >= end) { + return lists + } + let first = lists[start]; + let second = lists[end]; + if (key) { + try { + first = first[key]; + second = second[key] + } catch (e) {} + } + if (option && typeof option === "function") { + try { + first = option(first); + second = option(second) + } catch (e) {} + } + first += ""; + second += ""; + if (first.match(/(\d+)/) && second.match(/(\d+)/)) { + let num1 = Number(first.match(/(\d+)/)[1]); + let num2 = Number(second.match(/(\d+)/)[1]); + if (num1 > num2) { + lists.reverse() + } + } + return lists +} +let VODS = []; +let VOD = {}; +let TABS = []; +let LISTS = []; +globalThis.encodeUrl = urlencode; +globalThis.urlencode = urlencode; + +function urljoin(fromPath, nowPath) { + fromPath = fromPath || ""; + nowPath = nowPath || ""; + return joinUrl(fromPath, nowPath) +} +var urljoin2 = urljoin; +const defaultParser = { + pdfh: pdfh, + pdfa: pdfa, + pd: pd +}; + +function pdfh2(html, parse) { + let html2 = html; + try { + if (typeof html !== "string") { + html2 = html.rr(html.ele) + .toString() + } + } catch (e) { + print("html对象转文本发生了错误:" + e.message) + } + let result = defaultParser.pdfh(html2, parse); + let option = parse.includes("&&") ? parse.split("&&") + .slice(-1)[0] : parse.split(" ") + .slice(-1)[0]; + if (/style/.test(option.toLowerCase()) && /url\(/.test(result)) { + try { + result = result.match(/url\((.*?)\)/)[1]; + result = result.replace(/^['|"](.*)['|"]$/, "$1") + } catch (e) {} + } + return result +} +function pdfa2(html, parse) { + let html2 = html; + try { + if (typeof html !== "string") { + html2 = html.rr(html.ele) + .toString() + } + } catch (e) { + print("html对象转文本发生了错误:" + e.message) + } + return defaultParser.pdfa(html2, parse) +} +function pd2(html, parse, uri) { + let ret = pdfh2(html, parse); + if (typeof uri === "undefined" || !uri) { + uri = "" + } + if (DOM_CHECK_ATTR.test(parse) && !SPECIAL_URL.test(ret)) { + if (/http/.test(ret)) { + ret = ret.slice(ret.indexOf("http")) + } else { + ret = urljoin(MY_URL, ret) + } + } + return ret +} +const parseTags = { + jsp: { + pdfh: pdfh2, + pdfa: pdfa2, + pd: pd2 + }, + json: { + pdfh(html, parse) { + if (!parse || !parse.trim()) { + return "" + } + if (typeof html === "string") { + html = JSON.parse(html) + } + parse = parse.trim(); + if (!parse.startsWith("$.")) { + parse = "$." + parse + } + parse = parse.split("||"); + for (let ps of parse) { + let ret = cheerio.jp(ps, html); + if (Array.isArray(ret)) { + ret = ret[0] || "" + } else { + ret = ret || "" + } + if (ret && typeof ret !== "string") { + ret = ret.toString() + } + if (ret) { + return ret + } + } + return "" + }, pdfa(html, parse) { + if (!parse || !parse.trim()) { + return "" + } + if (typeof html === "string") { + html = JSON.parse(html) + } + parse = parse.trim(); + if (!parse.startsWith("$.")) { + parse = "$." + parse + } + let ret = cheerio.jp(parse, html); + if (Array.isArray(ret) && Array.isArray(ret[0]) && ret.length === 1) { + return ret[0] || [] + } + return ret || [] + }, pd(html, parse) { + let ret = parseTags.json.pdfh(html, parse); + if (ret) { + return urljoin(MY_URL, ret) + } + return ret + } + }, + jq: { + pdfh(html, parse) { + if (!html || !parse || !parse.trim()) { + return "" + } + parse = parse.trim(); + let result = defaultParser.pdfh(html, parse); + return result + }, pdfa(html, parse) { + if (!html || !parse || !parse.trim()) { + return [] + } + parse = parse.trim(); + let result = defaultParser.pdfa(html, parse); + print(`pdfa解析${parse}=>${result.length}`); + return result + }, pd(html, parse, base_url) { + if (!html || !parse || !parse.trim()) { + return "" + } + parse = parse.trim(); + base_url = base_url || MY_URL; + return defaultParser.pd(html, parse, base_url) + } + }, + getParse(p0) { + if (p0.startsWith("jsp:")) { + return this.jsp + } else if (p0.startsWith("json:")) { + return this.json + } else if (p0.startsWith("jq:")) { + return this.jq + } else { + return this.jq + } + } +}; +const stringify = JSON.stringify; +const jsp = parseTags.jsp; +const jq = parseTags.jq; + +function readFile(filePath) { + filePath = filePath || "./uri.min.js"; + var fd = os.open(filePath); + var buffer = new ArrayBuffer(1024); + var len = os.read(fd, buffer, 0, 1024); + console.log(len); + let text = String.fromCharCode.apply(null, new Uint8Array(buffer)); + console.log(text); + return text +} +function dealJson(html) { + try { + html = html.trim(); + if (!(html.startsWith("{") && html.endsWith("}") || html.startsWith("[") && html.endsWith("]"))) { + html = "{" + html.match(/.*?\{(.*)\}/m)[1] + "}" + } + } catch (e) {} + try { + html = JSON.parse(html) + } catch (e) {} + return html +} +var OcrApi = { + api: OCR_API, + classification: function(img) { + let code = ""; + try { + log("通过drpy_ocr验证码接口过验证..."); + let html = request(OCR_API, { + data: { + img: img + }, + headers: { + "User-Agent": PC_UA + }, + method: "POST" + }, true); + code = html || "" + } catch (e) { + log(`OCR识别验证码发生错误:${e.message}`) + } + return code + } +}; + +function verifyCode(url) { + let cnt = 0; + let host = getHome(url); + let cookie = ""; + while (cnt < OCR_RETRY) { + try { + let yzm_url = `${host}/index.php/verify/index.html`; + console.log(`验证码链接:${yzm_url}`); + let hhtml = request(yzm_url, { + withHeaders: true, + toBase64: true + }, true); + let json = JSON.parse(hhtml); + if (!cookie) { + let setCk = Object.keys(json) + .find(it => it.toLowerCase() === "set-cookie"); + cookie = setCk ? json[setCk].split(";")[0] : "" + } + console.log("cookie:" + cookie); + let img = json.body; + let code = OcrApi.classification(img); + console.log(`第${cnt+1}次验证码识别结果:${code}`); + let submit_url = `${host}/index.php/ajax/verify_check?type=search&verify=${code}`; + console.log(submit_url); + let html = request(submit_url, { + headers: { + Cookie: cookie, + "User-Agent": MOBILE_UA + }, + method: "POST" + }); + html = JSON.parse(html); + if (html.msg === "ok") { + console.log(`第${cnt+1}次验证码提交成功`); + return cookie + } else if (html.msg !== "ok" && cnt + 1 >= OCR_RETRY) { + cookie = "" + } + } catch (e) { + console.log(`第${cnt+1}次验证码提交失败:${e.message}`); + if (cnt + 1 >= OCR_RETRY) { + cookie = "" + } + } + cnt += 1 + } + return cookie +} +function setItem(k, v) { + local.set(RKEY, k, v); + console.log(`规则${RKEY}设置${k} => ${v}`) +} +function getItem(k, v) { + return local.get(RKEY, k) || v +} +function clearItem(k) { + local.delete(RKEY, k) +} +function getHome(url) { + if (!url) { + return "" + } + let tmp = url.split("//"); + url = tmp[0] + "//" + tmp[1].split("/")[0]; + try { + url = decodeURIComponent(url) + } catch (e) {} + return url +} +function buildUrl(url, obj) { + obj = obj || {}; + if (url.indexOf("?") < 0) { + url += "?" + } + let param_list = []; + let keys = Object.keys(obj); + keys.forEach(it => { + param_list.push(it + "=" + obj[it]) + }); + let prs = param_list.join("&"); + if (keys.length > 0 && !url.endsWith("?")) { + url += "&" + } + url += prs; + return url +} +function require(url) { + eval(request(url)) +} +function request(url, obj, ocr_flag) { + ocr_flag = ocr_flag || false; + if (typeof obj === "undefined" || !obj || obj === {}) { + if (!fetch_params || !fetch_params.headers) { + let headers = { + "User-Agent": MOBILE_UA + }; + if (rule.headers) { + Object.assign(headers, rule.headers) + } + if (!fetch_params) { + fetch_params = {} + } + fetch_params.headers = headers + } + if (!fetch_params.headers.Referer) { + fetch_params.headers.Referer = getHome(url) + } + obj = fetch_params + } else { + let headers = obj.headers || {}; + let keys = Object.keys(headers) + .map(it => it.toLowerCase()); + if (!keys.includes("user-agent")) { + headers["User-Agent"] = MOBILE_UA + } + if (!keys.includes("referer")) { + headers["Referer"] = getHome(url) + } + obj.headers = headers + } + if (rule.encoding && rule.encoding !== "utf-8" && !ocr_flag) { + if (!obj.headers.hasOwnProperty("Content-Type") && !obj.headers.hasOwnProperty("content-type")) { + obj.headers["Content-Type"] = "text/html; charset=" + rule.encoding + } + } + if (typeof obj.body != "undefined" && obj.body && typeof obj.body === "string") { + if (!obj.headers.hasOwnProperty("Content-Type") && !obj.headers.hasOwnProperty("content-type")) { + obj.headers["Content-Type"] = "application/x-www-form-urlencoded; charset=" + rule.encoding + } + } else if (typeof obj.body != "undefined" && obj.body && typeof obj.body === "object") { + obj.data = obj.body; + delete obj.body + } + if (!url) { + return obj.withHeaders ? "{}" : "" + } + if (obj.toBase64) { + obj.buffer = 2; + delete obj.toBase64 + } + if (obj.redirect === false) { + obj.redirect = 0 + } + console.log(JSON.stringify(obj.headers)); + console.log("request:" + url + `|method:${obj.method||"GET"}|body:${obj.body||""}`); + let res = req(url, obj); + let html = res.content || ""; + if (obj.withHeaders) { + let htmlWithHeaders = res.headers; + htmlWithHeaders.body = html; + return JSON.stringify(htmlWithHeaders) + } else { + return html + } +} +function post(url, obj) { + obj.method = "POST"; + return request(url, obj) +} +fetch = request; +print = function(data) { + data = data || ""; + if (typeof data == "object" && Object.keys(data) + .length > 0) { + try { + data = JSON.stringify(data); + console.log(data) + } catch (e) { + console.log(typeof data + ":" + data.length); + return + } + } else if (typeof data == "object" && Object.keys(data) + .length < 1) { + console.log("null object") + } else { + console.log(data) + } +}; +log = print; + +function checkHtml(html, url, obj) { + if (/\?btwaf=/.test(html)) { + let btwaf = html.match(/btwaf(.*?)"/)[1]; + url = url.split("#")[0] + "?btwaf" + btwaf; + print("宝塔验证访问链接:" + url); + html = request(url, obj) + } + return html +} +function getCode(url, obj) { + let html = request(url, obj); + html = checkHtml(html, url, obj); + return html +} +function getHtml(url) { + let obj = {}; + if (rule.headers) { + obj.headers = rule.headers + } + let cookie = getItem(RULE_CK, ""); + if (cookie) { + if (obj.headers && !Object.keys(obj.headers) + .map(it => it.toLowerCase()) + .includes("cookie")) { + log("历史无cookie,新增过验证后的cookie"); + obj.headers["Cookie"] = cookie + } else if (obj.headers && obj.headers.cookie && obj.headers.cookie !== cookie) { + obj.headers["Cookie"] = cookie; + log("历史有小写过期的cookie,更新过验证后的cookie") + } else if (obj.headers && obj.headers.Cookie && obj.headers.Cookie !== cookie) { + obj.headers["Cookie"] = cookie; + log("历史有大写过期的cookie,更新过验证后的cookie") + } else if (!obj.headers) { + obj.headers = { + Cookie: cookie + }; + log("历史无headers,更新过验证后的含cookie的headers") + } + } + let html = getCode(url, obj); + return html +} +function homeParse(homeObj) { + fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); + let classes = []; + if (homeObj.class_name && homeObj.class_url) { + let names = homeObj.class_name.split("&"); + let urls = homeObj.class_url.split("&"); + let cnt = Math.min(names.length, urls.length); + for (let i = 0; i < cnt; i++) { + classes.push({ + type_id: urls[i], + type_name: names[i] + }) + } + } + if (homeObj.class_parse) { + if (homeObj.class_parse.startsWith("js:")) { + var input = homeObj.MY_URL; + try { + eval(homeObj.class_parse.replace("js:", "")); + if (Array.isArray(input)) { + classes = input + } + } catch (e) { + log("通过js动态获取分类发生了错误:" + e.message) + } + } else { + let p = homeObj.class_parse.split(";"); + let p0 = p[0]; + let _ps = parseTags.getParse(p0); + let is_json = p0.startsWith("json:"); + _pdfa = _ps.pdfa; + _pdfh = _ps.pdfh; + _pd = _ps.pd; + MY_URL = rule.url; + if (is_json) { + try { + let cms_cate_url = homeObj.MY_URL.replace("ac=detail", "ac=list"); + let html = getHtml(cms_cate_url); + if (html) { + if (cms_cate_url === homeObj.MY_URL) { + homeHtmlCache = html + } + let list = _pdfa(html, p0.replace("json:", "")); + if (list && list.length > 0) { + classes = list + } + } + } catch (e) { + console.log(e.message) + } + } else if (p.length >= 3 && !is_json) { + try { + let html = getHtml(homeObj.MY_URL); + if (html) { + homeHtmlCache = html; + let list = _pdfa(html, p0); + if (list && list.length > 0) { + list.forEach((it, idex) => { + try { + let name = _pdfh(it, p[1]); + if (homeObj.cate_exclude && new RegExp(homeObj.cate_exclude) + .test(name)) { + return + } + let url = _pd(it, p[2]); + if (p.length > 3 && p[3]) { + let exp = new RegExp(p[3]); + url = url.match(exp)[1] + } + classes.push({ + type_id: url.trim(), + type_name: name.trim() + }) + } catch (e) { + console.log(`分类列表定位第${idex}个元素正常报错:${e.message}`) + } + }) + } + } + } catch (e) { + console.log(e.message) + } + } + } + } + classes = classes.filter(it => !homeObj.cate_exclude || !new RegExp(homeObj.cate_exclude) + .test(it.type_name)); + let resp = { + class: classes + }; + if (homeObj.filter) { + resp.filters = homeObj.filter + } + console.log(JSON.stringify(resp)); + return JSON.stringify(resp) +} +function getPP(p, pn, pp, ppn) { + try { + let ps = p[pn] === "*" && pp.length > ppn ? pp[ppn] : p[pn]; + return ps + } catch (e) { + return "" + } +} +function homeVodParse(homeVodObj) { + fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); + let d = []; + MY_URL = homeVodObj.homeUrl; + console.log(MY_URL); + let t1 = (new Date) + .getTime(); + let p = homeVodObj.推荐; + print("p:" + p); + if (p === "*" && rule.一级) { + p = rule.一级; + homeVodObj.double = false + } + if (!p || typeof p !== "string") { + return "{}" + } + p = p.trim(); + let pp = rule.一级.split(";"); + if (p.startsWith("js:")) { + const TYPE = "home"; + var input = MY_URL; + HOST = rule.host; + eval(p.replace("js:", "")); + d = VODS + } else { + p = p.split(";"); + if (!homeVodObj.double && p.length < 5) { + return "{}" + } else if (homeVodObj.double && p.length < 6) { + return "{}" + } + let p0 = getPP(p, 0, pp, 0); + let _ps = parseTags.getParse(p0); + _pdfa = _ps.pdfa; + _pdfh = _ps.pdfh; + _pd = _ps.pd; + let is_json = p0.startsWith("json:"); + p0 = p0.replace(/^(jsp:|json:|jq:)/, ""); + let html = homeHtmlCache || getHtml(MY_URL); + homeHtmlCache = undefined; + if (is_json) { + html = dealJson(html) + } + try { + console.log("double:" + homeVodObj.double); + if (homeVodObj.double) { + let items = _pdfa(html, p0); + let p1 = getPP(p, 1, pp, 0); + let p2 = getPP(p, 2, pp, 1); + let p3 = getPP(p, 3, pp, 2); + let p4 = getPP(p, 4, pp, 3); + let p5 = getPP(p, 5, pp, 4); + let p6 = getPP(p, 6, pp, 5); + for (let item of items) { + let items2 = _pdfa(item, p1); + for (let item2 of items2) { + try { + let title = _pdfh(item2, p2); + let img = ""; + try { + img = _pd(item2, p3) + } catch (e) {} + let desc = ""; + try { + desc = _pdfh(item2, p4) + } catch (e) {} + let links = []; + for (let _p5 of p5.split("+")) { + let link = !homeVodObj.detailUrl ? _pd(item2, _p5, MY_URL) : _pdfh(item2, _p5); + links.push(link) + } + let content; + if (p.length > 6 && p[6]) { + content = _pdfh(item2, p6) + } else { + content = "" + } + let vid = links.join("$"); + if (rule.二级 === "*") { + vid = vid + "@@" + title + "@@" + img + } + let vod = { + vod_name: title, + vod_pic: img, + vod_remarks: desc, + vod_content: content, + vod_id: vid + }; + d.push(vod) + } catch (e) { + console.log("首页列表双层定位处理发生错误:" + e.message) + } + } + } + } else { + let items = _pdfa(html, p0); + let p1 = getPP(p, 1, pp, 1); + let p2 = getPP(p, 2, pp, 2); + let p3 = getPP(p, 3, pp, 3); + let p4 = getPP(p, 4, pp, 4); + let p5 = getPP(p, 5, pp, 5); + for (let item of items) { + try { + let title = _pdfh(item, p1); + let img = ""; + try { + img = _pd(item, p2, MY_URL) + } catch (e) {} + let desc = ""; + try { + desc = _pdfh(item, p3) + } catch (e) {} + let links = []; + for (let _p5 of p4.split("+")) { + let link = !homeVodObj.detailUrl ? _pd(item, _p5, MY_URL) : _pdfh(item, _p5); + links.push(link) + } + let content; + if (p.length > 5 && p[5]) { + content = _pdfh(item, p5) + } else { + content = "" + } + let vid = links.join("$"); + if (rule.二级 === "*") { + vid = vid + "@@" + title + "@@" + img + } + let vod = { + vod_name: title, + vod_pic: img, + vod_remarks: desc, + vod_content: content, + vod_id: vid + }; + d.push(vod) + } catch (e) { + console.log("首页列表单层定位处理发生错误:" + e.message) + } + } + } + } catch (e) {} + } + let t2 = (new Date) + .getTime(); + console.log("加载首页推荐耗时:" + (t2 - t1) + "毫秒"); + if (rule.图片替换 && rule.图片替换.includes("=>")) { + let replace_from = rule.图片替换.split("=>")[0]; + let replace_to = rule.图片替换.split("=>")[1]; + d.forEach(it => { + if (it.vod_pic && it.vod_pic.startsWith("http")) { + it.vod_pic = it.vod_pic.replace(replace_from, replace_to) + } + }) + } + if (rule.图片来源) { + d.forEach(it => { + if (it.vod_pic && it.vod_pic.startsWith("http")) { + it.vod_pic = it.vod_pic + rule.图片来源 + } + }) + } + if (d.length > 0) { + print(d.slice(0, 2)) + } + return JSON.stringify({ + list: d + }) +} +function categoryParse(cateObj) { + fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); + let p = cateObj.一级; + if (!p || typeof p !== "string") { + return "{}" + } + let d = []; + let url = cateObj.url.replaceAll("fyclass", cateObj.tid); + if (cateObj.pg === 1 && url.includes("[") && url.includes("]")) { + url = url.split("[")[1].split("]")[0] + } else if (cateObj.pg > 1 && url.includes("[") && url.includes("]")) { + url = url.split("[")[0] + } + if (rule.filter_url) { + if (!/fyfilter/.test(url)) { + if (!url.endsWith("&") && !rule.filter_url.startsWith("&")) { + url += "&" + } + url += rule.filter_url + } else { + url = url.replace("fyfilter", rule.filter_url) + } + let fl = cateObj.filter ? cateObj.extend : {}; + if (rule.filter_def && typeof rule.filter_def === "object") { + try { + if (Object.keys(rule.filter_def) + .length > 0 && rule.filter_def.hasOwnProperty(cateObj.tid)) { + let self_fl_def = rule.filter_def[cateObj.tid]; + if (self_fl_def && typeof self_fl_def === "object") { + let fl_def = JSON.parse(JSON.stringify(self_fl_def)); + fl = Object.assign(fl_def, fl) + } + } + } catch (e) { + print("合并不同分类对应的默认筛选出错:" + e.message) + } + } + let new_url; + new_url = cheerio.jinja2(url, { + fl: fl + }); + url = new_url + } + if (/fypage/.test(url)) { + if (url.includes("(") && url.includes(")")) { + let url_rep = url.match(/.*?\((.*)\)/)[1]; + let cnt_page = url_rep.replaceAll("fypage", cateObj.pg); + let cnt_pg = eval(cnt_page); + url = url.replaceAll(url_rep, cnt_pg) + .replaceAll("(", "") + .replaceAll(")", "") + } else { + url = url.replaceAll("fypage", cateObj.pg) + } + } + MY_URL = url; + console.log(MY_URL); + p = p.trim(); + const MY_CATE = cateObj.tid; + if (p.startsWith("js:")) { + var MY_FL = cateObj.extend; + const TYPE = "cate"; + var input = MY_URL; + const MY_PAGE = cateObj.pg; + var desc = ""; + eval(p.trim() + .replace("js:", "")); + d = VODS + } else { + p = p.split(";"); + if (p.length < 5) { + return "{}" + } + let _ps = parseTags.getParse(p[0]); + _pdfa = _ps.pdfa; + _pdfh = _ps.pdfh; + _pd = _ps.pd; + let is_json = p[0].startsWith("json:"); + p[0] = p[0].replace(/^(jsp:|json:|jq:)/, ""); + try { + let html = getHtml(MY_URL); + if (html) { + if (is_json) { + html = dealJson(html) + } + let list = _pdfa(html, p[0]); + list.forEach(it => { + let links = p[4].split("+") + .map(p4 => { + return !rule.detailUrl ? _pd(it, p4, MY_URL) : _pdfh(it, p4) + }); + let link = links.join("$"); + let vod_id = rule.detailUrl ? MY_CATE + "$" + link : link; + let vod_name = _pdfh(it, p[1]) + .replace(/\n|\t/g, "") + .trim(); + let vod_pic = _pd(it, p[2], MY_URL); + if (rule.二级 === "*") { + vod_id = vod_id + "@@" + vod_name + "@@" + vod_pic + } + d.push({ + vod_id: vod_id, + vod_name: vod_name, + vod_pic: vod_pic, + vod_remarks: _pdfh(it, p[3]) + .replace(/\n|\t/g, "") + .trim() + }) + }) + } + } catch (e) { + console.log(e.message) + } + } + if (rule.图片替换 && rule.图片替换.includes("=>")) { + let replace_from = rule.图片替换.split("=>")[0]; + let replace_to = rule.图片替换.split("=>")[1]; + d.forEach(it => { + if (it.vod_pic && it.vod_pic.startsWith("http")) { + it.vod_pic = it.vod_pic.replace(replace_from, replace_to) + } + }) + } + if (rule.图片来源) { + d.forEach(it => { + if (it.vod_pic && it.vod_pic.startsWith("http")) { + it.vod_pic = it.vod_pic + rule.图片来源 + } + }) + } + if (d.length > 0) { + print(d.slice(0, 2)) + } + let pagecount = 0; + if (rule.pagecount && typeof rule.pagecount === "object" && rule.pagecount.hasOwnProperty(MY_CATE)) { + print(`MY_CATE:${MY_CATE},pagecount:${JSON.stringify(rule.pagecount)}`); + pagecount = parseInt(rule.pagecount[MY_CATE]) + } + let nodata = { + list: [{ + vod_name: "无数据,防无限请求", + vod_id: "no_data", + vod_remarks: "不要点,会崩的", + vod_pic: "https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/404.jpg" + }], + total: 1, + pagecount: 1, + page: 1, + limit: 1 + }; + let vod = d.length < 1 ? JSON.stringify(nodata) : JSON.stringify({ + page: parseInt(cateObj.pg), + pagecount: pagecount || 999, + limit: 20, + total: 999, + list: d + }); + return vod +} +function searchParse(searchObj) { + fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); + let d = []; + if (!searchObj.searchUrl) { + return "{}" + } + let p = searchObj.搜索 === "*" && rule.一级 ? rule.一级 : searchObj.搜索; + if (!p || typeof p !== "string") { + return "{}" + } + p = p.trim(); + let pp = rule.一级.split(";"); + let url = searchObj.searchUrl.replaceAll("**", searchObj.wd); + if (searchObj.pg === 1 && url.includes("[") && url.includes("]") && !url.includes("#")) { + url = url.split("[")[1].split("]")[0] + } else if (searchObj.pg > 1 && url.includes("[") && url.includes("]") && !url.includes("#")) { + url = url.split("[")[0] + } + if (/fypage/.test(url)) { + if (url.includes("(") && url.includes(")")) { + let url_rep = url.match(/.*?\((.*)\)/)[1]; + let cnt_page = url_rep.replaceAll("fypage", searchObj.pg); + let cnt_pg = eval(cnt_page); + url = url.replaceAll(url_rep, cnt_pg) + .replaceAll("(", "") + .replaceAll(")", "") + } else { + url = url.replaceAll("fypage", searchObj.pg) + } + } + MY_URL = url; + console.log(MY_URL); + if (p.startsWith("js:")) { + const TYPE = "search"; + const MY_PAGE = searchObj.pg; + const KEY = searchObj.wd; + var input = MY_URL; + var detailUrl = rule.detailUrl || ""; + eval(p.trim() + .replace("js:", "")); + d = VODS + } else { + p = p.split(";"); + if (p.length < 5) { + return "{}" + } + let p0 = getPP(p, 0, pp, 0); + let _ps = parseTags.getParse(p0); + _pdfa = _ps.pdfa; + _pdfh = _ps.pdfh; + _pd = _ps.pd; + let is_json = p0.startsWith("json:"); + p0 = p0.replace(/^(jsp:|json:|jq:)/, ""); + try { + let req_method = MY_URL.split(";") + .length > 1 ? MY_URL.split(";")[1].toLowerCase() : "get"; + let html; + if (req_method === "post") { + let rurls = MY_URL.split(";")[0].split("#"); + let rurl = rurls[0]; + let params = rurls.length > 1 ? rurls[1] : ""; + print(`post=》rurl:${rurl},params:${params}`); + let _fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); + let postData = { + body: params + }; + Object.assign(_fetch_params, postData); + html = post(rurl, _fetch_params) + } else if (req_method === "postjson") { + let rurls = MY_URL.split(";")[0].split("#"); + let rurl = rurls[0]; + let params = rurls.length > 1 ? rurls[1] : ""; + print(`postjson-》rurl:${rurl},params:${params}`); + try { + params = JSON.parse(params) + } catch (e) { + params = "{}" + } + let _fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); + let postData = { + body: params + }; + Object.assign(_fetch_params, postData); + html = post(rurl, _fetch_params) + } else { + html = getHtml(MY_URL) + } + if (html) { + if (/系统安全验证|输入验证码/.test(html)) { + let cookie = verifyCode(MY_URL); + if (cookie) { + console.log(`本次成功过验证,cookie:${cookie}`); + setItem(RULE_CK, cookie) + } else { + console.log(`本次自动过搜索验证失败,cookie:${cookie}`) + } + html = getHtml(MY_URL) + } + if (!html.includes(searchObj.wd)) { + console.log("搜索结果源码未包含关键字,疑似搜索失败,正为您打印结果源码"); + console.log(html) + } + if (is_json) { + html = dealJson(html) + } + let list = _pdfa(html, p0); + let p1 = getPP(p, 1, pp, 1); + let p2 = getPP(p, 2, pp, 2); + let p3 = getPP(p, 3, pp, 3); + let p4 = getPP(p, 4, pp, 4); + let p5 = getPP(p, 5, pp, 5); + list.forEach(it => { + let links = p4.split("+") + .map(_p4 => { + return !rule.detailUrl ? _pd(it, _p4, MY_URL) : _pdfh(it, _p4) + }); + let link = links.join("$"); + let content; + if (p.length > 5 && p[5]) { + content = _pdfh(it, p5) + } else { + content = "" + } + let vod_id = link; + let vod_name = _pdfh(it, p1) + .replace(/\n|\t/g, "") + .trim(); + let vod_pic = _pd(it, p2, MY_URL); + if (rule.二级 === "*") { + vod_id = vod_id + "@@" + vod_name + "@@" + vod_pic + } + let ob = { + vod_id: vod_id, + vod_name: vod_name, + vod_pic: vod_pic, + vod_remarks: _pdfh(it, p3) + .replace(/\n|\t/g, "") + .trim(), + vod_content: content.replace(/\n|\t/g, "") + .trim() + }; + d.push(ob) + }) + } + } catch (e) { + print("搜索发生错误:" + e.message); + return "{}" + } + } + if (rule.图片替换 && rule.图片替换.includes("=>")) { + let replace_from = rule.图片替换.split("=>")[0]; + let replace_to = rule.图片替换.split("=>")[1]; + d.forEach(it => { + if (it.vod_pic && it.vod_pic.startsWith("http")) { + it.vod_pic = it.vod_pic.replace(replace_from, replace_to) + } + }) + } + if (rule.图片来源) { + d.forEach(it => { + if (it.vod_pic && it.vod_pic.startsWith("http")) { + it.vod_pic = it.vod_pic + rule.图片来源 + } + }) + } + return JSON.stringify({ + page: parseInt(searchObj.pg), + pagecount: 10, + limit: 20, + total: 100, + list: d + }) +} +function detailParse(detailObj) { + let t1 = (new Date) + .getTime(); + fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); + let orId = detailObj.orId; + let vod_name = "片名"; + let vod_pic = ""; + let vod_id = orId; + if (rule.二级 === "*") { + let extra = orId.split("@@"); + vod_name = extra.length > 1 ? extra[1] : vod_name; + vod_pic = extra.length > 2 ? extra[2] : vod_pic + } + let vod = { + vod_id: vod_id, + vod_name: vod_name, + vod_pic: vod_pic, + type_name: "类型", + vod_year: "年份", + vod_area: "地区", + vod_remarks: "更新信息", + vod_actor: "主演", + vod_director: "导演", + vod_content: "简介" + }; + let p = detailObj.二级; + let url = detailObj.url; + let detailUrl = detailObj.detailUrl; + let fyclass = detailObj.fyclass; + let tab_exclude = detailObj.tab_exclude; + let html = detailObj.html || ""; + MY_URL = url; + if (detailObj.二级访问前) { + try { + print(`尝试在二级访问前执行代码:${detailObj.二级访问前}`); + eval(detailObj.二级访问前.trim() + .replace("js:", "")) + } catch (e) { + print(`二级访问前执行代码出现错误:${e.message}`) + } + } + if (p === "*") { + vod.vod_play_from = "道长在线"; + vod.vod_remarks = detailUrl; + vod.vod_actor = "没有二级,只有一级链接直接嗅探播放"; + vod.vod_content = MY_URL; + vod.vod_play_url = "嗅探播放$" + MY_URL.split("@@")[0] + } else if (typeof p === "string" && p.trim() + .startsWith("js:")) { + const TYPE = "detail"; + var input = MY_URL; + var play_url = ""; + eval(p.trim() + .replace("js:", "")); + vod = VOD; + console.log(JSON.stringify(vod)) + } else if (p && typeof p === "object") { + let tt1 = (new Date) + .getTime(); + if (!html) { + html = getHtml(MY_URL) + } + print(`二级${MY_URL}仅获取源码耗时:${(new Date).getTime()-tt1}毫秒`); + let _ps; + if (p.is_json) { + print("二级是json"); + _ps = parseTags.json; + html = dealJson(html) + } else if (p.is_jsp) { + print("二级是jsp"); + _ps = parseTags.jsp + } else if (p.is_jq) { + print("二级是jq"); + _ps = parseTags.jq + } else { + print("二级默认jq"); + _ps = parseTags.jq + } + let tt2 = (new Date) + .getTime(); + print(`二级${MY_URL}获取并装载源码耗时:${tt2-tt1}毫秒`); + _pdfa = _ps.pdfa; + _pdfh = _ps.pdfh; + _pd = _ps.pd; + if (p.title) { + let p1 = p.title.split(";"); + vod.vod_name = _pdfh(html, p1[0]) + .replace(/\n|\t/g, "") + .trim(); + let type_name = p1.length > 1 ? _pdfh(html, p1[1]) + .replace(/\n|\t/g, "") + .replace(/ /g, "") + .trim() : ""; + vod.type_name = type_name || vod.type_name + } + if (p.desc) { + try { + let p1 = p.desc.split(";"); + vod.vod_remarks = _pdfh(html, p1[0]) + .replace(/\n|\t/g, "") + .trim(); + vod.vod_year = p1.length > 1 ? _pdfh(html, p1[1]) + .replace(/\n|\t/g, "") + .trim() : ""; + vod.vod_area = p1.length > 2 ? _pdfh(html, p1[2]) + .replace(/\n|\t/g, "") + .trim() : ""; + vod.vod_actor = p1.length > 3 ? _pdfh(html, p1[3]) + .replace(/\n|\t/g, "") + .trim() : ""; + vod.vod_director = p1.length > 4 ? _pdfh(html, p1[4]) + .replace(/\n|\t/g, "") + .trim() : "" + } catch (e) {} + } + if (p.content) { + try { + let p1 = p.content.split(";"); + vod.vod_content = _pdfh(html, p1[0]) + .replace(/\n|\t/g, "") + .trim() + } catch (e) {} + } + if (p.img) { + try { + let p1 = p.img.split(";"); + vod.vod_pic = _pd(html, p1[0], MY_URL) + } catch (e) {} + } + let vod_play_from = "$$$"; + let playFrom = []; + if (p.重定向 && p.重定向.startsWith("js:")) { + print("开始执行重定向代码:" + p.重定向); + html = eval(p.重定向.replace("js:", "")) + } + if (p.tabs) { + if (p.tabs.startsWith("js:")) { + print("开始执行tabs代码:" + p.tabs); + var input = MY_URL; + eval(p.tabs.replace("js:", "")); + playFrom = TABS + } else { + let p_tab = p.tabs.split(";")[0]; + let vHeader = _pdfa(html, p_tab); + console.log(vHeader.length); + let tab_text = p.tab_text || "body&&Text"; + let new_map = {}; + for (let v of vHeader) { + let v_title = _pdfh(v, tab_text) + .trim(); + if (!v_title) { + v_title = "线路空" + } + console.log(v_title); + if (tab_exclude && new RegExp(tab_exclude) + .test(v_title)) { + continue + } + if (!new_map.hasOwnProperty(v_title)) { + new_map[v_title] = 1 + } else { + new_map[v_title] += 1 + } + if (new_map[v_title] > 1) { + v_title += Number(new_map[v_title] - 1) + } + playFrom.push(v_title) + } + } + console.log(JSON.stringify(playFrom)) + } else { + playFrom = ["道长在线"] + } + vod.vod_play_from = playFrom.join(vod_play_from); + let vod_play_url = "$$$"; + let vod_tab_list = []; + if (p.lists) { + if (p.lists.startsWith("js:")) { + print("开始执行lists代码:" + p.lists); + try { + var input = MY_URL; + var play_url = ""; + eval(p.lists.replace("js:", "")); + for (let i in LISTS) { + if (LISTS.hasOwnProperty(i)) { + try { + LISTS[i] = LISTS[i].map(it => it.split("$") + .slice(0, 2) + .join("$")) + } catch (e) { + print("格式化LISTS发生错误:" + e.message) + } + } + } + vod_play_url = LISTS.map(it => it.join("#")) + .join(vod_play_url) + } catch (e) { + print("js执行lists: 发生错误:" + e.message) + } + } else { + let list_text = p.list_text || "body&&Text"; + let list_url = p.list_url || "a&&href"; + let is_tab_js = p.tabs.trim() + .startsWith("js:"); + for (let i = 0; i < playFrom.length; i++) { + let tab_name = playFrom[i]; + let tab_ext = p.tabs.split(";") + .length > 1 && !is_tab_js ? p.tabs.split(";")[1] : ""; + let p1 = p.lists.replaceAll("#idv", tab_name) + .replaceAll("#id", i); + tab_ext = tab_ext.replaceAll("#idv", tab_name) + .replaceAll("#id", i); + let tabName = tab_ext ? _pdfh(html, tab_ext) : tab_name; + console.log(tabName); + let new_vod_list = []; + let tt1 = (new Date) + .getTime(); + if (typeof pdfl === "function") { + new_vod_list = pdfl(html, p1, list_text, list_url, MY_URL) + } else { + let vodList = []; + try { + vodList = _pdfa(html, p1); + console.log("len(vodList):" + vodList.length) + } catch (e) {} + for (let i = 0; i < vodList.length; i++) { + let it = vodList[i]; + new_vod_list.push(_pdfh(it, list_text) + .trim() + "$" + _pd(it, list_url, MY_URL)) + } + } + if (new_vod_list.length > 0) { + new_vod_list = forceOrder(new_vod_list, "", x => x.split("$")[0]); + console.log(`drpy影响性能代码共计列表数循环次数:${new_vod_list.length},耗时:${(new Date).getTime()-tt1}毫秒`) + } + let vlist = new_vod_list.join("#"); + vod_tab_list.push(vlist) + } + vod_play_url = vod_tab_list.join(vod_play_url) + } + } + vod.vod_play_url = vod_play_url + } + if (rule.图片替换 && rule.图片替换.includes("=>")) { + let replace_from = rule.图片替换.split("=>")[0]; + let replace_to = rule.图片替换.split("=>")[1]; + vod.vod_pic = vod.vod_pic.replace(replace_from, replace_to) + } + if (rule.图片来源 && vod.vod_pic && vod.vod_pic.startsWith("http")) { + vod.vod_pic = vod.vod_pic + rule.图片来源 + } + if (!vod.vod_id || vod_id.includes("$") && vod.vod_id !== vod_id) { + vod.vod_id = vod_id + } + let t2 = (new Date) + .getTime(); + console.log(`加载二级界面${MY_URL}耗时:${t2-t1}毫秒`); + vod = vodDeal(vod); + return JSON.stringify({ + list: [vod] + }) +} +function get_tab_index(vod) { + let obj = {}; + vod.vod_play_from.split("$$$") + .forEach((it, index) => { + obj[it] = index + }); + return obj +} +function vodDeal(vod) { + let vod_play_from = vod.vod_play_from.split("$$$"); + let vod_play_url = vod.vod_play_url.split("$$$"); + let tab_removed_list = vod_play_from; + let tab_ordered_list = vod_play_from; + let tab_renamed_list = vod_play_from; + let tab_list = vod_play_from; + let play_ordered_list = vod_play_url; + if (rule.tab_remove && rule.tab_remove.length > 0 || rule.tab_order && rule.tab_order.length > 0) { + let tab_index_dict = get_tab_index(vod); + if (rule.tab_remove && rule.tab_remove.length > 0) { + tab_removed_list = vod_play_from.filter(it => !rule.tab_remove.includes(it)); + tab_list = tab_removed_list + } + if (rule.tab_order && rule.tab_order.length > 0) { + let tab_order = rule.tab_order; + tab_ordered_list = tab_removed_list.sort((a, b) => { + return (tab_order.indexOf(a) === -1 ? 9999 : tab_order.indexOf(a)) - (tab_order.indexOf(b) === -1 ? 9999 : tab_order.indexOf(b)) + }); + tab_list = tab_ordered_list + } + play_ordered_list = tab_list.map(it => vod_play_url[tab_index_dict[it]]) + } + if (rule.tab_rename && typeof rule.tab_rename === "object" & Object.keys(rule.tab_rename) + .length > 0) { + tab_renamed_list = tab_list.map(it => rule.tab_rename[it] || it); + tab_list = tab_renamed_list + } + vod.vod_play_from = tab_list.join("$$$"); + vod.vod_play_url = play_ordered_list.join("$$$"); + return vod +} +function tellIsJx(url) { + try { + let is_vip = !/\.(m3u8|mp4|m4a)$/.test(url.split("?")[0]) && 是否正版(url); + return is_vip ? 1 : 0 + } catch (e) { + return 1 + } +} +function playParse(playObj) { + fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); + MY_URL = playObj.url; + var MY_FLAG = playObj.flag; + if (!/http/.test(MY_URL)) { + try { + MY_URL = base64Decode(MY_URL) + } catch (e) {} + } + MY_URL = decodeURIComponent(MY_URL); + var input = MY_URL; + var flag = MY_FLAG; + let common_play = { + parse: 1, + url: input, + flag: flag, + jx: tellIsJx(input) + }; + let lazy_play; + if (!rule.play_parse || !rule.lazy) { + lazy_play = common_play + } else if (rule.play_parse && rule.lazy && typeof rule.lazy === "string") { + try { + let lazy_code = rule.lazy.replace("js:", "") + .trim(); + print("开始执行js免嗅=>" + lazy_code); + eval(lazy_code); + lazy_play = typeof input === "object" ? input : { + parse: 1, + jx: tellIsJx(input), + url: input + } + } catch (e) { + print("js免嗅错误:" + e.message); + lazy_play = common_play + } + } else { + lazy_play = common_play + } + if (Array.isArray(rule.play_json) && rule.play_json.length > 0) { + let web_url = lazy_play.url; + for (let pjson of rule.play_json) { + if (pjson.re && (pjson.re === "*" || web_url.match(new RegExp(pjson.re)))) { + if (pjson.json && typeof pjson.json === "object") { + let base_json = pjson.json; + lazy_play = Object.assign(lazy_play, base_json); + break + } + } + } + } else if (rule.play_json && !Array.isArray(rule.play_json)) { + let base_json = { + jx: 1, + parse: 1 + }; + lazy_play = Object.assign(lazy_play, base_json) + } else if (!rule.play_json) { + let base_json = { + jx: 0, + parse: 1 + }; + lazy_play = Object.assign(lazy_play, base_json) + } + console.log(JSON.stringify(lazy_play)); + return JSON.stringify(lazy_play) +} +function proxyParse(proxyObj) { + var input = proxyObj.params; + if (proxyObj.proxy_rule) { + log("准备执行本地代理规则:\n" + proxyObj.proxy_rule); + try { + eval(proxyObj.proxy_rule); + if (input && input !== proxyObj.params && Array.isArray(input) && input.length === 3) { + return input + } else { + return [404, "text/plain", "Not Found"] + } + } catch (e) { + return [500, "text/plain", "代理规则错误:" + e.message] + } + } else { + return [404, "text/plain", "Not Found"] + } +} +function isVideoParse(isVideoObj) { + var input = isVideoObj.url; + if (!isVideoObj.t) { + let re_matcher = new RegExp(isVideoObj.isVideo, "i"); + return re_matcher.test(input) + } else { + try { + eval(isVideoObj.isVideo); + if (typeof input === "boolean") { + return input + } else { + return false + } + } catch (e) { + log("执行嗅探规则发生错误:" + e.message); + return false + } + } +} +function init(ext) { + console.log("init"); + try { + let muban = 模板.getMubans(); + if (typeof ext == "object") { + rule = ext + } else if (typeof ext == "string") { + if (ext.startsWith("http")) { + let js = request(ext, { + method: "GET" + }); + if (js) { + eval(js.replace("var rule", "rule")) + } + } else { + eval(ext.replace("var rule", "rule")) + } + } + if (rule.模板 && muban.hasOwnProperty(rule.模板)) { + print("继承模板:" + rule.模板); + rule = Object.assign(muban[rule.模板], rule) + } + let rule_cate_excludes = (rule.cate_exclude || "") + .split("|") + .filter(it => it.trim()); + let rule_tab_excludes = (rule.tab_exclude || "") + .split("|") + .filter(it => it.trim()); + rule_cate_excludes = rule_cate_excludes.concat(CATE_EXCLUDE.split("|") + .filter(it => it.trim())); + rule_tab_excludes = rule_tab_excludes.concat(TAB_EXCLUDE.split("|") + .filter(it => it.trim())); + rule.cate_exclude = rule_cate_excludes.join("|"); + rule.tab_exclude = rule_tab_excludes.join("|"); + rule.host = (rule.host || "") + .rstrip("/"); + HOST = rule.host; + if (rule.hostJs) { + console.log(`检测到hostJs,准备执行...`); + try { + eval(rule.hostJs); + rule.host = HOST.rstrip("/") + } catch (e) { + console.log(`执行${rule.hostJs}获取host发生错误:` + e.message) + } + } + rule.url = rule.url || ""; + rule.double = rule.double || false; + rule.homeUrl = rule.homeUrl || ""; + rule.detailUrl = rule.detailUrl || ""; + rule.searchUrl = rule.searchUrl || ""; + rule.homeUrl = rule.host && rule.homeUrl ? urljoin(rule.host, rule.homeUrl) : rule.homeUrl || rule.host; + rule.homeUrl = cheerio.jinja2(rule.homeUrl, { + rule: rule + }); + rule.detailUrl = rule.host && rule.detailUrl ? urljoin(rule.host, rule.detailUrl) : rule.detailUrl; + rule.二级访问前 = rule.二级访问前 || ""; + if (rule.url.includes("[") && rule.url.includes("]")) { + let u1 = rule.url.split("[")[0]; + let u2 = rule.url.split("[")[1].split("]")[0]; + rule.url = rule.host && rule.url ? urljoin(rule.host, u1) + "[" + urljoin(rule.host, u2) + "]" : rule.url + } else { + rule.url = rule.host && rule.url ? urljoin(rule.host, rule.url) : rule.url + } + if (rule.searchUrl.includes("[") && rule.searchUrl.includes("]") && !rule.searchUrl.includes("#")) { + let u1 = rule.searchUrl.split("[")[0]; + let u2 = rule.searchUrl.split("[")[1].split("]")[0]; + rule.searchUrl = rule.host && rule.searchUrl ? urljoin(rule.host, u1) + "[" + urljoin(rule.host, u2) + "]" : rule.searchUrl + } else { + rule.searchUrl = rule.host && rule.searchUrl ? urljoin(rule.host, rule.searchUrl) : rule.searchUrl + } + rule.timeout = rule.timeout || 5e3; + rule.encoding = rule.编码 || rule.encoding || "utf-8"; + rule.search_encoding = rule.搜索编码 || rule.search_encoding || ""; + rule.图片来源 = rule.图片来源 || ""; + rule.图片替换 = rule.图片替换 || ""; + rule.play_json = rule.hasOwnProperty("play_json") ? rule.play_json : []; + rule.pagecount = rule.hasOwnProperty("pagecount") ? rule.pagecount : {}; + rule.proxy_rule = rule.hasOwnProperty("proxy_rule") ? rule.proxy_rule : ""; + rule.sniffer = rule.hasOwnProperty("sniffer") ? rule.sniffer : ""; + rule.sniffer = !! (rule.sniffer && rule.sniffer !== "0" && rule.sniffer !== "false"); + rule.isVideo = rule.hasOwnProperty("isVideo") ? rule.isVideo : ""; + rule.tab_remove = rule.hasOwnProperty("tab_remove") ? rule.tab_remove : []; + rule.tab_order = rule.hasOwnProperty("tab_order") ? rule.tab_order : []; + rule.tab_rename = rule.hasOwnProperty("tab_rename") ? rule.tab_rename : {}; + if (rule.headers && typeof rule.headers === "object") { + try { + let header_keys = Object.keys(rule.headers); + for (let k of header_keys) { + if (k.toLowerCase() === "user-agent") { + let v = rule.headers[k]; + console.log(v); + if (["MOBILE_UA", "PC_UA", "UC_UA", "IOS_UA", "UA"].includes(v)) { + rule.headers[k] = eval(v) + } + } else if (k.toLowerCase() === "cookie") { + let v = rule.headers[k]; + if (v && v.startsWith("http")) { + console.log(v); + try { + v = fetch(v); + console.log(v); + rule.headers[k] = v + } catch (e) { + console.log(`从${v}获取cookie发生错误:` + e.message) + } + } + } + } + } catch (e) { + console.log("处理headers发生错误:" + e.message) + } + } + rule_fetch_params = { + headers: rule.headers || false, + timeout: rule.timeout, + encoding: rule.encoding + }; + oheaders = rule.headers || {}; + RKEY = typeof key !== "undefined" && key ? key : "drpy_" + (rule.title || rule.host); + pre(); + init_test() + } catch (e) { + console.log("init_test发生错误:" + e.message) + } +} +let homeHtmlCache = undefined; + +function home(filter) { + console.log("home"); + let homeObj = { + filter: rule.filter || false, + MY_URL: rule.homeUrl, + class_name: rule.class_name || "", + class_url: rule.class_url || "", + class_parse: rule.class_parse || "", + cate_exclude: rule.cate_exclude + }; + return homeParse(homeObj) +} +function homeVod(params) { + console.log("homeVod"); + let homeVodObj = { + "推荐": rule.推荐, + double: rule.double, + homeUrl: rule.homeUrl, + detailUrl: rule.detailUrl + }; + return homeVodParse(homeVodObj) +} +function category(tid, pg, filter, extend) { + let cateObj = { + url: rule.url, + "一级": rule.一级, + tid: tid, + pg: parseInt(pg), + filter: filter, + extend: extend + }; + return categoryParse(cateObj) +} +function detail(vod_url) { + let orId = vod_url; + let fyclass = ""; + log("orId:" + orId); + if (vod_url.indexOf("$") > -1) { + let tmp = vod_url.split("$"); + fyclass = tmp[0]; + vod_url = tmp[1] + } + let detailUrl = vod_url.split("@@")[0]; + let url; + if (!detailUrl.startsWith("http") && !detailUrl.includes("/")) { + url = rule.detailUrl.replaceAll("fyid", detailUrl) + .replaceAll("fyclass", fyclass) + } else if (detailUrl.includes("/")) { + url = urljoin(rule.homeUrl, detailUrl) + } else { + url = detailUrl + } + let detailObj = { + orId: orId, + url: url, + "二级": rule.二级, + "二级访问前": rule.二级访问前, + detailUrl: detailUrl, + fyclass: fyclass, + tab_exclude: rule.tab_exclude + }; + return detailParse(detailObj) +} +function play(flag, id, flags) { + let playObj = { + url: id, + flag: flag, + flags: flags + }; + return playParse(playObj) +} +function search(wd, quick, pg) { + if (rule.search_encoding) { + if (rule.search_encoding.toLowerCase() !== "utf-8") { + wd = encodeStr(wd, rule.search_encoding) + } + } else if (rule.encoding && rule.encoding.toLowerCase() !== "utf-8") { + wd = encodeStr(wd, rule.encoding) + } + let searchObj = { + searchUrl: rule.searchUrl, + "搜索": rule.搜索, + wd: wd, + pg: pg || 1, + quick: quick + }; + return searchParse(searchObj) +} +function proxy(params) { + if (rule.proxy_rule && rule.proxy_rule.trim()) { + rule.proxy_rule = rule.proxy_rule.trim() + } + if (rule.proxy_rule.startsWith("js:")) { + rule.proxy_rule = rule.proxy_rule.replace("js:", "") + } + let proxyObj = { + params: params, + proxy_rule: rule.proxy_rule + }; + return proxyParse(proxyObj) +} +function sniffer() { + let enable_sniffer = rule.sniffer || false; + if (enable_sniffer) { + log("开始执行辅助嗅探代理规则...") + } + return enable_sniffer +} +function isVideo(url) { + let t = 0; + let is_video; + if (rule.isVideo && rule.isVideo.trim()) { + is_video = rule.isVideo.trim() + } + if (is_video.startsWith("js:")) { + is_video = is_video.replace("js:", ""); + t = 1 + } + let isVideoObj = { + url: url, + isVideo: is_video, + t: t + }; + let result = isVideoParse(isVideoObj); + if (result) { + log("成功执行辅助嗅探规则并检测到视频地址:\n" + rule.isVideo) + } + return result +} +function DRPY() { + return { + init: init, + home: home, + homeVod: homeVod, + category: category, + detail: detail, + play: play, + search: search, + proxy: proxy, + sniffer: sniffer, + isVideo: isVideo + } +} +export +default { + init: init, + home: home, + homeVod: homeVod, + category: category, + detail: detail, + play: play, + search: search, + proxy: proxy, + sniffer: sniffer, + isVideo: isVideo, + DRPY: DRPY +}; \ No newline at end of file diff --git a/潇洒/js/jsencrypt.js b/摸鱼儿/api/jsencrypt.js similarity index 100% rename from 潇洒/js/jsencrypt.js rename to 摸鱼儿/api/jsencrypt.js diff --git a/摸鱼儿/jars/config.jar b/摸鱼儿/jars/config.jar index 745764b..fc9e591 100644 Binary files a/摸鱼儿/jars/config.jar and b/摸鱼儿/jars/config.jar differ diff --git a/摸鱼儿/jars/瓜子影视.jar b/摸鱼儿/jars/瓜子影视.jar index 745764b..fc9e591 100644 Binary files a/摸鱼儿/jars/瓜子影视.jar and b/摸鱼儿/jars/瓜子影视.jar differ diff --git a/摸鱼儿/js/guazi.js b/摸鱼儿/js/guazi.js new file mode 100644 index 0000000..6570b87 --- /dev/null +++ b/摸鱼儿/js/guazi.js @@ -0,0 +1 @@ +H4sIAAAAAAACA+19eZMjx5Xf/4rQd4CaZB9CN+ouFIbRYuC+7xu0YlhHFqqAulAHLmoiaHvJJbUkxfVKjFiTlsTVekl7V14qLK8pciR9GaJn+Je/grMKQDeO6pkeSivtSgBJNCrzvcyXme9lvnq/zOQ3v/HNb4xZM2A6CghcBl795jcC8GPLtgLuBU4e/c2Hi5+/d3K+TJV0y4aJkm0b1j0EYQ05xDi2YPOjEK+rayrHVCAREjUMJKsJYFqQLRuR17/WVAjiFaiCpkfulgmLxHAyhON4CMPoEIW42QJrs96P0MDStTW3BViTl5o7NSEirKaom6ClC899+9vbxCzntghfpY0cmR/WvYx7AWyVKMqKDcwl4TqNV1jLuq+xqtcdP/w/i1//4hj+efzxG4u3Pj5efP+Tq4f/ePzoi4eP3/r8+NFPfg4TT7Y4l72BHePH5DFxTJMnW3XdO8mQVja6/gRxNtwk2WqtnkYIqyXZCNfLiFRb081BW9HJrmhIE2WUxEtFO60X2llLTXE1GR91R3qsP7VbrRqT7uGC03TKKi+JTsJJZLL4NCclSCndnTXm47CkqFR41qPZlIT0Db0PxESBmhFMbhQUHR4dD5UyA3rRSq5djFH1cAMggzCVA1wNkbkZaAhMD8sgEbUYk3OFXo9jgm3HaofTUpwakanwYF4hglVLwkdcZ1qvDgyhmK63TYvDHFUalhpG36TVThGlWXI0Hgloqh7Oj3LcmGo1+7PCVLRqViafmelWMFJiHadGNPFMKRnmes38LJWpIElU6qSCZkUVy8migUSRYKaOCeUGg4dVlJ8IeK9fHttmbJBi7bjdQx06NUdGmYRBKjPCwWM5SlVrhZpYDGrC1DEE0yzQZrsyZBuTAhe0WmMQJRyOtes218ODMTwdFRINbpwWQY/s0LhEOM0gzTBENsIKXNyedvSRMqyU21jSVLEKyLfqKREbxhKSUInHkkat1teoqhBTUhGyLM/qMpuZ1lq1cXIQxIxi1UkKYj7ahSorxWbNkY42InqyNlSiMquPtIqdiIbLFFub9PVKtirF4gk9majmguyoP6KosTaeNeutXGfQSsdH1ZQQkyajfKsUV2tyLJmt9atMpmhgumUVar1Gqkai8cQomc1Wq1Iinoxnq3osWox3DK6mziaJXmzYn01ivZjVn1VzXe9Prxu1oni1B1JamzJTrVFWatDl0pzvzGeKIAxQtmMkG0yrzfWskm7glFnOJtGeRuGV1nwUyeczelFsZKis5TRzuX5WUfPagJ5TtepQkUdss2VrPadbk/VYcW7jhRIlN5tiipzlxKGAYg10yjY6846RluwUEyxqXQKv9+Igr7U7eKUk9IbjqYY2uIqmjohxQ9BaehywWgNH04Qz0+hegRsbQOeFepKiCnbS5kTcQcVOONayC/FSw5zyg3pMDE9aPUKZ5kEmmSTVXLNDpypWwgpWizmuMsfa0VGFdfCxFW50M+NcGjTREhXBsgCdB7EMg4qKM52a4easzQzGJMGUhkw92MYTTMnp96WyNkRmeKFvUlw1OByWImnRcMxYpcBl5HwBKbAxSMsluBLoGmodTYSriDAkZvNYTJxzpeJwntWm+DyRLRLJHBYxo7NERJmzKtbvxRzCbnciFTzTA5KV5gBDq+2smzzuOERcskE5TnesaTZtZaIdi8aGdNbMoU48NQxrcn0m2NNcr4yRdDxmTqelONanemU0m283xkKqkMO54bDPksDSuim2HOSMaKsRx7kcZtUZhiKjSD+SxfNOdRhJpJtkN4xlh4ACSSWSI+08N2lYdK8BqvVRxJnFmkBz6qNKDc9hGSPMphN1NVKJ5zqgldEL+VaNFrCyHimQSr9pjPMmmgG0Gcdr4lx2yFE2MlPooJxIdeKjrCKa/W412GYyhEhMB1i/kjOCxValF+MbygCt1B19OhSj2jBeqswb80ywblemcasGp9aNdUeRVRmuY/R1iqA73pwvsooFVqmGws7uG6xpwXTbdNbJCjuf3Qs8P7BCtl63TVnrn56eBS6/s144PRpgBwS4lr783RdvEhGE1zVLV0BI0funRxNW688l+fLy8igoa4Zjn92QusvxWBfuy24hXmbIMhTZPj1Cjs5eRjdL9UjhEnMLLbZLawIogmPLuna5RfySR3xDKzoa71IFkhpvzgz7FHaHrDXA1D7bbOm6tUMwg9XHXUo9Vw8BjQ81bZEJef13eqSOO7F6OwyGJsjaJatxdPbifhny+ElF4E0Cqm+BsebRvIGmBntFwHFdfPrG1ft/efXhPy2+/9PFP7/x5WefB6LJOhKPxZFKPl6nKqwgwAELXP304eLhD/YlAMu2AmFTEFhCCOx2wrnb4vPdnnA/8vge/O98P0PVBahJ18W6jyEomQ+lsRRzgximhCpD3gpvEz9w+2CvFx6/+38XP3h/2QWPvvibqx9/uPjVvzz+9T+53ZEB06e33iW6vHkM8bIhAdOGzb7R+a1xggy7o2EC2zG1rTIhc9MwgBln4XieveiJ+tsfLj748eLvP1688be+sj3w0cgEWA7GRDeF1TjIY1+t3Kwdyr2rXq5MS+1yi/Ltyy9//dtHP/zET4muPvkISvr4tx88/ujtxx//DPb1fv3CUtJdbVoln/poz01X39uVfmfof48aeNNQ+LRs1zMp5Q2/20HPhRcf/ePi9dfvoqrQYJd9t3jv3Uf/9S+ufvTp1Tv/C6rq1Tt/B7V18e5PFh//1dKib+1cICxHdvV4i4a6M4m/sXgauCWET30rbd6s8kVfJXWnWFtWgWWzqgGl0sAkkGBtqO+hPrAbMAcuFkgAQ1HUNQB3Jbgm31kAXLW5zrtp1tlqxj4JnXhLwbqUs915fuRA1vvLiTlXL5dClleALM52Fe9I0FU4r923ZwY4uhc4Yo52lOdouRjBvOWP3ew1o7tk7vHerDiQ5OZhr4rlIubWsfy10b9n61ZutOr29uKwwetVa5PBpxB8pxRL7mssHGr3RfjE1odAg4Jcnnu/LjHXxQIMwBg2IrIYw+EcI1AkgdORiMAKaIjlUZQBAk2hooAyYU7kAC/iosBGBAYHEYagcIoAIk4yJAFoDmNEXsBwhsPQME2QkTDHixEBUkSoiEgR4TAvAJRgeBzl3QwsLNIoyUc4huNoQGMoiQlAZOgwHuFwkQ+TKMMJOIkBnOBxjGB5KiyiOE4DQFM0wDkOZSmGYAEKSJHgRJqnWY7myQjKR1haRAWGF0SBoGmW5UVKYAgsQtBhjGVEVxCMFTFRhI3ASEoAERzwsAk8E+ZFkhN4iiZEGuZFREDgDI1xKIgQHIYxgCfCAoMSlMhxBB+iIoKAUjwlRFiGBWGcpnAmDGvCGRx2BkaJgBZxHuUZWAsQBBYWgXNEmBR5WLAQjpwbkq4BT08vsfONcbw8CQS3VSAYODlnDcMdPuzcNSOPxPbSIYF12cswfUMwItx04KTxUj4ShppJ6OGmPA9GQCvJtopKEk8NiUE4WQNWkehmtGS818yEY+VSqTEwZuFaqyQjXVlNO6WuKcfDcdWajMlKqSunuvNJpCopo15+UhLjRTrbNFI9tEGavSmTDjPz4Ri3Sy1O7MbJUakKhLSMhrV2jyAEpe60prVyS+xSuWm5nSlm0ctvH8/HgvuPwInycDh0VFsVJiPDMF76Htn9lvUtnDNP1up9rcO36bZrH6pAbRDuse7aBacLs2uTOBjCH90Qjq/npuNNkzjeVvRVnrvOK5dTmdVV+QLHURzDMczkj59mBi/gsWcwhBfw1B/AFF4gEsdPs/vjazX2sjf03s1cTwrHrHB/DEzLfRPCro3HVfSzTTfB1X7JVhWo/SKween0tuCnF4SE/aM7Jg+QFlzDEsBmZQWxJH1S1sDJnq8mAVaAAtzz8+FO4iwvgYu4rtmmrpzcC5xo+gXvpp34OHYnrWVDXDqcRGkUp3zJKiw/ZPugxKrAJYVShxwR2hwnojxO0qERIIkItAAKhFSGZUWK5sI4xYZkEXA0GSZIWryterc8LBQJ4b4ENSACc0n0lNjxFlvnIu5Ytq4C8yKuyECzL7KGVxEeDqHwH8yXy+00l7YBbcKlhiOuyDzrOh3I9GIymVyIuqlewBGCniG0DcG3lIxu2Uvup8sJa9SA93LicuQBMC6iijz2HSsEOYnyPDDsi6RbO/TIXJ7+XDZ8i25asPHRPmyPS6YP3e5DiBCGh9CT3TeC7WdXle953zsZKrAlXYClVcr1BlTLm8+u0zuAjYrrS7ffDYH4uWSucexZjBuzX7udyzcsjyzkpm+FRHajIoL3ubz0wiI7XqvLfLbn9lkG5AcrP9clCW2m3fh8N2k7RbjT4JrV/b1mcX/vNcztzmVVR8VsNi70s7FoIlqK9YcjaSinIxM0Fq0mU9FoPR5Vo5N+P8dH+8loVE9HAS3lzXZBxuZVddBoYPqcS5JVIQVy6dLU4aaKQKfNVHoqq1OxaBVjdMzISQbf0J3oaDaJpgxDzgO7GYtxnUnX6jaxScmkSabTUitqvBifkWaXGQuKnNK4YnOAMnSiSfeCiN6JCe0mgXBYGk2UiGRk0izU6hM+32sQkwHCx7PY2IqrRH+A16j6aBiNdNF4dAJlruZj/WguEyTj0xaKzGMtviDH4plxPVpSUSWcAfaMa0jIADfQLmY1OqZORguTKBtvNMFIiA3acqGuR5TSJJFJzUbMvBNBg/3SlA3zVHLEt1uRlKq0OibTksTYnO/pmNYBJaGTaoTtKj5jJUQXbIGfBse1Yj2dEzAboYYUlxAik+i4K2QTnFKM9oMTOZ/vUXleiA6TUYyPs8NkiSyB6TBF2ZlKzazRnXIX6WTE4agzTUrFkVriYpEmQVpsI6cV2tlMnMl2ZhZdVedzAm3Y8/jAKY/ytdosmCoWyYYwycWiuWovVRlY6XiwNuLTVHPcKsrFiqRNAMJ1kkCqS3mGnuXySB9pynmzzIQlgk06VJ/PjWKzfmNExGIxPYOrAmGYSDsoNYvtmBWvVuOSKDWyppCQtbxMK7WpKcQ0DS1Lgz7OT5xRnprPmxEDKQXrkWk4PmQmzSxFJPIqM2jmkkw7mg63CwNEj5fbSSko83QpO2l4fTFAO4wmTelox+rHu7WRgg0VbmS31AITjFD5Xj5cgc1PI1lxUG3OCKOS1utsLywKIyfNcCNGn4lUUJgPkoje6PCxWT1Id2rVXLSCULw8w7gCUZKaksWWWzOKKmY6WmUg8I0OmmILcnDGdXpZMVvFK6TJYRG1NcJEUOTiHWkeLGBmmtFZm1K6edEAzJAhelFo75tr8L6ZrlK9IOHGvFKrR914CpzGPYM9X9Odne0UJ4/37f4J8cZrrtDmq+O+WE8MWt4UAmtfl7EniDs1uj75Oq61OVfdxLc259td9xwuZfuzLX4WgulrNvhzg8kL/d6AveuPB1XCr50FYxUER8/9/Jd7HnAcWjkzvkERC9jQMXIU+1RYyfDgbBMEvnr3k8fvvPekoLpH5hNX30zfW3JWfuHpMrp+tsXhzfbQDUhCl+pUtoG6XxnsJZjuLVnWBqkf4Sp+7Yr2yhrHxsgQRuAhigrhcPJVEJXzXB5DMhDD1MeyAJCxLiAvsfyl+6ArsmUfT4TL51+V7ZCHvj84fuXFvYqEkOFY0um+BKvRuw7ObGWt0Px1yX4kstr3CAyZ98sWgMV7+Sxv7uc/ONtJenC2Lfru875KeBnXevHlZ689+vzjr4WzHJCLA3JxQC4OyMUBuXgm5OJaSfvAdv0W4tQbpf1J8xAn/3ceJ3dXvKeGx0cJQ7eTOAcEWc0T1fRImbUoGXQ6cSIpsZVCNZgt52YZLSMq8QE1QcLJej6c6s8mxbHZH0y5KZoeKslUIUsGc5bUn9UBTRDlbM2ynaE9EeT4jIg3gmKhbjjTWC6RVcRONcGCDCH3sYkcQ3NWj0axTkZOTUC66JB2T9TqRqZPlDW9QGtzxHHMpizi5Tz5u4fH7xAi318Cbg2YH4Lmf+pB86caxwt4bMs8XsBTtxsIJL7dRGDm1zcSWO2NmfiFzldTwdeKmPuuM67O+y4vbpTPPoTPDuGzQ/jsXyt85u/LuaGgU2cZFztfY06+Tp0kXINcjq97fg1YrX74OOq3gg4+wMM+wZMQh60owtYyy2oaMHfiX8Ie1nALYrDk9sUMfJb0FVawYvJBC/x8gGeLWvpWevdA5T77M0QofXRiCX0+JTTpuxS4rE9+05BGlsOdFrv349FG0v89w+Hc/n75iDo6DxxhuPtNoO437v0++u4+jy0LSx7Mo3O/SI/P/aLJXRYvfuOeHfG2WwlWyHsoi9dy7bROFgOnS/pvXV4GLrAzP0tZdYEr/sse8Xd3Snng22VHXgw8cPXm+49fe/3qp7+Cr5Rfffja43/4j6tow+v/8uUX7y9ee3jr1rOVYe5Hdu+OJ98BS/7XwJGfiCF/Dfz42bHj3x03vitmfGe8+O5Y8R1x4r2diu6Uv1L0nY3iUHdh3raJfr19jl9rW+Oz7GYMHLEmYI/uBVxBU4WQ+xT43vcC6NlG+dD4YVNuiNz2QRr4Z4dqBljzhsx98ivLgPpfl+fetsfljGTppr1RPHxy+Y68jZM+zJAUUlai6SRMsL2Nj+5wbC1xd93Y6LtZ6zqOs1mCG9DxR5/WrsLRk/a3+BznO9p1LW498WC7H2iKnIvt+8FYLgTii2O5GeuF1v29wec+XqMzSwzoO7uT3zZmEtjHRTw0yN3a6p7y8/FLluDHNRVslS1rTgDO/2jgpfWhwJMANLyrD3559f6nj//yf58Ed8mDJ1998Iaf1+Oq2EbpFm/qfkJ4AM011Q1MswfgvfL8q9dksvAA2XhcifLglfNdx2pza8edkLsvP3/7DggNXM28/SAHkOYA0hxAmgNIcwBpfq8gDX4Aaf6cQZqqOpUpXm53uOp8aIb1YL1ZkptOdVpNigwSbc2a7S7ZQGJpie/Ess05qZVnmVhajETJPFdE5XyKmBmRYrgd7aKmaVGVudCIlmMkZSh8HZ/30ElT5viOk87hkVYrXWvn05NkZO7g48JEEvuDBssmjI5OmtwsGE5PO42hPc+p07EGyk2hCzJysNKzGpIyrmT/ICDNAZb5s4Zlds3hBTy2aRAv4Km1ScCffwijgAL4mgVMvzaM3zcss32Q4QDRHCCaA0RzgGgOEM0BonkGiGa5FBzQhAOacEc0YRXnK3bvN2uFJaYAf6wvl3nuueVVNCtDXGb6HEdY3khjAkNheXD7ScuT88DJydntV+t4xVzAz+XW7Tp70m7Fcn3vzlkJvIykfr0LenZkg1w3kvmW+28GVtm95GHlpnuIB3yNoJ/5mghV52QF+vdQTBftOPerwC398E72x34nO9o66fn7BaTwOwBSz4RHVRR2hrhXj2Q1UX8CHLU+mIr7nUyFGuuyv7hrr9LEEeC//Ytbj6TiZ7dfRUI83ay82054RXdWpuPuWPAxqy3DesrVKMTtApH+I0b4FUP6nMDDbxlHcjmO+yNJ3HUot47Oe4fmV0OJ34zl5hk4Yq86f/iQWMGH26eGNE1T1V1QagtL3DkUtgeAuAq3+OdfPf7FR25Q963Xrj58a2tnxo0b5VJWWJNVXU+qzLn+c2jMKrDrvEpCbr4fYKWwlu3xuQuBoyi+AMIX71796NNHX/yFK8SHry3ee/fLz1778rP/uXj9Pz/65U8XD19bfPxX/+/h24v3/nrx1jtXP/nvV2/9Bj4++uCXizc/hb/h95L+q//240f/43NYiOFWuNcQ2CmBUw9Eg7LctCcEfZe+LQUuAtiLMOs7lwEU/r248N0T426cuWF9Wf5uyKvLl3Z50d5N8334XvTn4kzADn3yHuztv7kFjLn6+c8Wb/7t448+efyb3ywe/mDx9q++ev2dvSuJbkbXzcoKRRa+k0FBr4UOqW7KKbLivDz9D0LwDNkd5mURG3fy7fFv5PkX4cIc//CfXBTOk/TqzfcW3/+JO+SfvuGh24v/8vZKBqgli/fehCriouFw5E0P2V2qz/4ep412+Q6RZ0FLYP0V98wiVOTlqcXnn3/1BnneKAX6Uw9eev7Vmwa5Ca+c3b4xamvlaZUT++8hG/A9fht+70YTr0ncg5YNtr+5G2Nnq8A10r8s0IEvUvzSk9+hdHNZ3tbNTXIvwY8QauUWHXz2IRNkE+wWuU7bIb/eDYDfsh3AS3WvsBRNXXV3Jvz1Z1/94uGjn/1o+0bnPXJvC8FycAe6rJ2ePHdytufyX+8CuHrvw0e//LvDOc3DFoDDFoDDFoDDFoDDOc3Da/bhnOYf8ZzmYQvA4WTm4WTmAfY/wP4H2P8A+/95wP47IftNDjdmf8vdj3+0DQO74lrsFH580IWbm+vO/v1vOdhptWYNB5Y2GQ4EDQzcCz9HI9gJo/1O8OCZs2fbvvAHhlGX1+9twcDPLWFgBIF5t4IxGObH5v5fWJ7t9BtMd8MLlne//kbp54EjmAzM+2NW8XDVo63DPXccEffUlmtEv8vN+7/TAbXDLpQ/pV0oX++k6g4o7N5Reddjh3t6vTp9eEf88ImnD59uQvAD6/vTO7S4AkU2KmAFwZ05/22fXHzw/wEbnUaU7nIAAA== \ No newline at end of file diff --git a/摸鱼儿/js/jp.js b/摸鱼儿/js/jp.js new file mode 100644 index 0000000..5ba9817 --- /dev/null +++ b/摸鱼儿/js/jp.js @@ -0,0 +1,150 @@ +/** + * 影视TV 超連結跳轉支持 + * https://t.me/fongmi_offical/ + * https://github.com/FongMi/Release/tree/main/apk + */ + +var rule = { + title: '荐片', + host: 'http://api2.rinhome.com', + homeUrl: '/api/tag/hand?code=unknown601193cf375db73d&channel=wandoujia',//网站的首页链接,用于分类获取和推荐获取 + // url:'/api/crumb/list?area=0&category_id=fyclass&page=fypage&type=0&limit=24&fyfilter', + url: '/api/crumb/list?page=fypage&type=0&limit=24&fyfilter', + class_name: '全部&电影&电视剧&动漫&综艺', // 筛选 /api/term/ad_fenlei?limit=10&page=1 + class_url: '0&1&2&3&4', + detailUrl: '/api/node/detail?channel=wandoujia&token=&id=fyid',//二级详情拼接链接(json格式用) + searchUrl: '/api/video/search?key=**&page=fypage', + searchable: 2, + quickSearch: 0, + filterable: 1, + filter: { + "0":[{"key":"area","name":"地區","value":[{"n":"全部","v":"0"},{"n":"国产","v":"1"},{"n":"中国香港","v":"3"},{"n":"中国台湾","v":"6"},{"n":"美国","v":"5"},{"n":"韩国","v":"18"},{"n":"日本","v":"2"}]},{"key":"year","name":"年代","value":[{"n":"全部","v":"0"},{"n":"2023","v":"153"},{"n":"2022","v":"101"},{"n":"2021","v":"118"},{"n":"2020","v":"16"},{"n":"2019","v":"7"},{"n":"2018","v":"2"},{"n":"2017","v":"3"},{"n":"2016","v":"22"}]},{"key":"sort","name":"排序","value":[{"n":"热门","v":"hot"},{"n":"评分","v":"rating"},{"n":"更新","v":"update"}]}], + "1":[{"key":"cateId","name":"分类","value":[{"n":"全部","v":"1"},{"n":"首推","v":"5"},{"n":"动作","v":"6"},{"n":"喜剧","v":"7"},{"n":"战争","v":"8"},{"n":"恐怖","v":"9"},{"n":"剧情","v":"10"},{"n":"爱情","v":"11"},{"n":"科幻","v":"12"},{"n":"动画","v":"13"}]},{"key":"area","name":"地區","value":[{"n":"全部","v":"0"},{"n":"国产","v":"1"},{"n":"中国香港","v":"3"},{"n":"中国台湾","v":"6"},{"n":"美国","v":"5"},{"n":"韩国","v":"18"},{"n":"日本","v":"2"}]},{"key":"year","name":"年代","value":[{"n":"全部","v":"0"},{"n":"2023","v":"153"},{"n":"2022","v":"101"},{"n":"2021","v":"118"},{"n":"2020","v":"16"},{"n":"2019","v":"7"},{"n":"2018","v":"2"},{"n":"2017","v":"3"},{"n":"2016","v":"22"}]},{"key":"sort","name":"排序","value":[{"n":"热门","v":"hot"},{"n":"评分","v":"rating"},{"n":"更新","v":"update"}]}], + "2":[{"key":"cateId","name":"分类","value":[{"n":"全部","v":"2"},{"n":"首推","v":"14"},{"n":"国产","v":"15"},{"n":"港台","v":"16"},{"n":"日韩","v":"17"},{"n":"海外","v":"18"}]},{"key":"area","name":"地區","value":[{"n":"全部","v":"0"},{"n":"国产","v":"1"},{"n":"中国香港","v":"3"},{"n":"中国台湾","v":"6"},{"n":"美国","v":"5"},{"n":"韩国","v":"18"},{"n":"日本","v":"2"}]},{"key":"year","name":"年代","value":[{"n":"全部","v":"0"},{"n":"2023","v":"153"},{"n":"2022","v":"101"},{"n":"2021","v":"118"},{"n":"2020","v":"16"},{"n":"2019","v":"7"},{"n":"2018","v":"2"},{"n":"2017","v":"3"},{"n":"2016","v":"22"}]},{"key":"sort","name":"排序","value":[{"n":"热门","v":"hot"},{"n":"评分","v":"rating"},{"n":"更新","v":"update"}]}], + "3":[{"key":"cateId","name":"分类","value":[{"n":"全部","v":"3"},{"n":"首推","v":"19"},{"n":"海外","v":"20"},{"n":"日本","v":"21"},{"n":"国产","v":"22"}]},{"key":"area","name":"地區","value":[{"n":"全部","v":"0"},{"n":"国产","v":"1"},{"n":"中国香港","v":"3"},{"n":"中国台湾","v":"6"},{"n":"美国","v":"5"},{"n":"韩国","v":"18"},{"n":"日本","v":"2"}]},{"key":"year","name":"年代","value":[{"n":"全部","v":"0"},{"n":"2023","v":"153"},{"n":"2022","v":"101"},{"n":"2021","v":"118"},{"n":"2020","v":"16"},{"n":"2019","v":"7"},{"n":"2018","v":"2"},{"n":"2017","v":"3"},{"n":"2016","v":"22"}]},{"key":"sort","name":"排序","value":[{"n":"热门","v":"hot"},{"n":"评分","v":"rating"},{"n":"更新","v":"update"}]}], + "4":[{"key":"cateId","name":"分类","value":[{"n":"全部","v":"4"},{"n":"首推","v":"23"},{"n":"国产","v":"24"},{"n":"海外","v":"25"},{"n":"港台","v":"26"}]},{"key":"area","name":"地區","value":[{"n":"全部","v":"0"},{"n":"国产","v":"1"},{"n":"中国香港","v":"3"},{"n":"中国台湾","v":"6"},{"n":"美国","v":"5"},{"n":"韩国","v":"18"},{"n":"日本","v":"2"}]},{"key":"year","name":"年代","value":[{"n":"全部","v":"0"},{"n":"2023","v":"153"},{"n":"2022","v":"101"},{"n":"2021","v":"118"},{"n":"2020","v":"16"},{"n":"2019","v":"7"},{"n":"2018","v":"2"},{"n":"2017","v":"3"},{"n":"2016","v":"22"}]},{"key":"sort","name":"排序","value":[{"n":"热门","v":"hot"},{"n":"评分","v":"rating"},{"n":"更新","v":"update"}]}] + }, + filter_url: 'area={{fl.area or "0"}}&sort={{fl.sort or "update"}}&year={{fl.year or "0"}}&category_id={{fl.cateId}}', + filter_def: { + 0:{cateId:'0'}, + 1:{cateId:'1'}, + 2:{cateId:'2'}, + 3:{cateId:'3'}, + 4:{cateId:'4'} + }, + headers: { + 'User-Agent': 'jianpian-android/350', + 'JPAUTH': 'y261ow7kF2dtzlxh1GS9EB8nbTxNmaK/QQIAjctlKiEv' + }, + timeout: 5000, + limit: 8, + play_parse: true, + play_json: [{ + re: '*', + json: { + parse: 0, + jx: 0 + } + }], + lazy: '', + 图片来源: '@Referer=www.jianpianapp.com@User-Agent=jianpian-version353', + // 推荐:'json:.video;*;*;*;*', + 推荐: `js: + var d = []; + let html = request(input); + html = JSON.parse(html).data[0].video; + html.forEach(it => { + d.push({ + title: it.title, + img: it.path, + desc: it.playlist.title + ' ⭐' + it.score, + url: it.id + }) + }); + setResult(d); + `, + // 一级:'json:data;title;path;playlist.title;id', + 一级: `js: + cateObj.tid = cateObj.tid+''; + if (cateObj.tid.endsWith('_clicklink')) { + cateObj.tid = cateObj.tid.split('_')[0]; + input = HOST + '/api/video/search?key=' + cateObj.tid + '&page=' + + MY_PAGE; + } + var d = []; + let html = request(input); + html = JSON.parse(html).data; + html.forEach(it => { + d.push({ + title: it.title, + img: it.thumbnail||it.path, + desc: (it.mask || it.playlist.title) + ' ⭐' + it.score, + url: it.id + }) + }); + setResult(d); + `, + 二级: `js: + function getLink(data) { + let link = data.map(it => { + return '[a=cr:' + JSON.stringify({'id':it.name+'_clicklink','name':it.name}) + '/]' + it.name + '[/a]' + }).join(', '); + return link + } + try { + let html = request(input); + html = JSON.parse(html); + let node = html.data; + VOD = { + vod_id: node.id, + vod_name: node.title, + vod_pic: node.thumbnail, + type_name: node.types[0].name, + vod_year: node.year.title, + vod_area: node.area.title, + vod_remarks: node.score, + vod_actor: getLink(node.actors), + vod_director: getLink(node.directors), + vod_content: node.description.strip() + }; + if (typeof play_url === 'undefined') { + var play_url = '' + } + let playMap = {}; + if (node.have_ftp_ur == 1) { + playMap["边下边播,勤去清缓存"] = node.new_ftp_list.map(it => { + return it.title + "$" + (/m3u8/.test(it.url) ? play_url + it.url : "tvbox-xg:" + it.url) + }).join('#'); + } + if (node.have_m3u8_ur == 1) { + playMap["在线点播普清版"] = node.new_m3u8_list.map(it => { + return it.title + "$" + (/m3u8/.test(it.url) ? play_url + it.url : "tvbox-xg:" + it.url) + }).join('#'); + } + let playFrom = []; + let playList = []; + Object.keys(playMap).forEach(key => { + playFrom.append(key); + playList.append(playMap[key]) + }); + VOD.vod_play_from = playFrom.join('$$$'); + VOD.vod_play_url = playList.join('$$$'); + } catch (e) { + log("获取二级详情页发生错误:" + e.message); + } + `, + // 搜索:'json:data;*;thumbnail;mask;*', + 搜索: `js: + var d = []; + let html = request(input); + html = JSON.parse(html).data; + html.forEach(it => { + d.push({ + title: it.title, + img: it.thumbnail, + desc: it.mask + ' ⭐' + it.score, + url: it.id + }) + }); + setResult(d); + `, +} \ No newline at end of file diff --git a/摸鱼儿/js/jrk.js b/摸鱼儿/js/jrk.js new file mode 100644 index 0000000..67ab29b --- /dev/null +++ b/摸鱼儿/js/jrk.js @@ -0,0 +1,33 @@ +var rule = { + title:'JRKAN直播', + host:'http://www.jrkan2022.com/?lan=1', + // JRKAN备用域名:www.jrkankan.com / www.jrkan365.com / jrsyyds.com / www.jryyds.com / jrskan.com / jrsbxj.com /Jrkan备用域名1: www.jrkan2022.com 备用域名2: www.jrs23.com 备用域名2: www.jrskk.com 最新网址发布:www.qiumi1314.co + + url:'/fyclass', + searchUrl:'/x/search/?q=**', + searchable:1, + quickSearch:1, + class_name:'全部', + class_url:'/', + //class_url:'?live', + headers:{ + 'User-Agent':'MOBILE_UA' + }, + timeout:5000, + play_parse:true, + lazy:"", + limit:6, + double:false, + 推荐:'*', + // 一级:'.loc_match:eq(2) ul;li:gt(1):lt(4)&&Text;img&&src;li:lt(2)&&Text;a:eq(1)&&href',//play.sportsteam333.com + 一级:"js:var items=[];pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd;var html=request(input);var tabs=pdfa(html,'body&&.d-touch');tabs.forEach(function(it){var pz=pdfh(it,'.name:eq(1)&&Text');var ps=pdfh(it,'.name:eq(0)&&Text');var pk=pdfh(it,'.name:eq(2)&&Text');var img=pd(it,'img&&src');var url=pd(it,'a.me&&href');var timer=pdfh(it,'.lab_time&&Text');var parts = timer.split(' ');var dateParts = parts[0].split('-');var timeParts = parts[1].split(':');var year = new Date().getFullYear();var date = new Date(year, dateParts[0] - 1, dateParts[1], timeParts[0], timeParts[1]);var now = new Date();var hundredMinutesAgo = new Date(now.getTime() - 100 * 60 * 1000);if (date > hundredMinutesAgo) {timer = timer.split(' ')[1];items.push({desc:timer+ ' '+'🏆'+ps,title:pz+' 🆚 '+pk,pic_url:img,url:url})}});setResult(items);", + 二级:{ + "title":".sub_list li:lt(2)&&Text;.sub_list li:eq(0)&&Text", + "img":"img&&src", + "desc":";;;.lab_team_home&&Text;.lab_team_away&&Text", + "content":".sub_list ul&&Text", + "tabs":"js:TABS=['实时直播']", + "lists":"js:LISTS=[];pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd;let html=request(input);let data=pdfa(html,'.sub_playlist&&a');TABS.forEach(function(tab){let d=data.map(function(it){let name=pdfh(it,'strong&&Text');let url=pd(it,'a&&data-play');return name+'$'+url});LISTS.push(d)});", + }, + 搜索:'js:let d=[];setResult(d);', +} \ No newline at end of file diff --git a/摸鱼儿/js/去看吧.js b/摸鱼儿/js/去看吧.js new file mode 100644 index 0000000..a8e1393 --- /dev/null +++ b/摸鱼儿/js/去看吧.js @@ -0,0 +1,19 @@ +muban.vfed.二级.title = 'h1&&Text;.fed-col-md3--span:eq(0)&&Text'; +muban.vfed.二级.desc = '.fed-col-md3:eq(3)&&Text;;;.fed-col-md6:eq(0)&&Text;.fed-col-md6--span:eq(1)&&Text'; +var rule = { + title: '去看吧', + 模板:'vfed', + host: 'https://www.k9dm.com', + // url: '/index.php/vod/show/id/fyclass/page/fypage.html', + url: '/index.php/vod/show/id/fyclassfyfilter.html', + filterable:1,//是否启用分类筛选, + filter_url:'{{fl.area}}{{fl.by}}{{fl.class}}/page/fypage{{fl.year}}', + filter:{ + "33":[{"key":"class","name":"类型","value":[{"n":"全部","v":""},{"n":"搞笑","v":"/class/搞笑"},{"n":"经典","v":"/class/经典"},{"n":"热血","v":"/class/热血"},{"n":"催泪","v":"/class/催泪"},{"n":"治愈","v":"/class/治愈"},{"n":"猎奇","v":"/class/猎奇"},{"n":"励志","v":"/class/励志"},{"n":"战斗","v":"/class/战斗"},{"n":"后宫","v":"/class/后宫"},{"n":"机战","v":"/class/机战"},{"n":"恋爱","v":"/class/恋爱"},{"n":"百合","v":"/class/百合"},{"n":"科幻","v":"/class/科幻"},{"n":"奇幻","v":"/class/奇幻"},{"n":"推理","v":"/class/推理"},{"n":"校园","v":"/class/校园"},{"n":"运动","v":"/class/运动"},{"n":"魔法","v":"/class/魔法"},{"n":"历史","v":"/class/历史"},{"n":"伪娘","v":"/class/伪娘"},{"n":"美少女","v":"/class/美少女"},{"n":"萝莉","v":"/class/萝莉"},{"n":"亲子","v":"/class/亲子"},{"n":"青春","v":"/class/青春"},{"n":"冒险","v":"/class/冒险"},{"n":"竞技","v":"/class/竞技"}]},{"key":"year","name":"年代","value":[{"n":"全部","v":""},{"n":"2024","v":"/year/2024"},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"2013","v":"/year/2013"},{"n":"2012","v":"/year/2012"},{"n":"2011","v":"/year/2011"},{"n":"2010","v":"/year/2010"},{"n":"2009","v":"/year/2009"},{"n":"2008","v":"/year/2008"},{"n":"2007","v":"/year/2007"},{"n":"2006","v":"/year/2006"},{"n":"2005","v":"/year/2005"},{"n":"2004","v":"/year/2004"},{"n":"2003","v":"/year/2003"},{"n":"2002","v":"/year/2002"},{"n":"2001","v":"/year/2001"},{"n":"2000","v":"/year/2000"},{"n":"1999","v":"/year/1999"},{"n":"1998","v":"/year/1998"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}], + "21":[{"key":"class","name":"类型","value":[{"n":"全部","v":""},{"n":"搞笑","v":"/class/搞笑"},{"n":"经典","v":"/class/经典"},{"n":"热血","v":"/class/热血"},{"n":"催泪","v":"/class/催泪"},{"n":"治愈","v":"/class/治愈"},{"n":"猎奇","v":"/class/猎奇"},{"n":"励志","v":"/class/励志"},{"n":"战斗","v":"/class/战斗"},{"n":"后宫","v":"/class/后宫"},{"n":"机战","v":"/class/机战"},{"n":"恋爱","v":"/class/恋爱"},{"n":"百合","v":"/class/百合"},{"n":"科幻","v":"/class/科幻"},{"n":"奇幻","v":"/class/奇幻"},{"n":"推理","v":"/class/推理"},{"n":"校园","v":"/class/校园"},{"n":"运动","v":"/class/运动"},{"n":"魔法","v":"/class/魔法"},{"n":"历史","v":"/class/历史"},{"n":"伪娘","v":"/class/伪娘"},{"n":"美少女","v":"/class/美少女"},{"n":"萝莉","v":"/class/萝莉"},{"n":"亲子","v":"/class/亲子"},{"n":"青春","v":"/class/青春"},{"n":"冒险","v":"/class/冒险"},{"n":"竞技","v":"/class/竞技"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"大陆","v":"/area/大陆"},{"n":"美国","v":"/area/美国"},{"n":"韩国","v":"/area/韩国"},{"n":"日本","v":"/area/日本"},{"n":"泰国","v":"/area/泰国"},{"n":"新加坡","v":"/area/新加坡"},{"n":"马来西亚","v":"/area/马来西亚"},{"n":"印度","v":"/area/印度"},{"n":"英国","v":"/area/英国"},{"n":"法国","v":"/area/法国"},{"n":"加拿大","v":"/area/加拿大"},{"n":"西班牙","v":"/area/西班牙"},{"n":"俄罗斯","v":"/area/俄罗斯"},{"n":"其它","v":"/area/其它"}]},{"key":"year","name":"年代","value":[{"n":"全部","v":""},{"n":"2024","v":"/year/2024"},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"2013","v":"/year/2013"},{"n":"2012","v":"/year/2012"},{"n":"2011","v":"/year/2011"},{"n":"2010","v":"/year/2010"},{"n":"2009","v":"/year/2009"},{"n":"2008","v":"/year/2008"},{"n":"2007","v":"/year/2007"},{"n":"2006","v":"/year/2006"},{"n":"2005","v":"/year/2005"},{"n":"2004","v":"/year/2004"},{"n":"2003","v":"/year/2003"},{"n":"2002","v":"/year/2002"},{"n":"2001","v":"/year/2001"},{"n":"2000","v":"/year/2000"},{"n":"1999","v":"/year/1999"},{"n":"1998","v":"/year/1998"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}], + "50":[{"key":"class","name":"类型","value":[{"n":"全部","v":""},{"n":"搞笑","v":"/class/搞笑"},{"n":"经典","v":"/class/经典"},{"n":"热血","v":"/class/热血"},{"n":"催泪","v":"/class/催泪"},{"n":"治愈","v":"/class/治愈"},{"n":"猎奇","v":"/class/猎奇"},{"n":"励志","v":"/class/励志"},{"n":"战斗","v":"/class/战斗"},{"n":"后宫","v":"/class/后宫"},{"n":"机战","v":"/class/机战"},{"n":"恋爱","v":"/class/恋爱"},{"n":"百合","v":"/class/百合"},{"n":"科幻","v":"/class/科幻"},{"n":"奇幻","v":"/class/奇幻"},{"n":"推理","v":"/class/推理"},{"n":"校园","v":"/class/校园"},{"n":"运动","v":"/class/运动"},{"n":"魔法","v":"/class/魔法"},{"n":"历史","v":"/class/历史"},{"n":"伪娘","v":"/class/伪娘"},{"n":"美少女","v":"/class/美少女"},{"n":"萝莉","v":"/class/萝莉"},{"n":"亲子","v":"/class/亲子"},{"n":"青春","v":"/class/青春"},{"n":"冒险","v":"/class/冒险"},{"n":"竞技","v":"/class/竞技"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"大陆","v":"/area/大陆"},{"n":"美国","v":"/area/美国"},{"n":"韩国","v":"/area/韩国"},{"n":"日本","v":"/area/日本"},{"n":"泰国","v":"/area/泰国"},{"n":"新加坡","v":"/area/新加坡"},{"n":"马来西亚","v":"/area/马来西亚"},{"n":"印度","v":"/area/印度"},{"n":"英国","v":"/area/英国"},{"n":"法国","v":"/area/法国"},{"n":"加拿大","v":"/area/加拿大"},{"n":"西班牙","v":"/area/西班牙"},{"n":"俄罗斯","v":"/area/俄罗斯"},{"n":"其它","v":"/area/其它"}]},{"key":"year","name":"年代","value":[{"n":"全部","v":""},{"n":"2024","v":"/year/2024"},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"2013","v":"/year/2013"},{"n":"2012","v":"/year/2012"},{"n":"2011","v":"/year/2011"},{"n":"2010","v":"/year/2010"},{"n":"2009","v":"/year/2009"},{"n":"2008","v":"/year/2008"},{"n":"2007","v":"/year/2007"},{"n":"2006","v":"/year/2006"},{"n":"2005","v":"/year/2005"},{"n":"2004","v":"/year/2004"},{"n":"2003","v":"/year/2003"},{"n":"2002","v":"/year/2002"},{"n":"2001","v":"/year/2001"},{"n":"2000","v":"/year/2000"},{"n":"1999","v":"/year/1999"},{"n":"1998","v":"/year/1998"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}], + "24":[{"key":"class","name":"类型","value":[{"n":"全部","v":""},{"n":"搞笑","v":"/class/搞笑"},{"n":"经典","v":"/class/经典"},{"n":"热血","v":"/class/热血"},{"n":"催泪","v":"/class/催泪"},{"n":"治愈","v":"/class/治愈"},{"n":"猎奇","v":"/class/猎奇"},{"n":"励志","v":"/class/励志"},{"n":"战斗","v":"/class/战斗"},{"n":"后宫","v":"/class/后宫"},{"n":"机战","v":"/class/机战"},{"n":"恋爱","v":"/class/恋爱"},{"n":"百合","v":"/class/百合"},{"n":"科幻","v":"/class/科幻"},{"n":"奇幻","v":"/class/奇幻"},{"n":"推理","v":"/class/推理"},{"n":"校园","v":"/class/校园"},{"n":"运动","v":"/class/运动"},{"n":"魔法","v":"/class/魔法"},{"n":"历史","v":"/class/历史"},{"n":"伪娘","v":"/class/伪娘"},{"n":"美少女","v":"/class/美少女"},{"n":"萝莉","v":"/class/萝莉"},{"n":"亲子","v":"/class/亲子"},{"n":"青春","v":"/class/青春"},{"n":"冒险","v":"/class/冒险"},{"n":"竞技","v":"/class/竞技"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"大陆","v":"/area/大陆"},{"n":"美国","v":"/area/美国"},{"n":"韩国","v":"/area/韩国"},{"n":"日本","v":"/area/日本"},{"n":"泰国","v":"/area/泰国"},{"n":"新加坡","v":"/area/新加坡"},{"n":"马来西亚","v":"/area/马来西亚"},{"n":"印度","v":"/area/印度"},{"n":"英国","v":"/area/英国"},{"n":"法国","v":"/area/法国"},{"n":"加拿大","v":"/area/加拿大"},{"n":"西班牙","v":"/area/西班牙"},{"n":"俄罗斯","v":"/area/俄罗斯"},{"n":"其它","v":"/area/其它"}]},{"key":"year","name":"年代","value":[{"n":"全部","v":""},{"n":"2024","v":"/year/2024"},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"2013","v":"/year/2013"},{"n":"2012","v":"/year/2012"},{"n":"2011","v":"/year/2011"},{"n":"2010","v":"/year/2010"},{"n":"2009","v":"/year/2009"},{"n":"2008","v":"/year/2008"},{"n":"2007","v":"/year/2007"},{"n":"2006","v":"/year/2006"},{"n":"2005","v":"/year/2005"},{"n":"2004","v":"/year/2004"},{"n":"2003","v":"/year/2003"},{"n":"2002","v":"/year/2002"},{"n":"2001","v":"/year/2001"},{"n":"2000","v":"/year/2000"},{"n":"1999","v":"/year/1999"},{"n":"1998","v":"/year/1998"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}], + "22":[{"key":"class","name":"类型","value":[{"n":"全部","v":""},{"n":"搞笑","v":"/class/搞笑"},{"n":"经典","v":"/class/经典"},{"n":"热血","v":"/class/热血"},{"n":"催泪","v":"/class/催泪"},{"n":"治愈","v":"/class/治愈"},{"n":"猎奇","v":"/class/猎奇"},{"n":"励志","v":"/class/励志"},{"n":"战斗","v":"/class/战斗"},{"n":"后宫","v":"/class/后宫"},{"n":"机战","v":"/class/机战"},{"n":"恋爱","v":"/class/恋爱"},{"n":"百合","v":"/class/百合"},{"n":"科幻","v":"/class/科幻"},{"n":"奇幻","v":"/class/奇幻"},{"n":"推理","v":"/class/推理"},{"n":"校园","v":"/class/校园"},{"n":"运动","v":"/class/运动"},{"n":"魔法","v":"/class/魔法"},{"n":"历史","v":"/class/历史"},{"n":"伪娘","v":"/class/伪娘"},{"n":"美少女","v":"/class/美少女"},{"n":"萝莉","v":"/class/萝莉"},{"n":"亲子","v":"/class/亲子"},{"n":"青春","v":"/class/青春"},{"n":"冒险","v":"/class/冒险"},{"n":"竞技","v":"/class/竞技"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":""},{"n":"日本","v":"/area/日本"},{"n":"欧美","v":"/area/欧美"},{"n":"其他","v":"/area/其他"}]},{"key":"year","name":"年代","value":[{"n":"全部","v":""},{"n":"2024","v":"/year/2024"},{"n":"2023","v":"/year/2023"},{"n":"2022","v":"/year/2022"},{"n":"2021","v":"/year/2021"},{"n":"2020","v":"/year/2020"},{"n":"2019","v":"/year/2019"},{"n":"2018","v":"/year/2018"},{"n":"2017","v":"/year/2017"},{"n":"2016","v":"/year/2016"},{"n":"2015","v":"/year/2015"},{"n":"2014","v":"/year/2014"},{"n":"2013","v":"/year/2013"},{"n":"2012","v":"/year/2012"},{"n":"2011","v":"/year/2011"},{"n":"2010","v":"/year/2010"},{"n":"2009","v":"/year/2009"},{"n":"2008","v":"/year/2008"},{"n":"2007","v":"/year/2007"},{"n":"2006","v":"/year/2006"},{"n":"2005","v":"/year/2005"},{"n":"2004","v":"/year/2004"},{"n":"2003","v":"/year/2003"},{"n":"2002","v":"/year/2002"},{"n":"2001","v":"/year/2001"},{"n":"2000","v":"/year/2000"},{"n":"1999","v":"/year/1999"},{"n":"1998","v":"/year/1998"}]},{"key":"by","name":"排序","value":[{"n":"时间","v":"/by/time"},{"n":"人气","v":"/by/hits"},{"n":"评分","v":"/by/score"}]}] + }, + class_parse: '.fed-pops-list:eq(0)&&li:gt(0):lt(6);a&&Text;a&&href;.*/(.*?).html', +} \ No newline at end of file diff --git a/摸鱼儿/json/企鹅直播.json b/摸鱼儿/json/企鹅直播.json new file mode 100644 index 0000000..e936ee2 --- /dev/null +++ b/摸鱼儿/json/企鹅直播.json @@ -0,0 +1,72 @@ +{ + "author": "率性而活", + "ua":"Mozilla/5.0 (Linux; Android 8.1.0; OPPO R11t Build/OPM1.171019.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/76.0.3809.89 Mobile Safari/537.36 T7/11.19 SP-engine/2.15.0 baiduboxapp/11.19.5.10 (Baidu; P1 8.1.0)", +//125.88.199.34 m.live.qq.com + + //"dcVipFlag": "true", + //"dcPlayUrl": "true", + "homeUrl": "https://m.live.qq.com/directory/game/Basketball", + "cateManual": { + "篮球": "@directory/game/Basketball", + "足球":"@directory/game/Football", + "搏击":"@directory/game/Fight", + "网球排球":"@directory/game/Tennis", + "英文原声":"@directory/game/English", + "台球":"@directory/game/Billiards", + "棒球/橄榄球/冰球":"@directory/game/MLB", + "NBA":"@directory/game/NBA", + "CBA":"@directory/game/CBA", + "颜值":"@directory/game/YZ", + "棋牌/游戏":"@directory/game/Game" + + }, + "homeVodNode": "//a[contains(@href,'/10')]","homeVodName": "/div/following-sibling::p[1]/text()","homeVodId": "/@href","homeVodIdR": "/(\\S+)","homeVodImg": "//div[contains(@style,'http')]/@style","homeVodImgR": "(http.*?jpg)","homeVodMark": "", + + "cateUrl2": "https://m.live.qq.com/{cateId}", + + "cateVodNode": "//a[contains(@href,'/10')]", + + "cateVodName": "/div/following-sibling::p[1]/text()", + + "cateVodId": "/@href", + + "cateVodIdR": "/(\\S+)", + + "cateVodImg": "//div[contains(@style,'http')]/@style", + + "cateVodImgR": "(http.*?jpg)", + + "cateVodMark": "", + + + // + "dtUrl": "https://m.live.qq.com/{vid}", + "dtNode": "//body", + "dtName": "//p[contains(@class,'p-title')]/text()", + "dtNameR": "(“.*?”)", + "dtImg": "//div[contains(@class,'share-bar')]/@data-pic", + "dtImgR": "", + "dtCate": "", + "dtCateR": "", + "dtYear": "", + "dtYearR": "", + "dtArea": "", + "dtAreaR": "", + "dtDirector": "", + "dtDirectorR": "", + "dtActor": "", + "dtActorR": "", + "dtDesc": "", + "dtDescR": "", + "dtFromNode": "//p[contains(@class,'p-title')]", + "dtFromName": "/text()", + "dtFromNameR": "(\\企鹅体育)", + "dtUrlNode": "//div[contains(@class,'wenzi')]", + "dtUrlSubNode": "/a", + "dtUrlId": "/text()", + "dtUrlIdR": "m.live.qq.com/(\\S+)", + "dtUrlName": "/text()", + "dtUrlNameR": "(\\d+)", + "playUrl": "https://m.live.qq.com/{playUrl}", + "playUa":"{\"User-Agent\":\"okhttp/3.12.11\"}" +} \ No newline at end of file diff --git a/摸鱼儿/txt/2.txt b/摸鱼儿/txt/2.txt index 36f4aa3..338c4e7 100644 --- a/摸鱼儿/txt/2.txt +++ b/摸鱼儿/txt/2.txt @@ -1 +1 @@ -http://160.202.244.9:9788/ \ No newline at end of file +http://160.202.244.9:2489 \ No newline at end of file diff --git a/摸鱼儿/txt/89.txt b/摸鱼儿/txt/89.txt new file mode 100644 index 0000000..fd0a371 --- /dev/null +++ b/摸鱼儿/txt/89.txt @@ -0,0 +1 @@ +http://app.555618.xyz:1766 \ No newline at end of file diff --git a/欧歌/api.json b/欧歌/api.json index 88d5e00..2fbdcfd 100644 --- a/欧歌/api.json +++ b/欧歌/api.json @@ -4,9 +4,9 @@ "spider": "./spider.jar", "lives": [ { - "name": "公众号【杰歌软件APP】如有收费,直接找退款!", + "name": "公众号【光歌软件分享】严谨用于任何商业用途!", "type": 0, - "url": "./lives/公众号【杰歌软件APP】如有收费,直接找退款!.txt", + "url": "./lives/公众号【光歌软件分享】严谨用于任何商业用途!.txt", "epg": "http://cdn.1678520.xyz/epg/?ch={name}&date={date}" }, { @@ -19,20 +19,20 @@ "sites": [ { "key": "豆瓣2", - "name": "📢公众号【杰歌软件APP】如有收费,直接找退款!", + "name": "📢公众号【光歌软件分享】严谨用于任何商业用途!", "type": 3, "api": "csp_Douban", "searchable": 0 }, { "key": "豆瓣1", - "name": "📢公众号【杰歌软件APP】如有收费,直接找退款!公告❤更新:7/9❤", + "name": "📢公众号【光歌软件分享】严谨用于任何商业用途!公告❤更新:7/11❤", "type": 3, "api": "csp_Notice", "searchable": 0, "changeable": 0, "jar": "./jars/豆瓣1.jar", - "ext": "https://xn--dkw0c.v.nxog.top/m/公告.php?b=公众号【杰歌软件APP】如有收费,直接找退款!" + "ext": "https://xn--dkw0c.v.nxog.top/m/公告.php?b=公众号【光歌软件分享】严谨用于任何商业用途!" }, { "key": "csp_woog", @@ -51,7 +51,7 @@ ], "url_key": "woog", "threadinfo": { - "chunksize": 271, + "chunksize": 293, "threads": 16 } } @@ -80,7 +80,7 @@ ], "url_key": "UC", "threadinfo": { - "chunksize": 229, + "chunksize": 260, "threads": 60 } } @@ -111,7 +111,7 @@ ], "url_key": "woog2", "threadinfo": { - "chunksize": 225, + "chunksize": 215, "threads": 16 } } diff --git a/欧歌/jars/csp_woog2.jar b/欧歌/jars/csp_woog2.jar index e6cb60f..a57cb88 100644 Binary files a/欧歌/jars/csp_woog2.jar and b/欧歌/jars/csp_woog2.jar differ diff --git a/欧歌/lives/AI直播.txt b/欧歌/lives/AI直播.txt index bea2a76..5c54329 100644 --- a/欧歌/lives/AI直播.txt +++ b/欧歌/lives/AI直播.txt @@ -270,6 +270,7 @@ CCTV-17,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/ 海南卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226574/1.m3u8 海南卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226922/1.m3u8 河北卫视,http://171.15.18.199:8180/TV00000000000000000035@HHZT +河北卫视,http://drive.mxmy.net:8888/udp/239.3.1.148:8072 河北卫视,http://php.fjl626.cn/hebei.php?id=hbws 河北卫视,http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010101 河北卫视,http://z.b.bkpcp.top/m.php?id=hbws @@ -278,7 +279,6 @@ CCTV-17,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/ 河北卫视,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226406/index.m3u8 河北卫视,http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010101/1.m3u8 河北卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227014/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7ErSGjhI3DMaaAASPrbQJYTg%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND -河北卫视,http://[2409:8087:1a01:df::4035]:80/TVOD/88888888/224/3221225961/main.m3u8 河南卫视,http://tvpull.dxhmt.cn:9081/tv/11425-1.m3u8 河南卫视,http://php.jdshipin.com/TVOD/hljyd.php?id=3221226480 河南卫视,http://z.b.bkpcp.top/m.php?id=hnws @@ -483,15 +483,15 @@ CCTV-17,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/ 延边卫视,http://[2409:8087:1a0b:df::4020]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226516/index.m3u8 延边卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227045/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7Eq0D3NdTUN7FuRzr8eJsbQA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND 浙江卫视,http://8.138.7.223/tv/zjws.m3u8 -浙江卫视,http://ali-m-l.cztv.com:80/channels/lantian/channel001/1080p.m3u8 +浙江卫视,http://ali-m-l.cztv.com/channels/lantian/channel001/1080p.m3u8 浙江卫视,http://ali-m-l.cztv.com/channels/lantian/channel01/1080p.m3u8 -浙江卫视,http://ali-m-l.cztv.com/channels/lantian/channel001/1080p.m3u8#mitv://generationnexxxt.com:19806/7bf4b3a65eaf421ab6d71bd8dcc4547a 浙江卫视,http://zwebl02.cztv.com/live/channel011080P.m3u8?auth_key=2524708799-0-0-9a1229d8b9d311024ebea08c3fb1d63f 浙江卫视,http://zhfivel02.cztv.com/channel01/1080p.m3u8?auth_key=2524708799-0-0-adde67b1b344fdd5e512f30a4ae31915 浙江卫视,http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010070 浙江卫视,http://z.b.bkpcp.top/m.php?id=zjws 浙江卫视,http://goo.bkpcp.top/mg/zjws 浙江卫视,http://l.cztvcloud.com/channels/lantian/SXpinghu3/720p.m3u8 +浙江卫视,http://[2409:8087:74f0:22::5]:6410/270000001128/9900000531/index.m3u8 安徽频道,#genre# 安徽导视,http://dspdhls.appcoo.com:8888/live/dspd/index.m3u8 @@ -541,6 +541,7 @@ CCTV-17,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/ 重庆频道,#genre# 重庆新闻,https://satellitepull.cnr.cn/live/wxcqxwgb/playlist.m3u8 +重庆汽摩,http://218.89.240.144:59901/tsfile/live/1010_1.m3u8?key=txiptv 重庆汽摩,rtsp://123.147.112.17:8089/04000001/01000000004000000000000000000371?AuthInfo=xxx&userid=gf001&userid=gf001 福建频道,#genre# @@ -643,6 +644,7 @@ CCTV-17,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/ 湖北频道,#genre# 湖北综合,http://[2409:8087:4c0a:22:1::11]:6410/170000001115/UmaiCHAN638072216f7da/index.m3u8?AuthInfo=9kOOdBn7MFF%2F2bWjKgahUUAdKgLqNB5aOAUhcp5CeNLx3R3LdIBdA5q61lut1LwZcw4SC2tJubc%2Bq5t%2F61jvWCtjrJL0x%2BHncPgdmcbBW9I +湖北经视,http://58.19.43.46:9901/tsfile/live/1017_1.m3u8 湖北影视,http://58.19.43.46:9901/tsfile/live/1016_1.m3u8 湖北教育,http://[2409:8087:4c0a:22:1::11]:6410/170000001115/UmaiCHAN638072a6cbbf6/index.m3u8?AuthInfo=9kOOdBn7MFF%2F2bWjKgahUUAdKgLqNB5aOAUhcp5CeNKTFQuOKNd5i0HMa3ydMWIQ6kJ2fBJGJ77BLTXK72CqUYQsX3ZguYt0954s9hfZTfc 湖北生活,http://satellitepull.cnr.cn/live/wx32hubczshgb/playlist.m3u8 @@ -677,12 +679,14 @@ CCTV-17,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/ 黑龙江少儿,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226304/index.m3u8 哈尔滨新闻综合,http://php.jdshipin.com/TVOD/hljyd.php?id=3221226434 哈尔滨影视,http://111.43.126.240:9003/hls/5/index.m3u8 -哈尔滨影视,https://stream.hrbtv.net/yspd/sd/live.m3u8 哈尔滨影视,http://stream.hrbtv.net/yspd/sd/live.m3u8 +哈尔滨影视,https://stream.hrbtv.net/yspd/sd/live.m3u8 哈尔滨资讯,http://stream.hrbtv.net/zxpd/sd/live.m3u8 哈尔滨生活,http://111.43.126.240:9003/hls/3/index.m3u8 哈尔滨生活,https://stream.hrbtv.net/shpd/sd/live.m3u8 +哈尔滨生活,https://stream.hrbtv.net/shpd/playlist.m3u8 哈尔滨生活,http://stream.hrbtv.net/shpd/sd/live.m3u8 +哈尔滨娱乐,https://stream.hrbtv.net/ylpd/sd/live.m3u8 哈尔滨娱乐,http://stream.hrbtv.net/ylpd/sd/live.m3u8 吉林频道,#genre# @@ -755,13 +759,13 @@ CCTV-17,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/ 安多卫视,https://liveout.xntv.tv/a65jur/90p2i1.m3u8?zqinghd 山东频道,#genre# +山东齐鲁,http://61.156.228.12:8154/tsfile/live/1001_1.m3u8?key=txiptv&playlive=1&authid=0 山东齐鲁,http://111.14.181.15:9901/tsfile/live/1000_1.m3u8 山东文旅,http://58.57.40.22:9901/tsfile/live/1023_1.m3u8 -山东综艺,http://111.14.181.15:9901/tsfile/live/1004_1.m3u8 山东综艺,http://123.129.70.178:9901/tsfile/live/1001_1.m3u8 +山东综艺,http://111.14.181.15:9901/tsfile/live/1004_1.m3u8 山东生活,http://ls.qingting.fm/live/60260.m3u8 山东新闻,http://ls.qingting.fm/live/60180.m3u8 -山东少儿,http://111.14.181.15:9901/tsfile/live/1005_1.m3u8 山西频道,#genre# diff --git a/欧歌/lives/公众号【光歌软件分享】严谨用于任何商业用途!.txt b/欧歌/lives/公众号【光歌软件分享】严谨用于任何商业用途!.txt new file mode 100644 index 0000000..4ef1132 --- /dev/null +++ b/欧歌/lives/公众号【光歌软件分享】严谨用于任何商业用途!.txt @@ -0,0 +1,6265 @@ +#EXTM3U x-tvg-url="https://py.nxog.eu.org/https://raw.githubusercontent.com/fanmingming/live/main/e.xml" +#EXTINF:-1 group-title="🐲欧歌分享" tvg-name="欧歌免费分享" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%AC%A7%E6%AD%8C%E5%85%8D%E8%B4%B9%E5%88%86%E4%BA%AB.png",欧歌免费分享 +https://xn--vusr00g.v.nxog.top/m/tv/xjj.php?id=0 +#EXTINF:-1 group-title="🐲欧歌分享" tvg-name="关注欧歌APP" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%85%B3%E6%B3%A8%E6%AC%A7%E6%AD%8CAPP.png",关注欧歌APP +https://xn--vusr00g.v.nxog.top/m/tv/xjj.php?id=0&1 +#EXTINF:-1 group-title="🐲欧歌分享" tvg-name="接口软件永远免费" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%8E%A5%E5%8F%A3%E8%BD%AF%E4%BB%B6%E6%B0%B8%E8%BF%9C%E5%85%8D%E8%B4%B9.png",接口软件永远免费 +https://xn--vusr00g.v.nxog.top/m/tv/xjj.php?id=0&2 +#EXTINF:-1 group-title="🐲欧歌分享" tvg-name="长期维护切勿贩卖" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%95%BF%E6%9C%9F%E7%BB%B4%E6%8A%A4%E5%88%87%E5%8B%BF%E8%B4%A9%E5%8D%96.png",长期维护切勿贩卖 +https://xn--vusr00g.v.nxog.top/m/tv/xjj.php?id=0&3 +#EXTINF:-1 group-title="🐲欧歌分享" tvg-name="卡左右可换源" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%A1%E5%B7%A6%E5%8F%B3%E5%8F%AF%E6%8D%A2%E6%BA%90.png",卡左右可换源 +http://wb.xn--dkw.xn--6qq986b3xl:5244/d/%E5%A4%A9/og1.mp4 +#EXTINF:-1 group-title="🐲欧歌分享" tvg-name="网络收集随时失效" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BD%91%E7%BB%9C%E6%94%B6%E9%9B%86%E9%9A%8F%E6%97%B6%E5%A4%B1%E6%95%88.png",网络收集随时失效 +http://wb.xn--dkw.xn--6qq986b3xl:5244/d/%E5%A4%A9/og.mp4 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV1.png",CCTV1 +http://39.134.67.108/PLTV/88888888/224/3221225816/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV2.png",CCTV2 +http://39.134.67.108/PLTV/88888888/224/3221225599/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV3" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV3.png",CCTV3 +http://39.134.67.108/PLTV/88888888/224/3221225799/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV4.png",CCTV4 +http://39.134.67.108/PLTV/88888888/224/3221225797/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5.png",CCTV5 +http://39.134.67.108/PLTV/88888888/224/3221225818/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5%2B.png",CCTV5+ +http://39.134.67.108/PLTV/88888888/224/3221225507/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV6" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV6.png",CCTV6 +http://39.134.67.108/PLTV/88888888/224/3221225814/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV7" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV7.png",CCTV7 +http://39.134.67.108/PLTV/88888888/224/3221225671/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV8" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV8.png",CCTV8 +http://39.134.67.108/PLTV/88888888/224/3221225795/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV9" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV9.png",CCTV9 +http://39.134.67.108/PLTV/88888888/224/3221225676/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV10" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV10.png",CCTV10 +http://39.134.67.108/PLTV/88888888/224/3221225677/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV11" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV11.png",CCTV11 +http://39.134.67.108/PLTV/88888888/224/3221225517/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV12" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV12.png",CCTV12 +http://39.134.67.108/PLTV/88888888/224/3221225669/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV13" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV13.png",CCTV13 +http://39.134.67.108/PLTV/88888888/224/3221225812/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV14" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV14.png",CCTV14 +http://39.134.67.108/PLTV/88888888/224/3221225674/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV15.png",CCTV15 +http://39.134.67.108/PLTV/88888888/224/3221225513/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV16" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV16.png",CCTV16 +http://39.134.67.108/PLTV/88888888/224/3221225893/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV17" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV17.png",CCTV17 +http://39.134.67.108/PLTV/88888888/224/3221225708/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV1.png",CCTV1 +http://39.134.65.175/PLTV/88888888/224/3221225816/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV2.png",CCTV2 +http://39.134.65.175/PLTV/88888888/224/3221225599/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV3" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV3.png",CCTV3 +http://39.134.65.175/PLTV/88888888/224/3221225799/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV4.png",CCTV4 +http://39.134.65.175/PLTV/88888888/224/3221225797/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5.png",CCTV5 +http://39.134.65.175/PLTV/88888888/224/3221225818/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5%2B.png",CCTV5+ +http://39.134.65.175/PLTV/88888888/224/3221225507/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV6" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV6.png",CCTV6 +http://39.134.65.175/PLTV/88888888/224/3221225814/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV7" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV7.png",CCTV7 +http://39.134.65.175/PLTV/88888888/224/3221225671/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV8" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV8.png",CCTV8 +http://39.134.65.175/PLTV/88888888/224/3221225795/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV9" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV9.png",CCTV9 +http://39.134.65.175/PLTV/88888888/224/3221225676/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV10" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV10.png",CCTV10 +http://39.134.65.175/PLTV/88888888/224/3221225677/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV11" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV11.png",CCTV11 +http://39.134.65.175/PLTV/88888888/224/3221225517/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV12" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV12.png",CCTV12 +http://39.134.65.175/PLTV/88888888/224/3221225669/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV13" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV13.png",CCTV13 +http://39.134.65.175/PLTV/88888888/224/3221225812/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV14" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV14.png",CCTV14 +http://39.134.65.175/PLTV/88888888/224/3221225674/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV15.png",CCTV15 +http://39.134.65.175/PLTV/88888888/224/3221225513/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV16" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV16.png",CCTV16 +http://39.134.65.173/PLTV/88888888/224/3221225893/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV17" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV17.png",CCTV17 +http://39.134.67.108/PLTV/88888888/224/3221225708/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="湖南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%8D%AB%E8%A7%86.png",湖南卫视 +http://39.134.65.173/PLTV/88888888/224/3221225506/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="湖南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%8D%AB%E8%A7%86.png",湖南卫视 +http://39.134.65.173/PLTV/88888888/224/3221225977/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="湖南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%8D%AB%E8%A7%86.png",湖南卫视 +http://39.134.65.71/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225610/index.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="江苏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E5%8D%AB%E8%A7%86.png",江苏卫视 +http://39.134.65.173/PLTV/88888888/224/3221225503/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="江苏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E5%8D%AB%E8%A7%86.png",江苏卫视 +http://39.134.65.177/PLTV/88888888/224/3221225938/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="东方卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E5%8D%AB%E8%A7%86.png",东方卫视 +http://39.134.65.173/PLTV/88888888/224/3221225672/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="东方卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E5%8D%AB%E8%A7%86.png",东方卫视 +http://39.134.65.173/PLTV/88888888/224/3221225942/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="北京卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E5%8D%AB%E8%A7%86.png",北京卫视 +http://39.134.65.162/PLTV/88888888/224/3221225931/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="北京卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E5%8D%AB%E8%A7%86.png",北京卫视 +http://39.134.65.173/PLTV/88888888/224/3221225678/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="浙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",浙江卫视 +http://39.134.65.173/PLTV/88888888/224/3221225514/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="浙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",浙江卫视 +http://39.134.65.173/PLTV/88888888/224/3221225959/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="东南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E5%8D%97%E5%8D%AB%E8%A7%86.png",东南卫视 +http://39.134.65.173/PLTV/88888888/224/3221225950/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="东南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E5%8D%97%E5%8D%AB%E8%A7%86.png",东南卫视 +http://39.134.65.77/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225620/index.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="安多卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%A4%9A%E5%8D%AB%E8%A7%86.png",安多卫视 +http://39.134.65.78/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225659/index.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="浙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",浙江卫视 +http://39.134.65.71/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225612/index.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%B1%E5%9C%B3%E5%8D%AB%E8%A7%86.png",深圳卫视 +http://39.134.64.87:6610/PLTV/88888888/224/3221226313/index.m3u8?IASHttpSessionId= +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="安徽卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%8D%AB%E8%A7%86.png",安徽卫视 +http://39.134.65.141/PLTV/88888888/224/3221225925/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="甘肃卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%94%98%E8%82%83%E5%8D%AB%E8%A7%86.png",甘肃卫视 +http://39.134.65.67/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225633/index.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E5%8D%AB%E8%A7%86.png",广东卫视 +http://39.134.65.173/PLTV/88888888/224/3221225966/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="广西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E8%A5%BF%E5%8D%AB%E8%A7%86.png",广西卫视 +http://39.134.65.141/PLTV/88888888/224/3221226024/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="贵州卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%B4%B5%E5%B7%9E%E5%8D%AB%E8%A7%86.png",贵州卫视 +http://39.134.65.149/PLTV/88888888/224/3221225974/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="贵州卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%B4%B5%E5%B7%9E%E5%8D%AB%E8%A7%86.png",贵州卫视 +http://39.134.65.173/PLTV/88888888/224/3221225974/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="贵州卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%B4%B5%E5%B7%9E%E5%8D%AB%E8%A7%86.png",贵州卫视 +http://39.134.65.79/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225626/index.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="海南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%B7%E5%8D%97%E5%8D%AB%E8%A7%86.png",海南卫视 +http://39.134.65.173/PLTV/88888888/224/3221225978/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="海南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%B7%E5%8D%97%E5%8D%AB%E8%A7%86.png",海南卫视 +http://39.134.65.75/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225639/index.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="河北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E5%8D%AB%E8%A7%86.png",河北卫视 +http://39.134.65.173/PLTV/88888888/224/3221225961/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="黑龙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",黑龙江卫视 +http://39.134.65.173/PLTV/88888888/224/3221226060/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="黑龙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",黑龙江卫视 +http://39.134.65.173/PLTV/88888888/224/3221226122/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="湖北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%8D%AB%E8%A7%86.png",湖北卫视 +http://39.134.65.173/PLTV/88888888/224/3221225975/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="湖北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%8D%AB%E8%A7%86.png",湖北卫视 +http://39.134.65.70/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225627/index.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="吉林卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E5%8D%AB%E8%A7%86.png",吉林卫视 +http://39.134.65.149/PLTV/88888888/224/3221225981/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="康巴卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BA%B7%E5%B7%B4%E5%8D%AB%E8%A7%86.png",康巴卫视 +http://39.134.65.65/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225660/index.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="辽宁卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%BE%BD%E5%AE%81%E5%8D%AB%E8%A7%86.png",辽宁卫视 +http://39.134.65.173/PLTV/88888888/224/3221225499/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="辽宁卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%BE%BD%E5%AE%81%E5%8D%AB%E8%A7%86.png",辽宁卫视 +http://39.134.65.173/PLTV/88888888/224/3221226089/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="辽宁卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%BE%BD%E5%AE%81%E5%8D%AB%E8%A7%86.png",辽宁卫视 +http://39.134.65.4/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225619/index.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="内蒙古卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%86%85%E8%92%99%E5%8F%A4%E5%8D%AB%E8%A7%86.png",内蒙古卫视 +http://39.134.65.78/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225634/index.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="宁夏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%81%E5%A4%8F%E5%8D%AB%E8%A7%86.png",宁夏卫视 +http://39.134.65.7/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225632/index.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="青海卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%92%E6%B5%B7%E5%8D%AB%E8%A7%86.png",青海卫视 +http://39.134.65.76/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225628/index.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="山东教育卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E6%95%99%E8%82%B2%E5%8D%AB%E8%A7%86.png",山东教育卫视 +http://39.134.65.79/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225655/index.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="山东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E5%8D%AB%E8%A7%86.png",山东卫视 +http://39.134.65.141/PLTV/88888888/224/3221225952/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="山西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E5%8D%AB%E8%A7%86.png",山西卫视 +http://39.134.65.8/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225624/index.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="陕西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%99%95%E8%A5%BF%E5%8D%AB%E8%A7%86.png",陕西卫视 +http://39.134.65.2/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225625/index.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="四川卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%9B%9B%E5%B7%9D%E5%8D%AB%E8%A7%86.png",四川卫视 +http://39.134.65.173/PLTV/88888888/224/3221225970/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%B4%A5%E5%8D%AB%E8%A7%86.png",天津卫视 +http://39.134.65.173/PLTV/88888888/224/3221225972/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="西藏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%A5%BF%E8%97%8F%E5%8D%AB%E8%A7%86.png",西藏卫视 +http://39.134.65.72/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225638/index.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="延边卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BB%B6%E8%BE%B9%E5%8D%AB%E8%A7%86.png",延边卫视 +http://39.134.65.181/PLTV/88888888/224/3221226040/1.m3u8 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV1.png",CCTV1 +http://114.243.111.237:8888/udp/239.3.1.129:8008$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV2.png",CCTV2 +http://114.243.111.237:8888/udp/239.3.1.60:8084$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV3" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV3.png",CCTV3 +http://114.243.111.237:8888/udp/239.3.1.172:8001$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV4.png",CCTV4 +http://114.243.111.237:8888/udp/239.3.1.105:8092$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5.png",CCTV5 +http://114.243.111.237:8888/udp/239.3.1.173:8001$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV6" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV6.png",CCTV6 +http://114.243.111.237:8888/udp/239.3.1.174:8001$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV7" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV7.png",CCTV7 +http://114.243.111.237:8888/udp/239.3.1.61:8104$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV8" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV8.png",CCTV8 +http://114.243.111.237:8888/udp/239.3.1.175:8001$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV9" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV9.png",CCTV9 +http://114.243.111.237:8888/udp/239.3.1.62:8112$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV10" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV10.png",CCTV10 +http://114.243.111.237:8888/udp/239.3.1.63:8116$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV11" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV11.png",CCTV11 +http://114.243.111.237:8888/udp/239.3.1.152:8120$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV12" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV12.png",CCTV12 +http://114.243.111.237:8888/udp/239.3.1.64:8124$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV13" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV13.png",CCTV13 +http://114.243.111.237:8888/udp/239.3.1.124:8128$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV14" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV14.png",CCTV14 +http://114.243.111.237:8888/udp/239.3.1.65:8132$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV15.png",CCTV15 +http://114.243.111.237:8888/udp/239.3.1.153:8136$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV16" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV16.png",CCTV16 +http://114.243.111.237:8888/udp/239.3.1.183:8001$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV16" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV16.png",CCTV16 +http://114.243.111.237:8888/udp/239.3.1.184:8001$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV17" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV17.png",CCTV17 +http://114.243.111.237:8888/udp/239.3.1.151:8144$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5%2B.png",CCTV5+ +http://114.243.111.237:8888/udp/239.3.1.130:8004$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="安徽卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%8D%AB%E8%A7%86.png",安徽卫视 +http://114.243.111.237:8888/udp/239.3.1.211:8064$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="北京卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E5%8D%AB%E8%A7%86.png",北京卫视 +http://114.243.111.237:8888/udp/239.3.1.241:8000$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="兵团卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%85%B5%E5%9B%A2%E5%8D%AB%E8%A7%86.png",兵团卫视 +http://114.243.111.237:8888/udp/239.3.1.144:4120$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="东方卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E5%8D%AB%E8%A7%86.png",东方卫视 +http://114.243.111.237:8888/udp/239.3.1.136:8032$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="东南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E5%8D%97%E5%8D%AB%E8%A7%86.png",东南卫视 +http://114.243.111.237:8888/udp/239.3.1.156:8148$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="甘肃卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%94%98%E8%82%83%E5%8D%AB%E8%A7%86.png",甘肃卫视 +http://114.243.111.237:8888/udp/239.3.1.49:8188$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E5%8D%AB%E8%A7%86.png",广东卫视 +http://114.243.111.237:8888/udp/239.3.1.142:8048$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="广西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E8%A5%BF%E5%8D%AB%E8%A7%86.png",广西卫视 +http://114.243.111.237:8888/udp/239.3.1.39:8300$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="贵州卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%B4%B5%E5%B7%9E%E5%8D%AB%E8%A7%86.png",贵州卫视 +http://114.243.111.237:8888/udp/239.3.1.149:8076$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="海南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%B7%E5%8D%97%E5%8D%AB%E8%A7%86.png",海南卫视 +http://114.243.111.237:8888/udp/239.3.1.45:8304$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="河北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E5%8D%AB%E8%A7%86.png",河北卫视 +http://114.243.111.237:8888/udp/239.3.1.148:8072$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="河南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8D%97%E5%8D%AB%E8%A7%86.png",河南卫视 +http://114.243.111.237:8888/udp/239.3.1.27:8128$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="黑龙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",黑龙江卫视 +http://114.243.111.237:8888/udp/239.3.1.133:8016$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="湖北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%8D%AB%E8%A7%86.png",湖北卫视 +http://114.243.111.237:8888/udp/239.3.1.138:8044$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="湖南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%8D%AB%E8%A7%86.png",湖南卫视 +http://114.243.111.237:8888/udp/239.3.1.132:8012$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="吉林卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E5%8D%AB%E8%A7%86.png",吉林卫视 +http://114.243.111.237:8888/udp/239.3.1.240:8172$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="江苏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E5%8D%AB%E8%A7%86.png",江苏卫视 +http://114.243.111.237:8888/udp/239.3.1.135:8028$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="江西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%A5%BF%E5%8D%AB%E8%A7%86.png",江西卫视 +http://114.243.111.237:8888/udp/239.3.1.123:8164$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="辽宁卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%BE%BD%E5%AE%81%E5%8D%AB%E8%A7%86.png",辽宁卫视 +http://114.243.111.237:8888/udp/239.3.1.210:8056$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="南方卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E6%96%B9%E5%8D%AB%E8%A7%86.png",南方卫视 +http://114.243.111.237:8888/udp/239.3.1.161:8001$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="内蒙古卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%86%85%E8%92%99%E5%8F%A4%E5%8D%AB%E8%A7%86.png",内蒙古卫视 +http://114.243.111.237:8888/udp/239.3.1.43:8176$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="宁夏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%81%E5%A4%8F%E5%8D%AB%E8%A7%86.png",宁夏卫视 +http://114.243.111.237:8888/udp/239.3.1.46:8124$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="青海卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%92%E6%B5%B7%E5%8D%AB%E8%A7%86.png",青海卫视 +http://114.243.111.237:8888/udp/239.3.1.44:8184$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="三沙卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%89%E6%B2%99%E5%8D%AB%E8%A7%86.png",三沙卫视 +http://114.243.111.237:8888/udp/239.3.1.155:4120$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="厦门卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8E%A6%E9%97%A8%E5%8D%AB%E8%A7%86.png",厦门卫视 +http://114.243.111.237:8888/udp/239.3.1.143:4120$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="山东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E5%8D%AB%E8%A7%86.png",山东卫视 +http://114.243.111.237:8888/udp/239.3.1.209:8052$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="山西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E5%8D%AB%E8%A7%86.png",山西卫视 +http://114.243.111.237:8888/udp/239.3.1.42:8172$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="陕西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%99%95%E8%A5%BF%E5%8D%AB%E8%A7%86.png",陕西卫视 +http://114.243.111.237:8888/udp/239.3.1.41:8140$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%B1%E5%9C%B3%E5%8D%AB%E8%A7%86.png",深圳卫视 +http://114.243.111.237:8888/udp/239.3.1.134:8020$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="四川卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%9B%9B%E5%B7%9D%E5%8D%AB%E8%A7%86.png",四川卫视 +http://114.243.111.237:8888/udp/239.3.1.29:8288$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%B4%A5%E5%8D%AB%E8%A7%86.png",天津卫视 +http://114.243.111.237:8888/udp/239.3.1.141:1234$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="西藏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%A5%BF%E8%97%8F%E5%8D%AB%E8%A7%86.png",西藏卫视 +http://114.243.111.237:8888/udp/239.3.1.47:8164$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="新疆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E7%96%86%E5%8D%AB%E8%A7%86.png",新疆卫视 +http://114.243.111.237:8888/udp/239.3.1.48:8160$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="云南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E5%8D%97%E5%8D%AB%E8%A7%86.png",云南卫视 +http://114.243.111.237:8888/udp/239.3.1.26:8108$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="浙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",浙江卫视 +http://114.243.111.237:8888/udp/239.3.1.137:8036$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="重庆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%8D%E5%BA%86%E5%8D%AB%E8%A7%86.png",重庆卫视 +http://114.243.111.237:8888/udp/239.3.1.122:8160$北京联通 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV1.png",CCTV1 +http://bailudz.top:1236/111/hahahaha.php?id=cctv1$bailudz +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV2.png",CCTV2 +http://bailudz.top:1236/111/hahahaha.php?id=cctv2$bailudz +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV3" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV3.png",CCTV3 +http://bailudz.top:1236/111/hahahaha.php?id=cctv3$bailudz +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV4.png",CCTV4 +http://bailudz.top:1236/111/hahahaha.php?id=cctv4$bailudz +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5.png",CCTV5 +http://bailudz.top:1236/111/hahahaha.php?id=cctv5$bailudz +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV6" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV6.png",CCTV6 +http://bailudz.top:1236/111/hahahaha.php?id=cctv6$bailudz +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV7" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV7.png",CCTV7 +http://bailudz.top:1236/111/hahahaha.php?id=cctv7$bailudz +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV8" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV8.png",CCTV8 +http://bailudz.top:1236/111/hahahaha.php?id=cctv8$bailudz +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV9" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV9.png",CCTV9 +http://bailudz.top:1236/111/hahahaha.php?id=cctv9$bailudz +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV10" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV10.png",CCTV10 +http://bailudz.top:1236/111/hahahaha.php?id=cctv10$bailudz +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV11" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV11.png",CCTV11 +http://bailudz.top:1236/111/hahahaha.php?id=cctv11$bailudz +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV12" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV12.png",CCTV12 +http://bailudz.top:1236/111/hahahaha.php?id=cctv12$bailudz +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV13" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV13.png",CCTV13 +http://bailudz.top:1236/111/hahahaha.php?id=cctv13$bailudz +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV14" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV14.png",CCTV14 +http://bailudz.top:1236/111/hahahaha.php?id=cctv14$bailudz +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV15.png",CCTV15 +http://bailudz.top:1236/111/hahahaha.php?id=cctv15$bailudz +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV16" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV16.png",CCTV16 +http://bailudz.top:1236/111/hahahaha.php?id=cctv16$bailudz +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV17" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV17.png",CCTV17 +http://bailudz.top:1236/111/hahahaha.php?id=cctv17$bailudz +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5%2B.png",CCTV5+ +http://bailudz.top:1236/111/hahahaha.php?id=cctv5p$bailudz +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="大湾区卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A7%E6%B9%BE%E5%8C%BA%E5%8D%AB%E8%A7%86.png",大湾区卫视 +http://bailudz.top:1236/111/hahahaha.php?id=dwqws$bailudz +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="东方卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E5%8D%AB%E8%A7%86.png",东方卫视 +http://bailudz.top:1236/111/hahahaha.php?id=dfws$bailudz +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="东南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E5%8D%97%E5%8D%AB%E8%A7%86.png",东南卫视 +http://bailudz.top:1236/111/hahahaha.php?id=dnws$bailudz +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E5%8D%AB%E8%A7%86.png",广东卫视 +http://bailudz.top:1236/111/hahahaha.php?id=gdws$bailudz +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="海南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%B7%E5%8D%97%E5%8D%AB%E8%A7%86.png",海南卫视 +http://bailudz.top:1236/111/hahahaha.php?id=hinws$bailudz +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="海峡卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%B7%E5%B3%A1%E5%8D%AB%E8%A7%86.png",海峡卫视 +http://bailudz.top:1236/111/hahahaha.php?id=hxws$bailudz +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="河南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8D%97%E5%8D%AB%E8%A7%86.png",河南卫视 +http://bailudz.top:1236/111/hahahaha.php?id=hnws$bailudz +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="湖北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%8D%AB%E8%A7%86.png",湖北卫视 +http://bailudz.top:1236/111/hahahaha.php?id=hubws$bailudz +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="吉林卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E5%8D%AB%E8%A7%86.png",吉林卫视 +http://bailudz.top:1236/111/hahahaha.php?id=jlws$bailudz +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="江苏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E5%8D%AB%E8%A7%86.png",江苏卫视 +http://bailudz.top:1236/111/hahahaha.php?id=jsws$bailudz +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="江西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%A5%BF%E5%8D%AB%E8%A7%86.png",江西卫视 +http://bailudz.top:1236/111/hahahaha.php?id=jxws$bailudz +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="辽宁卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%BE%BD%E5%AE%81%E5%8D%AB%E8%A7%86.png",辽宁卫视 +http://bailudz.top:1236/111/hahahaha.php?id=lnws$bailudz +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="青海卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%92%E6%B5%B7%E5%8D%AB%E8%A7%86.png",青海卫视 +http://bailudz.top:1236/111/hahahaha.php?id=qhws$bailudz +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="山东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E5%8D%AB%E8%A7%86.png",山东卫视 +http://bailudz.top:1236/111/hahahaha.php?id=sdws$bailudz +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="陕西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%99%95%E8%A5%BF%E5%8D%AB%E8%A7%86.png",陕西卫视 +http://bailudz.top:1236/111/hahahaha.php?id=sxws$bailudz +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV1.png",CCTV1 +http://tcpsit.vicp.net:8811/udp/225.1.8.1:8008 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV2.png",CCTV2 +http://tcpsit.vicp.net:8811/udp/225.1.8.2:8084 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV3" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV3.png",CCTV3 +http://tcpsit.vicp.net:8811/udp/225.1.8.88:8000 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV4.png",CCTV4 +http://tcpsit.vicp.net:8811/udp/225.1.8.4:8092 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5.png",CCTV5 +http://tcpsit.vicp.net:8811/udp/225.1.8.89:8000 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV6" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV6.png",CCTV6 +http://tcpsit.vicp.net:8811/udp/225.1.8.84:8000 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV7" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV7.png",CCTV7 +http://tcpsit.vicp.net:8811/udp/225.1.8.7:8104 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV8" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV8.png",CCTV8 +http://tcpsit.vicp.net:8811/udp/225.1.8.85:8000 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV9" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV9.png",CCTV9 +http://tcpsit.vicp.net:8811/udp/225.1.8.9:8112 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV10" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV10.png",CCTV10 +http://tcpsit.vicp.net:8811/udp/225.1.8.10:8116 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV11" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV11.png",CCTV11 +http://tcpsit.vicp.net:8811/udp/225.1.8.73:8120 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV12" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV12.png",CCTV12 +http://tcpsit.vicp.net:8811/udp/225.1.8.12:8124 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV13" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV13.png",CCTV13 +http://tcpsit.vicp.net:8811/udp/225.1.8.168:8130 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV14" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV14.png",CCTV14 +http://tcpsit.vicp.net:8811/udp/225.1.8.14:8132 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV15.png",CCTV15 +http://tcpsit.vicp.net:8811/udp/225.1.8.74:8136 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV17" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV17.png",CCTV17 +http://tcpsit.vicp.net:8811/udp/225.1.8.17:8144 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5%2B.png",CCTV5+ +http://tcpsit.vicp.net:8811/udp/225.1.8.20:8004 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="北京卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E5%8D%AB%E8%A7%86.png",北京卫视 +http://tcpsit.vicp.net:8811/udp/225.1.8.21:8002 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="湖南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%8D%AB%E8%A7%86.png",湖南卫视 +http://tcpsit.vicp.net:8811/udp/225.1.8.41:8012 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="黑龙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",黑龙江卫视 +http://tcpsit.vicp.net:8811/udp/225.1.8.42:8016 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%B1%E5%9C%B3%E5%8D%AB%E8%A7%86.png",深圳卫视 +http://tcpsit.vicp.net:8811/udp/225.1.8.43:8020 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="江苏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E5%8D%AB%E8%A7%86.png",江苏卫视 +http://tcpsit.vicp.net:8811/udp/225.1.8.44:8028 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="东方卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E5%8D%AB%E8%A7%86.png",东方卫视 +http://tcpsit.vicp.net:8811/udp/225.1.8.45:8032 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="浙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",浙江卫视 +http://tcpsit.vicp.net:8811/udp/225.1.8.46:8036 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="湖北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%8D%AB%E8%A7%86.png",湖北卫视 +http://tcpsit.vicp.net:8811/udp/225.1.8.47:8044 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%B4%A5%E5%8D%AB%E8%A7%86.png",天津卫视 +http://tcpsit.vicp.net:8811/udp/225.1.8.48:8044 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E5%8D%AB%E8%A7%86.png",广东卫视 +http://tcpsit.vicp.net:8811/udp/225.1.8.49:8048 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="山东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E5%8D%AB%E8%A7%86.png",山东卫视 +http://tcpsit.vicp.net:8811/udp/225.1.8.50:8052 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="辽宁卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%BE%BD%E5%AE%81%E5%8D%AB%E8%A7%86.png",辽宁卫视 +http://tcpsit.vicp.net:8811/udp/225.1.8.51:8056 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="安徽卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%8D%AB%E8%A7%86.png",安徽卫视 +http://tcpsit.vicp.net:8811/udp/225.1.8.52:8064 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="河北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E5%8D%AB%E8%A7%86.png",河北卫视 +http://tcpsit.vicp.net:8811/udp/225.1.8.76:8002 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="贵州卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%B4%B5%E5%B7%9E%E5%8D%AB%E8%A7%86.png",贵州卫视 +http://tcpsit.vicp.net:8811/udp/225.1.8.77:8076 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="东南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E5%8D%97%E5%8D%AB%E8%A7%86.png",东南卫视 +http://tcpsit.vicp.net:8811/udp/225.1.8.79:8148 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="江西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%A5%BF%E5%8D%AB%E8%A7%86.png",江西卫视 +http://tcpsit.vicp.net:8811/udp/225.1.8.171:8166 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="重庆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%8D%E5%BA%86%E5%8D%AB%E8%A7%86.png",重庆卫视 +http://tcpsit.vicp.net:8811/udp/225.1.8.172:8162 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV1.png",CCTV1 +http://61.156.228.12:8154/tsfile/live/0001_1.m3u8?key=txiptv&playlive=1&authid=0$61156 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV2.png",CCTV2 +http://61.156.228.12:8154/tsfile/live/0002_1.m3u8?key=txiptv&playlive=1&authid=0$61156 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV3" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV3.png",CCTV3 +http://61.156.228.12:8154/tsfile/live/0003_1.m3u8?key=txiptv&playlive=1&authid=0$61156 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV4.png",CCTV4 +http://61.156.228.12:8154/tsfile/live/0004_1.m3u8?key=txiptv&playlive=1&authid=0$61156 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5.png",CCTV5 +http://61.156.228.12:8154/tsfile/live/0005_1.m3u8?key=txiptv&playlive=1&authid=0$61156 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV6" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV6.png",CCTV6 +http://61.156.228.12:8154/tsfile/live/0006_1.m3u8?key=txiptv&playlive=1&authid=0$61156 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV7" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV7.png",CCTV7 +http://61.156.228.12:8154/tsfile/live/0007_1.m3u8?key=txiptv&playlive=1&authid=0$61156 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV8" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV8.png",CCTV8 +http://61.156.228.12:8154/tsfile/live/0008_1.m3u8?key=txiptv&playlive=1&authid=0$61156 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV9" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV9.png",CCTV9 +http://61.156.228.12:8154/tsfile/live/0009_1.m3u8?key=txiptv&playlive=1&authid=0$61156 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV10" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV10.png",CCTV10 +http://61.156.228.12:8154/tsfile/live/0010_1.m3u8?key=txiptv&playlive=1&authid=0$61156 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV11" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV11.png",CCTV11 +http://61.156.228.12:8154/tsfile/live/0011_1.m3u8?key=txiptv&playlive=1&authid=0$61156 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV12" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV12.png",CCTV12 +http://61.156.228.12:8154/tsfile/live/0012_1.m3u8?key=txiptv&playlive=1&authid=0$61156 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV13" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV13.png",CCTV13 +http://61.156.228.12:8154/tsfile/live/0013_1.m3u8?key=txiptv&playlive=1&authid=0$61156 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV14" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV14.png",CCTV14 +http://61.156.228.12:8154/tsfile/live/0014_1.m3u8?key=txiptv&playlive=1&authid=0$61156 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV15.png",CCTV15 +http://61.156.228.12:8154/tsfile/live/0015_1.m3u8?key=txiptv&playlive=1&authid=0$61156 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5%2B.png",CCTV5+ +http://61.156.228.12:8154/tsfile/live/0016_1.m3u8?key=txiptv&playlive=1&authid=0$61156 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV17" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV17.png",CCTV17 +http://61.156.228.12:8154/tsfile/live/0019_1.m3u8?key=txiptv&playlive=1&authid=0$61156 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="山东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E5%8D%AB%E8%A7%86.png",山东卫视 +http://61.156.228.12:8154/tsfile/live/0131_1.m3u8?key=txiptv&playlive=1&authid=0$61156 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="重庆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%8D%E5%BA%86%E5%8D%AB%E8%A7%86.png",重庆卫视 +http://61.156.228.12:8154/tsfile/live/0142_1.m3u8?key=txiptv&playlive=1&authid=0$61156 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="陕西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%99%95%E8%A5%BF%E5%8D%AB%E8%A7%86.png",陕西卫视 +http://61.156.228.12:8154/tsfile/live/0136_1.m3u8?key=txiptv&playlive=1&authid=0$61156 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="四川卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%9B%9B%E5%B7%9D%E5%8D%AB%E8%A7%86.png",四川卫视 +http://61.156.228.12:8154/tsfile/live/0123_1.m3u8?key=txiptv&playlive=1&authid=0$61156 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="河南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8D%97%E5%8D%AB%E8%A7%86.png",河南卫视 +http://61.156.228.12:8154/tsfile/live/0139_1.m3u8?key=txiptv&playlive=1&authid=0$61156 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="吉林卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E5%8D%AB%E8%A7%86.png",吉林卫视 +http://61.156.228.12:8154/tsfile/live/0116_1.m3u8?key=txiptv&playlive=1&authid=0$61156 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="北京卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E5%8D%AB%E8%A7%86.png",北京卫视 +http://61.156.228.12:8154/tsfile/live/0122_1.m3u8?key=txiptv&playlive=1&authid=0$61156 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="江苏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E5%8D%AB%E8%A7%86.png",江苏卫视 +http://61.156.228.12:8154/tsfile/live/0127_1.m3u8?key=txiptv&playlive=1&authid=0$61156 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="浙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",浙江卫视 +http://61.156.228.12:8154/tsfile/live/0124_1.m3u8?key=txiptv&playlive=1&authid=0$61156 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="湖南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%8D%AB%E8%A7%86.png",湖南卫视 +http://61.156.228.12:8154/tsfile/live/0128_1.m3u8?key=txiptv&playlive=1&authid=0$61156 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="新疆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E7%96%86%E5%8D%AB%E8%A7%86.png",新疆卫视 +http://61.156.228.12:8154/tsfile/live/0110_1.m3u8?key=txiptv&playlive=1&authid=0$61156 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="内蒙古卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%86%85%E8%92%99%E5%8F%A4%E5%8D%AB%E8%A7%86.png",内蒙古卫视 +http://61.156.228.12:8154/tsfile/live/0109_1.m3u8?key=txiptv&playlive=1&authid=0$61156 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="安徽卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%8D%AB%E8%A7%86.png",安徽卫视 +http://61.156.228.12:8154/tsfile/live/0130_1.m3u8?key=txiptv&playlive=1&authid=0$61156 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="湖北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%8D%AB%E8%A7%86.png",湖北卫视 +http://61.156.228.12:8154/tsfile/live/0132_1.m3u8?key=txiptv&playlive=1&authid=0$61156 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="辽宁卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%BE%BD%E5%AE%81%E5%8D%AB%E8%A7%86.png",辽宁卫视 +http://61.156.228.12:8154/tsfile/live/0121_1.m3u8?key=txiptv&playlive=1&authid=0$61156 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%B4%A5%E5%8D%AB%E8%A7%86.png",天津卫视 +http://61.156.228.12:8154/tsfile/live/0135_1.m3u8?key=txiptv&playlive=1&authid=0$61156 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="河北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E5%8D%AB%E8%A7%86.png",河北卫视 +http://61.156.228.12:8154/tsfile/live/0117_1.m3u8?key=txiptv&playlive=1&authid=0$61156 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="东方卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E5%8D%AB%E8%A7%86.png",东方卫视 +http://61.156.228.12:8154/tsfile/live/0107_1.m3u8?key=txiptv&playlive=1&authid=0$61156 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="山西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E5%8D%AB%E8%A7%86.png",山西卫视 +http://61.156.228.12:8154/tsfile/live/0118_1.m3u8?key=txiptv&playlive=1&authid=0$61156 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E5%8D%AB%E8%A7%86.png",广东卫视 +http://61.156.228.12:8154/tsfile/live/0125_1.m3u8?key=txiptv&playlive=1&authid=0$61156 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="黑龙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",黑龙江卫视 +http://61.156.228.12:8154/tsfile/live/0143_1.m3u8?key=txiptv&playlive=1&authid=0$61156 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV1.png",CCTV1 +http://110.80.17.38:9999/tsfile/live/0001_1.m3u8$11080 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV2.png",CCTV2 +http://110.80.17.38:9999/tsfile/live/0002_1.m3u8$11080 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV3" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV3.png",CCTV3 +http://110.80.17.38:9999/tsfile/live/0003_1.m3u8$11080 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV4.png",CCTV4 +http://110.80.17.38:9999/tsfile/live/0004_1.m3u8$11080 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5.png",CCTV5 +http://110.80.17.38:9999/tsfile/live/0005_1.m3u8$11080 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV6" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV6.png",CCTV6 +http://110.80.17.38:9999/tsfile/live/0006_1.m3u8$11080 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV7" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV7.png",CCTV7 +http://110.80.17.38:9999/tsfile/live/0007_1.m3u8$11080 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV8" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV8.png",CCTV8 +http://110.80.17.38:9999/tsfile/live/0008_1.m3u8$11080 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV9" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV9.png",CCTV9 +http://110.80.17.38:9999/tsfile/live/0009_1.m3u8$11080 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV10" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV10.png",CCTV10 +http://110.80.17.38:9999/tsfile/live/0010_1.m3u8$11080 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV12" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV12.png",CCTV12 +http://110.80.17.38:9999/tsfile/live/0012_1.m3u8$11080 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV13" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV13.png",CCTV13 +http://110.80.17.38:9999/tsfile/live/0013_1.m3u8$11080 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E5%8D%AB%E8%A7%86.png",广东卫视 +http://110.80.17.38:9999/tsfile/live/0125_1.m3u8$11080 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="广西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E8%A5%BF%E5%8D%AB%E8%A7%86.png",广西卫视 +http://110.80.17.38:9999/tsfile/live/0113_1.m3u8$11080 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="东方卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E5%8D%AB%E8%A7%86.png",东方卫视 +http://110.80.17.38:9999/tsfile/live/0107_1.m3u8$11080 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="兵团卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%85%B5%E5%9B%A2%E5%8D%AB%E8%A7%86.png",兵团卫视 +http://110.80.17.38:9999/tsfile/live/0015_1.m3u8$11080 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="北京卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E5%8D%AB%E8%A7%86.png",北京卫视 +http://110.80.17.38:9999/tsfile/live/0122_2.m3u8$11080 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="厦门卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8E%A6%E9%97%A8%E5%8D%AB%E8%A7%86.png",厦门卫视 +http://110.80.17.38:9999/tsfile/live/0128_1.m3u8$11080 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="四川卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%9B%9B%E5%B7%9D%E5%8D%AB%E8%A7%86.png",四川卫视 +http://110.80.17.38:9999/tsfile/live/0123_1.m3u8$11080 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%B4%A5%E5%8D%AB%E8%A7%86.png",天津卫视 +http://110.80.17.38:9999/tsfile/live/0135_1.m3u8$11080 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="宁夏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%81%E5%A4%8F%E5%8D%AB%E8%A7%86.png",宁夏卫视 +http://110.80.17.38:9999/tsfile/live/0016_1.m3u8$11080 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="安徽卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%8D%AB%E8%A7%86.png",安徽卫视 +http://110.80.17.38:9999/tsfile/live/0130_2.m3u8$11080 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="山东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E5%8D%AB%E8%A7%86.png",山东卫视 +http://110.80.17.38:9999/tsfile/live/0131_1.m3u8$11080 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="山西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E5%8D%AB%E8%A7%86.png",山西卫视 +http://110.80.17.38:9999/tsfile/live/0118_1.m3u8$11080 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="新疆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E7%96%86%E5%8D%AB%E8%A7%86.png",新疆卫视 +http://110.80.17.38:9999/tsfile/live/0018_1.m3u8$11080 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="江苏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E5%8D%AB%E8%A7%86.png",江苏卫视 +http://110.80.17.38:9999/tsfile/live/0127_1.m3u8$11080 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="江西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%A5%BF%E5%8D%AB%E8%A7%86.png",江西卫视 +http://110.80.17.38:9999/tsfile/live/0138_2.m3u8$11080 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="河北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E5%8D%AB%E8%A7%86.png",河北卫视 +http://110.80.17.38:9999/tsfile/live/0117_1.m3u8$11080 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="浙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",浙江卫视 +http://110.80.17.38:9999/tsfile/live/0124_1.m3u8$11080 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="湖北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%8D%AB%E8%A7%86.png",湖北卫视 +http://110.80.17.38:9999/tsfile/live/0132_1.m3u8$11080 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="甘肃卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%94%98%E8%82%83%E5%8D%AB%E8%A7%86.png",甘肃卫视 +http://110.80.17.38:9999/tsfile/live/0141_1.m3u8$11080 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="重庆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%8D%E5%BA%86%E5%8D%AB%E8%A7%86.png",重庆卫视 +http://110.80.17.38:9999/tsfile/live/0142_1.m3u8$11080 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV1.png",CCTV1 +http://171.15.18.199:8180/TV00000000000000000001@HHZT$17115 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV2.png",CCTV2 +http://171.15.18.199:8180/TV00000000000000000002@HHZT$17115 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV3" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV3.png",CCTV3 +http://171.15.18.199:8180/TV00000000000000000003@HHZT$17115 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV4.png",CCTV4 +http://171.15.18.199:8180/TV00000000000000000004@HHZT$17115 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5.png",CCTV5 +http://171.15.18.199:8180/TV00000000000000000005@HHZT$17115 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV6" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV6.png",CCTV6 +http://171.15.18.199:8180/TV00000000000000000006@HHZT$17115 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV7" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV7.png",CCTV7 +http://171.15.18.199:8180/TV00000000000000000007@HHZT$17115 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV8" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV8.png",CCTV8 +http://171.15.18.199:8180/TV00000000000000000008@HHZT$17115 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV9" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV9.png",CCTV9 +http://171.15.18.199:8180/TV00000000000000000009@HHZT$17115 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV10" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV10.png",CCTV10 +http://171.15.18.199:8180/TV00000000000000000010@HHZT$17115 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV11" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV11.png",CCTV11 +http://171.15.18.199:8180/TV00000000000000000011@HHZT$17115 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV12" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV12.png",CCTV12 +http://171.15.18.199:8180/TV00000000000000000012@HHZT$17115 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV13" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV13.png",CCTV13 +http://171.15.18.199:8180/TV00000000000000000013@HHZT$17115 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV14" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV14.png",CCTV14 +http://171.15.18.199:8180/TV00000000000000000014@HHZT$17115 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV15.png",CCTV15 +http://171.15.18.199:8180/TV00000000000000000015@HHZT$17115 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV17" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV17.png",CCTV17 +http://171.15.18.199:8180/TV00000000000000000017@HHZT$17115 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="湖南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%8D%AB%E8%A7%86.png",湖南卫视 +http://171.15.18.199:8180/TV00000000000000000018@HHZT$17115 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="浙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",浙江卫视 +http://171.15.18.199:8180/TV00000000000000000020@HHZT$17115 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="东方卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E5%8D%AB%E8%A7%86.png",东方卫视 +http://171.15.18.199:8180/TV00000000000000000021@HHZT$17115 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%B4%A5%E5%8D%AB%E8%A7%86.png",天津卫视 +http://171.15.18.199:8180/TV00000000000000000022@HHZT$17115 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="山东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E5%8D%AB%E8%A7%86.png",山东卫视 +http://171.15.18.199:8180/TV00000000000000000024@HHZT$17115 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="湖北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%8D%AB%E8%A7%86.png",湖北卫视 +http://171.15.18.199:8180/TV00000000000000000025@HHZT$17115 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%B1%E5%9C%B3%E5%8D%AB%E8%A7%86.png",深圳卫视 +http://171.15.18.199:8180/TV00000000000000000026@HHZT$17115 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="重庆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%8D%E5%BA%86%E5%8D%AB%E8%A7%86.png",重庆卫视 +http://171.15.18.199:8180/TV00000000000000000030@HHZT$17115 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E5%8D%AB%E8%A7%86.png",广东卫视 +http://171.15.18.199:8180/TV00000000000000000031@HHZT$17115 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="广西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E8%A5%BF%E5%8D%AB%E8%A7%86.png",广西卫视 +http://171.15.18.199:8180/TV00000000000000000032@HHZT$17115 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="东南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E5%8D%97%E5%8D%AB%E8%A7%86.png",东南卫视 +http://171.15.18.199:8180/TV00000000000000000033@HHZT$17115 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="云南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E5%8D%97%E5%8D%AB%E8%A7%86.png",云南卫视 +http://171.15.18.199:8180/TV00000000000000000034@HHZT$17115 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="河北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E5%8D%AB%E8%A7%86.png",河北卫视 +http://171.15.18.199:8180/TV00000000000000000035@HHZT$17115 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="吉林卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E5%8D%AB%E8%A7%86.png",吉林卫视 +http://171.15.18.199:8180/TV00000000000000000036@HHZT$17115 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="江西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%A5%BF%E5%8D%AB%E8%A7%86.png",江西卫视 +http://171.15.18.199:8180/TV00000000000000000037@HHZT$17115 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="山西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E5%8D%AB%E8%A7%86.png",山西卫视 +http://171.15.18.199:8180/TV00000000000000000038@HHZT$17115 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="陕西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%99%95%E8%A5%BF%E5%8D%AB%E8%A7%86.png",陕西卫视 +http://171.15.18.199:8180/TV00000000000000000039@HHZT$17115 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="四川卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%9B%9B%E5%B7%9D%E5%8D%AB%E8%A7%86.png",四川卫视 +http://171.15.18.199:8180/TV00000000000000000040@HHZT$17115 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="河南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8D%97%E5%8D%AB%E8%A7%86.png",河南卫视 +http://171.15.18.199:8180/TV00000000000000000016@HHZT$17115 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="黑龙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",黑龙江卫视 +http://171.15.18.199:8180/TV00000000000000000027@HHZT$17115 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="海南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%B7%E5%8D%97%E5%8D%AB%E8%A7%86.png",海南卫视 +http://171.15.18.199:8180/TV00000000000000000028@HHZT$17115 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV1.png",CCTV1 +http://61.184.46.85:9901/tsfile/live/0001_1.m3u8$61184 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV2.png",CCTV2 +http://61.184.46.85:9901/tsfile/live/0002_1.m3u8$61184 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV3" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV3.png",CCTV3 +http://61.184.46.85:9901/tsfile/live/0003_1.m3u8$61184 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV4.png",CCTV4 +http://61.184.46.85:9901/tsfile/live/0004_1.m3u8$61184 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5.png",CCTV5 +http://61.184.46.85:9901/tsfile/live/0005_1.m3u8$61184 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV6" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV6.png",CCTV6 +http://61.184.46.85:9901/tsfile/live/0006_1.m3u8$61184 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV7" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV7.png",CCTV7 +http://61.184.46.85:9901/tsfile/live/0007_1.m3u8$61184 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV8" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV8.png",CCTV8 +http://61.184.46.85:9901/tsfile/live/0008_1.m3u8$61184 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV9" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV9.png",CCTV9 +http://61.184.46.85:9901/tsfile/live/0009_1.m3u8$61184 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV10" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV10.png",CCTV10 +http://61.184.46.85:9901/tsfile/live/0010_1.m3u8$61184 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV11" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV11.png",CCTV11 +http://61.184.46.85:9901/tsfile/live/0011_1.m3u8$61184 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV12" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV12.png",CCTV12 +http://61.184.46.85:9901/tsfile/live/0012_1.m3u8$61184 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV13" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV13.png",CCTV13 +http://61.184.46.85:9901/tsfile/live/0013_1.m3u8$61184 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV14" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV14.png",CCTV14 +http://61.184.46.85:9901/tsfile/live/0014_1.m3u8$61184 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV15.png",CCTV15 +http://61.184.46.85:9901/tsfile/live/0015_1.m3u8$61184 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5%2B.png",CCTV5+ +http://61.184.46.85:9901/tsfile/live/0015_1.m3u8$61184 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%B4%A5%E5%8D%AB%E8%A7%86.png",天津卫视 +http://61.184.46.85:9901/tsfile/live/1011_1.m3u8?key=txiptv +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="东南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E5%8D%97%E5%8D%AB%E8%A7%86.png",东南卫视 +http://61.184.46.85:9901/tsfile/live/1019_1.m3u8?key=txiptv +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="海南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%B7%E5%8D%97%E5%8D%AB%E8%A7%86.png",海南卫视 +http://61.184.46.85:9901/tsfile/live/1018_1.m3u8?key=txiptv +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E5%8D%AB%E8%A7%86.png",广东卫视 +http://61.184.46.85:9901/tsfile/live/1003_1.m3u8?key=txiptv +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%B1%E5%9C%B3%E5%8D%AB%E8%A7%86.png",深圳卫视 +http://61.184.46.85:9901/tsfile/live/1004_1.m3u8?key=txiptv +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="湖南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%8D%AB%E8%A7%86.png",湖南卫视 +http://61.184.46.85:9901/tsfile/live/1002_1.m3u8?key=txiptv +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="湖北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%8D%AB%E8%A7%86.png",湖北卫视 +http://61.184.46.85:9901/tsfile/live/0018_1.m3u8?key=txiptv +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="河南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8D%97%E5%8D%AB%E8%A7%86.png",河南卫视 +http://61.184.46.85:9901/tsfile/live/1012_1.m3u8?key=txiptv +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="河北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E5%8D%AB%E8%A7%86.png",河北卫视 +http://61.184.46.85:9901/tsfile/live/1013_1.m3u8?key=txiptv +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="辽宁卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%BE%BD%E5%AE%81%E5%8D%AB%E8%A7%86.png",辽宁卫视 +http://61.184.46.85:9901/tsfile/live/1017_1.m3u8?key=txiptv +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="四川卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%9B%9B%E5%B7%9D%E5%8D%AB%E8%A7%86.png",四川卫视 +http://61.184.46.85:9901/tsfile/live/1016_1.m3u8?key=txiptv +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="重庆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%8D%E5%BA%86%E5%8D%AB%E8%A7%86.png",重庆卫视 +http://61.184.46.85:9901/tsfile/live/1015_1.m3u8?key=txiptv +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV1.png",CCTV1 +http://cdn6.bkpcp.top/tl/tuiliu.php?id=CCTV1$cdn6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV2.png",CCTV2 +http://cdn6.bkpcp.top/tl/tuiliu.php?id=CCTV2$cdn6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV3" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV3.png",CCTV3 +http://cdn6.bkpcp.top/tl/tuiliu.php?id=CCTV3$cdn6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV4.png",CCTV4 +http://cdn6.bkpcp.top/tl/tuiliu.php?id=CCTV4$cdn6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5.png",CCTV5 +http://cdn6.bkpcp.top/tl/tuiliu.php?id=CCTV5$cdn6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV6" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV6.png",CCTV6 +http://cdn6.bkpcp.top/tl/tuiliu.php?id=CCTV6$cdn6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV7" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV7.png",CCTV7 +http://cdn6.bkpcp.top/tl/tuiliu.php?id=CCTV7$cdn6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV8" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV8.png",CCTV8 +http://cdn6.bkpcp.top/tl/tuiliu.php?id=CCTV8$cdn6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV9" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV9.png",CCTV9 +http://cdn6.bkpcp.top/tl/tuiliu.php?id=CCTV9$cdn6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV10" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV10.png",CCTV10 +http://cdn6.bkpcp.top/tl/tuiliu.php?id=CCTV10$cdn6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV11" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV11.png",CCTV11 +http://cdn6.bkpcp.top/tl/tuiliu.php?id=CCTV11$cdn6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV12" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV12.png",CCTV12 +http://cdn6.bkpcp.top/tl/tuiliu.php?id=CCTV12$cdn6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV13" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV13.png",CCTV13 +http://cdn6.bkpcp.top/tl/tuiliu.php?id=CCTV13$cdn6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV14" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV14.png",CCTV14 +http://cdn6.bkpcp.top/tl/tuiliu.php?id=CCTV14$cdn6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV15.png",CCTV15 +http://cdn6.bkpcp.top/tl/tuiliu.php?id=CCTV15$cdn6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV16" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV16.png",CCTV16 +http://cdn6.bkpcp.top/tl/tuiliu.php?id=CCTV16$cdn6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV17" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV17.png",CCTV17 +http://cdn6.bkpcp.top/tl/tuiliu.php?id=CCTV17$cdn6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5%2B.png",CCTV5+ +http://cdn6.bkpcp.top/tl/tuiliu.php?id=CCTV5+$cdn6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="安徽卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%8D%AB%E8%A7%86.png",安徽卫视 +http://cdn6.bkpcp.top/tl/tuiliu.php?id=安徽卫视$cdn6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="北京卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E5%8D%AB%E8%A7%86.png",北京卫视 +http://cdn6.bkpcp.top/tl/tuiliu.php?id=北京卫视$cdn6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="北京卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E5%8D%AB%E8%A7%86.png",北京卫视 +http://cdn6.bkpcp.top/tl/tuiliu.php?id=北京卫视$cdn6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="东方卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E5%8D%AB%E8%A7%86.png",东方卫视 +http://cdn6.bkpcp.top/tl/tuiliu.php?id=东方卫视$cdn6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="东方卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E5%8D%AB%E8%A7%86.png",东方卫视 +http://cdn6.bkpcp.top/tl/tuiliu.php?id=东方卫视$cdn6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="东南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E5%8D%97%E5%8D%AB%E8%A7%86.png",东南卫视 +http://cdn6.bkpcp.top/tl/tuiliu.php?id=东南卫视$cdn6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="甘肃卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%94%98%E8%82%83%E5%8D%AB%E8%A7%86.png",甘肃卫视 +http://cdn6.bkpcp.top/tl/tuiliu.php?id=甘肃卫视$cdn6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E5%8D%AB%E8%A7%86.png",广东卫视 +http://cdn6.bkpcp.top/tl/tuiliu.php?id=广东卫视$cdn6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="广西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E8%A5%BF%E5%8D%AB%E8%A7%86.png",广西卫视 +http://cdn6.bkpcp.top/tl/tuiliu.php?id=广西卫视$cdn6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="贵州卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%B4%B5%E5%B7%9E%E5%8D%AB%E8%A7%86.png",贵州卫视 +http://cdn6.bkpcp.top/tl/tuiliu.php?id=贵州卫视$cdn6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="海南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%B7%E5%8D%97%E5%8D%AB%E8%A7%86.png",海南卫视 +http://cdn6.bkpcp.top/tl/tuiliu.php?id=海南卫视$cdn6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="河北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E5%8D%AB%E8%A7%86.png",河北卫视 +http://cdn6.bkpcp.top/tl/tuiliu.php?id=河北卫视$cdn6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="河南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8D%97%E5%8D%AB%E8%A7%86.png",河南卫视 +http://cdn6.bkpcp.top/tl/tuiliu.php?id=河南卫视$cdn6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="黑龙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",黑龙江卫视 +http://cdn6.bkpcp.top/tl/tuiliu.php?id=黑龙江卫视$cdn6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="湖北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%8D%AB%E8%A7%86.png",湖北卫视 +http://cdn6.bkpcp.top/tl/tuiliu.php?id=湖北卫视$cdn6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="湖南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%8D%AB%E8%A7%86.png",湖南卫视 +http://cdn6.bkpcp.top/tl/tuiliu.php?id=湖南卫视$cdn6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="吉林卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E5%8D%AB%E8%A7%86.png",吉林卫视 +http://cdn6.bkpcp.top/tl/tuiliu.php?id=吉林卫视$cdn6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="江苏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E5%8D%AB%E8%A7%86.png",江苏卫视 +http://cdn6.bkpcp.top/tl/tuiliu.php?id=江苏卫视$cdn6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="江西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%A5%BF%E5%8D%AB%E8%A7%86.png",江西卫视 +http://cdn6.bkpcp.top/tl/tuiliu.php?id=江西卫视$cdn6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="辽宁卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%BE%BD%E5%AE%81%E5%8D%AB%E8%A7%86.png",辽宁卫视 +http://cdn6.bkpcp.top/tl/tuiliu.php?id=辽宁卫视$cdn6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="内蒙古卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%86%85%E8%92%99%E5%8F%A4%E5%8D%AB%E8%A7%86.png",内蒙古卫视 +http://cdn6.bkpcp.top/tl/tuiliu.php?id=内蒙古卫视$cdn6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="宁夏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%81%E5%A4%8F%E5%8D%AB%E8%A7%86.png",宁夏卫视 +http://cdn6.bkpcp.top/tl/tuiliu.php?id=宁夏卫视$cdn6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="青海卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%92%E6%B5%B7%E5%8D%AB%E8%A7%86.png",青海卫视 +http://cdn6.bkpcp.top/tl/tuiliu.php?id=青海卫视$cdn6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="山东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E5%8D%AB%E8%A7%86.png",山东卫视 +http://cdn6.bkpcp.top/tl/tuiliu.php?id=山东卫视$cdn6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="山西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E5%8D%AB%E8%A7%86.png",山西卫视 +http://cdn6.bkpcp.top/tl/tuiliu.php?id=山西卫视$cdn6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="陕西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%99%95%E8%A5%BF%E5%8D%AB%E8%A7%86.png",陕西卫视 +http://cdn6.bkpcp.top/tl/tuiliu.php?id=陕西卫视$cdn6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%B1%E5%9C%B3%E5%8D%AB%E8%A7%86.png",深圳卫视 +http://cdn6.bkpcp.top/tl/tuiliu.php?id=深圳卫视$cdn6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="四川卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%9B%9B%E5%B7%9D%E5%8D%AB%E8%A7%86.png",四川卫视 +http://cdn6.bkpcp.top/tl/tuiliu.php?id=四川卫视$cdn6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%B4%A5%E5%8D%AB%E8%A7%86.png",天津卫视 +http://cdn6.bkpcp.top/tl/tuiliu.php?id=天津卫视$cdn6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="浙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",浙江卫视 +http://cdn6.bkpcp.top/tl/tuiliu.php?id=浙江卫视$cdn6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="重庆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%8D%E5%BA%86%E5%8D%AB%E8%A7%86.png",重庆卫视 +http://cdn6.bkpcp.top/tl/tuiliu.php?id=重庆卫视$cdn6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV1.png",CCTV1 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226559/index.m3u8$IPV6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV2.png",CCTV2 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226540/index.m3u8$IPV6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV3" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV3.png",CCTV3 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226021/index.m3u8$IPV6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV4.png",CCTV4 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226428/index.m3u8$IPV6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5.png",CCTV5 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226019/index.m3u8$IPV6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV6" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV6.png",CCTV6 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226010/index.m3u8$IPV6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV7" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV7.png",CCTV7 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225733/index.m3u8$IPV6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV8" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV8.png",CCTV8 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226008/index.m3u8$IPV6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV9" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV9.png",CCTV9 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225734/index.m3u8$IPV6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV10" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV10.png",CCTV10 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226473/index.m3u8$IPV6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV11" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV11.png",CCTV11 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226565/index.m3u8$IPV6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV12" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV12.png",CCTV12 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226568/index.m3u8$IPV6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV13" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV13.png",CCTV13 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226537/index.m3u8$IPV6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV14" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV14.png",CCTV14 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226591/index.m3u8$IPV6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV15.png",CCTV15 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226476/index.m3u8$IPV6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV16" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV16.png",CCTV16 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226100/index.m3u8$IPV6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV17" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV17.png",CCTV17 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225765/index.m3u8$IPV6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5%2B.png",CCTV5+ +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225603/index.m3u8$IPV6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="安多卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%A4%9A%E5%8D%AB%E8%A7%86.png",安多卫视 +http://[2409:8087:1a0b:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225659/index.m3u8$IPV6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="安徽卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%8D%AB%E8%A7%86.png",安徽卫视 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226391/index.m3u8$IPV6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="北京卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E5%8D%AB%E8%A7%86.png",北京卫视 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226450/index.m3u8$IPV6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="兵团卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%85%B5%E5%9B%A2%E5%8D%AB%E8%A7%86.png",兵团卫视 +http://[2409:8087:1a0b:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226439/index.m3u8$IPV6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="东方卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E5%8D%AB%E8%A7%86.png",东方卫视 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226345/index.m3u8$IPV6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="东南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E5%8D%97%E5%8D%AB%E8%A7%86.png",东南卫视 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226341/index.m3u8$IPV6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="甘肃卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%94%98%E8%82%83%E5%8D%AB%E8%A7%86.png",甘肃卫视 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225633/index.m3u8$IPV6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E5%8D%AB%E8%A7%86.png",广东卫视 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226248/index.m3u8$IPV6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="广西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E8%A5%BF%E5%8D%AB%E8%A7%86.png",广西卫视 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226549/index.m3u8$IPV6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="贵州卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%B4%B5%E5%B7%9E%E5%8D%AB%E8%A7%86.png",贵州卫视 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226474/index.m3u8$IPV6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="海南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%B7%E5%8D%97%E5%8D%AB%E8%A7%86.png",海南卫视 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226465/index.m3u8$IPV6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="河北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E5%8D%AB%E8%A7%86.png",河北卫视 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226406/index.m3u8$IPV6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="黑龙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",黑龙江卫视 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225799/index.m3u8$IPV6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="湖北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%8D%AB%E8%A7%86.png",湖北卫视 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226477/index.m3u8$IPV6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="湖南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%8D%AB%E8%A7%86.png",湖南卫视 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226307/index.m3u8$IPV6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="江苏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E5%8D%AB%E8%A7%86.png",江苏卫视 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226310/index.m3u8$IPV6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="江西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%A5%BF%E5%8D%AB%E8%A7%86.png",江西卫视 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226344/index.m3u8$IPV6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="康巴卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BA%B7%E5%B7%B4%E5%8D%AB%E8%A7%86.png",康巴卫视 +http://[2409:8087:1a0b:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225660/index.m3u8$IPV6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="辽宁卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%BE%BD%E5%AE%81%E5%8D%AB%E8%A7%86.png",辽宁卫视 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226546/index.m3u8$IPV6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="宁夏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%81%E5%A4%8F%E5%8D%AB%E8%A7%86.png",宁夏卫视 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225632/index.m3u8$IPV6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="青海卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%92%E6%B5%B7%E5%8D%AB%E8%A7%86.png",青海卫视 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225628/index.m3u8$IPV6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="山东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E5%8D%AB%E8%A7%86.png",山东卫视 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226456/index.m3u8$IPV6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="山西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E5%8D%AB%E8%A7%86.png",山西卫视 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225624/index.m3u8$IPV6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="陕西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%99%95%E8%A5%BF%E5%8D%AB%E8%A7%86.png",陕西卫视 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225625/index.m3u8$IPV6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%B1%E5%9C%B3%E5%8D%AB%E8%A7%86.png",深圳卫视 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226313/index.m3u8$IPV6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="四川卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%9B%9B%E5%B7%9D%E5%8D%AB%E8%A7%86.png",四川卫视 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226338/index.m3u8$IPV6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%B4%A5%E5%8D%AB%E8%A7%86.png",天津卫视 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226459/index.m3u8$IPV6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="新疆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E7%96%86%E5%8D%AB%E8%A7%86.png",新疆卫视 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225635/index.m3u8$IPV6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="延边卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BB%B6%E8%BE%B9%E5%8D%AB%E8%A7%86.png",延边卫视 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226516/index.m3u8$IPV6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="云南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E5%8D%97%E5%8D%AB%E8%A7%86.png",云南卫视 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226444/index.m3u8$IPV6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="重庆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%8D%E5%BA%86%E5%8D%AB%E8%A7%86.png",重庆卫视 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226409/index.m3u8$IPV6 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV1.png",CCTV1 +http://36.36.200.198:44330/tsfile/live/0001_1.m3u8?key=txiptv&playlive=0&authid=0$3636 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV2.png",CCTV2 +http://36.36.200.198:44330/tsfile/live/0002_1.m3u8?key=txiptv&playlive=0&authid=0$3636 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV3" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV3.png",CCTV3 +http://36.36.200.198:44330/tsfile/live/0003_1.m3u8?key=txiptv&playlive=0&authid=0$3636 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV4.png",CCTV4 +http://36.36.200.198:44330/tsfile/live/0004_1.m3u8?key=txiptv&playlive=0&authid=0$3636 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5.png",CCTV5 +http://36.36.200.198:44330/tsfile/live/0005_1.m3u8?key=txiptv&playlive=0&authid=0$3636 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV6" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV6.png",CCTV6 +http://36.36.200.198:44330/tsfile/live/0007_1.m3u8?key=txiptv&playlive=0&authid=0$3636 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV7" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV7.png",CCTV7 +http://36.36.200.198:44330/tsfile/live/0008_1.m3u8?key=txiptv&playlive=0&authid=0$3636 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV8" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV8.png",CCTV8 +http://36.36.200.198:44330/tsfile/live/0009_1.m3u8?key=txiptv&playlive=0&authid=0$3636 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV9" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV9.png",CCTV9 +http://36.36.200.198:44330/tsfile/live/0010_1.m3u8?key=txiptv&playlive=0&authid=0$3636 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV10" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV10.png",CCTV10 +http://36.36.200.198:44330/tsfile/live/0011_1.m3u8?key=txiptv&playlive=0&authid=0$3636 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV11" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV11.png",CCTV11 +http://36.36.200.198:44330/tsfile/live/0012_1.m3u8?key=txiptv&playlive=0&authid=0$3636 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV12" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV12.png",CCTV12 +http://36.36.200.198:44330/tsfile/live/0013_1.m3u8?key=txiptv&playlive=0&authid=0$3636 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV13" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV13.png",CCTV13 +http://36.36.200.198:44330/tsfile/live/0014_1.m3u8?key=txiptv&playlive=0&authid=0$3636 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV14" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV14.png",CCTV14 +http://36.36.200.198:44330/tsfile/live/0015_1.m3u8?key=txiptv&playlive=0&authid=0$3636 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV15.png",CCTV15 +http://36.36.200.198:44330/tsfile/live/0016_1.m3u8?key=txiptv&playlive=0&authid=0$3636 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5%2B.png",CCTV5+ +http://36.36.200.198:44330/tsfile/live/0006_1.m3u8?key=txiptv&playlive=0&authid=0$3636 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="安徽卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%8D%AB%E8%A7%86.png",安徽卫视 +http://36.36.200.198:44330/tsfile/live/0130_1.m3u8?key=txiptv&playlive=0&authid=0$3636 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="北京卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E5%8D%AB%E8%A7%86.png",北京卫视 +http://36.36.200.198:44330/tsfile/live/0122_1.m3u8?key=txiptv&playlive=0&authid=0$3636 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="大湾区卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A7%E6%B9%BE%E5%8C%BA%E5%8D%AB%E8%A7%86.png",大湾区卫视 +http://36.36.200.198:44330/tsfile/live/1007_1.m3u8?key=txiptv&playlive=0&authid=0$3636 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="河南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8D%97%E5%8D%AB%E8%A7%86.png",河南卫视 +http://36.36.200.198:44330/tsfile/live/0139_1.m3u8?key=txiptv&playlive=0&authid=0$3636 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="黑龙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",黑龙江卫视 +http://36.36.200.198:44330/tsfile/live/0143_1.m3u8?key=txiptv&playlive=0&authid=0$3636 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="湖北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%8D%AB%E8%A7%86.png",湖北卫视 +http://36.36.200.198:44330/tsfile/live/0132_1.m3u8?key=txiptv&playlive=0&authid=0$3636 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="湖南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%8D%AB%E8%A7%86.png",湖南卫视 +http://36.36.200.198:44330/tsfile/live/0128_1.m3u8?key=txiptv&playlive=0&authid=0$3636 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="吉林卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E5%8D%AB%E8%A7%86.png",吉林卫视 +http://36.36.200.198:44330/tsfile/live/0116_1.m3u8?key=txiptv&playlive=0&authid=0$3636 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="江苏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E5%8D%AB%E8%A7%86.png",江苏卫视 +http://36.36.200.198:44330/tsfile/live/0127_1.m3u8?key=txiptv&playlive=0&authid=0$3636 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="江西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%A5%BF%E5%8D%AB%E8%A7%86.png",江西卫视 +http://36.36.200.198:44330/tsfile/live/0138_1.m3u8?key=txiptv&playlive=0&authid=0$3636 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="辽宁卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%BE%BD%E5%AE%81%E5%8D%AB%E8%A7%86.png",辽宁卫视 +http://36.36.200.198:44330/tsfile/live/0121_1.m3u8?key=txiptv&playlive=0&authid=0$3636 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="山东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E5%8D%AB%E8%A7%86.png",山东卫视 +http://36.36.200.198:44330/tsfile/live/0131_1.m3u8?key=txiptv&playlive=0&authid=0$3636 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="山西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E5%8D%AB%E8%A7%86.png",山西卫视 +http://36.36.200.198:44330/tsfile/live/0118_1.m3u8?key=txiptv&playlive=0&authid=0$3636 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="陕西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%99%95%E8%A5%BF%E5%8D%AB%E8%A7%86.png",陕西卫视 +http://36.36.200.198:44330/tsfile/live/0136_1.m3u8?key=txiptv&playlive=0&authid=0$3636 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="东方卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E5%8D%AB%E8%A7%86.png",东方卫视 +http://36.36.200.198:44330/tsfile/live/0107_1.m3u8?key=txiptv&playlive=0&authid=0$3636 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%B1%E5%9C%B3%E5%8D%AB%E8%A7%86.png",深圳卫视 +http://36.36.200.198:44330/tsfile/live/0018_1.m3u8?key=txiptv&playlive=0&authid=0$3636 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="四川卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%9B%9B%E5%B7%9D%E5%8D%AB%E8%A7%86.png",四川卫视 +http://36.36.200.198:44330/tsfile/live/0123_1.m3u8?key=txiptv&playlive=0&authid=0$3636 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%B4%A5%E5%8D%AB%E8%A7%86.png",天津卫视 +http://36.36.200.198:44330/tsfile/live/0135_1.m3u8?key=txiptv&playlive=0&authid=0$3636 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="浙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",浙江卫视 +http://36.36.200.198:44330/tsfile/live/0124_1.m3u8?key=txiptv&playlive=0&authid=0$3636 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="重庆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%8D%E5%BA%86%E5%8D%AB%E8%A7%86.png",重庆卫视 +http://36.36.200.198:44330/tsfile/live/0142_1.m3u8?key=txiptv&playlive=0&authid=0$3636 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV1.png",CCTV1 +webview://https://yangshipin.cn/tv/home?pid=600001859$央视频 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV2.png",CCTV2 +webview://https://yangshipin.cn/tv/home?pid=600001800$央视频 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV3" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV3.png",CCTV3 +http://fjbczqv52.live.bestvcdn.com.cn/SWKLTQFDHCED2WIBXZRZNZ7AEGRU3SUIPS4XJF637MLWKJXS2D2SL57D6ZHKSG7WL3JFZBAYROZMVJ6H3GL6QGYAZN67LFZ44BC4X52TSNYVJN55WY57BGEYX5XYVZJ6BXJFCTJP6VDKCJGVJU62L37XUU======/live/program/live/cctv3hd/4000000/mnf.m3u8$央视频 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV4.png",CCTV4 +webview://https://yangshipin.cn/tv/home?pid=600001814$央视频 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5.png",CCTV5 +webview://https://yangshipin.cn/tv/home?pid=600001818$央视频 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV6" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV6.png",CCTV6 +webview://https://yangshipin.cn/tv/home?pid=600108442$央视频 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV7" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV7.png",CCTV7 +webview://https://yangshipin.cn/tv/home?pid=600004092$央视频 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV8" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV8.png",CCTV8 +webview://https://yangshipin.cn/tv/home?pid=600001803$央视频 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV9" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV9.png",CCTV9 +webview://https://yangshipin.cn/tv/home?pid=600004078$央视频 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV10" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV10.png",CCTV10 +webview://https://yangshipin.cn/tv/home?pid=600001805$央视频 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV11" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV11.png",CCTV11 +webview://https://yangshipin.cn/tv/home?pid=600001806$央视频 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV12" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV12.png",CCTV12 +webview://https://yangshipin.cn/tv/home?pid=600001807$央视频 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV13" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV13.png",CCTV13 +webview://https://yangshipin.cn/tv/home?pid=600001811$央视频 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV14" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV14.png",CCTV14 +webview://https://yangshipin.cn/tv/home?pid=600001809$央视频 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV15.png",CCTV15 +webview://https://yangshipin.cn/tv/home?pid=600001815$央视频 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV16" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV16.png",CCTV16 +webview://https://yangshipin.cn/tv/home?pid=600098637$央视频 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV17" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV17.png",CCTV17 +webview://https://yangshipin.cn/tv/home?pid=600001810$央视频 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5%2B.png",CCTV5+ +webview://https://yangshipin.cn/tv/home?pid=600001817$央视频 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="安徽卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%8D%AB%E8%A7%86.png",安徽卫视 +webview://https://yangshipin.cn/tv/home?pid=600002532$央视频 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="北京卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E5%8D%AB%E8%A7%86.png",北京卫视 +webview://https://yangshipin.cn/tv/home?pid=600002309$央视频 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="东方卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E5%8D%AB%E8%A7%86.png",东方卫视 +webview://https://yangshipin.cn/tv/home?pid=600002483$央视频 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="东南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E5%8D%97%E5%8D%AB%E8%A7%86.png",东南卫视 +webview://https://yangshipin.cn/tv/home?pid=600002484$央视频 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="甘肃卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%94%98%E8%82%83%E5%8D%AB%E8%A7%86.png",甘肃卫视 +webview://https://yangshipin.cn/tv/home?pid=600190408$央视频 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E5%8D%AB%E8%A7%86.png",广东卫视 +webview://https://yangshipin.cn/tv/home?pid=600002485$央视频 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="广西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E8%A5%BF%E5%8D%AB%E8%A7%86.png",广西卫视 +webview://https://yangshipin.cn/tv/home?pid=600002509$央视频 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="贵州卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%B4%B5%E5%B7%9E%E5%8D%AB%E8%A7%86.png",贵州卫视 +webview://https://yangshipin.cn/tv/home?pid=600002490$央视频 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="海南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%B7%E5%8D%97%E5%8D%AB%E8%A7%86.png",海南卫视 +webview://https://yangshipin.cn/tv/home?pid=600002506$央视频 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="河北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E5%8D%AB%E8%A7%86.png",河北卫视 +webview://https://yangshipin.cn/tv/home?pid=600002493$央视频 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="河南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8D%97%E5%8D%AB%E8%A7%86.png",河南卫视 +webview://https://yangshipin.cn/tv/home?pid=600002525$央视频 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="黑龙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",黑龙江卫视 +webview://https://yangshipin.cn/tv/home?pid=600002498$央视频 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="湖北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%8D%AB%E8%A7%86.png",湖北卫视 +webview://https://yangshipin.cn/tv/home?pid=600002508$央视频 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="湖南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%8D%AB%E8%A7%86.png",湖南卫视 +webview://https://yangshipin.cn/tv/home?pid=600002475$央视频 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="吉林卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E5%8D%AB%E8%A7%86.png",吉林卫视 +webview://https://yangshipin.cn/tv/home?pid=600190405$央视频 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="江苏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E5%8D%AB%E8%A7%86.png",江苏卫视 +webview://https://yangshipin.cn/tv/home?pid=600002521$央视频 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="江西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%A5%BF%E5%8D%AB%E8%A7%86.png",江西卫视 +webview://https://yangshipin.cn/tv/home?pid=600002503$央视频 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="辽宁卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%BE%BD%E5%AE%81%E5%8D%AB%E8%A7%86.png",辽宁卫视 +webview://https://yangshipin.cn/tv/home?pid=600002505$央视频 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="内蒙古卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%86%85%E8%92%99%E5%8F%A4%E5%8D%AB%E8%A7%86.png",内蒙古卫视 +webview://https://yangshipin.cn/tv/home?pid=600190401$央视频 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="宁夏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%81%E5%A4%8F%E5%8D%AB%E8%A7%86.png",宁夏卫视 +webview://https://yangshipin.cn/tv/home?pid=600190737$央视频 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="青海卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%92%E6%B5%B7%E5%8D%AB%E8%A7%86.png",青海卫视 +webview://https://yangshipin.cn/tv/home?pid=600190406$央视频 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="山东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E5%8D%AB%E8%A7%86.png",山东卫视 +webview://https://yangshipin.cn/tv/home?pid=600002513$央视频 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="山西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E5%8D%AB%E8%A7%86.png",山西卫视 +webview://https://yangshipin.cn/tv/home?pid=600190407$央视频 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="陕西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%99%95%E8%A5%BF%E5%8D%AB%E8%A7%86.png",陕西卫视 +webview://https://yangshipin.cn/tv/home?pid=600190400$央视频 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%B1%E5%9C%B3%E5%8D%AB%E8%A7%86.png",深圳卫视 +webview://https://yangshipin.cn/tv/home?pid=600002481$央视频 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="四川卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%9B%9B%E5%B7%9D%E5%8D%AB%E8%A7%86.png",四川卫视 +webview://https://yangshipin.cn/tv/home?pid=600002516$央视频 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%B4%A5%E5%8D%AB%E8%A7%86.png",天津卫视 +webview://https://yangshipin.cn/tv/home?pid=600152137$央视频 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="西藏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%A5%BF%E8%97%8F%E5%8D%AB%E8%A7%86.png",西藏卫视 +webview://https://yangshipin.cn/tv/home?pid=600190403$央视频 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="云南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E5%8D%97%E5%8D%AB%E8%A7%86.png",云南卫视 +webview://https://yangshipin.cn/tv/home?pid=600190402$央视频 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="浙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",浙江卫视 +webview://https://yangshipin.cn/tv/home?pid=600002520$央视频 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="重庆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%8D%E5%BA%86%E5%8D%AB%E8%A7%86.png",重庆卫视 +webview://https://yangshipin.cn/tv/home?pid=600002531$央视频 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV1.png",CCTV1 +webview://https://tv.cctv.com/live/cctv1/$央视网 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV2.png",CCTV2 +webview://https://tv.cctv.com/live/cctv2/$央视网 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV3" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV3.png",CCTV3 +webview://https://tv.cctv.com/live/cctv3/$央视网 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV4.png",CCTV4 +webview://https://tv.cctv.com/live/cctv4/$央视网 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5.png",CCTV5 +webview://https://tv.cctv.com/live/cctv5/$央视网 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV6" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV6.png",CCTV6 +webview://https://tv.cctv.com/live/cctv6/$央视网 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV7" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV7.png",CCTV7 +webview://https://tv.cctv.com/live/cctv7/$央视网 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV8" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV8.png",CCTV8 +webview://https://tv.cctv.com/live/cctv8/$央视网 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV9" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV9.png",CCTV9 +webview://https://tv.cctv.com/live/cctvjilu/$央视网 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV10" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV10.png",CCTV10 +webview://https://tv.cctv.com/live/cctv10/$央视网 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV11" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV11.png",CCTV11 +webview://https://tv.cctv.com/live/cctv11/$央视网 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV12" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV12.png",CCTV12 +webview://https://tv.cctv.com/live/cctv12/$央视网 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV13" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV13.png",CCTV13 +webview://https://tv.cctv.com/live/cctv13/$央视网 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV14" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV14.png",CCTV14 +webview://https://tv.cctv.com/live/cctv14/$央视网 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV15.png",CCTV15 +webview://https://tv.cctv.com/live/cctv15/$央视网 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV16" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV16.png",CCTV16 +webview://https://tv.cctv.com/live/cctv16/$央视网 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV17" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV17.png",CCTV17 +webview://https://tv.cctv.com/live/cctv17/$央视网 +#EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5%2B.png",CCTV5+ +webview://https://tv.cctv.com/live/cctv5plus/$央视网 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-1.png",CCTV-1 +http://ali-m-l.cztv.com/channels/lantian/channel15/1080p.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-1.png",CCTV-1 +http://114.238.59.2:4000/rtp/239.49.8.19:9614 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-1.png",CCTV-1 +http://60.26.181.220:4022/rtp/225.1.1.120:5002 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-1.png",CCTV-1 +http://111.162.205.201:8686/rtp/225.1.1.120:5002 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-1.png",CCTV-1 +http://114.238.59.148:4000/rtp/239.49.8.19:9614 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-1.png",CCTV-1 +http://220.169.100.41:10087/udp/239.76.253.151:9000 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-1.png",CCTV-1 +http://58.19.180.108:9981/stream/channelid/1198995092?profile=pass +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-1.png",CCTV-1 +http://111.193.239.245:9999/rtp/239.3.1.129:8008 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-1.png",CCTV-1 +http://php.jdshipin.com/TVOD/iptv.php?id=rthk33 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-1.png",CCTV-1 +http://iptv.huuc.edu.cn/hls/cctv1hd.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-2.png",CCTV-2 +http://60.26.181.220:4022/rtp/225.1.1.133:5002 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-2.png",CCTV-2 +http://219.141.44.245:8188/udp/238.255.2.11:5999 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-2.png",CCTV-2 +http://222.218.122.114:8188/udp/239.81.0.115:4056 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-2.png",CCTV-2 +http://omnix.cn:4000/udp/225.1.8.2:8084 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-2.png",CCTV-2 +http://nn.7x9d.cn/xzc2.php?ua=TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgNi4xOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTA2LjAuMC4wIFNhZmFyaS81MzcuMzY=&hls=aHR0cDovL3d3dy5kc2suY2MvcGhwL3N4Z2QucGhwP2lkPWNjdHYy +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-2.png",CCTV-2 +http://114.238.59.148:4000/rtp/239.49.8.50:9802 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-2.png",CCTV-2 +http://27.18.157.225:2701/rtp/239.69.1.102:10250 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-2.png",CCTV-2 +http://php.jdshipin.com/TVOD/hljyd.php?id=3221225588 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-2.png",CCTV-2 +http://goo.bkpcp.top/mg/CCTV2 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-2.png",CCTV-2 +http://iptv.huuc.edu.cn/hls/cctv2hd.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-3" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-3.png",CCTV-3 +http://b.zgjok.com:35455/mgtv/624878271.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-3" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-3.png",CCTV-3 +http://60.26.181.220:4022/rtp/225.1.1.158:5002 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-3" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-3.png",CCTV-3 +http://111.162.205.201:8686/rtp/225.1.1.158:5002 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-3" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-3.png",CCTV-3 +http://171.15.18.199:8180/TV00000000000000000003@HHZT +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-3" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-3.png",CCTV-3 +http://111.193.239.245:9999/rtp/239.3.1.172:8001 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-3" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-3.png",CCTV-3 +http://180.165.29.204:4022/rtp/239.45.1.68:5140 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-3" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-3.png",CCTV-3 +http://php.jdshipin.com/TVOD/hljyd.php?id=3221226021 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-3" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-3.png",CCTV-3 +http://iptv.huuc.edu.cn/hls/cctv3hd.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-3" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-3.png",CCTV-3 +https://smart.pendy.dpdns.org/Smart.php?id=cctv3 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-3" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-3.png",CCTV-3 +http://[2409:8087:1a01:df::4041]/TVOD/88888888/224/3221225799/main.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-4.png",CCTV-4 +http://60.26.181.220:4022/rtp/225.1.1.150:5002 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-4.png",CCTV-4 +https://global.cgtn.cicc.media.caton.cloud/master/cgtn-america.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-4.png",CCTV-4 +http://101.74.30.190:9901/tsfile/live/0004_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-4.png",CCTV-4 +http://180.165.29.204:4022/rtp/239.45.0.2:5140 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-4.png",CCTV-4 +http://php.jdshipin.com/TVOD/hljyd.php?id=3221226428 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-4.png",CCTV-4 +http://z.b.bkpcp.top/m.php?id=CCTV-4国际 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-4.png",CCTV-4 +http://iptv.huuc.edu.cn/hls/cctv4hd.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-4.png",CCTV-4 +https://www.freetv.top/migu/631780421.m3u8?migutoken=fefc6a44400a0dd448699ae0ce3d6e2c5a0f49b8d48adb36e747c4fbab039337eb3244f9951acbddaf26b7bf51597a7d1b43c8845e67fd5914ece875dcad325bb388200bc0f12fdff727d03e2d +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-4.png",CCTV-4 +https://smart.pendy.dpdns.org/Smart.php?id=cctv4 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-4.png",CCTV-4 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221226007/index.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5.png",CCTV-5 +https://ldcctvwbcdbd.a.bdydns.com/ldcctvwbcd/cdrmldcctv5plus_1/index.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5.png",CCTV-5 +http://60.26.181.220:4022/rtp/225.1.1.160:5002 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5.png",CCTV-5 +http://116.234.0.89:4022/rtp/239.45.1.69:5140 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5.png",CCTV-5 +http://116.237.148.215:8881/rtp/239.45.1.69:5140 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5.png",CCTV-5 +http://omnix.cn:4000/udp/225.1.8.89:8000 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5.png",CCTV-5 +http://111.162.205.201:8686/rtp/225.1.1.160:5002 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5.png",CCTV-5 +http://180.165.29.204:4022/rtp/239.45.1.69:5140 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5.png",CCTV-5 +http://php.jdshipin.com/TVOD/hljyd.php?id=3221226019 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5.png",CCTV-5 +http://iptv.huuc.edu.cn/hls/cctv5hd.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5.png",CCTV-5 +https://www.freetv.top/migu/641886683.m3u8?migutoken=3e5c01f93922de8d1c940fe15bb47349b27e8f7a2e624dde1a83dff3b2a80f58b7624151a3a4d00488edee34f202818557340903382fae02bb754084eb942bd50e59061df36fab62fb5b908903 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5%2B.png",CCTV-5+ +http://60.26.181.220:4022/rtp/225.1.1.121:5002 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5%2B.png",CCTV-5+ +http://omnix.cn:4000/udp/225.1.8.20:8004 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5%2B.png",CCTV-5+ +http://114.226.231.231:8787/rtp/239.49.8.18:9610 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5%2B.png",CCTV-5+ +http://111.162.205.201:8686/rtp/225.1.1.121:5002 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5%2B.png",CCTV-5+ +http://111.193.239.245:9999/rtp/239.3.1.130:8004 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5%2B.png",CCTV-5+ +http://php.jdshipin.com/TVOD/hljyd.php?id=3221225603 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5%2B.png",CCTV-5+ +https://www.freetv.top/migu/641886773.m3u8?migutoken=03a1b82e35e58cd89a95034ecb29e77e50493397000ec2b1e4d1ce59af01e6420d6dbc068c8230ec03be3a35a20eed8714e0959e3570a08713a7a2e8d86085eabf8f1aa85744c80c38343988b2 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5%2B.png",CCTV-5+ +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221225603/index.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5%2B.png",CCTV-5+ +https://smart.pendy.dpdns.org/Smart.php?id=cctv5plus +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5%2B.png",CCTV-5+ +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225603/index.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-6" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-6.png",CCTV-6 +http://nn.7x9d.cn/xzc2.php?ua=TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgNi4xOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTA2LjAuMC4wIFNhZmFyaS81MzcuMzY=&hls=aHR0cDovL3d3dy5kc2suY2MvcGhwL3N4Z2QucGhwP2lkPWNjdHY2 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-6" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-6.png",CCTV-6 +http://60.26.181.220:4022/rtp/225.1.1.195:5002 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-6" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-6.png",CCTV-6 +http://111.162.205.201:8686/rtp/225.1.1.195:5002 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-6" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-6.png",CCTV-6 +http://219.141.44.245:8188/udp/238.255.2.135:5999 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-6" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-6.png",CCTV-6 +http://111.193.239.245:9999/rtp/239.3.1.174:8001 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-6" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-6.png",CCTV-6 +http://180.165.29.204:4022/rtp/239.45.1.70:5140 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-6" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-6.png",CCTV-6 +http://php.jdshipin.com/TVOD/hljyd.php?id=3221226010 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-6" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-6.png",CCTV-6 +http://iptv.huuc.edu.cn/hls/cctv6hd.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-6" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-6.png",CCTV-6 +https://smart.pendy.dpdns.org/Smart.php?id=cctv6 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-6" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-6.png",CCTV-6 +http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/TVOD/88888888/224/3221226010/index.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-7" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-7.png",CCTV-7 +http://60.26.181.220:4022/rtp/225.1.1.138:5002 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-7" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-7.png",CCTV-7 +http://111.162.205.201:8686/rtp/225.1.1.138:5002 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-7" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-7.png",CCTV-7 +http://123.160.232.254:9901/tsfile/live/0007_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-7" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-7.png",CCTV-7 +http://219.141.44.245:8188/udp/238.255.2.12:5999 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-7" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-7.png",CCTV-7 +http://omnix.cn:4000/udp/225.1.8.7:8104 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-7" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-7.png",CCTV-7 +http://171.15.18.199:8180/TV00000000000000000007@HHZT +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-7" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-7.png",CCTV-7 +http://php.jdshipin.com/TVOD/hljyd.php?id=3221225733 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-7" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-7.png",CCTV-7 +http://goo.bkpcp.top/mg/CCTV7 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-7" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-7.png",CCTV-7 +http://iptv.huuc.edu.cn/hls/cctv7hd.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-7" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-7.png",CCTV-7 +https://smart.pendy.dpdns.org/Smart.php?id=cctv7 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-8" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-8.png",CCTV-8 +http://60.26.181.220:4022/rtp/225.1.1.196:5002 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-8" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-8.png",CCTV-8 +http://219.141.44.245:8188/udp/238.255.2.136:5999 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-8" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-8.png",CCTV-8 +http://171.15.18.199:8180/TV00000000000000000008@HHZT +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-8" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-8.png",CCTV-8 +http://111.193.239.245:9999/rtp/239.3.1.175:8001 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-8" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-8.png",CCTV-8 +http://php.jdshipin.com/TVOD/hljyd.php?id=3221226008 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-8" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-8.png",CCTV-8 +http://goo.bkpcp.top/mg/cctv8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-8" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-8.png",CCTV-8 +http://iptv.huuc.edu.cn/hls/cctv8hd.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-8" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-8.png",CCTV-8 +https://www.freetv.top/migu/624878356.m3u8?migutoken=170b73b07e0cf0d307afea3545da5b9609d7c15461a2f4ac0f43634101df9baf391a446b91e5f84446b6a3b0934bb4730e2f3c4a32a565f904f22c8ff745a094d45dfd49c54f31b0b78156a080 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-8" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-8.png",CCTV-8 +http://[2409:8087:1a01:df::4051]:80/TVOD/88888888/224/3221225795/main.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-8" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-8.png",CCTV-8 +https://smart.pendy.dpdns.org/Smart.php?id=cctv8hd +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-9" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-9.png",CCTV-9 +http://60.26.181.220:4022/rtp/225.1.1.119:5002 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-9" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-9.png",CCTV-9 +http://111.162.205.201:8686/rtp/225.1.1.119:5002 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-9" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-9.png",CCTV-9 +http://114.226.231.231:8787/rtp/239.49.8.53:9814 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-9" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-9.png",CCTV-9 +http://219.141.44.245:8188/udp/238.255.2.155:5999 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-9" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-9.png",CCTV-9 +http://php.jdshipin.com/TVOD/hljyd.php?id=3221225734 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-9" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-9.png",CCTV-9 +http://iptv.huuc.edu.cn/hls/cctv9hd.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-9" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-9.png",CCTV-9 +https://www.freetv.top/migu/673168140.m3u8?migutoken=749c49cdc31bb395e0349adc81010adc8707f80e51e9d3491ad67bfa71388ad768f7b52c8064338a7ef45eb7ddb192fb4937b21681c82499a0c16653ad9a9bec98ff5ce6ab183e4029bbdf269e +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-9" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-9.png",CCTV-9 +https://smart.pendy.dpdns.org/Smart.php?id=cctv9hd +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-9" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-9.png",CCTV-9 +http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/TVOD/88888888/224/3221225734/index.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-9" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-9.png",CCTV-9 +http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/yinhe/88888888/224/3221225734/index.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-10" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-10.png",CCTV-10 +http://60.26.181.220:4022/rtp/225.1.1.140:5002 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-10" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-10.png",CCTV-10 +http://171.15.18.199:8180/TV00000000000000000010@HHZT +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-10" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-10.png",CCTV-10 +http://114.226.231.231:8787/rtp/239.49.8.54:9818 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-10" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-10.png",CCTV-10 +http://111.162.205.201:8686/rtp/225.1.1.140:5002 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-10" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-10.png",CCTV-10 +http://z.b.bkpcp.top/m.php?id=CCTV-10科教科教 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-10" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-10.png",CCTV-10 +http://goo.bkpcp.top/mg/cctv10 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-10" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-10.png",CCTV-10 +http://iptv.huuc.edu.cn/hls/cctv10hd.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-10" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-10.png",CCTV-10 +https://smart.pendy.dpdns.org/Smart.php?id=cctv10hd +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-10" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-10.png",CCTV-10 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221225730/index.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-10" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-10.png",CCTV-10 +http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221225730/index.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-11" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-11.png",CCTV-11 +http://60.26.181.220:4022/rtp/225.1.2.192:5002 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-11" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-11.png",CCTV-11 +http://111.193.239.245:9999/rtp/239.3.1.152:8120 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-11" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-11.png",CCTV-11 +http://php.jdshipin.com/TVOD/hljyd.php?id=3221226565 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-11" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-11.png",CCTV-11 +http://iptv.huuc.edu.cn/hls/cctv11hd.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-11" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-11.png",CCTV-11 +https://smart.pendy.dpdns.org/Smart.php?id=cctv11 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-11" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-11.png",CCTV-11 +http://[2409:8087:1a0a:df::404b]/ottrrs.hl.chinamobile.com/TVOD/88888888/224/3221225597/index.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-11" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-11.png",CCTV-11 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221225597/index.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-11" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-11.png",CCTV-11 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/yinhe/88888888/224/3221225597/index.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-11" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-11.png",CCTV-11 +http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221225597/index.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-11" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-11.png",CCTV-11 +http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225597/index.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-12" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-12.png",CCTV-12 +http://114.226.231.231:8787/rtp/239.49.8.55:9822 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-12" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-12.png",CCTV-12 +http://60.26.181.220:4022/rtp/225.1.1.142:5002 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-12" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-12.png",CCTV-12 +http://php.jdshipin.com/TVOD/hljyd.php?id=3221225731 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-12" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-12.png",CCTV-12 +http://z.b.bkpcp.top/m.php?id=CCTV-12社会与法社会与法 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-12" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-12.png",CCTV-12 +http://iptv.huuc.edu.cn/hls/cctv12hd.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-12" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-12.png",CCTV-12 +https://www.freetv.top/migu/673168185.m3u8?migutoken=37acadb43b1d7932b0a1e8a4f2d01a06b42a10c31f3ccb417bae200ac3028f30a8110509f2cd6cd130aee4b21c85693aa49817f3381e4d28e140d8db1a20b6fecea22fec17a70ff1341efe6081 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-12" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-12.png",CCTV-12 +https://smart.pendy.dpdns.org/Smart.php?id=cctv12 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-12" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-12.png",CCTV-12 +http://[2409:8087:1:20:20::29]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226228/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7E2knJCFLHz_HqfBZXNGeA1A%7E_eNUb +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-12" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-12.png",CCTV-12 +http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225731/index.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-12" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-12.png",CCTV-12 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221225731/index.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-13" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-13.png",CCTV-13 +http://60.26.181.220:4022/rtp/225.1.2.193:5002 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-13" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-13.png",CCTV-13 +http://b.zgjok.com:35455/mgtv/608807423.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-13" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-13.png",CCTV-13 +http://111.162.205.201:8686/rtp/225.1.2.193:5002 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-13" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-13.png",CCTV-13 +http://124.162.19.248:4022/udp/225.0.4.219:7980 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-13" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-13.png",CCTV-13 +http://171.15.18.199:8180/TV00000000000000000013@HHZT +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-13" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-13.png",CCTV-13 +http://home.yulei.online:9999/rtp/226.0.2.165:9232 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-13" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-13.png",CCTV-13 +https://event.pull.hebtv.com/jishi/cp1.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-13" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-13.png",CCTV-13 +http://z.b.bkpcp.top/m.php?id=cctv13 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-13" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-13.png",CCTV-13 +http://j.x.bkpcp.top/jx/CCTV13HD +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-13" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-13.png",CCTV-13 +http://ali-m-l.cztv.com/channels/lantian/channel21/1080p.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-14" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-14.png",CCTV-14 +http://116.237.148.215:8881/rtp/239.45.3.23:5140 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-14" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-14.png",CCTV-14 +http://27.18.157.225:2701/rtp/239.69.1.107:10280 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-14" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-14.png",CCTV-14 +http://60.26.181.220:4022/rtp/225.1.1.144:5002 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-14" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-14.png",CCTV-14 +http://171.15.18.199:8180/TV00000000000000000014@HHZT +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-14" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-14.png",CCTV-14 +http://111.193.239.245:9999/rtp/239.3.1.65:8132 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-14" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-14.png",CCTV-14 +http://php.jdshipin.com/TVOD/hljyd.php?id=3221225732 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-14" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-14.png",CCTV-14 +http://iptv.huuc.edu.cn/hls/cctv14hd.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-14" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-14.png",CCTV-14 +https://www.freetv.top/migu/624878440.m3u8?migutoken=239edad94ac0bbff14f123c7f8996ed7639110bd6cf64ec8ba8cf85842224956d452ec8b683385cb27f8a7685224a03e3aa4d914b8fe33249da9df699351b105c795452d03f2be0a1f1e39adb0 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-14" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-14.png",CCTV-14 +https://event.pull.hebtv.com/jishi/cp2.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-14" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-14.png",CCTV-14 +https://smart.pendy.dpdns.org/Smart.php?id=cctv14 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-15.png",CCTV-15 +http://60.26.181.220:4022/rtp/225.1.2.194:5002 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-15.png",CCTV-15 +http://111.193.239.245:9999/rtp/239.3.1.153:8136 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-15.png",CCTV-15 +http://hwrr.jx.chinamobile.com:8080/PLTV/88888888/224/3221225641/index.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-15.png",CCTV-15 +https://www.freetv.top/migu/673168223.m3u8?migutoken=4e8d5766579c6bef231494cabd07e5b49d965804790214280c9791e4c331fd90311cb62ea43d3a1899229bfa57be4afe5a567b32a6b78153fc9a9801e28a39435e078b48c211e71d6083519be4 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-15.png",CCTV-15 +https://smart.pendy.dpdns.org/Smart.php?id=cctv15 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-15.png",CCTV-15 +http://[2409:8087:1a01:df::4033]:80/TVOD/88888888/224/3221226127/main.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-15.png",CCTV-15 +http://[2409:8087:1a0a:df::404b]/ottrrs.hl.chinamobile.com/TVOD/88888888/224/3221225601/index.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-15.png",CCTV-15 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221225601/index.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-15.png",CCTV-15 +http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221225601/index.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-15.png",CCTV-15 +http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225601/index.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-16" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-16.png",CCTV-16 +http://60.26.181.220:4022/rtp/225.1.2.237:5002 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-16" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-16.png",CCTV-16 +http://117.12.149.38:4022/rtp/225.1.2.237:5002 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-16" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-16.png",CCTV-16 +http://27.18.157.225:2701/rtp/239.69.1.247:11124 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-16" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-16.png",CCTV-16 +http://111.162.205.201:8686/rtp/225.1.2.237:5002 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-16" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-16.png",CCTV-16 +http://111.193.239.245:9999/rtp/239.3.1.184:8001 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-16" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-16.png",CCTV-16 +http://php.jdshipin.com/TVOD/hljyd.php?id=3221226100 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-16" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-16.png",CCTV-16 +http://livetv.wqwqwq.sbs/gaoma/cctv4k16.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-16" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-16.png",CCTV-16 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221226100/index.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-16" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-16.png",CCTV-16 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/yinhe/88888888/224/3221226100/index.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-16" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-16.png",CCTV-16 +http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226100/index.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-17" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-17.png",CCTV-17 +http://60.26.181.220:4022/rtp/225.1.2.52:5002 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-17" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-17.png",CCTV-17 +http://b.zgjok.com:35455/mgtv/673168256.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-17" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-17.png",CCTV-17 +http://111.193.239.245:9999/rtp/239.3.1.151:8144 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-17" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-17.png",CCTV-17 +http://218.1.137.125:4022/rtp/239.45.3.52:5140 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-17" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-17.png",CCTV-17 +http://180.165.29.204:4022/rtp/239.45.3.52:5140 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-17" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-17.png",CCTV-17 +http://php.jdshipin.com/TVOD/hljyd.php?id=3221225765 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-17" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-17.png",CCTV-17 +http://[2409:8087:1a01:df::4025]:80/TVOD/88888888/224/3221225708/main.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-17" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-17.png",CCTV-17 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225765/1.m3u8?icpid=88888888&from=1&hms_devid=1012&vqe=3 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-17" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-17.png",CCTV-17 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221225765/index.m3u8CCTV1 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-17" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-17.png",CCTV-17 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221225765/index.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CETV1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CETV1.png",CETV1 +http://[2409:8087:1a0b:df::4020]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225652/index.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CETV1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CETV1.png",CETV1 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226494/1.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CETV1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CETV1.png",CETV1 +http://rrs01.hw.gmcc.net:8088/PLTV/81/224/3221226673/1.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CETV1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CETV1.png",CETV1 +http://otttv.bj.chinamobile.com/PLTV/88888888/224/3221227021/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7ELlgU9sgTT7iMtFgKHFa-dA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 group-title="📺央视频道" tvg-name="CETV2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CETV2.png",CETV2 +http://[2409:8087:1a0b:df::4013]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226425/index.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CETV2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CETV2.png",CETV2 +http://rrs01.hw.gmcc.net:8088/PLTV/81/224/3221226718/1.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CETV2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CETV2.png",CETV2 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226537/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7E7AxXs4eTU2oiWrhopr9sHw%7E_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNNxsM0Bor098BJglrhfEQTl%2CEND +#EXTINF:-1 group-title="📺央视频道" tvg-name="CETV2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CETV2.png",CETV2 +http://[2409:8087:74d6:22::7]:6410/270000001128/9900000071/index.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CETV4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CETV4.png",CETV4 +http://[2409:8087:1a0b:df::4020]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225783/index.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CETV4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CETV4.png",CETV4 +http://rrs01.hw.gmcc.net:8088/PLTV/81/224/3221226724/1.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CETV4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CETV4.png",CETV4 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226997/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EAw_OvjRgJVjtlaOa0dcgzg%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 group-title="📺央视频道" tvg-name="CETV4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CETV4.png",CETV4 +http://otttv.bj.chinamobile.com/PLTV/88888888/224/3221226997/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EAw_OvjRgJVjtlaOa0dcgzg%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 group-title="📡卫视频道" tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E5%8D%AB%E8%A7%86.png",广东卫视 +http://satellitepull.cnr.cn/live/wxgdws/playlist.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E5%8D%AB%E8%A7%86.png",广东卫视 +http://60.26.181.220:4022/rtp/225.1.1.116:5002 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E5%8D%AB%E8%A7%86.png",广东卫视 +http://171.15.18.199:8180/TV00000000000000000031@HHZT +#EXTINF:-1 group-title="📡卫视频道" tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E5%8D%AB%E8%A7%86.png",广东卫视 +http://111.193.239.245:9999/rtp/239.3.1.142:8048 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E5%8D%AB%E8%A7%86.png",广东卫视 +http://218.1.137.125:4022/rtp/239.45.3.230:5140 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E5%8D%AB%E8%A7%86.png",广东卫视 +http://z.b.bkpcp.top/m.php?id=gdws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E5%8D%AB%E8%A7%86.png",广东卫视 +http://j.x.bkpcp.top/jx/GUANGDHD +#EXTINF:-1 group-title="📡卫视频道" tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E5%8D%AB%E8%A7%86.png",广东卫视 +http://goo.bkpcp.top/mg/gdws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E5%8D%AB%E8%A7%86.png",广东卫视 +http://iptv.huuc.edu.cn/hls/gdhd.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E5%8D%AB%E8%A7%86.png",广东卫视 +http://dsj.motem.top:8880/bptv/10000100000000050000000003873459.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="香港卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%A6%99%E6%B8%AF%E5%8D%AB%E8%A7%86.png",香港卫视 +http://cctvtxyh5c.liveplay.myqcloud.com/cstv/xianggangweishi_2/index.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="香港卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%A6%99%E6%B8%AF%E5%8D%AB%E8%A7%86.png",香港卫视 +https://stream1.freetv.fun/ae7eaf28d8610cdc1651ef6a1f7dbb24b49c5a87627d0d881330afaea37a1616.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="香港卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%A6%99%E6%B8%AF%E5%8D%AB%E8%A7%86.png",香港卫视 +https://stream1.freetv.fun/xiang-gang-wei-shi-7.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="香港卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%A6%99%E6%B8%AF%E5%8D%AB%E8%A7%86.png",香港卫视 +https://stream1.freetv.fun/79e4d77e2f29a2ca7f7cabbbe2ee02d32a4f2f7fb91ae94d0fb9573c9f94b4ab.ctv +#EXTINF:-1 group-title="📡卫视频道" tvg-name="香港卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%A6%99%E6%B8%AF%E5%8D%AB%E8%A7%86.png",香港卫视 +https://stream1.freetv.fun/xiang-gang-wei-shi-11.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="香港卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%A6%99%E6%B8%AF%E5%8D%AB%E8%A7%86.png",香港卫视 +https://stream1.freetv.fun/xiang-gang-wei-shi-13.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="香港卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%A6%99%E6%B8%AF%E5%8D%AB%E8%A7%86.png",香港卫视 +https://stream1.freetv.fun/xiang-gang-wei-shi-8.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="香港卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%A6%99%E6%B8%AF%E5%8D%AB%E8%A7%86.png",香港卫视 +https://stream1.freetv.fun/c751876ae5ceaa0d82b5cf2badc152342aa92a4b45bf504d12ee45966b2fc644.ctv +#EXTINF:-1 group-title="📡卫视频道" tvg-name="浙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",浙江卫视 +http://139.155.142.13:9177/miguHD.php?id=浙江卫视 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="浙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",浙江卫视 +http://27.18.157.225:2701/rtp/239.254.96.143:8932 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="浙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",浙江卫视 +http://114.226.231.231:8787/rtp/239.49.8.20:9618 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="浙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",浙江卫视 +http://60.26.181.220:4022/rtp/225.1.1.112:5002 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="浙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",浙江卫视 +http://joyznm.i234.me:20000/udp/239.3.1.137:8036 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="浙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",浙江卫视 +http://171.15.18.199:8180/TV00000000000000000020@HHZT +#EXTINF:-1 group-title="📡卫视频道" tvg-name="浙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",浙江卫视 +http://zwebl02.cztv.com/live/channel011080P.m3u8?auth_key=2524708799-0-0-9a1229d8b9d311024ebea08c3fb1d63f +#EXTINF:-1 group-title="📡卫视频道" tvg-name="浙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",浙江卫视 +http://zhfivel02.cztv.com/channel01/1080p.m3u8?auth_key=2524708799-0-0-adde67b1b344fdd5e512f30a4ae31915 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="浙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",浙江卫视 +http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010070 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="浙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",浙江卫视 +http://z.b.bkpcp.top/m.php?id=zjws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="湖南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%8D%AB%E8%A7%86.png",湖南卫视 +http://60.26.181.220:4022/rtp/225.1.1.114:5002 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="湖南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%8D%AB%E8%A7%86.png",湖南卫视 +http://114.226.231.231:8787/rtp/239.49.8.12:9418 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="湖南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%8D%AB%E8%A7%86.png",湖南卫视 +http://171.15.18.199:8180/TV00000000000000000018@HHZT +#EXTINF:-1 group-title="📡卫视频道" tvg-name="湖南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%8D%AB%E8%A7%86.png",湖南卫视 +http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010058 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="湖南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%8D%AB%E8%A7%86.png",湖南卫视 +http://z.b.bkpcp.top/m.php?id=hunws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="湖南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%8D%AB%E8%A7%86.png",湖南卫视 +http://j.x.bkpcp.top/jx/HUNANHD +#EXTINF:-1 group-title="📡卫视频道" tvg-name="湖南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%8D%AB%E8%A7%86.png",湖南卫视 +http://iptv.huuc.edu.cn/hls/hunanhd.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="湖南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%8D%AB%E8%A7%86.png",湖南卫视 +http://dsj.motem.top:8880/bptv/10000100000000050000000003873458.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="湖南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%8D%AB%E8%A7%86.png",湖南卫视 +http://[2409:8087:1a0a:df::404b]/ottrrs.hl.chinamobile.com/TVOD/88888888/224/3221225610/index.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="湖南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%8D%AB%E8%A7%86.png",湖南卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226493/1.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="北京卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E5%8D%AB%E8%A7%86.png",北京卫视 +http://satellitepull.cnr.cn/live/wxbtv/playlist.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="北京卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E5%8D%AB%E8%A7%86.png",北京卫视 +http://116.237.148.215:8881/rtp/239.45.3.229:5140 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="北京卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E5%8D%AB%E8%A7%86.png",北京卫视 +http://60.26.181.220:4022/rtp/225.1.1.113:5002 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="北京卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E5%8D%AB%E8%A7%86.png",北京卫视 +http://zqh2333.top:2222/rtp/239.93.24.180:5140 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="北京卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E5%8D%AB%E8%A7%86.png",北京卫视 +http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010143 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="北京卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E5%8D%AB%E8%A7%86.png",北京卫视 +http://z.b.bkpcp.top/m.php?id=bjws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="北京卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E5%8D%AB%E8%A7%86.png",北京卫视 +http://j.x.bkpcp.top/jx/BEIJHD +#EXTINF:-1 group-title="📡卫视频道" tvg-name="北京卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E5%8D%AB%E8%A7%86.png",北京卫视 +http://[2409:8087:1:20:20::2c]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226436/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7ElMQ3ov45VmhzipweN5VstQ%7E_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNPg_yZ8DZHTaSU92MIl_o3b%2CEND +#EXTINF:-1 group-title="📡卫视频道" tvg-name="北京卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E5%8D%AB%E8%A7%86.png",北京卫视 +http://iptv.huuc.edu.cn/hls/btv1hd.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="北京卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E5%8D%AB%E8%A7%86.png",北京卫视 +https://smart.pendy.dpdns.org/Smart.php?id=beijing +#EXTINF:-1 group-title="📡卫视频道" tvg-name="湖北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%8D%AB%E8%A7%86.png",湖北卫视 +http://satellitepull.cnr.cn/live/wx32hubws/playlist.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="湖北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%8D%AB%E8%A7%86.png",湖北卫视 +http://60.26.181.220:4022/rtp/225.1.1.147:5002 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="湖北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%8D%AB%E8%A7%86.png",湖北卫视 +http://joyznm.i234.me:20000/udp/239.3.1.138:8044 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="湖北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%8D%AB%E8%A7%86.png",湖北卫视 +http://114.226.231.231:8787/rtp/239.49.8.8:9632 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="湖北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%8D%AB%E8%A7%86.png",湖北卫视 +http://111.193.239.245:9999/rtp/239.3.1.138:8044 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="湖北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%8D%AB%E8%A7%86.png",湖北卫视 +http://180.165.29.204:4022/rtp/239.45.3.239:5140 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="湖北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%8D%AB%E8%A7%86.png",湖北卫视 +http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010057 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="湖北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%8D%AB%E8%A7%86.png",湖北卫视 +http://z.b.bkpcp.top/m.php?id=hubws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="湖北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%8D%AB%E8%A7%86.png",湖北卫视 +http://j.x.bkpcp.top/jx/HUBEIHD +#EXTINF:-1 group-title="📡卫视频道" tvg-name="湖北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%8D%AB%E8%A7%86.png",湖北卫视 +http://goo.bkpcp.top/mg/hubws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="黑龙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",黑龙江卫视 +http://satellitepull.cnr.cn/live/wx32hljws/playlist.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="黑龙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",黑龙江卫视 +http://116.237.148.215:8881/rtp/239.45.3.232:5140 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="黑龙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",黑龙江卫视 +http://114.226.231.231:8787/rtp/239.49.8.14:9426 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="黑龙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",黑龙江卫视 +http://60.26.181.220:4022/rtp/225.1.1.115:5002 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="黑龙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",黑龙江卫视 +http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010056 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="黑龙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",黑龙江卫视 +http://j.x.bkpcp.top/jx/HEILJHD +#EXTINF:-1 group-title="📡卫视频道" tvg-name="黑龙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",黑龙江卫视 +http://l.cztvcloud.com/channels/lantian/SXyuyao3/720p.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="黑龙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",黑龙江卫视 +http://iptv.huuc.edu.cn/hls/hljhd.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="黑龙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",黑龙江卫视 +http://dsj.motem.top:8880/bptv/10000100000000050000000003873470.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="黑龙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",黑龙江卫视 +http://z.b.bkpcp.top/m.php?id=hljws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="安徽卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%8D%AB%E8%A7%86.png",安徽卫视 +http://203.205.191.53/live.ahsx.ahtv.cn/live/ahwssx.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="安徽卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%8D%AB%E8%A7%86.png",安徽卫视 +http://satellitepull.cnr.cn/live/wxahws/playlist.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="安徽卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%8D%AB%E8%A7%86.png",安徽卫视 +http://joyznm.i234.me:20000/udp/239.3.1.211:8064 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="安徽卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%8D%AB%E8%A7%86.png",安徽卫视 +http://60.26.181.220:4022/rtp/225.1.1.127:5002 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="安徽卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%8D%AB%E8%A7%86.png",安徽卫视 +http://114.226.231.231:8787/rtp/239.49.8.204:6000 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="安徽卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%8D%AB%E8%A7%86.png",安徽卫视 +http://111.193.239.245:9999/rtp/239.3.1.211:8064 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="安徽卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%8D%AB%E8%A7%86.png",安徽卫视 +http://php.jdshipin.com/TVOD/hljyd.php?id=3221226391 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="安徽卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%8D%AB%E8%A7%86.png",安徽卫视 +http://j.x.bkpcp.top/jx/ANHUIHD +#EXTINF:-1 group-title="📡卫视频道" tvg-name="安徽卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%8D%AB%E8%A7%86.png",安徽卫视 +http://iptv.huuc.edu.cn/hls/ahhd.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="安徽卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%8D%AB%E8%A7%86.png",安徽卫视 +http://dsj.motem.top:8880/bptv/10000100000000050000000003873469.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="重庆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%8D%E5%BA%86%E5%8D%AB%E8%A7%86.png",重庆卫视 +http://satellitepull.cnr.cn/live/wxcqws/playlist.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="重庆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%8D%E5%BA%86%E5%8D%AB%E8%A7%86.png",重庆卫视 +http://60.26.181.220:4022/rtp/225.1.1.155:5002 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="重庆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%8D%E5%BA%86%E5%8D%AB%E8%A7%86.png",重庆卫视 +http://114.226.231.231:8787/rtp/239.49.8.57:9830 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="重庆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%8D%E5%BA%86%E5%8D%AB%E8%A7%86.png",重庆卫视 +http://123.160.232.254:9901/tsfile/live/0142_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="重庆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%8D%E5%BA%86%E5%8D%AB%E8%A7%86.png",重庆卫视 +http://171.15.18.199:8180/TV00000000000000000030@HHZT +#EXTINF:-1 group-title="📡卫视频道" tvg-name="重庆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%8D%E5%BA%86%E5%8D%AB%E8%A7%86.png",重庆卫视 +http://111.193.239.245:9999/rtp/239.3.1.122:8160 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="重庆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%8D%E5%BA%86%E5%8D%AB%E8%A7%86.png",重庆卫视 +http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010053 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="重庆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%8D%E5%BA%86%E5%8D%AB%E8%A7%86.png",重庆卫视 +http://z.b.bkpcp.top/m.php?id=cqws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="重庆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%8D%E5%BA%86%E5%8D%AB%E8%A7%86.png",重庆卫视 +http://j.x.bkpcp.top/jx/CHONGQHD +#EXTINF:-1 group-title="📡卫视频道" tvg-name="重庆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%8D%E5%BA%86%E5%8D%AB%E8%A7%86.png",重庆卫视 +http://iptv.huuc.edu.cn/hls/cqhd.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="东方卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E5%8D%AB%E8%A7%86.png",东方卫视 +http://60.26.181.220:4022/rtp/225.1.2.31:5002 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="东方卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E5%8D%AB%E8%A7%86.png",东方卫视 +http://p.ytelc.com/m3u8.html?id=http://cc-ynbit-wszhibo.ifengli.com:2000/live/shdfws-hd/2500.m3u8?innersid=6998114529464369318 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="东方卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E5%8D%AB%E8%A7%86.png",东方卫视 +http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010054 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="东方卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E5%8D%AB%E8%A7%86.png",东方卫视 +http://z.b.bkpcp.top/m.php?id=dfws#rtsp://115.85.232.19/PLTV/88888910/224/3221225531/10000100000000060000000000107311_0.smil +#EXTINF:-1 group-title="📡卫视频道" tvg-name="东方卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E5%8D%AB%E8%A7%86.png",东方卫视 +http://goo.bkpcp.top/mg/dfws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="东方卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E5%8D%AB%E8%A7%86.png",东方卫视 +http://iptv.huuc.edu.cn/hls/dfhd.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="东方卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E5%8D%AB%E8%A7%86.png",东方卫视 +https://www.freetv.top/migu/651632648.m3u8?migutoken=67b4219a3e6acdcf288118ed6bf84d3197052966f0bc854079b6038b3fca6437744ca78bb0ea1fad6f61b4c73d0df57bd8b539ec247fd28ce16d1375716bbf774ea19c99e4585bb828fa3851c0 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="东方卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E5%8D%AB%E8%A7%86.png",东方卫视 +http://dsj.motem.top:8880/bptv/10000100000000050000000003873462.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="东方卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E5%8D%AB%E8%A7%86.png",东方卫视 +https://bp-cdn-ali.bestv.cn/enhance/bestvdfws_enhance.m3u8?auth_key=1746334807-ddb61092a75249868c8bd1834313f437-0-8a760296d281d86bc4612f5fc4f85247 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="东方卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E5%8D%AB%E8%A7%86.png",东方卫视 +https://live.lalifeier.eu.org/kankanews/dfws.m3u8?t=1746372302&key=04c79ed1fd72dbd3188040c54dc3858b +#EXTINF:-1 group-title="📡卫视频道" tvg-name="东南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E5%8D%97%E5%8D%AB%E8%A7%86.png",东南卫视 +http://satellitepull.cnr.cn/live/wx32fjws/playlist.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="东南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E5%8D%97%E5%8D%AB%E8%A7%86.png",东南卫视 +http://115.171.80.94:1688/udp/225.1.8.79:8148 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="东南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E5%8D%97%E5%8D%AB%E8%A7%86.png",东南卫视 +http://123.160.232.254:9901/tsfile/live/0137_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="东南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E5%8D%97%E5%8D%AB%E8%A7%86.png",东南卫视 +http://219.141.44.245:8188/udp/238.255.2.103:5999 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="东南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E5%8D%97%E5%8D%AB%E8%A7%86.png",东南卫视 +http://111.193.239.245:9999/rtp/239.3.1.156:8148 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="东南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E5%8D%97%E5%8D%AB%E8%A7%86.png",东南卫视 +http://171.15.18.199:8180/TV00000000000000000033@HHZT +#EXTINF:-1 group-title="📡卫视频道" tvg-name="东南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E5%8D%97%E5%8D%AB%E8%A7%86.png",东南卫视 +http://180.165.29.204:4022/rtp/239.45.1.121:5140 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="东南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E5%8D%97%E5%8D%AB%E8%A7%86.png",东南卫视 +http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010096 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="东南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E5%8D%97%E5%8D%AB%E8%A7%86.png",东南卫视 +http://z.b.bkpcp.top/m.php?id=dnws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="东南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E5%8D%97%E5%8D%AB%E8%A7%86.png",东南卫视 +http://j.x.bkpcp.top/jx/DONGNHD +#EXTINF:-1 group-title="📡卫视频道" tvg-name="甘肃卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%94%98%E8%82%83%E5%8D%AB%E8%A7%86.png",甘肃卫视 +http://222.218.122.114:8188/udp/239.81.0.207:4056 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="甘肃卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%94%98%E8%82%83%E5%8D%AB%E8%A7%86.png",甘肃卫视 +http://live.zohi.tv/video/s10001-fztv-3/index.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="甘肃卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%94%98%E8%82%83%E5%8D%AB%E8%A7%86.png",甘肃卫视 +http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010098 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="甘肃卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%94%98%E8%82%83%E5%8D%AB%E8%A7%86.png",甘肃卫视 +http://z.b.bkpcp.top/m.php?id=gsws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="甘肃卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%94%98%E8%82%83%E5%8D%AB%E8%A7%86.png",甘肃卫视 +http://j.x.bkpcp.top/jx/GSWS +#EXTINF:-1 group-title="📡卫视频道" tvg-name="甘肃卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%94%98%E8%82%83%E5%8D%AB%E8%A7%86.png",甘肃卫视 +http://goo.bkpcp.top/mg/gsws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="甘肃卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%94%98%E8%82%83%E5%8D%AB%E8%A7%86.png",甘肃卫视 +http://dsj.motem.top:8880/bptv/10000100000000050000000003887450.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="甘肃卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%94%98%E8%82%83%E5%8D%AB%E8%A7%86.png",甘肃卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226545/1.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="甘肃卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%94%98%E8%82%83%E5%8D%AB%E8%A7%86.png",甘肃卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226913/1.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="甘肃卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%94%98%E8%82%83%E5%8D%AB%E8%A7%86.png",甘肃卫视 +http://[2409:8c02:21c:60::2b]/live.rxip.sc96655.com/live/gsws_4000.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="广西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E8%A5%BF%E5%8D%AB%E8%A7%86.png",广西卫视 +http://60.26.181.220:4022/rtp/225.1.2.81:5002 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="广西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E8%A5%BF%E5%8D%AB%E8%A7%86.png",广西卫视 +http://123.160.232.254:9901/tsfile/live/0113_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="广西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E8%A5%BF%E5%8D%AB%E8%A7%86.png",广西卫视 +http://180.165.29.204:4022/rtp/239.45.0.5:5140 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="广西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E8%A5%BF%E5%8D%AB%E8%A7%86.png",广西卫视 +http://218.1.137.125:4022/rtp/239.45.0.5:5140 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="广西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E8%A5%BF%E5%8D%AB%E8%A7%86.png",广西卫视 +http://php.jdshipin.com/TVOD/hljyd.php?id=3221226549 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="广西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E8%A5%BF%E5%8D%AB%E8%A7%86.png",广西卫视 +http://z.b.bkpcp.top/m.php?id=gxws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="广西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E8%A5%BF%E5%8D%AB%E8%A7%86.png",广西卫视 +https://mobilelive.gxtv.cn/live/gx_live1004/playlist.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="广西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E8%A5%BF%E5%8D%AB%E8%A7%86.png",广西卫视 +http://goo.bkpcp.top/mg/gxws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="广西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E8%A5%BF%E5%8D%AB%E8%A7%86.png",广西卫视 +http://live.cztv.cc:85/live/ggpd.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="广西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E8%A5%BF%E5%8D%AB%E8%A7%86.png",广西卫视 +https://hlscdn.liangtv.cn/live/de0f97348eb84f62aa6b7d8cf0430770/dd505d87880c478f901f38560ca4d4e6.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="贵州卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%B4%B5%E5%B7%9E%E5%8D%AB%E8%A7%86.png",贵州卫视 +http://115.171.80.94:1688/udp/225.1.8.77:8076 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="贵州卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%B4%B5%E5%B7%9E%E5%8D%AB%E8%A7%86.png",贵州卫视 +http://219.141.44.245:8188/udp/238.255.2.1:5999 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="贵州卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%B4%B5%E5%B7%9E%E5%8D%AB%E8%A7%86.png",贵州卫视 +http://60.26.181.220:4022/rtp/225.1.2.28:5002 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="贵州卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%B4%B5%E5%B7%9E%E5%8D%AB%E8%A7%86.png",贵州卫视 +http://111.193.239.245:9999/rtp/239.3.1.149:8076 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="贵州卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%B4%B5%E5%B7%9E%E5%8D%AB%E8%A7%86.png",贵州卫视 +http://php.jdshipin.com/TVOD/hljyd.php?id=3221226474 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="贵州卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%B4%B5%E5%B7%9E%E5%8D%AB%E8%A7%86.png",贵州卫视 +http://z.b.bkpcp.top/m.php?id=gzws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="贵州卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%B4%B5%E5%B7%9E%E5%8D%AB%E8%A7%86.png",贵州卫视 +http://j.x.bkpcp.top/jx/GUIZHD +#EXTINF:-1 group-title="📡卫视频道" tvg-name="贵州卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%B4%B5%E5%B7%9E%E5%8D%AB%E8%A7%86.png",贵州卫视 +http://goo.bkpcp.top/mg/gzws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="贵州卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%B4%B5%E5%B7%9E%E5%8D%AB%E8%A7%86.png",贵州卫视 +http://[2409:8087:1a01:df::4030]:80/TVOD/88888888/224/3221225974/main.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="贵州卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%B4%B5%E5%B7%9E%E5%8D%AB%E8%A7%86.png",贵州卫视 +http://dsj.motem.top:8880/bptv/10000100000000050000000003873471.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="海南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%B7%E5%8D%97%E5%8D%AB%E8%A7%86.png",海南卫视 +http://satellitepull.cnr.cn/live/wxhainlyws/playlist.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="海南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%B7%E5%8D%97%E5%8D%AB%E8%A7%86.png",海南卫视 +http://116.237.148.215:8881/rtp/239.45.1.81:5140 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="海南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%B7%E5%8D%97%E5%8D%AB%E8%A7%86.png",海南卫视 +http://171.15.18.199:8180/TV00000000000000000028@HHZT +#EXTINF:-1 group-title="📡卫视频道" tvg-name="海南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%B7%E5%8D%97%E5%8D%AB%E8%A7%86.png",海南卫视 +http://218.1.137.125:4022/rtp/239.45.1.81:5140 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="海南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%B7%E5%8D%97%E5%8D%AB%E8%A7%86.png",海南卫视 +http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010083 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="海南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%B7%E5%8D%97%E5%8D%AB%E8%A7%86.png",海南卫视 +http://z.b.bkpcp.top/m.php?id=hinws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="海南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%B7%E5%8D%97%E5%8D%AB%E8%A7%86.png",海南卫视 +http://j.x.bkpcp.top/jx/HAINHD +#EXTINF:-1 group-title="📡卫视频道" tvg-name="海南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%B7%E5%8D%97%E5%8D%AB%E8%A7%86.png",海南卫视 +http://goo.bkpcp.top/mg/hinws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="海南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%B7%E5%8D%97%E5%8D%AB%E8%A7%86.png",海南卫视 +http://dsj.motem.top:8880/bptv/10000100000000050000000004796877.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="海南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%B7%E5%8D%97%E5%8D%AB%E8%A7%86.png",海南卫视 +http://[2409:8087:1a0a:df::404b]/ottrrs.hl.chinamobile.com/TVOD/88888888/224/3221226465/index.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="河北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E5%8D%AB%E8%A7%86.png",河北卫视 +http://satellitepull.cnr.cn/live/wxhebws/playlist.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="河北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E5%8D%AB%E8%A7%86.png",河北卫视 +http://222.218.122.114:8188/udp/239.81.0.94:4056 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="河北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E5%8D%AB%E8%A7%86.png",河北卫视 +http://116.237.148.215:8881/rtp/239.45.1.44:5140 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="河北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E5%8D%AB%E8%A7%86.png",河北卫视 +http://27.18.157.225:2701/rtp/239.254.96.113:9616 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="河北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E5%8D%AB%E8%A7%86.png",河北卫视 +http://114.226.231.231:8787/rtp/239.49.8.188:6000 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="河北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E5%8D%AB%E8%A7%86.png",河北卫视 +http://60.26.181.220:4022/rtp/225.1.2.27:5002 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="河北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E5%8D%AB%E8%A7%86.png",河北卫视 +http://111.193.239.245:9999/rtp/239.3.1.148:8072 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="河北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E5%8D%AB%E8%A7%86.png",河北卫视 +http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010101 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="河北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E5%8D%AB%E8%A7%86.png",河北卫视 +http://z.b.bkpcp.top/m.php?id=hbws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="河北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E5%8D%AB%E8%A7%86.png",河北卫视 +https://jwplay.hebyun.com.cn/live/hbwstv/1500k/tzwj_video.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="河南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8D%97%E5%8D%AB%E8%A7%86.png",河南卫视 +http://satellitepull.cnr.cn/live/wxhnws/playlist.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="河南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8D%97%E5%8D%AB%E8%A7%86.png",河南卫视 +http://xxwx.yoesun.com/xxw/河南网.php +#EXTINF:-1 group-title="📡卫视频道" tvg-name="河南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8D%97%E5%8D%AB%E8%A7%86.png",河南卫视 +http://xxwx.yoesun.com/xxw/河南网.php?id=hnws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="河南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8D%97%E5%8D%AB%E8%A7%86.png",河南卫视 +http://150.158.10.195:80/dxxw.php?id=hnws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="河南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8D%97%E5%8D%AB%E8%A7%86.png",河南卫视 +http://1.94.31.214/php/hntv.php +#EXTINF:-1 group-title="📡卫视频道" tvg-name="河南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8D%97%E5%8D%AB%E8%A7%86.png",河南卫视 +http://60.26.181.220:4022/rtp/225.1.2.61:5002 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="河南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8D%97%E5%8D%AB%E8%A7%86.png",河南卫视 +http://171.15.18.199:8180/TV00000000000000000016@HHZT +#EXTINF:-1 group-title="📡卫视频道" tvg-name="河南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8D%97%E5%8D%AB%E8%A7%86.png",河南卫视 +http://tvpull.dxhmt.cn:9081/tv/11425-1.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="河南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8D%97%E5%8D%AB%E8%A7%86.png",河南卫视 +http://php.jdshipin.com/TVOD/hljyd.php?id=3221226480 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="河南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8D%97%E5%8D%AB%E8%A7%86.png",河南卫视 +http://z.b.bkpcp.top/m.php?id=hnws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="吉林卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E5%8D%AB%E8%A7%86.png",吉林卫视 +https://hyf000.eu.org/80947108/JILINWS +#EXTINF:-1 group-title="📡卫视频道" tvg-name="吉林卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E5%8D%AB%E8%A7%86.png",吉林卫视 +http://60.26.181.220:4022/rtp/225.1.2.26:5002 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="吉林卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E5%8D%AB%E8%A7%86.png",吉林卫视 +http://171.15.18.199:8180/TV00000000000000000036@HHZT +#EXTINF:-1 group-title="📡卫视频道" tvg-name="吉林卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E5%8D%AB%E8%A7%86.png",吉林卫视 +http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010075 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="吉林卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E5%8D%AB%E8%A7%86.png",吉林卫视 +http://z.b.bkpcp.top/m.php?id=jlws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="吉林卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E5%8D%AB%E8%A7%86.png",吉林卫视 +http://j.x.bkpcp.top/jx/JILHD +#EXTINF:-1 group-title="📡卫视频道" tvg-name="吉林卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E5%8D%AB%E8%A7%86.png",吉林卫视 +http://goo.bkpcp.top/mg/jlws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="吉林卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E5%8D%AB%E8%A7%86.png",吉林卫视 +http://dsj.motem.top:8880/bptv/10000100000000050000000004972569.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="吉林卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E5%8D%AB%E8%A7%86.png",吉林卫视 +http://[2409:8087:1a0a:df::404b]/ottrrs.hl.chinamobile.com/TVOD/88888888/224/3221226397/index.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="吉林卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E5%8D%AB%E8%A7%86.png",吉林卫视 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221226397/index.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="江苏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E5%8D%AB%E8%A7%86.png",江苏卫视 +http://114.226.231.231:8787/rtp/239.49.8.16:9602 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="江苏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E5%8D%AB%E8%A7%86.png",江苏卫视 +http://60.26.181.220:4022/rtp/225.1.1.126:5002 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="江苏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E5%8D%AB%E8%A7%86.png",江苏卫视 +http://114.238.59.148:4000/rtp/239.49.8.16:9602 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="江苏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E5%8D%AB%E8%A7%86.png",江苏卫视 +http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010059 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="江苏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E5%8D%AB%E8%A7%86.png",江苏卫视 +http://z.b.bkpcp.top/m.php?id=jsws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="江苏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E5%8D%AB%E8%A7%86.png",江苏卫视 +http://goo.bkpcp.top/mg/jsws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="江苏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E5%8D%AB%E8%A7%86.png",江苏卫视 +http://iptv.huuc.edu.cn/hls/jshd.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="江苏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E5%8D%AB%E8%A7%86.png",江苏卫视 +http://dsj.motem.top:8880/bptv/10000100000000050000000003873461.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="江苏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E5%8D%AB%E8%A7%86.png",江苏卫视 +http://[2409:8087:1a0a:df::404b]/ottrrs.hl.chinamobile.com/TVOD/88888888/224/3221226310/index.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="江苏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E5%8D%AB%E8%A7%86.png",江苏卫视 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221226310/index.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="江西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%A5%BF%E5%8D%AB%E8%A7%86.png",江西卫视 +http://joyznm.i234.me:20000/udp/239.3.1.123:8164 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="江西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%A5%BF%E5%8D%AB%E8%A7%86.png",江西卫视 +http://60.26.181.220:4022/rtp/225.1.2.29:5002 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="江西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%A5%BF%E5%8D%AB%E8%A7%86.png",江西卫视 +http://123.160.232.254:9901/tsfile/live/0138_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="江西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%A5%BF%E5%8D%AB%E8%A7%86.png",江西卫视 +http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010060 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="江西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%A5%BF%E5%8D%AB%E8%A7%86.png",江西卫视 +http://z.b.bkpcp.top/m.php?id=jxws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="江西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%A5%BF%E5%8D%AB%E8%A7%86.png",江西卫视 +http://goo.bkpcp.top/mg/jxws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="江西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%A5%BF%E5%8D%AB%E8%A7%86.png",江西卫视 +http://iptv.huuc.edu.cn/hls/jxhd.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="江西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%A5%BF%E5%8D%AB%E8%A7%86.png",江西卫视 +https://www.freetv.top/migu/783847495.m3u8?migutoken=fddcc05dc0245329d3208607a5b1f5a1980bc31a7ced510e345af6cc68f5b86d2d9178b45706a0b6a0ceddc82ce06e53375cfedbc96fd0b00c12195c7d77b6f23811a67970bcfeb47629aa5aa6 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="江西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%A5%BF%E5%8D%AB%E8%A7%86.png",江西卫视 +http://[2409:8087:1a01:df::4027]:80/TVOD/88888888/224/3221225935/main.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="江西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%A5%BF%E5%8D%AB%E8%A7%86.png",江西卫视 +http://dsj.motem.top:8880/bptv/10000100000000050000000004796511.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="辽宁卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%BE%BD%E5%AE%81%E5%8D%AB%E8%A7%86.png",辽宁卫视 +http://60.26.181.220:4022/rtp/225.1.1.154:5002 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="辽宁卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%BE%BD%E5%AE%81%E5%8D%AB%E8%A7%86.png",辽宁卫视 +http://php.jdshipin.com/TVOD/hljyd.php?id=3221226546 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="辽宁卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%BE%BD%E5%AE%81%E5%8D%AB%E8%A7%86.png",辽宁卫视 +http://z.b.bkpcp.top/m.php?id=lnws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="辽宁卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%BE%BD%E5%AE%81%E5%8D%AB%E8%A7%86.png",辽宁卫视 +http://j.x.bkpcp.top/jx/LIAONHD +#EXTINF:-1 group-title="📡卫视频道" tvg-name="辽宁卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%BE%BD%E5%AE%81%E5%8D%AB%E8%A7%86.png",辽宁卫视 +http://iptv.huuc.edu.cn/hls/lnhd.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="辽宁卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%BE%BD%E5%AE%81%E5%8D%AB%E8%A7%86.png",辽宁卫视 +http://dsj.motem.top:8880/bptv/10000100000000050000000003873468.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="辽宁卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%BE%BD%E5%AE%81%E5%8D%AB%E8%A7%86.png",辽宁卫视 +http://[2409:8087:1a0a:df::404b]/ottrrs.hl.chinamobile.com/TVOD/88888888/224/3221226546/index.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="辽宁卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%BE%BD%E5%AE%81%E5%8D%AB%E8%A7%86.png",辽宁卫视 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221226254/index.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="辽宁卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%BE%BD%E5%AE%81%E5%8D%AB%E8%A7%86.png",辽宁卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226327/1.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="辽宁卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%BE%BD%E5%AE%81%E5%8D%AB%E8%A7%86.png",辽宁卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226336/1.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="内蒙古卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%86%85%E8%92%99%E5%8F%A4%E5%8D%AB%E8%A7%86.png",内蒙古卫视 +http://satellitepull.cnr.cn/live/wx32nmgws/playlist.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="内蒙古卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%86%85%E8%92%99%E5%8F%A4%E5%8D%AB%E8%A7%86.png",内蒙古卫视 +http://php.jdshipin.com/TVOD/hljyd.php?id=3221225634 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="内蒙古卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%86%85%E8%92%99%E5%8F%A4%E5%8D%AB%E8%A7%86.png",内蒙古卫视 +http://z.b.bkpcp.top/m.php?id=nmws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="内蒙古卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%86%85%E8%92%99%E5%8F%A4%E5%8D%AB%E8%A7%86.png",内蒙古卫视 +http://j.x.bkpcp.top/jx/NMGWS +#EXTINF:-1 group-title="📡卫视频道" tvg-name="内蒙古卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%86%85%E8%92%99%E5%8F%A4%E5%8D%AB%E8%A7%86.png",内蒙古卫视 +http://goo.bkpcp.top/mg/nmws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="内蒙古卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%86%85%E8%92%99%E5%8F%A4%E5%8D%AB%E8%A7%86.png",内蒙古卫视 +http://ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225634/index.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="内蒙古卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%86%85%E8%92%99%E5%8F%A4%E5%8D%AB%E8%A7%86.png",内蒙古卫视 +http://dsj.motem.top:8880/bptv/10000100000000050000000003887427.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="内蒙古卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%86%85%E8%92%99%E5%8F%A4%E5%8D%AB%E8%A7%86.png",内蒙古卫视 +http://[2409:8087:1a01:df::401a]:80/wh7f454c46tw3029083262_-802204014/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225634/index.m3u8?icpid=88888888&RTS=1713969858&from=4&hms_devid=128&prioritypopid=4&online=1713969858&vqe=3 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="内蒙古卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%86%85%E8%92%99%E5%8F%A4%E5%8D%AB%E8%A7%86.png",内蒙古卫视 +http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225634/index.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="内蒙古卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%86%85%E8%92%99%E5%8F%A4%E5%8D%AB%E8%A7%86.png",内蒙古卫视 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221226389/index.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="宁夏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%81%E5%A4%8F%E5%8D%AB%E8%A7%86.png",宁夏卫视 +http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010110 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="宁夏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%81%E5%A4%8F%E5%8D%AB%E8%A7%86.png",宁夏卫视 +http://z.b.bkpcp.top/m.php?id=nxws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="宁夏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%81%E5%A4%8F%E5%8D%AB%E8%A7%86.png",宁夏卫视 +http://j.x.bkpcp.top/jx/NXWS +#EXTINF:-1 group-title="📡卫视频道" tvg-name="宁夏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%81%E5%A4%8F%E5%8D%AB%E8%A7%86.png",宁夏卫视 +http://goo.bkpcp.top/mg/nxws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="宁夏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%81%E5%A4%8F%E5%8D%AB%E8%A7%86.png",宁夏卫视 +http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/TVOD/88888888/8/3221226454/index.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="宁夏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%81%E5%A4%8F%E5%8D%AB%E8%A7%86.png",宁夏卫视 +http://dsj.motem.top:8880/bptv/10000100000000050000000003887433.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="宁夏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%81%E5%A4%8F%E5%8D%AB%E8%A7%86.png",宁夏卫视 +http://[2409:8087:1a0a:df::404b]/ottrrs.hl.chinamobile.com/TVOD/88888888/8/3221226454/index.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="宁夏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%81%E5%A4%8F%E5%8D%AB%E8%A7%86.png",宁夏卫视 +http://[2409:8087:1e03:21::2]:6060/cms001/ch00000090990000001074/index.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="宁夏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%81%E5%A4%8F%E5%8D%AB%E8%A7%86.png",宁夏卫视 +http://[2409:8087:3428:20:500::100f]:6610/PLTV/88888888/224/3221227254/index.m3u8?servicetype=1&IASHttpSessionId=RR423820220409134714119178 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="宁夏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%81%E5%A4%8F%E5%8D%AB%E8%A7%86.png",宁夏卫视 +http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221226454/index.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="青海卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%92%E6%B5%B7%E5%8D%AB%E8%A7%86.png",青海卫视 +http://satellitepull.cnr.cn/live/wx32qhws/playlist.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="青海卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%92%E6%B5%B7%E5%8D%AB%E8%A7%86.png",青海卫视 +http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010111 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="青海卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%92%E6%B5%B7%E5%8D%AB%E8%A7%86.png",青海卫视 +http://z.b.bkpcp.top/m.php?id=qhws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="青海卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%92%E6%B5%B7%E5%8D%AB%E8%A7%86.png",青海卫视 +http://j.x.bkpcp.top/jx/QHWS +#EXTINF:-1 group-title="📡卫视频道" tvg-name="青海卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%92%E6%B5%B7%E5%8D%AB%E8%A7%86.png",青海卫视 +http://goo.bkpcp.top/mg/qhws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="青海卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%92%E6%B5%B7%E5%8D%AB%E8%A7%86.png",青海卫视 +http://dsj.motem.top:8880/bptv/10000100000000050000000003887430.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="青海卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%92%E6%B5%B7%E5%8D%AB%E8%A7%86.png",青海卫视 +http://[2409:8087:1a0a:df::404b]/ottrrs.hl.chinamobile.com/TVOD/88888888/224/3221225628/index.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="青海卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%92%E6%B5%B7%E5%8D%AB%E8%A7%86.png",青海卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226529/1.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="青海卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%92%E6%B5%B7%E5%8D%AB%E8%A7%86.png",青海卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226916/1.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="青海卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%92%E6%B5%B7%E5%8D%AB%E8%A7%86.png",青海卫视 +http://[2409:8087:1e03:21::2]:6060/cms001/ch00000090990000001082/index.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="山东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E5%8D%AB%E8%A7%86.png",山东卫视 +http://nn.7x9d.cn/xzc2.php?ua=TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgNi4xOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTA2LjAuMC4wIFNhZmFyaS81MzcuMzY=&hls=aHR0cDovL3d3dy5kc2suY2MvcGhwL3N4Z2QucGhwP2lkPXNkd3M= +#EXTINF:-1 group-title="📡卫视频道" tvg-name="山东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E5%8D%AB%E8%A7%86.png",山东卫视 +http://115.171.80.94:1688/udp/225.1.8.50:8052 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="山东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E5%8D%AB%E8%A7%86.png",山东卫视 +http://114.226.231.231:8787/rtp/239.49.8.7:9306 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="山东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E5%8D%AB%E8%A7%86.png",山东卫视 +http://joyznm.i234.me:20000/udp/239.3.1.209:8052 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="山东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E5%8D%AB%E8%A7%86.png",山东卫视 +http://111.193.239.245:9999/rtp/239.3.1.209:8052 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="山东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E5%8D%AB%E8%A7%86.png",山东卫视 +http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010066 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="山东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E5%8D%AB%E8%A7%86.png",山东卫视 +http://z.b.bkpcp.top/m.php?id=sdws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="山东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E5%8D%AB%E8%A7%86.png",山东卫视 +http://j.x.bkpcp.top/jx/SHANDHD +#EXTINF:-1 group-title="📡卫视频道" tvg-name="山东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E5%8D%AB%E8%A7%86.png",山东卫视 +http://l.cztvcloud.com/channels/lantian/SXshengzhou1/720p.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="山东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E5%8D%AB%E8%A7%86.png",山东卫视 +http://iptv.huuc.edu.cn/hls/sdhd.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="山西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E5%8D%AB%E8%A7%86.png",山西卫视 +http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010114 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="山西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E5%8D%AB%E8%A7%86.png",山西卫视 +http://j.x.bkpcp.top/jx/SXWS +#EXTINF:-1 group-title="📡卫视频道" tvg-name="山西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E5%8D%AB%E8%A7%86.png",山西卫视 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221226392/index.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="山西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E5%8D%AB%E8%A7%86.png",山西卫视 +http://dsj.motem.top:8880/bptv/10000100000000050000000003887413.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="山西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E5%8D%AB%E8%A7%86.png",山西卫视 +http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221226392/index.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="山西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E5%8D%AB%E8%A7%86.png",山西卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226531/1.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="山西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E5%8D%AB%E8%A7%86.png",山西卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226920/1.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="山西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E5%8D%AB%E8%A7%86.png",山西卫视 +https://live.lalifeier.eu.org/sxrtv/sxws.m3u8?t=1746292937&key=8097fcc15ecf55c37b8908da7be2be63 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="山西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E5%8D%AB%E8%A7%86.png",山西卫视 +https://live.lalifeier.eu.org/sxrtv/sxws.m3u8?t=1746307365&key=3eeaa00e3276abf097ceb1bb753ca265 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="山西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E5%8D%AB%E8%A7%86.png",山西卫视 +http://m3u8.channel.wsrtv.com.cn/cms/videos/nmip-media/channellive/channel7/playlist.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="陕西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%99%95%E8%A5%BF%E5%8D%AB%E8%A7%86.png",陕西卫视 +http://171.15.18.199:8180/TV00000000000000000039@HHZT +#EXTINF:-1 group-title="📡卫视频道" tvg-name="陕西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%99%95%E8%A5%BF%E5%8D%AB%E8%A7%86.png",陕西卫视 +http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010113 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="陕西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%99%95%E8%A5%BF%E5%8D%AB%E8%A7%86.png",陕西卫视 +http://z.b.bkpcp.top/m.php?id=sxws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="陕西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%99%95%E8%A5%BF%E5%8D%AB%E8%A7%86.png",陕西卫视 +http://gat.bkpcp.top/ymg.php?id=sxws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="陕西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%99%95%E8%A5%BF%E5%8D%AB%E8%A7%86.png",陕西卫视 +http://goo.bkpcp.top/mg/sxws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="陕西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%99%95%E8%A5%BF%E5%8D%AB%E8%A7%86.png",陕西卫视 +http://dsj.motem.top:8880/bptv/10000100000000050000000003887404.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="陕西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%99%95%E8%A5%BF%E5%8D%AB%E8%A7%86.png",陕西卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226532/1.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="陕西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%99%95%E8%A5%BF%E5%8D%AB%E8%A7%86.png",陕西卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226926/1.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="陕西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%99%95%E8%A5%BF%E5%8D%AB%E8%A7%86.png",陕西卫视 +https://www.freetv.top/migu/738910838.m3u8?migutoken=3899cd1daaa04f812c6d4b13126e3c00ad177635abc5559f1b596e814ff8eb3d745e7bd40b881206a2852a5ed041ca424112cf1d9b385c72ea9de42c8d86f45227af0f51a8b4f4c18a038a8e6d +#EXTINF:-1 group-title="📡卫视频道" tvg-name="陕西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%99%95%E8%A5%BF%E5%8D%AB%E8%A7%86.png",陕西卫视 +https://www.freetv.top/migu/738910838.m3u8?migutoken=35df06ac83a8fe0b0d98f96b8dbf5821d2a57fbd279c10148f5eb543353c48d828c15e639a63919e023774c69fac3a6f5a2bbfd1ee773d77c0dc154b9acd0c77e84c99627dd15f852e56ab3281 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="四川卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%9B%9B%E5%B7%9D%E5%8D%AB%E8%A7%86.png",四川卫视 +http://222.218.122.114:8188/udp/239.81.0.130:4056 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="四川卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%9B%9B%E5%B7%9D%E5%8D%AB%E8%A7%86.png",四川卫视 +http://60.26.181.220:4022/rtp/225.1.1.123:5002 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="四川卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%9B%9B%E5%B7%9D%E5%8D%AB%E8%A7%86.png",四川卫视 +http://171.15.18.199:8180/TV00000000000000000040@HHZT +#EXTINF:-1 group-title="📡卫视频道" tvg-name="四川卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%9B%9B%E5%B7%9D%E5%8D%AB%E8%A7%86.png",四川卫视 +http://php.jdshipin.com/TVOD/hljyd.php?id=3221226338 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="四川卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%9B%9B%E5%B7%9D%E5%8D%AB%E8%A7%86.png",四川卫视 +http://z.b.bkpcp.top/m.php?id=scws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="四川卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%9B%9B%E5%B7%9D%E5%8D%AB%E8%A7%86.png",四川卫视 +http://j.x.bkpcp.top/jx/SICHD +#EXTINF:-1 group-title="📡卫视频道" tvg-name="四川卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%9B%9B%E5%B7%9D%E5%8D%AB%E8%A7%86.png",四川卫视 +http://iptv.huuc.edu.cn/hls/schd.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="四川卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%9B%9B%E5%B7%9D%E5%8D%AB%E8%A7%86.png",四川卫视 +http://dsj.motem.top:8880/bptv/10000100000000050000000003887274.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="四川卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%9B%9B%E5%B7%9D%E5%8D%AB%E8%A7%86.png",四川卫视 +http://[2409:8087:1a0a:df::404b]/ottrrs.hl.chinamobile.com/TVOD/88888888/224/3221226338/index.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="四川卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%9B%9B%E5%B7%9D%E5%8D%AB%E8%A7%86.png",四川卫视 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221226338/index.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%B1%E5%9C%B3%E5%8D%AB%E8%A7%86.png",深圳卫视 +http://satellitepull.cnr.cn/live/wxszws/playlist.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%B1%E5%9C%B3%E5%8D%AB%E8%A7%86.png",深圳卫视 +http://60.26.181.220:4022/rtp/225.1.1.117:5002 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%B1%E5%9C%B3%E5%8D%AB%E8%A7%86.png",深圳卫视 +http://219.141.44.245:8188/udp/238.255.2.61:5999 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%B1%E5%9C%B3%E5%8D%AB%E8%A7%86.png",深圳卫视 +http://111.162.205.201:8686/rtp/225.1.1.117:5002 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%B1%E5%9C%B3%E5%8D%AB%E8%A7%86.png",深圳卫视 +http://114.238.59.148:4000/rtp/239.49.8.15:9430 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%B1%E5%9C%B3%E5%8D%AB%E8%A7%86.png",深圳卫视 +http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010068 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%B1%E5%9C%B3%E5%8D%AB%E8%A7%86.png",深圳卫视 +http://iptv.huuc.edu.cn/hls/szhd.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%B1%E5%9C%B3%E5%8D%AB%E8%A7%86.png",深圳卫视 +https://smart.pendy.dpdns.org/Smart.php?id=shenzhen +#EXTINF:-1 group-title="📡卫视频道" tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%B1%E5%9C%B3%E5%8D%AB%E8%A7%86.png",深圳卫视 +http://dsj.motem.top:8880/bptv/10000100000000050000000003873474.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%B1%E5%9C%B3%E5%8D%AB%E8%A7%86.png",深圳卫视 +http://z.b.bkpcp.top/m.php?id=szws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="三沙卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%89%E6%B2%99%E5%8D%AB%E8%A7%86.png",三沙卫视 +http://dsj.motem.top:8880/bptv/10000100000000050000000003887452.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="三沙卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%89%E6%B2%99%E5%8D%AB%E8%A7%86.png",三沙卫视 +http://[2409:8087:2001:20:2800:0:df6e:eb21]:80/ott.mobaibox.com/PLTV/4/224/3221228626/index.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="三沙卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%89%E6%B2%99%E5%8D%AB%E8%A7%86.png",三沙卫视 +http://[2409:8087:1e03:21::2]:6060/cms001/ch00000090990000001185/index.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="三沙卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%89%E6%B2%99%E5%8D%AB%E8%A7%86.png",三沙卫视 +http://[2409:8087:3428:20:500::100f]:6610/PLTV/88888888/224/3221227172/index.m3u8?servicetype=1&IASHttpSessionId=RR423820220409134714119178 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="三沙卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%89%E6%B2%99%E5%8D%AB%E8%A7%86.png",三沙卫视 +http://[2409:8087:3428:20:500::1009]:6610/PLTV/88888888/224/3221227172/index.m3u8?servicetype=1&IASHttpSessionId=RR423820220409134714119178 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="三沙卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%89%E6%B2%99%E5%8D%AB%E8%A7%86.png",三沙卫视 +http://[2409:8087:5e01:34::20]:6610/ZTE_CMS/08984400000000060000000000000319/index.m3u8?IAS +#EXTINF:-1 group-title="📡卫视频道" tvg-name="三沙卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%89%E6%B2%99%E5%8D%AB%E8%A7%86.png",三沙卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226544/1.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="三沙卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%89%E6%B2%99%E5%8D%AB%E8%A7%86.png",三沙卫视 +http://[2409:8087:5e01:34::21]:6610/ZTE_CMS/08984400000000060000000000000319/index.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="三沙卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%89%E6%B2%99%E5%8D%AB%E8%A7%86.png",三沙卫视 +http://[2409:8087:5e01:34::21]:6610/ZTE_CMS/08984400000000060000000000000319/index.m3u8?IASHttpSessionId=OTT +#EXTINF:-1 group-title="📡卫视频道" tvg-name="三沙卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%89%E6%B2%99%E5%8D%AB%E8%A7%86.png",三沙卫视 +https://stream1.freetv.fun/8bd6b69c423ac31e71c2311ad33f4f291e1314c69005ffb7b3b7defc2944adb2.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%B4%A5%E5%8D%AB%E8%A7%86.png",天津卫视 +http://60.26.181.220:4022/rtp/225.1.1.111:5002 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%B4%A5%E5%8D%AB%E8%A7%86.png",天津卫视 +http://116.237.148.215:8881/rtp/239.45.1.124:5140 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%B4%A5%E5%8D%AB%E8%A7%86.png",天津卫视 +http://114.226.231.231:8787/rtp/239.49.8.35:8620 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%B4%A5%E5%8D%AB%E8%A7%86.png",天津卫视 +http://111.162.205.201:8686/rtp/225.1.1.111:5002 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%B4%A5%E5%8D%AB%E8%A7%86.png",天津卫视 +http://111.193.239.245:9999/rtp/239.3.1.141:1234 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%B4%A5%E5%8D%AB%E8%A7%86.png",天津卫视 +http://php.jdshipin.com/TVOD/hljyd.php?id=3221226459 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%B4%A5%E5%8D%AB%E8%A7%86.png",天津卫视 +http://j.x.bkpcp.top/jx/TIANJHD +#EXTINF:-1 group-title="📡卫视频道" tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%B4%A5%E5%8D%AB%E8%A7%86.png",天津卫视 +http://iptv.huuc.edu.cn/hls/tjhd.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%B4%A5%E5%8D%AB%E8%A7%86.png",天津卫视 +http://[2409:8087:1a01:df::4030]:80/TVOD/88888888/224/3221225972/main.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%B4%A5%E5%8D%AB%E8%A7%86.png",天津卫视 +http://dsj.motem.top:8880/bptv/10000100000000050000000003873466.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="西藏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%A5%BF%E8%97%8F%E5%8D%AB%E8%A7%86.png",西藏卫视 +http://satellitepull.cnr.cn/live/wxxzws/playlist.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="西藏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%A5%BF%E8%97%8F%E5%8D%AB%E8%A7%86.png",西藏卫视 +http://z.b.bkpcp.top/m.php?id=xzws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="西藏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%A5%BF%E8%97%8F%E5%8D%AB%E8%A7%86.png",西藏卫视 +http://goo.bkpcp.top/mg/xzws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="西藏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%A5%BF%E8%97%8F%E5%8D%AB%E8%A7%86.png",西藏卫视 +http://dsj.motem.top:8880/bptv/10000100000000050000000003887434.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="西藏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%A5%BF%E8%97%8F%E5%8D%AB%E8%A7%86.png",西藏卫视 +https://tv.vtibet.cn/live/h701F9MpxzPDyE.m3u8?secret=4eca0fb428c7390f0e7cdee6a0044c78&time=6817e4bb +#EXTINF:-1 group-title="📡卫视频道" tvg-name="西藏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%A5%BF%E8%97%8F%E5%8D%AB%E8%A7%86.png",西藏卫视 +https://tv.vtibet.cn/live/h701F9MpxzPDyE.m3u8?secret=afa6fbb9cc7add965ab98221ae0d8596&time=681691e7 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="西藏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%A5%BF%E8%97%8F%E5%8D%AB%E8%A7%86.png",西藏卫视 +https://tv.vtibet.cn/live/h701F9MpxzPDyE.m3u8?secret=ddde6b45f5065c5066ded53d6559f31c&time=68134627 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="西藏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%A5%BF%E8%97%8F%E5%8D%AB%E8%A7%86.png",西藏卫视 +http://[2409:8087:1e03:21::2]:6060/cms001/ch00000090990000001072/index.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="西藏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%A5%BF%E8%97%8F%E5%8D%AB%E8%A7%86.png",西藏卫视 +http://[2409:8087:3428:20:500::100f]:6610/PLTV/88888888/224/3221226847/index.m3u8?servicetype=1&IASHttpSessionId=RR423820220409134714119178 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="西藏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%A5%BF%E8%97%8F%E5%8D%AB%E8%A7%86.png",西藏卫视 +http://[2409:8087:3428:20:500::1009]:6610/PLTV/88888888/224/3221226847/index.m3u8?servicetype=1&IASHttpSessionId=RR423820220409134714119178 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="新疆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E7%96%86%E5%8D%AB%E8%A7%86.png",新疆卫视 +http://satellitepull.cnr.cn/live/wxxjws/playlist.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="新疆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E7%96%86%E5%8D%AB%E8%A7%86.png",新疆卫视 +http://php.jdshipin.com/TVOD/hljyd.php?id=3221225635 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="新疆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E7%96%86%E5%8D%AB%E8%A7%86.png",新疆卫视 +http://z.b.bkpcp.top/m.php?id=xjws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="新疆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E7%96%86%E5%8D%AB%E8%A7%86.png",新疆卫视 +http://j.x.bkpcp.top/jx/XJWS +#EXTINF:-1 group-title="📡卫视频道" tvg-name="新疆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E7%96%86%E5%8D%AB%E8%A7%86.png",新疆卫视 +http://goo.bkpcp.top/mg/xjws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="新疆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E7%96%86%E5%8D%AB%E8%A7%86.png",新疆卫视 +http://dsj.motem.top:8880/bptv/10000100000000050000000003887448.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="新疆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E7%96%86%E5%8D%AB%E8%A7%86.png",新疆卫视 +http://[2409:8087:1a0a:df::404b]/ottrrs.hl.chinamobile.com/TVOD/88888888/224/3221225635/index.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="新疆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E7%96%86%E5%8D%AB%E8%A7%86.png",新疆卫视 +http://[2409:8087:2001:20:2800:0:df6e:eb0b]/wh7f454c46tw993550557_162751766/ott.mobaibox.com/PLTV/3/224/3221228290/index.m3u8?icpid=3&RTS=1668604377&from=40&popid=40&hms_devid=2038&prioritypopid=40&vqe=3 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="新疆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E7%96%86%E5%8D%AB%E8%A7%86.png",新疆卫视 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221226460/index.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="新疆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E7%96%86%E5%8D%AB%E8%A7%86.png",新疆卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226546/1.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="云南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E5%8D%97%E5%8D%AB%E8%A7%86.png",云南卫视 +http://116.237.148.215:8881/rtp/239.45.0.4:5140 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="云南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E5%8D%97%E5%8D%AB%E8%A7%86.png",云南卫视 +http://218.1.137.125:4022/rtp/239.45.0.4:5140 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="云南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E5%8D%97%E5%8D%AB%E8%A7%86.png",云南卫视 +http://180.165.29.204:4022/rtp/239.45.0.4:5140 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="云南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E5%8D%97%E5%8D%AB%E8%A7%86.png",云南卫视 +http://php.jdshipin.com/TVOD/hljyd.php?id=3221226444 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="云南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E5%8D%97%E5%8D%AB%E8%A7%86.png",云南卫视 +http://z.b.bkpcp.top/m.php?id=ynws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="云南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E5%8D%97%E5%8D%AB%E8%A7%86.png",云南卫视 +http://goo.bkpcp.top/mg/ynws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="云南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E5%8D%97%E5%8D%AB%E8%A7%86.png",云南卫视 +http://dsj.motem.top:8880/bptv/10000100000000050000000003887453.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="云南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E5%8D%97%E5%8D%AB%E8%A7%86.png",云南卫视 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221226444/index.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="云南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E5%8D%97%E5%8D%AB%E8%A7%86.png",云南卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226543/1.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="云南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E5%8D%97%E5%8D%AB%E8%A7%86.png",云南卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226928/1.m3u8 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广东珠江" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E7%8F%A0%E6%B1%9F.png",广东珠江 +http://baota.guangyuan.site:8188/rtp/239.77.0.114:5146 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广东珠江" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E7%8F%A0%E6%B1%9F.png",广东珠江 +https://live.ximalaya.com/radio-first-page-app/live/252/64.m3u8 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广东珠江" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E7%8F%A0%E6%B1%9F.png",广东珠江 +https://stream1.freetv.fun/yan-dong-zhu-jiang-4.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广东珠江" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E7%8F%A0%E6%B1%9F.png",广东珠江 +https://stream1.freetv.fun/ipv6-yan-dong-zhu-jiang-14.m3u8 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广东珠江" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E7%8F%A0%E6%B1%9F.png",广东珠江 +https://stream1.freetv.fun/yan-dong-zhu-jiang-29.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广东珠江" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E7%8F%A0%E6%B1%9F.png",广东珠江 +https://stream1.freetv.fun/yan-dong-zhu-jiang-8.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广东珠江" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E7%8F%A0%E6%B1%9F.png",广东珠江 +https://stream1.freetv.fun/967c330a56e8f2fed10ea053ac29b132d29e323680b5e20a53e3af6bcf7b2f54.m3u8 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广东珠江" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E7%8F%A0%E6%B1%9F.png",广东珠江 +http://cdn2.163189.xyz/live/gdzj/stream.m3u8 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广东珠江" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E7%8F%A0%E6%B1%9F.png",广东珠江 +https://stream1.freetv.fun/5f12b986a77ebe5440c508c13895b3e7f8767b2a47c79f3f5fe948097e15337d.m3u8 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广东珠江" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E7%8F%A0%E6%B1%9F.png",广东珠江 +https://tv.cdn.com.mp/live/gdzj/stream.m3u8 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广东体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E4%BD%93%E8%82%B2.png",广东体育 +https://epg.pw/stream/7b470f9fc5c305db0c8622117b7b25ca00eb35ba3e93e865cf0ff9df5c736681.m3u8 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广东体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E4%BD%93%E8%82%B2.png",广东体育 +http://cdn2.163189.xyz/live/gdty/stream.m3u8 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广东体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E4%BD%93%E8%82%B2.png",广东体育 +http://php.jdshipin.com/PLTV/iptv.php?id=gdty +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广东体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E4%BD%93%E8%82%B2.png",广东体育 +https://stream1.freetv.fun/3864d41a409cbbbd8579e4ec03eb47e6cf65b15f5cae7c3cd44ccd4b9991a017.m3u8 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广东体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E4%BD%93%E8%82%B2.png",广东体育 +https://stream1.freetv.fun/e05d674500d8dcf73754cb11d4dcd8ef9e88f287888a1b71fd0766e90963db66.m3u8 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广东体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E4%BD%93%E8%82%B2.png",广东体育 +https://stream1.freetv.fun/1d9901836bfdd83dcc89edf1fb53c3f62393cd672a8d49266af2c8130921b0ee.m3u8 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广东体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E4%BD%93%E8%82%B2.png",广东体育 +https://stream1.freetv.fun/869475cf6ab5d187816a1b7fbd8649cfc0b41c452e5595eabb2a36e51a61eecf.m3u8 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广东体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E4%BD%93%E8%82%B2.png",广东体育 +http://php.jdshipin.com/TVOD/iptv.php?id=gdty +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广东体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E4%BD%93%E8%82%B2.png",广东体育 +https://stream1.freetv.fun/yan-dong-ti-yu-10.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广东体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E4%BD%93%E8%82%B2.png",广东体育 +https://stream1.freetv.fun/yan-dong-ti-yu-11.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广东新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E6%96%B0%E9%97%BB.png",广东新闻 +http://satellitepull.cnr.cn/live/wxgdxwgb/playlist.m3u8 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广东新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E6%96%B0%E9%97%BB.png",广东新闻 +https://satellitepull.cnr.cn/live/wxgdxwgb/playlist.m3u8 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广东新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E6%96%B0%E9%97%BB.png",广东新闻 +https://stream1.freetv.fun/yan-dong-xin-wen-9.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广东新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E6%96%B0%E9%97%BB.png",广东新闻 +https://stream1.freetv.fun/yan-dong-xin-wen-27.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广东新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E6%96%B0%E9%97%BB.png",广东新闻 +https://stream1.freetv.fun/yan-dong-xin-wen-20.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广东新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E6%96%B0%E9%97%BB.png",广东新闻 +https://stream1.freetv.fun/yan-dong-xin-wen-2.m3u8 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广东新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E6%96%B0%E9%97%BB.png",广东新闻 +http://php.jdshipin.com:8880/chudian.php?id=gdxw +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广东新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E6%96%B0%E9%97%BB.png",广东新闻 +https://stream1.freetv.fun/yan-dong-xin-wen-19.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广东新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E6%96%B0%E9%97%BB.png",广东新闻 +https://stream1.freetv.fun/yan-dong-xin-wen-24.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广东新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E6%96%B0%E9%97%BB.png",广东新闻 +https://stream1.freetv.fun/yan-dong-xin-wen-11.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E5%8D%AB%E8%A7%86.png",广东卫视 +http://z.b.bkpcp.top/m.php?id=gdws +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E5%8D%AB%E8%A7%86.png",广东卫视 +http://j.x.bkpcp.top/jx/GUANGDHD +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E5%8D%AB%E8%A7%86.png",广东卫视 +http://goo.bkpcp.top/mg/gdws +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E5%8D%AB%E8%A7%86.png",广东卫视 +http://iptv.huuc.edu.cn/hls/gdhd.m3u8 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E5%8D%AB%E8%A7%86.png",广东卫视 +http://dsj.motem.top:8880/bptv/10000100000000050000000003873459.m3u8 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E5%8D%AB%E8%A7%86.png",广东卫视 +http://[2409:8087:1a0a:df::404b]/ottrrs.hl.chinamobile.com/TVOD/88888888/224/3221226248/index.m3u8 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E5%8D%AB%E8%A7%86.png",广东卫视 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221226248/index.m3u8 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E5%8D%AB%E8%A7%86.png",广东卫视 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226248/index.m3u8 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E5%8D%AB%E8%A7%86.png",广东卫视 +http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226248/index.m3u8 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E5%8D%AB%E8%A7%86.png",广东卫视 +http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226248/1.m3u8 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广东民生" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E6%B0%91%E7%94%9F.png",广东民生 +http://baota.guangyuan.site:8188/rtp/239.77.0.225:5146 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广东民生" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E6%B0%91%E7%94%9F.png",广东民生 +https://stream1.freetv.fun/yan-dong-min-sheng-9.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广东民生" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E6%B0%91%E7%94%9F.png",广东民生 +https://stream1.freetv.fun/yan-dong-min-sheng-15.m3u8 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广东民生" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E6%B0%91%E7%94%9F.png",广东民生 +https://stream1.freetv.fun/yan-dong-min-sheng-18.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广东民生" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E6%B0%91%E7%94%9F.png",广东民生 +https://stream1.freetv.fun/yan-dong-min-sheng-21.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广东民生" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E6%B0%91%E7%94%9F.png",广东民生 +https://stream1.freetv.fun/yan-dong-min-sheng-24.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广东民生" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E6%B0%91%E7%94%9F.png",广东民生 +https://stream1.freetv.fun/yan-dong-min-sheng-14.m3u8 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广东民生" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E6%B0%91%E7%94%9F.png",广东民生 +https://stream1.freetv.fun/yan-dong-min-sheng-9.m3u8 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广东民生" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E6%B0%91%E7%94%9F.png",广东民生 +https://stream1.freetv.fun/yan-dong-min-sheng-3.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广东民生" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E6%B0%91%E7%94%9F.png",广东民生 +https://stream1.freetv.fun/yan-dong-min-sheng-35.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="大湾区卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A7%E6%B9%BE%E5%8C%BA%E5%8D%AB%E8%A7%86.png",大湾区卫视 +http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010108 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="大湾区卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A7%E6%B9%BE%E5%8C%BA%E5%8D%AB%E8%A7%86.png",大湾区卫视 +http://z.b.bkpcp.top/m.php?id=dwqws +#EXTINF:-1 group-title="☘️广东频道" tvg-name="大湾区卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A7%E6%B9%BE%E5%8C%BA%E5%8D%AB%E8%A7%86.png",大湾区卫视 +http://goo.bkpcp.top/mg/dwqws +#EXTINF:-1 group-title="☘️广东频道" tvg-name="大湾区卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A7%E6%B9%BE%E5%8C%BA%E5%8D%AB%E8%A7%86.png",大湾区卫视 +http://jp1.jdiptv.cc/live/nfws.m3u8?kdstime= +#EXTINF:-1 group-title="☘️广东频道" tvg-name="大湾区卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A7%E6%B9%BE%E5%8C%BA%E5%8D%AB%E8%A7%86.png",大湾区卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226540/1.m3u8 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="大湾区卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A7%E6%B9%BE%E5%8C%BA%E5%8D%AB%E8%A7%86.png",大湾区卫视 +https://www.freetv.top/migu/608917627.m3u8?migutoken=913ec7608066b2e139e10a729ed6e0b277096bf7d1577f04dec2f036a15f6db88631747d218643efc7515ff520286e2a56bc4f2231e6d692da49f8d555d3291bbba71e8f2993d5487b41afa6bf +#EXTINF:-1 group-title="☘️广东频道" tvg-name="大湾区卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A7%E6%B9%BE%E5%8C%BA%E5%8D%AB%E8%A7%86.png",大湾区卫视 +https://www.freetv.top/migu/608917627.m3u8?migutoken=bad0a45eea94649f2e7f1b35e1d98d034b874a02984a76abb21e4537dee28f974e6da241dc7705109722be71c8b1302302b51cd4cb06c69ca55fdcf7279d415e0a0fce7c492b6842956ab34fcc +#EXTINF:-1 group-title="☘️广东频道" tvg-name="大湾区卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A7%E6%B9%BE%E5%8C%BA%E5%8D%AB%E8%A7%86.png",大湾区卫视 +https://www.freetv.top/migu/608917627.m3u8?migutoken=22c28ab72744cd3ae1500fcedd9aa645eb0c35326cccb8cc6253c912a2fbdadb109d5f005d7dbbb62dbcb2e1f9a30bfa1935a4a046787bb5ac3e9ac1b5b654c16c2f7753fc37d2d51b2916310b +#EXTINF:-1 group-title="☘️广东频道" tvg-name="大湾区卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A7%E6%B9%BE%E5%8C%BA%E5%8D%AB%E8%A7%86.png",大湾区卫视 +https://www.freetv.top/migu/608917627.m3u8?migutoken=6e23ed23803d2776218fbd5b6931d4dd0d0a20d0269ca0da6b2efaaf101f71c62689ec1d6f73e16a10d1b756f7e23f0de494b881e2bc39c12250715721f84c185577680003f363869dba1b7e90 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="大湾区卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A7%E6%B9%BE%E5%8C%BA%E5%8D%AB%E8%A7%86.png",大湾区卫视 +https://stream1.freetv.fun/9e44565ab6186689007a295d8b94b2a970fafde637068b0e3837e5f84689a8f3.m3u8 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广州综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E5%B7%9E%E7%BB%BC%E5%90%88.png",广州综合 +http://baota.guangyuan.site:8188/rtp/239.253.43.71:5146 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广州综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E5%B7%9E%E7%BB%BC%E5%90%88.png",广州综合 +http://php.jdshipin.com:8880/gztv.php?id=zhonghe +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广州综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E5%B7%9E%E7%BB%BC%E5%90%88.png",广州综合 +https://live.lalifeier.eu.org/gztv/zhonghe.m3u8?t=1746292937&key=20079a0c421e334c8ff6f63f230b8038 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广州综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E5%B7%9E%E7%BB%BC%E5%90%88.png",广州综合 +https://live.lalifeier.eu.org/gztv/zhonghe.m3u8?t=1746393735&key=2b88a832f53237919a3924cdaeda3a0d +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广州综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E5%B7%9E%E7%BB%BC%E5%90%88.png",广州综合 +https://stream1.freetv.fun/yan-zhou-zong-he-9.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广州综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E5%B7%9E%E7%BB%BC%E5%90%88.png",广州综合 +https://stream1.freetv.fun/yan-zhou-zong-he-12.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广州综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E5%B7%9E%E7%BB%BC%E5%90%88.png",广州综合 +https://stream1.freetv.fun/yan-zhou-zong-he-11.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广州综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E5%B7%9E%E7%BB%BC%E5%90%88.png",广州综合 +https://live.lalifeier.eu.org/gztv/zhonghe.m3u8?t=1746289777&key=d60e81860f262e40617e934abf53669b +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广州综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E5%B7%9E%E7%BB%BC%E5%90%88.png",广州综合 +https://stream1.freetv.fun/yan-zhou-zong-he-25.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广州综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E5%B7%9E%E7%BB%BC%E5%90%88.png",广州综合 +https://stream1.freetv.fun/yan-zhou-zong-he-19.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广州影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E5%B7%9E%E5%BD%B1%E8%A7%86.png",广州影视 +http://php.jdshipin.com:8880/gztv.php?id=yingshi#https://tencentplay.gztv.com/live/yingshi.m3u8?txSecret=7e9bddad7c8911626ed1d2c09fc605d9&txTime=18d00acf487 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广州影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E5%B7%9E%E5%BD%B1%E8%A7%86.png",广州影视 +https://live.lalifeier.eu.org/gztv/yingshi.m3u8?t=1746292937&key=a30a89b429981379ff7c586fdb54ac86 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广州影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E5%B7%9E%E5%BD%B1%E8%A7%86.png",广州影视 +https://live.lalifeier.eu.org/gztv/yingshi.m3u8?t=1746393735&key=1c3dbffdc7f539bde2e1cf2100bb4266 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广州影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E5%B7%9E%E5%BD%B1%E8%A7%86.png",广州影视 +https://stream1.freetv.fun/yan-zhou-ying-shi-6.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广州影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E5%B7%9E%E5%BD%B1%E8%A7%86.png",广州影视 +https://stream1.freetv.fun/yan-zhou-ying-shi-13.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广州影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E5%B7%9E%E5%BD%B1%E8%A7%86.png",广州影视 +https://stream1.freetv.fun/yan-zhou-ying-shi-7.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广州影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E5%B7%9E%E5%BD%B1%E8%A7%86.png",广州影视 +https://stream1.freetv.fun/yan-zhou-ying-shi-4.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广州影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E5%B7%9E%E5%BD%B1%E8%A7%86.png",广州影视 +https://stream1.freetv.fun/yan-zhou-ying-shi-28.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广州影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E5%B7%9E%E5%BD%B1%E8%A7%86.png",广州影视 +https://stream1.freetv.fun/yan-zhou-ying-shi-15.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广州影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E5%B7%9E%E5%BD%B1%E8%A7%86.png",广州影视 +https://stream1.freetv.fun/yan-zhou-ying-shi-12.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广州竞赛" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E5%B7%9E%E7%AB%9E%E8%B5%9B.png",广州竞赛 +http://php.jdshipin.com:8880/gztv.php?id=jingsai#https://tencentplay.gztv.com/live/jingsai.m3u8?txSecret=49c8041461997c7a97dbcc3c7fd11b4f&txTime=18d00acf487 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广州竞赛" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E5%B7%9E%E7%AB%9E%E8%B5%9B.png",广州竞赛 +https://stream1.freetv.fun/yan-zhou-jing-sai-4.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广州竞赛" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E5%B7%9E%E7%AB%9E%E8%B5%9B.png",广州竞赛 +https://stream1.freetv.fun/yan-zhou-jing-sai-27.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广州竞赛" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E5%B7%9E%E7%AB%9E%E8%B5%9B.png",广州竞赛 +https://stream1.freetv.fun/yan-zhou-jing-sai-37.m3u8 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广州竞赛" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E5%B7%9E%E7%AB%9E%E8%B5%9B.png",广州竞赛 +https://stream1.freetv.fun/yan-zhou-jing-sai-26.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广州竞赛" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E5%B7%9E%E7%AB%9E%E8%B5%9B.png",广州竞赛 +https://stream1.freetv.fun/yan-zhou-jing-sai-35.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广州竞赛" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E5%B7%9E%E7%AB%9E%E8%B5%9B.png",广州竞赛 +https://stream1.freetv.fun/yan-zhou-jing-sai-24.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广州竞赛" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E5%B7%9E%E7%AB%9E%E8%B5%9B.png",广州竞赛 +https://stream1.freetv.fun/yan-zhou-jing-sai-15.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广州竞赛" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E5%B7%9E%E7%AB%9E%E8%B5%9B.png",广州竞赛 +https://stream1.freetv.fun/yan-zhou-jing-sai-12.m3u8 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="广州竞赛" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E5%B7%9E%E7%AB%9E%E8%B5%9B.png",广州竞赛 +https://stream1.freetv.fun/yan-zhou-jing-sai-7.m3u8 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="江门综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E9%97%A8%E7%BB%BC%E5%90%88.png",江门综合 +http://baota.guangyuan.site:8188/rtp/239.77.0.201:5146 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="江门综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E9%97%A8%E7%BB%BC%E5%90%88.png",江门综合 +https://stream1.freetv.fun/jiang-men-zong-he-8.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="江门综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E9%97%A8%E7%BB%BC%E5%90%88.png",江门综合 +https://stream1.freetv.fun/jiang-men-zong-he-6.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="江门综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E9%97%A8%E7%BB%BC%E5%90%88.png",江门综合 +https://stream1.freetv.fun/jiang-men-zong-he-12.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="江门综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E9%97%A8%E7%BB%BC%E5%90%88.png",江门综合 +https://stream1.freetv.fun/jiang-men-zong-he-13.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="江门综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E9%97%A8%E7%BB%BC%E5%90%88.png",江门综合 +http://dslive.grtn.cn/jmzh/sd/live.m3u8 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="江门综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E9%97%A8%E7%BB%BC%E5%90%88.png",江门综合 +https://stream1.freetv.fun/jiang-men-zong-he-11.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="江门综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E9%97%A8%E7%BB%BC%E5%90%88.png",江门综合 +https://stream1.freetv.fun/jiang-men-zong-he-14.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="江门综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E9%97%A8%E7%BB%BC%E5%90%88.png",江门综合 +https://stream1.freetv.fun/jiang-men-zong-he-4.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="江门综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E9%97%A8%E7%BB%BC%E5%90%88.png",江门综合 +https://stream1.freetv.fun/jiang-men-zong-he-2.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="江门侨乡生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E9%97%A8%E4%BE%A8%E4%B9%A1%E7%94%9F%E6%B4%BB.png",江门侨乡生活 +http://baota.guangyuan.site:8188/rtp/239.77.0.202:5146 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="江门侨乡生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E9%97%A8%E4%BE%A8%E4%B9%A1%E7%94%9F%E6%B4%BB.png",江门侨乡生活 +http://rustdesk.szsun.xyz:8088/rtp/239.77.0.202:5146 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="佛山综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BD%9B%E5%B1%B1%E7%BB%BC%E5%90%88.png",佛山综合 +http://baota.guangyuan.site:8188/rtp/239.253.43.57:5146 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="佛山综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BD%9B%E5%B1%B1%E7%BB%BC%E5%90%88.png",佛山综合 +http://php.jdshipin.com:8880/fstv.php?id=fszh +#EXTINF:-1 group-title="☘️广东频道" tvg-name="佛山综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BD%9B%E5%B1%B1%E7%BB%BC%E5%90%88.png",佛山综合 +https://stream1.freetv.fun/fo-shan-zong-he-5.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="佛山综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BD%9B%E5%B1%B1%E7%BB%BC%E5%90%88.png",佛山综合 +https://stream1.freetv.fun/fo-shan-zong-he-17.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="佛山综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BD%9B%E5%B1%B1%E7%BB%BC%E5%90%88.png",佛山综合 +https://stream1.freetv.fun/fo-shan-zong-he-7.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="佛山综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BD%9B%E5%B1%B1%E7%BB%BC%E5%90%88.png",佛山综合 +https://live.lalifeier.eu.org/fstv/fszh.m3u8?t=1746307365&key=776c844ec448f3aca62132b212878ee5 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="佛山综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BD%9B%E5%B1%B1%E7%BB%BC%E5%90%88.png",佛山综合 +https://stream1.freetv.fun/fo-shan-zong-he-24.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="佛山综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BD%9B%E5%B1%B1%E7%BB%BC%E5%90%88.png",佛山综合 +https://stream1.freetv.fun/fo-shan-zong-he-9.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="佛山综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BD%9B%E5%B1%B1%E7%BB%BC%E5%90%88.png",佛山综合 +https://stream1.freetv.fun/fo-shan-zong-he-15.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="佛山综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BD%9B%E5%B1%B1%E7%BB%BC%E5%90%88.png",佛山综合 +https://stream1.freetv.fun/fo-shan-zong-he-22.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%B1%E5%9C%B3%E5%8D%AB%E8%A7%86.png",深圳卫视 +http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010068 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%B1%E5%9C%B3%E5%8D%AB%E8%A7%86.png",深圳卫视 +http://iptv.huuc.edu.cn/hls/szhd.m3u8 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%B1%E5%9C%B3%E5%8D%AB%E8%A7%86.png",深圳卫视 +https://smart.pendy.dpdns.org/Smart.php?id=shenzhen +#EXTINF:-1 group-title="☘️广东频道" tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%B1%E5%9C%B3%E5%8D%AB%E8%A7%86.png",深圳卫视 +http://dsj.motem.top:8880/bptv/10000100000000050000000003873474.m3u8 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%B1%E5%9C%B3%E5%8D%AB%E8%A7%86.png",深圳卫视 +http://z.b.bkpcp.top/m.php?id=szws +#EXTINF:-1 group-title="☘️广东频道" tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%B1%E5%9C%B3%E5%8D%AB%E8%A7%86.png",深圳卫视 +http://[2409:8087:1a0a:df::404b]/ottrrs.hl.chinamobile.com/TVOD/88888888/224/3221226313/index.m3u8 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%B1%E5%9C%B3%E5%8D%AB%E8%A7%86.png",深圳卫视 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221226313/index.m3u8 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%B1%E5%9C%B3%E5%8D%AB%E8%A7%86.png",深圳卫视 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226313/index.m3u8 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%B1%E5%9C%B3%E5%8D%AB%E8%A7%86.png",深圳卫视 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/yinhe/88888888/224/3221226313/index.m3u8 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%B1%E5%9C%B3%E5%8D%AB%E8%A7%86.png",深圳卫视 +http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221226313/index.m3u8 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="汕头综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%95%E5%A4%B4%E7%BB%BC%E5%90%88.png",汕头综合 +https://stream1.freetv.fun/shan-tou-zong-he-5.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="汕头综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%95%E5%A4%B4%E7%BB%BC%E5%90%88.png",汕头综合 +https://stream1.freetv.fun/shan-tou-zong-he-7.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="汕头综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%95%E5%A4%B4%E7%BB%BC%E5%90%88.png",汕头综合 +https://stream1.freetv.fun/shan-tou-zong-he-18.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="汕头综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%95%E5%A4%B4%E7%BB%BC%E5%90%88.png",汕头综合 +https://stream1.freetv.fun/shan-tou-zong-he-1.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="汕头综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%95%E5%A4%B4%E7%BB%BC%E5%90%88.png",汕头综合 +https://stream1.freetv.fun/shan-tou-zong-he-9.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="汕头综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%95%E5%A4%B4%E7%BB%BC%E5%90%88.png",汕头综合 +https://stream1.freetv.fun/shan-tou-zong-he-12.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="汕头综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%95%E5%A4%B4%E7%BB%BC%E5%90%88.png",汕头综合 +https://stream1.freetv.fun/shan-tou-zong-he-6.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="汕头综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%95%E5%A4%B4%E7%BB%BC%E5%90%88.png",汕头综合 +https://stream1.freetv.fun/shan-tou-zong-he-10.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="汕头综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%95%E5%A4%B4%E7%BB%BC%E5%90%88.png",汕头综合 +https://stream1.freetv.fun/shan-tou-zong-he-2.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="汕头综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%95%E5%A4%B4%E7%BB%BC%E5%90%88.png",汕头综合 +https://stream1.freetv.fun/shan-tou-zong-he-17.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="汕头经济" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%95%E5%A4%B4%E7%BB%8F%E6%B5%8E.png",汕头经济 +https://stream1.freetv.fun/shan-tou-jing-ji-1.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="汕头经济" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%95%E5%A4%B4%E7%BB%8F%E6%B5%8E.png",汕头经济 +https://stream1.freetv.fun/shan-tou-jing-ji-4.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="汕头经济" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%95%E5%A4%B4%E7%BB%8F%E6%B5%8E.png",汕头经济 +https://stream1.freetv.fun/shan-tou-jing-ji-2.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="汕头经济" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%95%E5%A4%B4%E7%BB%8F%E6%B5%8E.png",汕头经济 +https://stream1.freetv.fun/shan-tou-jing-ji-3.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="汕头经济" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%95%E5%A4%B4%E7%BB%8F%E6%B5%8E.png",汕头经济 +https://stream1.freetv.fun/shan-tou-jing-ji-5.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="汕头经济" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%95%E5%A4%B4%E7%BB%8F%E6%B5%8E.png",汕头经济 +https://stream1.freetv.fun/shan-tou-jing-ji-6.ctv +#EXTINF:-1 group-title="☘️广东频道" tvg-name="茂名综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%8C%82%E5%90%8D%E7%BB%BC%E5%90%88.png",茂名综合 +http://rustdesk.szsun.xyz:8088/rtp/239.77.0.206:5146 +#EXTINF:-1 group-title="☘️广东频道" tvg-name="茂名公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%8C%82%E5%90%8D%E5%85%AC%E5%85%B1.png",茂名公共 +http://rustdesk.szsun.xyz:8088/rtp/239.77.0.207:5146 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江钱江" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E9%92%B1%E6%B1%9F.png",浙江钱江 +https://ali-m-l.cztv.com/channels/lantian/channel002/1080p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江钱江" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E9%92%B1%E6%B1%9F.png",浙江钱江 +http://l.cztvcloud.com/channels/lantian/SXyuyao2/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江钱江" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E9%92%B1%E6%B1%9F.png",浙江钱江 +http://zhfivel02.cztv.com/channel02/1080p.m3u8?auth_key=2524708799-0-0-2f7bb420bfd1d218b9c7b07c0ac1ba2f +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江钱江" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E9%92%B1%E6%B1%9F.png",浙江钱江 +http://zwebl02.cztv.com/live/channel021080P.m3u8?auth_key=2524708799-0-0-43f14b8147c890428975655007afb4cc +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江钱江" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E9%92%B1%E6%B1%9F.png",浙江钱江 +http://ali-m-l.cztv.com/channels/lantian/channel02/1080p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江钱江" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E9%92%B1%E6%B1%9F.png",浙江钱江 +https://stream1.freetv.fun/zhe-jiang-qian-jiang-du-shi-3.ctv +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江钱江" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E9%92%B1%E6%B1%9F.png",浙江钱江 +https://stream1.freetv.fun/zhe-jiang-qian-jiang-du-shi-5.ctv +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江钱江" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E9%92%B1%E6%B1%9F.png",浙江钱江 +https://stream1.freetv.fun/zhe-jiang-qian-jiang-du-shi-2.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江钱江" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E9%92%B1%E6%B1%9F.png",浙江钱江 +https://ali-m-l.cztv.com/channels/lantian/channel002/1080p.m3u8\r\n +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江钱江" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E9%92%B1%E6%B1%9F.png",浙江钱江 +https://stream1.freetv.fun/zhe-jiang-qian-jiang-du-shi-4.ctv +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江钱江都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E9%92%B1%E6%B1%9F%E9%83%BD%E5%B8%82.png",浙江钱江都市 +http://zwebl02.cztv.com/live/channel021080P.m3u8?auth_key=2524708799-0-0-43f14b8147c890428975655007afb4cc +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江钱江都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E9%92%B1%E6%B1%9F%E9%83%BD%E5%B8%82.png",浙江钱江都市 +http://zhfivel02.cztv.com/channel02/1080p.m3u8?auth_key=2524708799-0-0-2f7bb420bfd1d218b9c7b07c0ac1ba2f +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江钱江都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E9%92%B1%E6%B1%9F%E9%83%BD%E5%B8%82.png",浙江钱江都市 +https://ali-m-l.cztv.com/channels/lantian/channel002/1080p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江钱江台" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E9%92%B1%E6%B1%9F%E5%8F%B0.png",浙江钱江台 +https://ali-m-l.cztv.com/channels/lantian/channel002/1080p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江钱江台" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E9%92%B1%E6%B1%9F%E5%8F%B0.png",浙江钱江台 +http://l.cztvcloud.com/channels/lantian/SXyuyao2/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E7%94%9F%E6%B4%BB.png",浙江生活 +https://ali-m-l.cztv.com/channels/lantian/channel003/1080p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E7%94%9F%E6%B4%BB.png",浙江生活 +https://stream1.freetv.fun/zhe-jiang-jing-ji-sheng-huo-1.ctv +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E7%94%9F%E6%B4%BB.png",浙江生活 +https://ali-m-l.cztv.com/channels/lantian/channel003/1080p.m3u8\r\n +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E7%94%9F%E6%B4%BB.png",浙江生活 +https://stream1.freetv.fun/zhe-jiang-jing-ji-sheng-huo-11.ctv +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E7%94%9F%E6%B4%BB.png",浙江生活 +http://zwebl02.cztv.com/live/channel031080P.m3u8?auth_key=2524708799-0-0-cc09266f8e043a6df28eb148cb488d37 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E7%94%9F%E6%B4%BB.png",浙江生活 +http://ls.qingting.fm/live/1099.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E7%94%9F%E6%B4%BB.png",浙江生活 +https://stream1.freetv.fun/zhe-jiang-jing-ji-sheng-huo-4.ctv +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E7%94%9F%E6%B4%BB.png",浙江生活 +http://ali-m-l.cztv.com/channels/lantian/channel03/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E7%94%9F%E6%B4%BB.png",浙江生活 +http://ali-m-l.cztv.com/channels/lantian/channel003/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E7%94%9F%E6%B4%BB.png",浙江生活 +https://stream1.freetv.fun/zhe-jiang-jing-ji-sheng-huo-3.ctv +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江经济生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E7%BB%8F%E6%B5%8E%E7%94%9F%E6%B4%BB.png",浙江经济生活 +http://zwebl02.cztv.com/live/channel031080P.m3u8?auth_key=2524708799-0-0-cc09266f8e043a6df28eb148cb488d37 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江经济生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E7%BB%8F%E6%B5%8E%E7%94%9F%E6%B4%BB.png",浙江经济生活 +http://zhfivel02.cztv.com/channel03/1080p.m3u8?auth_key=2524708799-0-0-76c0751e0f656453baf39803124fc08a +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江经济生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E7%BB%8F%E6%B5%8E%E7%94%9F%E6%B4%BB.png",浙江经济生活 +https://ali-m-l.cztv.com/channels/lantian/channel003/1080p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江经济生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E7%BB%8F%E6%B5%8E%E7%94%9F%E6%B4%BB.png",浙江经济生活 +http://l.cztvcloud.com/channels/lantian/SXxiaoshan2/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江经济生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E7%BB%8F%E6%B5%8E%E7%94%9F%E6%B4%BB.png",浙江经济生活 +http://ali-vl.cztv.com/channels/lantian/channel003/360p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江经济生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E7%BB%8F%E6%B5%8E%E7%94%9F%E6%B4%BB.png",浙江经济生活 +http://ls.qingting.fm/live/1099.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江经济生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E7%BB%8F%E6%B5%8E%E7%94%9F%E6%B4%BB.png",浙江经济生活 +http://ali-m-l.cztv.com/channels/lantian/channel03/1080p.m3u8#https://ali-m-l.cztv.com/channels/lantian/channel003/1080p.m3u8#http://ali-m-l.cztv.com/channels/lantian/channel003/1080p.m3u8#http://ali-m-l.cztv.com/channels/lantian/channel03/1080p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E6%95%99%E8%82%B2.png",浙江教育 +http://ali-m-l.cztv.com/channels/lantian/channel04/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E6%95%99%E8%82%B2.png",浙江教育 +https://ali-m-l.cztv.com/channels/lantian/channel004/1080p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E6%95%99%E8%82%B2.png",浙江教育 +http://ali-vl.cztv.com/channels/lantian/channel004/360p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江民生" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E6%B0%91%E7%94%9F.png",浙江民生 +https://ali-m-l.cztv.com/channels/lantian/channel006/1080p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江民生" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E6%B0%91%E7%94%9F.png",浙江民生 +http://ali-vl.cztv.com/channels/lantian/channel006/360p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江民生" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E6%B0%91%E7%94%9F.png",浙江民生 +http://ali-m-l.cztv.com/channels/lantian/channel06/1080p.m3u8#http://ali-m-l.cztv.com/channels/lantian/channel006/1080p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E6%96%B0%E9%97%BB.png",浙江新闻 +http://zwebl02.cztv.com/live/channel071080P.m3u8?auth_key=2524708799-0-0-e3b50ca59d2c0883d5386d8bc4cdefbc +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E6%96%B0%E9%97%BB.png",浙江新闻 +http://zhfivel02.cztv.com/channel07/1080p.m3u8?auth_key=2524708799-0-0-4af48ba83e791a300595dd0b2bb30e6e +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E6%96%B0%E9%97%BB.png",浙江新闻 +http://ali-vl.cztv.com/channels/lantian/channel007/360p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E6%96%B0%E9%97%BB.png",浙江新闻 +http://ali-m-l.cztv.com/channels/lantian/channel07/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E6%96%B0%E9%97%BB.png",浙江新闻 +https://stream1.freetv.fun/zhe-jiang-xin-wen-2.ctv +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E6%96%B0%E9%97%BB.png",浙江新闻 +https://stream1.freetv.fun/zhe-jiang-xin-wen-1.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E6%96%B0%E9%97%BB.png",浙江新闻 +https://stream1.freetv.fun/zhe-jiang-xin-wen-5.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E6%96%B0%E9%97%BB.png",浙江新闻 +https://stream1.freetv.fun/zhe-jiang-xin-wen-7.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E6%96%B0%E9%97%BB.png",浙江新闻 +https://stream1.freetv.fun/zhe-jiang-xin-wen-4.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E6%96%B0%E9%97%BB.png",浙江新闻 +https://stream1.freetv.fun/7fa07158e038a9bae3747a0cb9f8e8ff1aaba32669d28d99a498716f16569c1d.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%B0%91%E5%84%BF.png",浙江少儿 +https://qiniup-m-l.cztv.com/channels/lantian/channel008/1080p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%B0%91%E5%84%BF.png",浙江少儿 +https://ct-m-l.cztv.com/channels/lantian/channel008/1080p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%B0%91%E5%84%BF.png",浙江少儿 +https://ali-m-l.cztv.com/channels/lantian/channel008/1080p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%B0%91%E5%84%BF.png",浙江少儿 +http://ali-m-l.cztv.com/channels/lantian/channel008/1080p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%B0%91%E5%84%BF.png",浙江少儿 +http://ali-vl.cztv.com/channels/lantian/channel008/360p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%B0%91%E5%84%BF.png",浙江少儿 +http://ali-m-l.cztv.com/channels/lantian/channel008/1080p.m3u8?fbl= +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%B0%91%E5%84%BF.png",浙江少儿 +https://stream1.freetv.fun/zhe-jiang-shao-er-4.ctv +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%B0%91%E5%84%BF.png",浙江少儿 +https://stream1.freetv.fun/zhe-jiang-shao-er-4.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%B0%91%E5%84%BF.png",浙江少儿 +https://stream1.freetv.fun/zhe-jiang-shao-er-6.ctv +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%B0%91%E5%84%BF.png",浙江少儿 +https://stream1.freetv.fun/zhe-jiang-shao-er-12.ctv +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="杭州综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%9D%AD%E5%B7%9E%E7%BB%BC%E5%90%88.png",杭州综合 +http://live.xmcdn.com/live/1845/64.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="杭州综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%9D%AD%E5%B7%9E%E7%BB%BC%E5%90%88.png",杭州综合 +http://goo.bkpcp.top/mg/hzzh +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="杭州综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%9D%AD%E5%B7%9E%E7%BB%BC%E5%90%88.png",杭州综合 +https://stream1.freetv.fun/hang-zhou-zong-he-4.ctv +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="杭州综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%9D%AD%E5%B7%9E%E7%BB%BC%E5%90%88.png",杭州综合 +https://stream1.freetv.fun/hang-zhou-zong-he-2.ctv +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="杭州综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%9D%AD%E5%B7%9E%E7%BB%BC%E5%90%88.png",杭州综合 +https://stream1.freetv.fun/hang-zhou-zong-he-3.ctv +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="杭州明珠" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%9D%AD%E5%B7%9E%E6%98%8E%E7%8F%A0.png",杭州明珠 +http://goo.bkpcp.top/mg/hzmz +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="杭州明珠" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%9D%AD%E5%B7%9E%E6%98%8E%E7%8F%A0.png",杭州明珠 +https://stream1.freetv.fun/hang-zhou-ming-zhu-2.ctv +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="杭州明珠" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%9D%AD%E5%B7%9E%E6%98%8E%E7%8F%A0.png",杭州明珠 +https://stream1.freetv.fun/hang-zhou-ming-zhu-4.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="杭州明珠" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%9D%AD%E5%B7%9E%E6%98%8E%E7%8F%A0.png",杭州明珠 +https://stream1.freetv.fun/hang-zhou-ming-zhu-1.ctv +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="杭州明珠" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%9D%AD%E5%B7%9E%E6%98%8E%E7%8F%A0.png",杭州明珠 +https://stream1.freetv.fun/hang-zhou-ming-zhu-2.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="杭州生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%9D%AD%E5%B7%9E%E7%94%9F%E6%B4%BB.png",杭州生活 +http://goo.bkpcp.top/mg/hzsh +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="杭州生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%9D%AD%E5%B7%9E%E7%94%9F%E6%B4%BB.png",杭州生活 +https://stream1.freetv.fun/hang-zhou-sheng-huo-2.ctv +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="杭州生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%9D%AD%E5%B7%9E%E7%94%9F%E6%B4%BB.png",杭州生活 +https://stream1.freetv.fun/hang-zhou-sheng-huo-5.ctv +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="杭州生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%9D%AD%E5%B7%9E%E7%94%9F%E6%B4%BB.png",杭州生活 +https://stream1.freetv.fun/hang-zhou-sheng-huo-3.ctv +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="杭州生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%9D%AD%E5%B7%9E%E7%94%9F%E6%B4%BB.png",杭州生活 +https://stream1.freetv.fun/hang-zhou-sheng-huo-4.ctv +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="杭州生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%9D%AD%E5%B7%9E%E7%94%9F%E6%B4%BB.png",杭州生活 +https://stream1.freetv.fun/hang-zhou-sheng-huo-1.ctv +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="杭州影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%9D%AD%E5%B7%9E%E5%BD%B1%E8%A7%86.png",杭州影视 +http://goo.bkpcp.top/mg/hzys +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="杭州影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%9D%AD%E5%B7%9E%E5%BD%B1%E8%A7%86.png",杭州影视 +https://stream1.freetv.fun/hang-zhou-ying-shi-4.ctv +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="杭州影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%9D%AD%E5%B7%9E%E5%BD%B1%E8%A7%86.png",杭州影视 +https://stream1.freetv.fun/hang-zhou-ying-shi-2.ctv +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="杭州少体" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%9D%AD%E5%B7%9E%E5%B0%91%E4%BD%93.png",杭州少体 +http://goo.bkpcp.top/mg/hzse +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="杭州导视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%9D%AD%E5%B7%9E%E5%AF%BC%E8%A7%86.png",杭州导视 +http://hwltc.tv.cdn.zj.chinamobile.com/PLTV/88888888/224/3221230469/index.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="杭州导视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%9D%AD%E5%B7%9E%E5%AF%BC%E8%A7%86.png",杭州导视 +http://[2409:8087:2801:22:100::41]/wh7f454c46tw1080302122_-1676557960/hwltc.tv.cdn.zj.chinamobile.com/PLTV/88888888/224/3221230469/index.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="宁波TV1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%81%E6%B3%A2TV1.png",宁波TV1 +http://hwltc.tv.cdn.zj.chinamobile.com/PLTV/88888888/224/3221235593/1/index.m3u8?fmt=ts2hls +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="宁波TV2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%81%E6%B3%A2TV2.png",宁波TV2 +http://hwltc.tv.cdn.zj.chinamobile.com/PLTV/88888888/224/3221235608/1/index.m3u8?fmt=ts2hls +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="宁波TV4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%81%E6%B3%A2TV4.png",宁波TV4 +http://hwltc.tv.cdn.zj.chinamobile.com/PLTV/88888888/224/3221235597/1/index.m3u8?fmt=ts2hls +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江教科" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E6%95%99%E7%A7%91.png",浙江教科 +https://ali-m-l.cztv.com/channels/lantian/channel004/1080p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江教科" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E6%95%99%E7%A7%91.png",浙江教科 +http://zwebl02.cztv.com/live/channel041080P.m3u8?auth_key=2524708799-0-0-f195b808217db133bfd648edc01e91fa +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江经济" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E7%BB%8F%E6%B5%8E.png",浙江经济 +http://zwebl02.cztv.com/live/channel031080P.m3u8?auth_key=2524708799-0-0-cc09266f8e043a6df28eb148cb488d37 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江经济" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E7%BB%8F%E6%B5%8E.png",浙江经济 +https://ali-m-l.cztv.com/channels/lantian/channel003/1080p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江经济" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E7%BB%8F%E6%B5%8E.png",浙江经济 +http://ali-m-l.cztv.com/channels/lantian/channel03/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="之江纪录" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B9%8B%E6%B1%9F%E7%BA%AA%E5%BD%95.png",之江纪录 +http://zwebl02.cztv.com/live/channel121080P.m3u8?auth_key=2524708799-0-0-c33efdd495bcdd2ddc42e7c408405037 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="之江纪录" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B9%8B%E6%B1%9F%E7%BA%AA%E5%BD%95.png",之江纪录 +http://ali-m-l.cztv.com/channels/lantian/channel12/1080p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="之江纪录" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B9%8B%E6%B1%9F%E7%BA%AA%E5%BD%95.png",之江纪录 +http://goo.bkpcp.top/mg/zjjl +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="之江纪录" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B9%8B%E6%B1%9F%E7%BA%AA%E5%BD%95.png",之江纪录 +https://ali-m-l.cztv.com/channels/lantian/channel12/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江国际" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%9B%BD%E9%99%85.png",浙江国际 +http://zwebl02.cztv.com/live/channel101080P.m3u8?auth_key=2524708799-0-0-c9473fea1da3eff0f29f4c9cf2b36519 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江国际" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%9B%BD%E9%99%85.png",浙江国际 +http://zhfivel02.cztv.com/channel10/1080p.m3u8?auth_key=2524708799-0-0-646cad31c1d94b002a325cd75475d30f +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江国际" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%9B%BD%E9%99%85.png",浙江国际 +https://ct-m-l.cztv.com/channels/lantian/channel010/1080p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江国际" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%9B%BD%E9%99%85.png",浙江国际 +https://qiniup-m-l.cztv.com/channels/lantian/channel010/1080p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江国际" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%9B%BD%E9%99%85.png",浙江国际 +https://ali-m-l.cztv.com/channels/lantian/channel010/1080p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江国际" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%9B%BD%E9%99%85.png",浙江国际 +https://stream1.freetv.fun/zhe-jiang-guo-ji-3.ctv +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江国际" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%9B%BD%E9%99%85.png",浙江国际 +https://stream1.freetv.fun/zhe-jiang-guo-ji-4.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江国际" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%9B%BD%E9%99%85.png",浙江国际 +https://stream1.freetv.fun/zhe-jiang-guo-ji-5.ctv +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江国际" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%9B%BD%E9%99%85.png",浙江国际 +https://stream1.freetv.fun/zhe-jiang-guo-ji-10.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江国际" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%9B%BD%E9%99%85.png",浙江国际 +https://stream1.freetv.fun/zhe-jiang-guo-ji-9.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="嘉兴新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%98%89%E5%85%B4%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",嘉兴新闻综合 +https://live-auth.51kandianshi.com/szgd/csztv1.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="嘉兴新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%98%89%E5%85%B4%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",嘉兴新闻综合 +http://live.zohi.tv/video/s10001-fztv-1/index.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="丽水新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%BD%E6%B0%B4%E6%96%B0%E9%97%BB.png",丽水新闻 +http://[2409:8087:2801:20:100::40]/wh7f454c46tw1217818877_228620281/hwltc.tv.cdn.zj.chinamobile.com/PLTV/88888888/224/3221235523/1/index.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="湖州公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%B7%9E%E5%85%AC%E5%85%B1.png",湖州公共 +https://stream1.freetv.fun/hu-zhou-gong-gong-3.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="湖州公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%B7%9E%E5%85%AC%E5%85%B1.png",湖州公共 +https://stream1.freetv.fun/hu-zhou-gong-gong-1.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="湖州公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%B7%9E%E5%85%AC%E5%85%B1.png",湖州公共 +https://stream1.freetv.fun/hu-zhou-gong-gong-9.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="湖州公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%B7%9E%E5%85%AC%E5%85%B1.png",湖州公共 +http://[2409:8087:2801:22:100::37]/wh7f454c46tw1308525120_718771428/hwltc.tv.cdn.zj.chinamobile.com/PLTV/88888888/224/3221235526/1/index.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江经视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E7%BB%8F%E8%A7%86.png",浙江经视 +http://ali-m-l.cztv.com/channels/lantian/channel003/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江经视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E7%BB%8F%E8%A7%86.png",浙江经视 +https://ali-m-l.cztv.com/channels/lantian/channel003/1080p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江留学" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E7%95%99%E5%AD%A6.png",浙江留学 +http://ali-vl.cztv.com/channels/lantian/channel009/360p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江留学" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E7%95%99%E5%AD%A6.png",浙江留学 +https://ali-m-l.cztv.com/channels/lantian/channel009/1080p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江民生休闲" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E6%B0%91%E7%94%9F%E4%BC%91%E9%97%B2.png",浙江民生休闲 +http://zhfivel02.cztv.com/channel06/1080p.m3u8?auth_key=2524708799-0-0-59c4fe94512c59a90316fbf17ae2fbef +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江民生休闲" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E6%B0%91%E7%94%9F%E4%BC%91%E9%97%B2.png",浙江民生休闲 +https://ali-m-l.cztv.com/channels/lantian/channel006/1080p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江民生休闲" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E6%B0%91%E7%94%9F%E4%BC%91%E9%97%B2.png",浙江民生休闲 +http://ali-vl.cztv.com/channels/lantian/channel006/360p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江民生休闲" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E6%B0%91%E7%94%9F%E4%BC%91%E9%97%B2.png",浙江民生休闲 +https://stream1.freetv.fun/zhe-jiang-min-sheng-7.ctv +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江民生休闲" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E6%B0%91%E7%94%9F%E4%BC%91%E9%97%B2.png",浙江民生休闲 +https://stream1.freetv.fun/zhe-jiang-min-sheng-5.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江民生休闲" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E6%B0%91%E7%94%9F%E4%BC%91%E9%97%B2.png",浙江民生休闲 +https://stream1.freetv.fun/zhe-jiang-min-sheng-9.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江民生休闲" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E6%B0%91%E7%94%9F%E4%BC%91%E9%97%B2.png",浙江民生休闲 +https://stream1.freetv.fun/zhe-jiang-min-sheng-1.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江民生休闲" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E6%B0%91%E7%94%9F%E4%BC%91%E9%97%B2.png",浙江民生休闲 +https://stream1.freetv.fun/zhe-jiang-min-sheng-6.ctv +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江民生休闲" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E6%B0%91%E7%94%9F%E4%BC%91%E9%97%B2.png",浙江民生休闲 +https://stream1.freetv.fun/zhe-jiang-min-sheng-xiu-xian-1.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江民生休闲" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E6%B0%91%E7%94%9F%E4%BC%91%E9%97%B2.png",浙江民生休闲 +https://stream1.freetv.fun/zhe-jiang-min-sheng-9.ctv +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江数码时代" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E6%95%B0%E7%A0%81%E6%97%B6%E4%BB%A3.png",浙江数码时代 +https://ali-m-l.cztv.com/channels/lantian/channel012/1080p.m3u8\r\n +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江教科影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E6%95%99%E7%A7%91%E5%BD%B1%E8%A7%86.png",浙江教科影视 +http://zwebl02.cztv.com/live/channel041080P.m3u8?auth_key=2524708799-0-0-f195b808217db133bfd648edc01e91fa +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江教科影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E6%95%99%E7%A7%91%E5%BD%B1%E8%A7%86.png",浙江教科影视 +http://zhfivel02.cztv.com/channel04/1080p.m3u8?auth_key=2524708799-0-0-514823d0816d4af94a9f32bd7614ed67 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江教科影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E6%95%99%E7%A7%91%E5%BD%B1%E8%A7%86.png",浙江教科影视 +http://ali-m-l.cztv.com/channels/lantian/channel04/1080p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江教科影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E6%95%99%E7%A7%91%E5%BD%B1%E8%A7%86.png",浙江教科影视 +https://ali-m-l.cztv.com/channels/lantian/channel004/1080p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江教科影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E6%95%99%E7%A7%91%E5%BD%B1%E8%A7%86.png",浙江教科影视 +http://ali-vl.cztv.com/channels/lantian/channel004/360p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江公共新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%85%AC%E5%85%B1%E6%96%B0%E9%97%BB.png",浙江公共新闻 +http://ali-m-l.cztv.com/channels/lantian/channel07/1080p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江公共新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%85%AC%E5%85%B1%E6%96%B0%E9%97%BB.png",浙江公共新闻 +https://stream1.freetv.fun/zhe-jiang-gong-gong-xin-wen-2.ctv +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江公共新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%85%AC%E5%85%B1%E6%96%B0%E9%97%BB.png",浙江公共新闻 +https://stream1.freetv.fun/zhe-jiang-gong-gong-xin-wen-1.ctv +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江公共新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%85%AC%E5%85%B1%E6%96%B0%E9%97%BB.png",浙江公共新闻 +https://stream1.freetv.fun/zhe-jiang-gong-gong-xin-wen-1.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江休闲台" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E4%BC%91%E9%97%B2%E5%8F%B0.png",浙江休闲台 +http://ali-m-l.cztv.com/channels/lantian/channel006/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江青田" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E9%9D%92%E7%94%B0.png",浙江青田 +http://l.cztvcloud.com/channels/lantian/SXqingtian1/720p.m3u8?zzhed +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江遂昌" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E9%81%82%E6%98%8C.png",浙江遂昌 +http://l.cztvcloud.com/channels/lantian/SXsuichang1/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江遂昌" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E9%81%82%E6%98%8C.png",浙江遂昌 +http://l.cztvcloud.com/channels/lantian/SXsuichang1/720p.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="诸暨新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%AF%B8%E6%9A%A8%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",诸暨新闻综合 +http://l.cztvcloud.com/channels/lantian/SXzhuji3/720p.m3u8?zzhed +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="诸暨新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%AF%B8%E6%9A%A8%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",诸暨新闻综合 +https://l.cztvcloud.com/channels/lantian/SXzhuji3/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="诸暨新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%AF%B8%E6%9A%A8%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",诸暨新闻综合 +http://l.cztvcloud.com/channels/lantian/SXzhuji3/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="龙游生活娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BE%99%E6%B8%B8%E7%94%9F%E6%B4%BB%E5%A8%B1%E4%B9%90.png",龙游生活娱乐 +https://l.cztvcloud.com/channels/lantian/SXlongyou2/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="龙游生活娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BE%99%E6%B8%B8%E7%94%9F%E6%B4%BB%E5%A8%B1%E4%B9%90.png",龙游生活娱乐 +http://l.cztvcloud.com/channels/lantian/SXlongyou2/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="龙游新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BE%99%E6%B8%B8%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",龙游新闻综合 +https://l.cztvcloud.com/channels/lantian/SXlongyou1/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="龙游新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BE%99%E6%B8%B8%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",龙游新闻综合 +http://l.cztvcloud.com/channels/lantian/SXlongyou1/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="龙泉新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BE%99%E6%B3%89%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",龙泉新闻综合 +http://l.cztvcloud.com/channels/lantian/SXlongquan1/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="龙泉新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BE%99%E6%B3%89%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",龙泉新闻综合 +http://l.cztvcloud.com/channels/lantian/SXlongquan1/720p.m3u8?zzhed&quot; +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="青田电视台" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%92%E7%94%B0%E7%94%B5%E8%A7%86%E5%8F%B0.png",青田电视台 +http://l.cztvcloud.com/channels/lantian/SXqingtian1/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="遂昌综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%81%82%E6%98%8C%E7%BB%BC%E5%90%88.png",遂昌综合 +http://l.cztvcloud.com/channels/lantian/SXsuichang1/720p.m3u8?zzhed +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="遂昌新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%81%82%E6%98%8C%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",遂昌新闻综合 +http://l.cztvcloud.com/channels/lantian/SXsuichang1/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="象山新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%B1%A1%E5%B1%B1%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",象山新闻综合 +http://l.cztvcloud.com/channels/lantian/SXxiangshan1/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="衢江新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%A1%A2%E6%B1%9F%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",衢江新闻综合 +http://l.cztvcloud.com/channels/lantian/SXqujiang1/720p.m3u8?zzhed +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="衢江新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%A1%A2%E6%B1%9F%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",衢江新闻综合 +https://stream1.freetv.fun/qu-jiang-xin-wen-zong-he-1.ctv +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="萧山生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%90%A7%E5%B1%B1%E7%94%9F%E6%B4%BB.png",萧山生活 +https://l.cztvcloud.com/channels/lantian/SXxiaoshan2/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="萧山生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%90%A7%E5%B1%B1%E7%94%9F%E6%B4%BB.png",萧山生活 +http://l.cztvcloud.com/channels/lantian/SXxiaoshan2/720p.m3u8?zzhed +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="萧山新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%90%A7%E5%B1%B1%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",萧山新闻综合 +https://l.cztvcloud.com/channels/lantian/SXxiaoshan1/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="萧山新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%90%A7%E5%B1%B1%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",萧山新闻综合 +https://stream1.freetv.fun/xiao-shan-xin-wen-zong-he-2.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="萧山新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%90%A7%E5%B1%B1%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",萧山新闻综合 +https://stream1.freetv.fun/xiao-shan-xin-wen-zong-he-9.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="萧山新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%90%A7%E5%B1%B1%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",萧山新闻综合 +https://stream1.freetv.fun/xiao-shan-xin-wen-zong-he-3.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="萧山新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%90%A7%E5%B1%B1%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",萧山新闻综合 +https://stream1.freetv.fun/xiao-shan-xin-wen-zong-he-6.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="萧山新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%90%A7%E5%B1%B1%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",萧山新闻综合 +https://stream1.freetv.fun/xiao-shan-xin-wen-zong-he-8.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="萧山新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%90%A7%E5%B1%B1%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",萧山新闻综合 +https://stream1.freetv.fun/xiao-shan-xin-wen-zong-he-1.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="萧山新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%90%A7%E5%B1%B1%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",萧山新闻综合 +https://stream1.freetv.fun/xiao-shan-xin-wen-zong-he-4.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="萧山新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%90%A7%E5%B1%B1%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",萧山新闻综合 +https://stream1.freetv.fun/xiao-shan-xin-wen-zong-he-7.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="萧山新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%90%A7%E5%B1%B1%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",萧山新闻综合 +http://l.cztvcloud.com/channels/lantian/SXxiaoshan1/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="苍南新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%8B%8D%E5%8D%97%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",苍南新闻综合 +http://l.cztvcloud.com/channels/lantian/SXcangnan1/720p.m3u8?zzhed +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="苍南新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%8B%8D%E5%8D%97%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",苍南新闻综合 +https://l.cztvcloud.com/channels/lantian/SXcangnan1/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="苍南新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%8B%8D%E5%8D%97%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",苍南新闻综合 +https://stream1.freetv.fun/cang-nan-xin-wen-zong-he-4.ctv +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="苍南新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%8B%8D%E5%8D%97%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",苍南新闻综合 +https://stream1.freetv.fun/cang-nan-xin-wen-zong-he-2.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="苍南新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%8B%8D%E5%8D%97%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",苍南新闻综合 +http://l.cztvcloud.com/channels/lantian/SXcangnan1/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="缙云综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BC%99%E4%BA%91%E7%BB%BC%E5%90%88.png",缙云综合 +http://l.cztvcloud.com/channels/lantian/SXjinyun1/720p.m3u8?zzhed +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="缙云综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BC%99%E4%BA%91%E7%BB%BC%E5%90%88.png",缙云综合 +http://l.cztvcloud.com/channels/lantian/SXjinyun1/720p.m3u8?zzhed&quot; +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="缙云新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BC%99%E4%BA%91%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",缙云新闻综合 +http://l.cztvcloud.com/channels/lantian/SXjinyun1/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="绍兴新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BB%8D%E5%85%B4%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",绍兴新闻综合 +https://stream1.freetv.fun/shao-xing-xin-wen-zong-he-4.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="绍兴新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BB%8D%E5%85%B4%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",绍兴新闻综合 +https://stream1.freetv.fun/shao-xing-xin-wen-zong-he-3.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="绍兴新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BB%8D%E5%85%B4%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",绍兴新闻综合 +https://stream1.freetv.fun/shao-xing-xin-wen-zong-he-2.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="绍兴文化影院" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BB%8D%E5%85%B4%E6%96%87%E5%8C%96%E5%BD%B1%E9%99%A2.png",绍兴文化影院 +https://stream1.freetv.fun/shao-xing-wen-hua-ying-yuan-2.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="绍兴文化影院" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BB%8D%E5%85%B4%E6%96%87%E5%8C%96%E5%BD%B1%E9%99%A2.png",绍兴文化影院 +https://stream1.freetv.fun/shao-xing-wen-hua-ying-yuan-4.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="绍兴文化影院" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BB%8D%E5%85%B4%E6%96%87%E5%8C%96%E5%BD%B1%E9%99%A2.png",绍兴文化影院 +https://stream1.freetv.fun/shao-xing-wen-hua-ying-yuan-1.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="绍兴文化影院" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BB%8D%E5%85%B4%E6%96%87%E5%8C%96%E5%BD%B1%E9%99%A2.png",绍兴文化影院 +https://stream1.freetv.fun/shao-xing-wen-hua-ying-yuan-3.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="绍兴文化影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BB%8D%E5%85%B4%E6%96%87%E5%8C%96%E5%BD%B1%E8%A7%86.png",绍兴文化影视 +https://stream1.freetv.fun/shao-xing-wen-hua-ying-shi-1.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="绍兴公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BB%8D%E5%85%B4%E5%85%AC%E5%85%B1.png",绍兴公共 +https://stream1.freetv.fun/shao-xing-gong-gong-2.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="绍兴公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BB%8D%E5%85%B4%E5%85%AC%E5%85%B1.png",绍兴公共 +https://stream1.freetv.fun/shao-xing-gong-gong-7.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="绍兴公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BB%8D%E5%85%B4%E5%85%AC%E5%85%B1.png",绍兴公共 +https://stream1.freetv.fun/shao-xing-gong-gong-1.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="绍兴公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BB%8D%E5%85%B4%E5%85%AC%E5%85%B1.png",绍兴公共 +https://stream1.freetv.fun/shao-xing-gong-gong-3.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="绍兴公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BB%8D%E5%85%B4%E5%85%AC%E5%85%B1.png",绍兴公共 +https://stream1.freetv.fun/shao-xing-gong-gong-8.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="洞头综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B4%9E%E5%A4%B4%E7%BB%BC%E5%90%88.png",洞头综合 +http://l.cztvcloud.com/channels/lantian/SXdongtou1/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="永嘉新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B0%B8%E5%98%89%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",永嘉新闻综合 +http://l.cztvcloud.com/channels/lantian/SXyongjia1/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="永嘉新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B0%B8%E5%98%89%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",永嘉新闻综合 +https://stream1.freetv.fun/yong-jia-xin-wen-zong-he-3.ctv +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="永嘉新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B0%B8%E5%98%89%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",永嘉新闻综合 +https://stream1.freetv.fun/yong-jia-xin-wen-zong-he-4.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="永嘉新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B0%B8%E5%98%89%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",永嘉新闻综合 +http://l.cztvcloud.com/channels/lantian/SXyongjia1/720p.m3u8?zzhed&quot; +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="永嘉新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B0%B8%E5%98%89%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",永嘉新闻综合 +https://stream1.freetv.fun/yong-jia-xin-wen-zong-he-1.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="永嘉新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B0%B8%E5%98%89%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",永嘉新闻综合 +http://l.cztvcloud.com/channels/lantian/SXyongjia1/720p.m3u8?zzhed +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="永嘉新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B0%B8%E5%98%89%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",永嘉新闻综合 +https://stream1.freetv.fun/yong-jia-xin-wen-zong-he-2.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="武义新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%AD%A6%E4%B9%89%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",武义新闻综合 +https://stream1.freetv.fun/wu-yi-xin-wen-zong-he-1.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="武义新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%AD%A6%E4%B9%89%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",武义新闻综合 +https://stream1.freetv.fun/wu-yi-xin-wen-zong-he-3.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="武义新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%AD%A6%E4%B9%89%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",武义新闻综合 +http://l.cztvcloud.com/channels/lantian/SXwuyi1/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="武义新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%AD%A6%E4%B9%89%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",武义新闻综合 +http://l.cztvcloud.com/channels/lantian/SXwuyi1/720p.m3u8?zzhed +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="松阳综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%9D%BE%E9%98%B3%E7%BB%BC%E5%90%88.png",松阳综合 +http://l.cztvcloud.com/channels/lantian/SXsongyang1/720p.m3u8?zzhed;http://l.cztvcloud.com/channels/lantian/SXsongyang1/720p.m3u8zzhed +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="松阳综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%9D%BE%E9%98%B3%E7%BB%BC%E5%90%88.png",松阳综合 +http://l.cztvcloud.com/channels/lantian/SXsongyang1/720p.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="松阳综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%9D%BE%E9%98%B3%E7%BB%BC%E5%90%88.png",松阳综合 +http://l.cztvcloud.com/channels/lantian/SXsongyang1/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="松阳新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%9D%BE%E9%98%B3%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",松阳新闻综合 +http://l.cztvcloud.com/channels/lantian/SXsongyang1/720p.m3u8?fbl= +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="普陀电视台" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%99%AE%E9%99%80%E7%94%B5%E8%A7%86%E5%8F%B0.png",普陀电视台 +http://l.cztvcloud.com/channels/lantian/SXputuo1/720p.m3u8?zzhed#http://l.cztvcloud.com/channels/lantian/SXputuo1/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="普陀电视台" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%99%AE%E9%99%80%E7%94%B5%E8%A7%86%E5%8F%B0.png",普陀电视台 +https://l.cztvcloud.com/channels/lantian/SXputuo1/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="普陀新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%99%AE%E9%99%80%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",普陀新闻综合 +http://l.cztvcloud.com/channels/lantian/SXputuo1/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="普陀新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%99%AE%E9%99%80%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",普陀新闻综合 +http://l.cztvcloud.com/channels/lantian/SXputuo1/720p.m3u8?zzhed +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="新昌生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E6%98%8C%E7%94%9F%E6%B4%BB.png",新昌生活 +http://l.cztvcloud.com/channels/lantian/SXxinchang2/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="新昌新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E6%98%8C%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",新昌新闻综合 +https://l.cztvcloud.com/channels/lantian/SXxinchang1/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="新昌新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E6%98%8C%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",新昌新闻综合 +http://l.cztvcloud.com/channels/lantian/SXxinchang1/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="新昌新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E6%98%8C%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",新昌新闻综合 +https://stream1.freetv.fun/xin-chang-xin-wen-zong-he-6.ctv +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="新昌新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E6%98%8C%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",新昌新闻综合 +https://stream1.freetv.fun/xin-chang-xin-wen-zong-he-5.ctv +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="新昌新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E6%98%8C%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",新昌新闻综合 +https://stream1.freetv.fun/xin-chang-xin-wen-zong-he-1.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="新昌新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E6%98%8C%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",新昌新闻综合 +https://stream1.freetv.fun/xin-chang-xin-wen-zong-he-4.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="文成综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%87%E6%88%90%E7%BB%BC%E5%90%88.png",文成综合 +http://l.cztvcloud.com/channels/lantian/SXwencheng1/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="文成综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%87%E6%88%90%E7%BB%BC%E5%90%88.png",文成综合 +http://l.cztvcloud.com/channels/lantian/SXwencheng1/720p.m3u8?zzhed +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="文成新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%87%E6%88%90%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",文成新闻综合 +http://l.cztvcloud.com/channels/lantian/SXwencheng1/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="开化新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BC%80%E5%8C%96%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",开化新闻综合 +https://stream1.freetv.fun/kai-hua-xin-wen-zong-he-2.ctv +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="开化新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BC%80%E5%8C%96%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",开化新闻综合 +http://l.cztvcloud.com/channels/lantian/SXkaihua1/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="开化国家公园" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BC%80%E5%8C%96%E5%9B%BD%E5%AE%B6%E5%85%AC%E5%9B%AD.png",开化国家公园 +http://l.cztvcloud.com/channels/lantian/SXkaihua2/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="庆元综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BA%86%E5%85%83%E7%BB%BC%E5%90%88.png",庆元综合 +http://l.cztvcloud.com/channels/lantian/SXqingyuan1/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="庆元综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BA%86%E5%85%83%E7%BB%BC%E5%90%88.png",庆元综合 +http://l.cztvcloud.com/channels/lantian/SXqingyuan1/720p.m3u8?zzhed +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="庆元综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BA%86%E5%85%83%E7%BB%BC%E5%90%88.png",庆元综合 +http://l.cztvcloud.com/channels/lantian/SXqingyuan1/720p.m3u8?fbl= +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="庆元综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BA%86%E5%85%83%E7%BB%BC%E5%90%88.png",庆元综合 +http://l.cztvcloud.com/channels/lantian/SXqingyuan1/720p.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="庆元新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BA%86%E5%85%83%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",庆元新闻综合 +http://l.cztvcloud.com/channels/lantian/SXqingyuan1/720p.m3u8?fbl= +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="平湖民生休闲" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%B3%E6%B9%96%E6%B0%91%E7%94%9F%E4%BC%91%E9%97%B2.png",平湖民生休闲 +http://l.cztvcloud.com/channels/lantian/SXpinghu2/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="平湖新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%B3%E6%B9%96%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",平湖新闻综合 +https://stream1.freetv.fun/ping-hu-xin-wen-zong-he-5.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="平湖新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%B3%E6%B9%96%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",平湖新闻综合 +https://stream1.freetv.fun/ping-hu-xin-wen-zong-he-2.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="平湖新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%B3%E6%B9%96%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",平湖新闻综合 +https://stream1.freetv.fun/ping-hu-xin-wen-zong-he-1.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="平湖新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%B3%E6%B9%96%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",平湖新闻综合 +https://stream1.freetv.fun/ping-hu-xin-wen-zong-he-3.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="平湖新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%B3%E6%B9%96%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",平湖新闻综合 +http://l.cztvcloud.com/channels/lantian/SXpinghu1/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="嵊泗综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B5%8A%E6%B3%97%E7%BB%BC%E5%90%88.png",嵊泗综合 +http://goo.bkpcp.top/mg/ssxwzh +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="嵊泗综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B5%8A%E6%B3%97%E7%BB%BC%E5%90%88.png",嵊泗综合 +http://l.cztvcloud.com/channels/lantian/SXshengsi1/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="嵊泗综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B5%8A%E6%B3%97%E7%BB%BC%E5%90%88.png",嵊泗综合 +https://stream1.freetv.fun/sheng-zhou-xin-wen-zong-he-2.ctv +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="嵊泗综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B5%8A%E6%B3%97%E7%BB%BC%E5%90%88.png",嵊泗综合 +https://stream1.freetv.fun/sheng-zhou-xin-wen-zong-he-3.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="嵊泗综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B5%8A%E6%B3%97%E7%BB%BC%E5%90%88.png",嵊泗综合 +http://l.cztvcloud.com/channels/lantian/SXshengzhou1/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="嵊泗新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B5%8A%E6%B3%97%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",嵊泗新闻综合 +http://l.cztvcloud.com/channels/lantian/SXshengsi1/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="兰溪新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%85%B0%E6%BA%AA%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",兰溪新闻综合 +https://stream1.freetv.fun/lan-xi-xin-wen-zong-he-1.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="兰溪新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%85%B0%E6%BA%AA%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",兰溪新闻综合 +https://stream1.freetv.fun/lan-xi-xin-wen-zong-he-3.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="兰溪新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%85%B0%E6%BA%AA%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",兰溪新闻综合 +http://l.cztvcloud.com/channels/lantian/SXlanxi1/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="兰溪新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%85%B0%E6%BA%AA%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",兰溪新闻综合 +http://l.cztvcloud.com/channels/lantian/SXlanxi1/720p.m3u8?zzhed +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="余杭综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BD%99%E6%9D%AD%E7%BB%BC%E5%90%88.png",余杭综合 +http://l.cztvcloud.com/channels/lantian/SXyuhang1/720p.m3u8?cWlkPSZzPTg3OWMwYmMyZDMzYTFhZGY3NDQxMjgyYTg1MmUzNTY0JmVzPTE3MDY2Nzc4NzMmdXVpZD0yMjdiY2MzNGNiNGY0MThlYjRiY2IxYzcwNmZjODNkMS02NzQ3NDY2NyZ2PTImYXM9MCZjZG5leF9pZD10eF9waG9uZV9saXZl +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="余杭综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BD%99%E6%9D%AD%E7%BB%BC%E5%90%88.png",余杭综合 +http://l.cztvcloud.com/channels/lantian/SXyuhang1/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="余杭未来E" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BD%99%E6%9D%AD%E6%9C%AA%E6%9D%A5E.png",余杭未来E +http://l.cztvcloud.com/channels/lantian/SXyuhang3/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="余姚综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BD%99%E5%A7%9A%E7%BB%BC%E5%90%88.png",余姚综合 +http://l.cztvcloud.com/channels/lantian/SXyuyao1/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="余姚综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BD%99%E5%A7%9A%E7%BB%BC%E5%90%88.png",余姚综合 +https://l.cztvcloud.com/channels/lantian/SXyuyao1/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="余姚综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BD%99%E5%A7%9A%E7%BB%BC%E5%90%88.png",余姚综合 +http://l.cztvcloud.com/channels/lantian/SXyuyao1/720p.m3u8?cWlkPSZzPTg3OWMwYmMyZDMzYTFhZGY3NDQxMjgyYTg1MmUzNTY0JmVzPTE3MDY2Nzc4NzMmdXVpZD0yMjdiY2MzNGNiNGY0MThlYjRiY2IxYzcwNmZjODNkMS02NzQ3NDY2NyZ2PTImYXM9MCZjZG5leF9pZD10eF9waG9uZV9saXZl +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="余姚综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BD%99%E5%A7%9A%E7%BB%BC%E5%90%88.png",余姚综合 +http://l.cztvcloud.com/channels/lantian/SXyuyao1/720p.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="余姚新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BD%99%E5%A7%9A%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",余姚新闻综合 +https://l.cztvcloud.com/channels/lantian/SXyuyao1/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="余姚新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BD%99%E5%A7%9A%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",余姚新闻综合 +http://l.cztvcloud.com/channels/lantian/SXyuyao1/720p.m3u8?zzhed +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="余姚姚江文化" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BD%99%E5%A7%9A%E5%A7%9A%E6%B1%9F%E6%96%87%E5%8C%96.png",余姚姚江文化 +https://l.cztvcloud.com/channels/lantian/SXyuyao3/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="余姚姚江文化" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BD%99%E5%A7%9A%E5%A7%9A%E6%B1%9F%E6%96%87%E5%8C%96.png",余姚姚江文化 +http://l.cztvcloud.com/channels/lantian/SXyuyao3/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="余姚姚江文化" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BD%99%E5%A7%9A%E5%A7%9A%E6%B1%9F%E6%96%87%E5%8C%96.png",余姚姚江文化 +https://l.cztvcloud.com/channels/lantian/SXyuyao2/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="余姚姚江文化" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BD%99%E5%A7%9A%E5%A7%9A%E6%B1%9F%E6%96%87%E5%8C%96.png",余姚姚江文化 +http://l.cztvcloud.com/channels/lantian/SXyuyao3/720p.m3u8?zzhed +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="余姚姚江文化" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BD%99%E5%A7%9A%E5%A7%9A%E6%B1%9F%E6%96%87%E5%8C%96.png",余姚姚江文化 +http://l.cztvcloud.com/channels/lantian/SXyuyao3/720p.m3u8zzhed +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="云和新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E5%92%8C%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",云和新闻综合 +http://l.cztvcloud.com/channels/lantian/SXyunhe1/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="中国蓝新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%AD%E5%9B%BD%E8%93%9D%E6%96%B0%E9%97%BB.png",中国蓝新闻 +http://ali-m-l.cztv.com/channels/lantian/channel009/1080p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="中国蓝新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%AD%E5%9B%BD%E8%93%9D%E6%96%B0%E9%97%BB.png",中国蓝新闻 +https://ali-m-l.cztv.com/channels/lantian/channel009/1080p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="东阳影视生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E9%98%B3%E5%BD%B1%E8%A7%86%E7%94%9F%E6%B4%BB.png",东阳影视生活 +http://l.cztvcloud.com/channels/lantian/SXdongyang1/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="上虞新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E8%99%9E%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",上虞新闻综合 +http://l.cztvcloud.com/channels/lantian/SXshangyu1/720p.m3u8?zzhed +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="上虞新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E8%99%9E%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",上虞新闻综合 +http://l.cztvcloud.com/channels/lantian/SXshangyu1/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="上虞新商都" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E8%99%9E%E6%96%B0%E5%95%86%E9%83%BD.png",上虞新商都 +http://l.cztvcloud.com/channels/lantian/SXshangyu3/720p.m3u8?zzhed\r\n +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="上虞新商都" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E8%99%9E%E6%96%B0%E5%95%86%E9%83%BD.png",上虞新商都 +https://stream1.freetv.fun/shang-yu-xin-shang-du-1.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="上虞新商都" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E8%99%9E%E6%96%B0%E5%95%86%E9%83%BD.png",上虞新商都 +https://stream1.freetv.fun/shang-yu-xin-shang-du-5.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="上虞新商都" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E8%99%9E%E6%96%B0%E5%95%86%E9%83%BD.png",上虞新商都 +https://stream1.freetv.fun/shang-yu-xin-shang-du-3.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="上虞新商都" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E8%99%9E%E6%96%B0%E5%95%86%E9%83%BD.png",上虞新商都 +https://stream1.freetv.fun/shang-yu-xin-shang-du-6.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="上虞新商都" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E8%99%9E%E6%96%B0%E5%95%86%E9%83%BD.png",上虞新商都 +http://l.cztvcloud.com/channels/lantian/SXshangyu3/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="上虞新商都" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E8%99%9E%E6%96%B0%E5%95%86%E9%83%BD.png",上虞新商都 +https://stream1.freetv.fun/shang-yu-xin-shang-du-2.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="上虞新商都" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E8%99%9E%E6%96%B0%E5%95%86%E9%83%BD.png",上虞新商都 +https://stream1.freetv.fun/shang-yu-xin-shang-du-4.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="上虞文化影院" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E8%99%9E%E6%96%87%E5%8C%96%E5%BD%B1%E9%99%A2.png",上虞文化影院 +http://l.cztvcloud.com/channels/lantian/SXshangyu2/720p.m3u8?zzhed;http://l.cztvcloud.com/channels/lantian/SXshangyu2/720p.m3u8zzhed +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="上虞文化影院" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E8%99%9E%E6%96%87%E5%8C%96%E5%BD%B1%E9%99%A2.png",上虞文化影院 +http://l.cztvcloud.com/channels/lantian/SXshangyu2/720p.m3u8?zzhed +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="上虞文化影院" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E8%99%9E%E6%96%87%E5%8C%96%E5%BD%B1%E9%99%A2.png",上虞文化影院 +https://stream1.freetv.fun/shang-yu-wen-hua-ying-yuan-3.ctv +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="上虞文化影院" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E8%99%9E%E6%96%87%E5%8C%96%E5%BD%B1%E9%99%A2.png",上虞文化影院 +https://stream1.freetv.fun/shang-yu-wen-hua-ying-yuan-4.ctv +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="上虞文化影院" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E8%99%9E%E6%96%87%E5%8C%96%E5%BD%B1%E9%99%A2.png",上虞文化影院 +http://l.cztvcloud.com/channels/lantian/SXshangyu2/720p.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="上虞文化影院" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E8%99%9E%E6%96%87%E5%8C%96%E5%BD%B1%E9%99%A2.png",上虞文化影院 +https://stream1.freetv.fun/shang-yu-wen-hua-ying-yuan-2.ctv +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="上虞文化影院" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E8%99%9E%E6%96%87%E5%8C%96%E5%BD%B1%E9%99%A2.png",上虞文化影院 +https://stream1.freetv.fun/shang-yu-wen-hua-ying-yuan-1.m3u8 +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="上虞文化影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E8%99%9E%E6%96%87%E5%8C%96%E5%BD%B1%E8%A7%86.png",上虞文化影视 +http://l.cztvcloud.com/channels/lantian/SXshangyu2/720p.m3u8 +#EXTINF:-1 group-title="☘️北京频道" tvg-name="北京卡酷少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E5%8D%A1%E9%85%B7%E5%B0%91%E5%84%BF.png",北京卡酷少儿 +http://111.193.239.245:9999/rtp/239.3.1.189:8000 +#EXTINF:-1 group-title="☘️北京频道" tvg-name="北京卡酷少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E5%8D%A1%E9%85%B7%E5%B0%91%E5%84%BF.png",北京卡酷少儿 +http://yc.myds.me:35455/itv/5000000011000265008.m3u8?cdn=bestzb +#EXTINF:-1 group-title="☘️北京频道" tvg-name="北京卡酷少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E5%8D%A1%E9%85%B7%E5%B0%91%E5%84%BF.png",北京卡酷少儿 +http://[2409:8087:3c02:0021:0000:0001:0000:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00000661/index.m3u8?IASHttpSessionId= +#EXTINF:-1 group-title="☘️北京频道" tvg-name="北京卡酷少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E5%8D%A1%E9%85%B7%E5%B0%91%E5%84%BF.png",北京卡酷少儿 +http://ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225654/index.m3u8 +#EXTINF:-1 group-title="☘️北京频道" tvg-name="北京卡酷少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E5%8D%A1%E9%85%B7%E5%B0%91%E5%84%BF.png",北京卡酷少儿 +http://judy.livednow.dpdns.org/beijing/55skfjq618b9kcq9tfjr5qllb7r.m3u8?auth= +#EXTINF:-1 group-title="☘️北京频道" tvg-name="北京卡酷少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E5%8D%A1%E9%85%B7%E5%B0%91%E5%84%BF.png",北京卡酷少儿 +http://brtv.chinamm.cn/?id=bjkk +#EXTINF:-1 group-title="☘️北京频道" tvg-name="北京卡酷少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E5%8D%A1%E9%85%B7%E5%B0%91%E5%84%BF.png",北京卡酷少儿 +http://iptv.huuc.edu.cn/hls/btv10hd.m3u8 +#EXTINF:-1 group-title="☘️北京频道" tvg-name="北京卡酷少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E5%8D%A1%E9%85%B7%E5%B0%91%E5%84%BF.png",北京卡酷少儿 +https://iptv.mydiver.eu.org/live/encrypted/YTk0ZGY4NDllYjkzY2JjMTc4NzE0ZmRkNDUyMDIyNWI6NmVlN2NjM2U4MTAzYWZmOWI3OTViZjViOTMwOTkxZDVlYWU0MWEyYmVjMjdjNGVjYmZiMTEwM2E5ODllOTljMGRkMWI5MjIzYzRkMDA1ZTllYTQ2ZmRlZDk0ZTA0MmI2YmMyZDgyNzgwNjA0ODVhZjQ2MTRlZTg5ZTIwY2M2NDE1MTVlZGQ3OTM4Njc3OWZmZjZkNWVjMWY1ZWY3NGUyMmIyZmFkOGRjMGZhOTkzNDViYzE1M2M5YTFiZDIxZmMxNzAwNjRkNmQxYTBiZWYzYTczZDc3ODc3NzA3NjYzYWZlNDljOTNkODA2M2VhZDc3NjBjNDQwMzNjNTU1MzU5Y2FmYzFjMjU0ODIyNDgwNTI2NjY3ZDZmZjg1YzJmYzE1ZDBhZmQwMTMxNWUxZjg1ZmI1NTc4NDg3ZDU4ZTc2NzM2OWI4NzQ4NGJkNzYxODg5NGQyOTdkZTk4ZjVjMzA2Nzk5YjA5OGJiNGQ5NDU5N2E4YjRjYmYyYzM3ZDU1ZDQwYWQwMjdjOTUxNzcyMjFkYWMxOTZiZGM5YmQ2YWY0OWE?username=tg_vnpu89z4 +#EXTINF:-1 group-title="☘️北京频道" tvg-name="北京卡酷少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E5%8D%A1%E9%85%B7%E5%B0%91%E5%84%BF.png",北京卡酷少儿 +https://iptv.mydiver.eu.org/live/encrypted/YzQ3YjNmZTAyYjE1YjVkYzJhMWY3Y2MxOGNmZTA5Y2U6YzU3MDYxYTQ1MzE0M2QzMjViMjU1MzVhNDcxZjA5OGIwNmZhOGI5ZDY1NGY2OWNkMTgyOGFjOGUxNzdmYzMxMmVjOTM2ZjQ1N2Q4ZTdhOWYxNmViMGFjZjg1ZjBiNWRlZTY4NmJjNDg1ZTUyNmMzMWFhNDI4NWNjYTVmYTllM2EzYzUzMzBhNTg1MDZhOGI5YjAwZDI3ZWJjMjNhM2FmMzA0ZGEwZDI1MmJkOGQ4MzhkOTBiNmFmNDRlZDFiMmUyMjFiZWZkMTExOTdhNGM2ZjBmYzhjMTI0NWRlNjdiNzVkMzJjYWJjYWVjMTJhMDZkMGZiNWI4MjRjMjg2ZWE2NTJjZmM1ZDBiOWZhNDcwM2E2M2Y2MjE1ZDAwODFiZTJkZjk0ZmM3YjBiM2E4NjFjYWMxMjkwMDBhZmNiNjZkMjZkNGE3ZTdhOWNjZjQyMzI2YTkxZWExOTU4M2JlOGM5NzU0ZmI4MzczMjhhNGEzNzg2MTQ5Y2Q1YWZhNDI4ZmE2NzQ0YzkwYzhmYzNiZTE4OTA5NWYxOTc1NWYzNjJkMDU?username=tg_vnpu89z4 +#EXTINF:-1 group-title="☘️北京频道" tvg-name="北京新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E6%96%B0%E9%97%BB.png",北京新闻 +http://satellitepull.cnr.cn/live/wxbjxwgb/playlist.m3u8 +#EXTINF:-1 group-title="☘️北京频道" tvg-name="北京新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E6%96%B0%E9%97%BB.png",北京新闻 +https://satellitepull.cnr.cn/live/wxbjxwgb/playlist.m3u8 +#EXTINF:-1 group-title="☘️北京频道" tvg-name="北京新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E6%96%B0%E9%97%BB.png",北京新闻 +http://live.xmcdn.com/live/91/64.m3u8 +#EXTINF:-1 group-title="☘️北京频道" tvg-name="北京新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E6%96%B0%E9%97%BB.png",北京新闻 +https://ls.qingting.fm/live/339/64k.m3u8 +#EXTINF:-1 group-title="☘️北京频道" tvg-name="北京新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E6%96%B0%E9%97%BB.png",北京新闻 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226437/1.m3u8 +#EXTINF:-1 group-title="☘️北京频道" tvg-name="北京新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E6%96%B0%E9%97%BB.png",北京新闻 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226512/1.m3u8 +#EXTINF:-1 group-title="☘️北京频道" tvg-name="北京新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E6%96%B0%E9%97%BB.png",北京新闻 +http://dsj.motem.top:8880/bptv/10000100000000050000000003870780.m3u8 +#EXTINF:-1 group-title="☘️北京频道" tvg-name="北京新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E6%96%B0%E9%97%BB.png",北京新闻 +http://iptv.huuc.edu.cn/hls/btv9hd.m3u8 +#EXTINF:-1 group-title="☘️北京频道" tvg-name="北京新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E6%96%B0%E9%97%BB.png",北京新闻 +http://nas.suntao.online:35455/bptv/10000100000000050000000003870780.m3u8 +#EXTINF:-1 group-title="☘️北京频道" tvg-name="北京新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E6%96%B0%E9%97%BB.png",北京新闻 +http://yc.myds.me:35455/bptv/10000100000000050000000003870780.m3u8 +#EXTINF:-1 group-title="☘️北京频道" tvg-name="北京生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E7%94%9F%E6%B4%BB.png",北京生活 +https://wstvcpudali.v.myalicdn.com/wstvcpud/udrmbtv7_1/index.m3u8?adapt=0&BR=audio +#EXTINF:-1 group-title="☘️北京频道" tvg-name="北京生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E7%94%9F%E6%B4%BB.png",北京生活 +http://111.193.239.245:9999/rtp/239.3.1.117:8000 +#EXTINF:-1 group-title="☘️北京频道" tvg-name="北京生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E7%94%9F%E6%B4%BB.png",北京生活 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226514/1.m3u8 +#EXTINF:-1 group-title="☘️北京频道" tvg-name="北京生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E7%94%9F%E6%B4%BB.png",北京生活 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226561/1.m3u8 +#EXTINF:-1 group-title="☘️北京频道" tvg-name="北京生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E7%94%9F%E6%B4%BB.png",北京生活 +http://ikuai.zlsip.top:4022/rtp/239.3.1.117:8000 +#EXTINF:-1 group-title="☘️北京频道" tvg-name="北京生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E7%94%9F%E6%B4%BB.png",北京生活 +http://[2409:8087:1:20:20::2a]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226514/1.m3u8 +#EXTINF:-1 group-title="☘️北京频道" tvg-name="北京生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E7%94%9F%E6%B4%BB.png",北京生活 +https://migu1.188766.xyz/?migutoken=5b46917ef0b3247921d45b3b63f4c873&id=%E5%8C%97%E4%BA%ACi%E7%94%9F%E6%B4%BB&type=bj +#EXTINF:-1 group-title="☘️北京频道" tvg-name="北京生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E7%94%9F%E6%B4%BB.png",北京生活 +http://otttv.bj.chinamobile.com/PLTV/88888888/224/3221226514/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7Es-PVNcPJsjr_oBdcXGT40g%7E_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNMWvZ0r6eMXcXJOGrCpJiq1%2CEND +#EXTINF:-1 group-title="☘️北京频道" tvg-name="北京生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E7%94%9F%E6%B4%BB.png",北京生活 +https://migu1.188766.xyz/?migutoken=c673ebc1f27b25b0bfd098ea854722bf&id=%E5%8C%97%E4%BA%ACi%E7%94%9F%E6%B4%BB&type=bj +#EXTINF:-1 group-title="☘️北京频道" tvg-name="北京生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E7%94%9F%E6%B4%BB.png",北京生活 +https://migu1.188766.xyz/?migutoken=2a838e272a0ca0393b5b8d6e69fc36bb&id=%E5%8C%97%E4%BA%ACi%E7%94%9F%E6%B4%BB&type=bj +#EXTINF:-1 group-title="☘️北京频道" tvg-name="北京科教" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E7%A7%91%E6%95%99.png",北京科教 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225729/index.m3u8 +#EXTINF:-1 group-title="☘️北京频道" tvg-name="北京财经" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E8%B4%A2%E7%BB%8F.png",北京财经 +https://wstvcpudali.v.myalicdn.com/wstvcpud/udrmbtv5_1/index.m3u8?adapt=0&BR=audio +#EXTINF:-1 group-title="☘️北京频道" tvg-name="北京财经" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E8%B4%A2%E7%BB%8F.png",北京财经 +http://111.193.239.245:9999/rtp/239.3.1.116:8000 +#EXTINF:-1 group-title="☘️北京频道" tvg-name="北京财经" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E8%B4%A2%E7%BB%8F.png",北京财经 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226516/1.m3u8 +#EXTINF:-1 group-title="☘️北京频道" tvg-name="北京财经" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E8%B4%A2%E7%BB%8F.png",北京财经 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226560/1.m3u8 +#EXTINF:-1 group-title="☘️北京频道" tvg-name="北京财经" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E8%B4%A2%E7%BB%8F.png",北京财经 +http://ikuai.zlsip.top:4022/rtp/239.3.1.116:8000 +#EXTINF:-1 group-title="☘️北京频道" tvg-name="北京财经" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E8%B4%A2%E7%BB%8F.png",北京财经 +http://[2409:8087:1:20:20::2a]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226516/1.m3u8 +#EXTINF:-1 group-title="☘️北京频道" tvg-name="北京财经" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E8%B4%A2%E7%BB%8F.png",北京财经 +https://migu1.188766.xyz/?migutoken=43f393c66cb7544bab69d98781194e23&id=%E5%8C%97%E4%BA%AC%E8%B4%A2%E7%BB%8F&type=bj +#EXTINF:-1 group-title="☘️北京频道" tvg-name="北京财经" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E8%B4%A2%E7%BB%8F.png",北京财经 +http://otttv.bj.chinamobile.com/PLTV/88888888/224/3221226516/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7Eh9_SEkmWeMdS1TMnIILZgg%7E_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNPIiicEW7OIvk1s-X-PXHqO%2CEND +#EXTINF:-1 group-title="☘️北京频道" tvg-name="北京财经" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E8%B4%A2%E7%BB%8F.png",北京财经 +https://migu1.188766.xyz/?migutoken=aad5c94ec1bcf6133572eeafb01a7876&id=%E5%8C%97%E4%BA%AC%E8%B4%A2%E7%BB%8F&type=bj +#EXTINF:-1 group-title="☘️北京频道" tvg-name="北京财经" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E8%B4%A2%E7%BB%8F.png",北京财经 +https://migu1.188766.xyz/?migutoken=dcfce020971b750a63915a321f5af985&id=%E5%8C%97%E4%BA%AC%E8%B4%A2%E7%BB%8F&type=bj +#EXTINF:-1 group-title="☘️上海频道" tvg-name="七彩戏剧" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%83%E5%BD%A9%E6%88%8F%E5%89%A7.png",七彩戏剧 +http://php.jdshipin.com/itv6s.php?cid=bestzb&id=5000000011000031116 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="七彩戏剧" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%83%E5%BD%A9%E6%88%8F%E5%89%A7.png",七彩戏剧 +http://z.b.bkpcp.top/m.php?id=qcxj +#EXTINF:-1 group-title="☘️上海频道" tvg-name="七彩戏剧" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%83%E5%BD%A9%E6%88%8F%E5%89%A7.png",七彩戏剧 +http://[2409:8087:5e08:24::11]:6610/000000001000/2000000002000000010/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000010&IASHttpSessionId=OTT19019320240419154124000281 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="七彩戏剧" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%83%E5%BD%A9%E6%88%8F%E5%89%A7.png",七彩戏剧 +http://tv.scjyhd.com:4022/udp/239.10.0.128:5140 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="上海外语" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E6%B5%B7%E5%A4%96%E8%AF%AD.png",上海外语 +http://z.b.bkpcp.top/m.php?id=shics +#EXTINF:-1 group-title="☘️上海频道" tvg-name="上海外语" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E6%B5%B7%E5%A4%96%E8%AF%AD.png",上海外语 +http://[2409:8087:5e00:24::029]:6610/000000001000/2000000002000000001/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000001&IASHttpSessionId=OTT19019320240419154124000281 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="上海外语" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E6%B5%B7%E5%A4%96%E8%AF%AD.png",上海外语 +https://live.lalifeier.eu.org/kankanews/shics.m3u8?t=1746307365&key=5923d8473fb7e7c254f421fd5c26ed51 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="上海外语" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E6%B5%B7%E5%A4%96%E8%AF%AD.png",上海外语 +http://[2409:8087:5e08:24::11]:6610/000000001000/2000000002000000001/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000001&IASHttpSessionId=OTT19019320240419154124000281 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="上海外语" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E6%B5%B7%E5%A4%96%E8%AF%AD.png",上海外语 +https://live.lalifeier.eu.org/kankanews/shics.m3u8?t=1746739480&key=e124ae7dcf72c2192fa201c4f288958c +#EXTINF:-1 group-title="☘️上海频道" tvg-name="上海外语" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E6%B5%B7%E5%A4%96%E8%AF%AD.png",上海外语 +https://live.lalifeier.eu.org/kankanews/shics.m3u8?t=1746782860&key=3b035b12fc8ce4fff802fcca5d93d8cd +#EXTINF:-1 group-title="☘️上海频道" tvg-name="上海外语" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E6%B5%B7%E5%A4%96%E8%AF%AD.png",上海外语 +https://live.lalifeier.eu.org/kankanews/shics.m3u8?t=1746825793&key=5e4720b3ea650a8d6d89c069af22a19e +#EXTINF:-1 group-title="☘️上海频道" tvg-name="上海外语" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E6%B5%B7%E5%A4%96%E8%AF%AD.png",上海外语 +https://live.lalifeier.eu.org/kankanews/shics.m3u8?t=1746894586&key=d9d473cd056dbb0da2147f8f7fed61bf +#EXTINF:-1 group-title="☘️上海频道" tvg-name="上海外语" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E6%B5%B7%E5%A4%96%E8%AF%AD.png",上海外语 +https://live.lalifeier.eu.org/kankanews/shics.m3u8?t=1746912103&key=016d350423a6334a70d36c8fa5443889 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="上海外语" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E6%B5%B7%E5%A4%96%E8%AF%AD.png",上海外语 +https://live.lalifeier.eu.org/kankanews/shics.m3u8?t=1746955518&key=22a2fbe89a1054a678c1579b1fdb66ed +#EXTINF:-1 group-title="☘️上海频道" tvg-name="上海教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E6%B5%B7%E6%95%99%E8%82%B2.png",上海教育 +http://sh.tonytuya.xyz:4022/udp/239.45.0.13:5140 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="上海教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E6%B5%B7%E6%95%99%E8%82%B2.png",上海教育 +http://[2409:8087:1e03:21::42]:6610/cms001/ch00000090990000001268/index.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="上海教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E6%B5%B7%E6%95%99%E8%82%B2.png",上海教育 +http://[2409:8087:1e03:21::2]:6060/cms001/ch00000090990000001268/index.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="上海教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E6%B5%B7%E6%95%99%E8%82%B2.png",上海教育 +http://[2409:8087:1e04:21::102]:6060/cms001/ch00000090990000001268/1.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="上海教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E6%B5%B7%E6%95%99%E8%82%B2.png",上海教育 +http://[2409:8087:1e03:21::2]:6060/cms001/ch00000090990000001268/index.m3u8#http://[2409:8087:1e03:21::2]:6060/cms001/ch00000090990000001268/index.m3u8?#http://[2409:8087:1e03:21::42]:6610/cms001/ch00000090990000001268/index.m3u8?#http://[2409:8087:1e04:21::102]:6060/cms001/ch00000090990000001268/1.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="上海教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E6%B5%B7%E6%95%99%E8%82%B2.png",上海教育 +https://live.metshop.top/bestv.php?id=setvhd/8000000 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="上海教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E6%B5%B7%E6%95%99%E8%82%B2.png",上海教育 +http://miqlin.cyou:8888/udp/233.18.204.63:5140 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="上海新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E6%B5%B7%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",上海新闻综合 +https://live.lalifeier.eu.org/kankanews/shxwzh.m3u8?t=1746725062&key=56643e3700766a075fb5c6cc622391f2 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="上海新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E6%B5%B7%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",上海新闻综合 +https://live.lalifeier.eu.org/kankanews/shxwzh.m3u8?t=1746739480&key=e002358e34faf2e79bd313551cc3b9ba +#EXTINF:-1 group-title="☘️上海频道" tvg-name="上海新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E6%B5%B7%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",上海新闻综合 +https://live.lalifeier.eu.org/kankanews/shxwzh.m3u8?t=1746775525&key=9a01d673793cd11f5e165d354b388c0c +#EXTINF:-1 group-title="☘️上海频道" tvg-name="上海新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E6%B5%B7%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",上海新闻综合 +https://live.lalifeier.eu.org/kankanews/shxwzh.m3u8?t=1746782860&key=bf2f8d4b44860f34e30d0687e7036008 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="上海新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E6%B5%B7%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",上海新闻综合 +https://live.lalifeier.eu.org/kankanews/shxwzh.m3u8?t=1746811400&key=2de3909b0ec5beb97c700068f3deb787 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="上海新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E6%B5%B7%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",上海新闻综合 +https://live.lalifeier.eu.org/kankanews/shxwzh.m3u8?t=1746825793&key=0fa7c4b14305d6d41cf880b8adcd9158 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="上海新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E6%B5%B7%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",上海新闻综合 +https://live.lalifeier.eu.org/kankanews/shxwzh.m3u8?t=1746861745&key=27cc899461ee8ecaf8423306b7769d82 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="上海新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E6%B5%B7%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",上海新闻综合 +https://live.lalifeier.eu.org/kankanews/shxwzh.m3u8?t=1746894586&key=a9245cbcf9c2737a3db655cab58a2a90 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="上海新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E6%B5%B7%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",上海新闻综合 +https://live.lalifeier.eu.org/kankanews/shxwzh.m3u8?t=1746897711&key=8022ffd50b555f38737f1cc3f873a270 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="上海新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E6%B5%B7%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",上海新闻综合 +https://live.lalifeier.eu.org/kankanews/shxwzh.m3u8?t=1746912103&key=b857d2311d516ee48214c550ac1abced +#EXTINF:-1 group-title="☘️上海频道" tvg-name="上海第一财经" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E6%B5%B7%E7%AC%AC%E4%B8%80%E8%B4%A2%E7%BB%8F.png",上海第一财经 +https://satellitepull.cnr.cn/live/wx32dycjgb/playlist.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="上海纪实" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E6%B5%B7%E7%BA%AA%E5%AE%9E.png",上海纪实 +http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010067 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="上海纪实" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E6%B5%B7%E7%BA%AA%E5%AE%9E.png",上海纪实 +http://iptv.huuc.edu.cn/hls/docuchina.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="上海纪实" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E6%B5%B7%E7%BA%AA%E5%AE%9E.png",上海纪实 +https://stream1.freetv.fun/shang-hai-ji-shi-ren-wen-1.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="上海纪实" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E6%B5%B7%E7%BA%AA%E5%AE%9E.png",上海纪实 +https://stream1.freetv.fun/ipv6-shang-hai-ji-shi-ren-wen-2.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="上海纪实" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E6%B5%B7%E7%BA%AA%E5%AE%9E.png",上海纪实 +https://stream1.freetv.fun/ipv6-shang-hai-ji-shi-ren-wen-3.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="上海纪实" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E6%B5%B7%E7%BA%AA%E5%AE%9E.png",上海纪实 +https://stream1.freetv.fun/ipv6-shang-hai-ji-shi-ren-wen-1.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="上海纪实" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E6%B5%B7%E7%BA%AA%E5%AE%9E.png",上海纪实 +http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888910/224/3221225655/index.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="上海都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E6%B5%B7%E9%83%BD%E5%B8%82.png",上海都市 +https://live.lalifeier.eu.org/kankanews/shds.m3u8?t=1746292937&key=3725d08baa89daf1e05599a00bdac978 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="上海都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E6%B5%B7%E9%83%BD%E5%B8%82.png",上海都市 +https://live.lalifeier.eu.org/kankanews/shds.m3u8?t=1746307365&key=635dd803224a560866c81f72aae510a0 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="上海都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E6%B5%B7%E9%83%BD%E5%B8%82.png",上海都市 +https://stream1.freetv.fun/shang-hai-du-shi-1.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="上海都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E6%B5%B7%E9%83%BD%E5%B8%82.png",上海都市 +https://stream1.freetv.fun/ipv6-shang-hai-du-shi-10.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="上海都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E6%B5%B7%E9%83%BD%E5%B8%82.png",上海都市 +https://stream1.freetv.fun/ipv6-shang-hai-du-shi-6.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="上海都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E6%B5%B7%E9%83%BD%E5%B8%82.png",上海都市 +https://stream1.freetv.fun/ipv6-shang-hai-du-shi-1.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="上海都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E6%B5%B7%E9%83%BD%E5%B8%82.png",上海都市 +https://stream1.freetv.fun/shang-hai-du-shi-7.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="上海都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E6%B5%B7%E9%83%BD%E5%B8%82.png",上海都市 +https://stream1.freetv.fun/ipv6-shang-hai-du-shi-7.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="上海都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E6%B5%B7%E9%83%BD%E5%B8%82.png",上海都市 +https://stream1.freetv.fun/ipv6-shang-hai-du-shi-8.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="上海都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E6%B5%B7%E9%83%BD%E5%B8%82.png",上海都市 +https://stream1.freetv.fun/ipv6-shang-hai-du-shi-3.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="东方影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E5%BD%B1%E8%A7%86.png",东方影视 +http://php.jdshipin.com:8880/itv6.php?cid=bestzb&id=5000000010000032212 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="东方影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E5%BD%B1%E8%A7%86.png",东方影视 +http://z.b.bkpcp.top/m.php?id=shys +#EXTINF:-1 group-title="☘️上海频道" tvg-name="东方影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E5%BD%B1%E8%A7%86.png",东方影视 +http://z.b.bkpcp.top/m.php?id=dfys +#EXTINF:-1 group-title="☘️上海频道" tvg-name="东方影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E5%BD%B1%E8%A7%86.png",东方影视 +https://www.freetv.top/migu/617290047.m3u8?migutoken=86c02ad0875d5cc49d77bcc8bdb628f2c9d508ffc323b964a03c8f92dde4afafa0345cf5a8fefbdf915c748e3d11c6c18e27ae1e21a609cec31a45e6c437db26a7a243625f9cf35c271171a22c +#EXTINF:-1 group-title="☘️上海频道" tvg-name="东方影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E5%BD%B1%E8%A7%86.png",东方影视 +https://stream1.freetv.fun/dong-fang-ying-shi-6.ctv +#EXTINF:-1 group-title="☘️上海频道" tvg-name="东方影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E5%BD%B1%E8%A7%86.png",东方影视 +https://stream1.freetv.fun/dong-fang-ying-shi-4.ctv +#EXTINF:-1 group-title="☘️上海频道" tvg-name="东方影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E5%BD%B1%E8%A7%86.png",东方影视 +https://stream1.freetv.fun/ipv6-dong-fang-ying-shi-3.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="东方影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E5%BD%B1%E8%A7%86.png",东方影视 +https://stream1.freetv.fun/ipv6-dong-fang-ying-shi-5.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="东方影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E5%BD%B1%E8%A7%86.png",东方影视 +https://stream1.freetv.fun/dong-fang-ying-shi-13.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="东方影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E5%BD%B1%E8%A7%86.png",东方影视 +http://gat.bkpcp.top/ymg.php +#EXTINF:-1 group-title="☘️上海频道" tvg-name="东方财经" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E8%B4%A2%E7%BB%8F.png",东方财经 +http://[2409:8087:5e00:24::2d]:6610/000000001000/1/5000000007000010003/index.m3u8?channel-id=bestzb&Contentid=5000000007000010003&livemode=1&stbId=3 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="东方财经" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E8%B4%A2%E7%BB%8F.png",东方财经 +http://iptv.cdn.ha.chinamobile.com/PLTV/88888888/224/3221226583/index.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="东方财经" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E8%B4%A2%E7%BB%8F.png",东方财经 +http://tv.scjyhd.com:4022/udp/239.93.0.249:5140 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="东方财经" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E8%B4%A2%E7%BB%8F.png",东方财经 +http://[2409:8087:5e00:24::29]:6610/000000001000/2000000002000000090/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000090&IASHttpSessionId=OTT19019320240419154124000281 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="东方财经" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E8%B4%A2%E7%BB%8F.png",东方财经 +http://yc.myds.me:35455/itv/5000000007000010003.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="东方财经" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E8%B4%A2%E7%BB%8F.png",东方财经 +http://[2409:8087:74d9:21::6]/000000001000PLTV/88888888/224/3221226602/index.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="东方财经" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E8%B4%A2%E7%BB%8F.png",东方财经 +http://[2409:8087:5e00:24::1e]:6060/000000001000/5000000007000010003/1.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="东方财经" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E8%B4%A2%E7%BB%8F.png",东方财经 +http://[2409:8087:74d9:21::6]:80/000000001000PLTV/88888888/224/3221226602/index.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="东方财经" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E8%B4%A2%E7%BB%8F.png",东方财经 +http://miqlin.cyou:8888/udp/233.18.204.65:5140 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="东方财经" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E8%B4%A2%E7%BB%8F.png",东方财经 +http://iptv.cdn.ha.chinamobile.com/PLTV/88888888/224/3221226327/index.m3u8?icpid=88888888&servicetype=1 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="动漫秀场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8A%A8%E6%BC%AB%E7%A7%80%E5%9C%BA.png",动漫秀场 +http://116.237.148.215:8881/rtp/239.45.3.134:5140 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="动漫秀场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8A%A8%E6%BC%AB%E7%A7%80%E5%9C%BA.png",动漫秀场 +http://180.165.29.204:4022/rtp/239.45.3.134:5140 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="动漫秀场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8A%A8%E6%BC%AB%E7%A7%80%E5%9C%BA.png",动漫秀场 +http://218.1.137.125:4022/rtp/239.45.3.134:5140 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="动漫秀场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8A%A8%E6%BC%AB%E7%A7%80%E5%9C%BA.png",动漫秀场 +http://php.jdshipin.com/itv6.php?cid=bestzb&id=5000000011000031113 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="动漫秀场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8A%A8%E6%BC%AB%E7%A7%80%E5%9C%BA.png",动漫秀场 +http://[2409:8087:74d9:21::6]/000000001000PLTV/88888888/224/3221226197/index.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="动漫秀场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8A%A8%E6%BC%AB%E7%A7%80%E5%9C%BA.png",动漫秀场 +https://stream1.freetv.fun/dong-man-xiu-chang-21.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="动漫秀场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8A%A8%E6%BC%AB%E7%A7%80%E5%9C%BA.png",动漫秀场 +https://stream1.freetv.fun/ipv6-dong-man-xiu-chang-1.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="动漫秀场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8A%A8%E6%BC%AB%E7%A7%80%E5%9C%BA.png",动漫秀场 +https://stream1.freetv.fun/dong-man-xiu-chang-11.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="动漫秀场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8A%A8%E6%BC%AB%E7%A7%80%E5%9C%BA.png",动漫秀场 +https://stream1.freetv.fun/dong-man-xiu-chang-24.ctv +#EXTINF:-1 group-title="☘️上海频道" tvg-name="动漫秀场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8A%A8%E6%BC%AB%E7%A7%80%E5%9C%BA.png",动漫秀场 +https://stream1.freetv.fun/ipv6-dong-man-xiu-chang-11.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="哈哈炫动" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%93%88%E5%93%88%E7%82%AB%E5%8A%A8.png",哈哈炫动 +http://116.237.148.215:8881/rtp/239.45.1.55:5140 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="哈哈炫动" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%93%88%E5%93%88%E7%82%AB%E5%8A%A8.png",哈哈炫动 +http://218.1.137.125:4022/rtp/239.45.1.55:5140 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="哈哈炫动" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%93%88%E5%93%88%E7%82%AB%E5%8A%A8.png",哈哈炫动 +http://180.165.29.204:4022/rtp/239.45.1.55:5140 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="哈哈炫动" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%93%88%E5%93%88%E7%82%AB%E5%8A%A8.png",哈哈炫动 +http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010117 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="哈哈炫动" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%93%88%E5%93%88%E7%82%AB%E5%8A%A8.png",哈哈炫动 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/2/224/3221225657/2.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="哈哈炫动" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%93%88%E5%93%88%E7%82%AB%E5%8A%A8.png",哈哈炫动 +http://[2409:8087:74d9:21::6]/000000001000PLTV/88888888/224/3221226618/index.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="哈哈炫动" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%93%88%E5%93%88%E7%82%AB%E5%8A%A8.png",哈哈炫动 +https://live.lalifeier.eu.org/kankanews/hhxd.m3u8?t=1746292937&key=b5431ae4fa8b2429332dae8604165c95 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="哈哈炫动" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%93%88%E5%93%88%E7%82%AB%E5%8A%A8.png",哈哈炫动 +https://stream1.freetv.fun/ha-ha-xuan-dong-31.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="哈哈炫动" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%93%88%E5%93%88%E7%82%AB%E5%8A%A8.png",哈哈炫动 +https://live.lalifeier.eu.org/kankanews/hhxd.m3u8?t=1746307365&key=611cf4efea7a3dd2fe1b6a28541bed06 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="哈哈炫动" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%93%88%E5%93%88%E7%82%AB%E5%8A%A8.png",哈哈炫动 +https://stream1.freetv.fun/ha-ha-xuan-dong-25.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",新闻综合 +http://p2.vzan.com/slowlive/596867413819827251/live.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",新闻综合 +http://z.b.bkpcp.top/m.php?id=shxw +#EXTINF:-1 group-title="☘️上海频道" tvg-name="新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",新闻综合 +https://www.freetv.top/migu/651632657.m3u8?migutoken=b4a3e55048f55ec1c8fc5b509fbdf32f2dc5d255f5f218e79e84ca9a87fb9f2239927cb11b448f18285b50b81b4cd50a1354e9be5a3283375e85372798c3f3eb3ad60adf45eb5615f68eb4825f +#EXTINF:-1 group-title="☘️上海频道" tvg-name="新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",新闻综合 +https://live.lalifeier.eu.org/kankanews/shxwzh.m3u8?t=1746379256&key=0f50abfb27cedee7672bcf626d21f83b +#EXTINF:-1 group-title="☘️上海频道" tvg-name="新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",新闻综合 +https://live.lalifeier.eu.org/kankanews/shxwzh.m3u8?t=1746393735&key=647ef0ee7c08241a915702c9b6f16960 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",新闻综合 +https://live.lalifeier.eu.org/kankanews/shxwzh.m3u8?t=1746292937&key=2c0730250b4adabbdab89ad23f78c053 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",新闻综合 +https://live.lalifeier.eu.org/kankanews/shxwzh.m3u8?t=1746307365&key=934041caefb0bfa77af7ffc44707320c +#EXTINF:-1 group-title="☘️上海频道" tvg-name="新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",新闻综合 +https://www.freetv.top/migu/651632657.m3u8?migutoken=5ae42e8fda034ab7bf5171dafa0043e70cd12bcd716940c4572fde52ea92b0785f16f1bdbce4c83f5e075b250fe95668f19f8527dda57c27db24f95d412614d99c86a3a2d9341d88b5224b7068 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",新闻综合 +https://stream1.freetv.fun/xin-wen-zong-he-1.ctv +#EXTINF:-1 group-title="☘️上海频道" tvg-name="新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",新闻综合 +https://stream1.freetv.fun/xin-wen-zong-he-14.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="欢笑剧场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%AC%A2%E7%AC%91%E5%89%A7%E5%9C%BA.png",欢笑剧场 +http://gat.bkpcp.top/ymg.php?id=hxjc +#EXTINF:-1 group-title="☘️上海频道" tvg-name="欢笑剧场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%AC%A2%E7%AC%91%E5%89%A7%E5%9C%BA.png",欢笑剧场 +http://goo.bkpcp.top/mg/hxjc +#EXTINF:-1 group-title="☘️上海频道" tvg-name="欢笑剧场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%AC%A2%E7%AC%91%E5%89%A7%E5%9C%BA.png",欢笑剧场 +http://iptv.cdn.ha.chinamobile.com/PLTV/88888888/224/3221226704/index.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="欢笑剧场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%AC%A2%E7%AC%91%E5%89%A7%E5%9C%BA.png",欢笑剧场 +http://[2409:8087:2001:20:2800:0:df6e:eb1a]/wh7f454c46tw1868232_1764604972/ott.mobaibox.com/PLTV/3/224/3221227715/index.m3u8?icpid=3&RTS=1661190272&from=40&popid=40&hms_devid=2116&prioritypopid=40&vqe=3 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="欢笑剧场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%AC%A2%E7%AC%91%E5%89%A7%E5%9C%BA.png",欢笑剧场 +http://[2409:8087:5e08:24::17]:6610/000000001000/5000000007000010001/index.m3u8?channel-id=bestzb&Contentid=5000000007000010001&livemode=1&stbId=3 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="欢笑剧场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%AC%A2%E7%AC%91%E5%89%A7%E5%9C%BA.png",欢笑剧场 +http://vod.cdn.ha.chinamobile.com/PLTV/88888888/224/3221226882/10000100000000060000000008192604_0.smil/index.m3u8?fmt=ts2hls&servicetype=1 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="欢笑剧场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%AC%A2%E7%AC%91%E5%89%A7%E5%9C%BA.png",欢笑剧场 +http://z.b.bkpcp.top/m.php +#EXTINF:-1 group-title="☘️上海频道" tvg-name="欢笑剧场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%AC%A2%E7%AC%91%E5%89%A7%E5%9C%BA.png",欢笑剧场 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000002000000016/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000016&IASHttpSessionId=OTT19019320240419154124000281 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="欢笑剧场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%AC%A2%E7%AC%91%E5%89%A7%E5%9C%BA.png",欢笑剧场 +http://[2409:8087:5e08:24::17]:6610/000000001000/5000000007000010001/index.m3u8?channel-id=bestzb&Contentid=5000000007000010001&livemode=1&stbId=YanG-1989 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="欢笑剧场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%AC%A2%E7%AC%91%E5%89%A7%E5%9C%BA.png",欢笑剧场 +http://[2409:8087:1e03:21::2]:6060/cms001/ch00000090990000001193/index.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="法治天地" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B3%95%E6%B2%BB%E5%A4%A9%E5%9C%B0.png",法治天地 +http://php.jdshipin.com/itv6.php?cid=bestzb&id=9001547084732463424 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="法治天地" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B3%95%E6%B2%BB%E5%A4%A9%E5%9C%B0.png",法治天地 +http://z.b.bkpcp.top/m.php?id=fztd +#EXTINF:-1 group-title="☘️上海频道" tvg-name="法治天地" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B3%95%E6%B2%BB%E5%A4%A9%E5%9C%B0.png",法治天地 +http://[2409:8087:5e00:24::29]:6610/000000001000/2000000002000000014/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000014&IASHttpSessionId=OTT19019320240419154124000281 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="法治天地" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B3%95%E6%B2%BB%E5%A4%A9%E5%9C%B0.png",法治天地 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000002000000014/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000014&IASHttpSessionId=OTT19019320240419154124000281 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="法治天地" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B3%95%E6%B2%BB%E5%A4%A9%E5%9C%B0.png",法治天地 +http://[2409:8087:5e01:24::8]:6610/000000001000/2000000002000000014/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000014&IASHttpSessionId=OTT19019320240419154124000281 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="法治天地" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B3%95%E6%B2%BB%E5%A4%A9%E5%9C%B0.png",法治天地 +http://[2409:8087:7001:20:1000::88]:6610/000000001000/9001547084732463424/index.m3u8?channel-id=bestzb&Contentid=9001547084732463424&livemode=1&stbId=3 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="法治天地" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B3%95%E6%B2%BB%E5%A4%A9%E5%9C%B0.png",法治天地 +http://php.666230.xyz/公众号【睡眼迷离的猫】/proxy/p26.php?id=162 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="法治天地" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B3%95%E6%B2%BB%E5%A4%A9%E5%9C%B0.png",法治天地 +http://miqlin.cyou:8888/udp/233.18.204.49:5140 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="法治天地" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B3%95%E6%B2%BB%E5%A4%A9%E5%9C%B0.png",法治天地 +http://[2409:8087:5e01:24::16]:6610/000000001000/2000000002000000014/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000014&IASHttpSessionId=OTT19019320240419154124000281 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="法治天地" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B3%95%E6%B2%BB%E5%A4%A9%E5%9C%B0.png",法治天地 +http://[2409:8087:1e03:21::2]:6060/cms001/ch00000090990000001195/index.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="生活时尚" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%94%9F%E6%B4%BB%E6%97%B6%E5%B0%9A.png",生活时尚 +https://stream1.freetv.fun/sheng-huo-shi-shang-9.ctv +#EXTINF:-1 group-title="☘️上海频道" tvg-name="生活时尚" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%94%9F%E6%B4%BB%E6%97%B6%E5%B0%9A.png",生活时尚 +https://stream1.freetv.fun/ipv6-sheng-huo-shi-shang-5.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="生活时尚" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%94%9F%E6%B4%BB%E6%97%B6%E5%B0%9A.png",生活时尚 +https://stream1.freetv.fun/sheng-huo-shi-shang-18.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="生活时尚" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%94%9F%E6%B4%BB%E6%97%B6%E5%B0%9A.png",生活时尚 +https://stream1.freetv.fun/sheng-huo-shi-shang-12.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="生活时尚" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%94%9F%E6%B4%BB%E6%97%B6%E5%B0%9A.png",生活时尚 +https://stream1.freetv.fun/sheng-huo-shi-shang-27.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="生活时尚" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%94%9F%E6%B4%BB%E6%97%B6%E5%B0%9A.png",生活时尚 +https://stream1.freetv.fun/sheng-huo-shi-shang-25.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="生活时尚" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%94%9F%E6%B4%BB%E6%97%B6%E5%B0%9A.png",生活时尚 +https://stream1.freetv.fun/sheng-huo-shi-shang-11.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="生活时尚" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%94%9F%E6%B4%BB%E6%97%B6%E5%B0%9A.png",生活时尚 +https://stream1.freetv.fun/ipv6-sheng-huo-shi-shang-2.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="生活时尚" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%94%9F%E6%B4%BB%E6%97%B6%E5%B0%9A.png",生活时尚 +https://stream1.freetv.fun/ipv6-sheng-huo-shi-shang-7.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="生活时尚" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%94%9F%E6%B4%BB%E6%97%B6%E5%B0%9A.png",生活时尚 +https://stream1.freetv.fun/sheng-huo-shi-shang-13.ctv +#EXTINF:-1 group-title="☘️上海频道" tvg-name="第一财经" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%AC%AC%E4%B8%80%E8%B4%A2%E7%BB%8F.png",第一财经 +http://satellitepull.cnr.cn/live/wx32dycjgb/playlist.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="第一财经" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%AC%AC%E4%B8%80%E8%B4%A2%E7%BB%8F.png",第一财经 +http://a1live.livecdn.yicai.com/live/radio_tv.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="第一财经" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%AC%AC%E4%B8%80%E8%B4%A2%E7%BB%8F.png",第一财经 +http://[2409:8087:5e00:24::2d]:6610/000000001000/1/5000000010000027146/index.m3u8?channel-id=bestzb&Contentid=5000000010000027146&livemode=1&stbId=3 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="第一财经" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%AC%AC%E4%B8%80%E8%B4%A2%E7%BB%8F.png",第一财经 +http://ls.qingting.fm/live/276.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="第一财经" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%AC%AC%E4%B8%80%E8%B4%A2%E7%BB%8F.png",第一财经 +https://live.lalifeier.eu.org/kankanews/dycj.m3u8?t=1746393735&key=7b164ddded8a7d9ea3ba4a8d86999077 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="第一财经" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%AC%AC%E4%B8%80%E8%B4%A2%E7%BB%8F.png",第一财经 +https://live.lalifeier.eu.org/kankanews/dycj.m3u8?t=1746379256&key=e6deaa8fc1e0662447be8f3b7c649f70 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="第一财经" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%AC%AC%E4%B8%80%E8%B4%A2%E7%BB%8F.png",第一财经 +https://live.lalifeier.eu.org/kankanews/dycj.m3u8?t=1746292937&key=8dbd6113ce0541e6b92e8f47782ef1f6 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="第一财经" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%AC%AC%E4%B8%80%E8%B4%A2%E7%BB%8F.png",第一财经 +https://live.lalifeier.eu.org/kankanews/dycj.m3u8?t=1746307365&key=7477fec974c356ed2cf91be43a1dc893 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="第一财经" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%AC%AC%E4%B8%80%E8%B4%A2%E7%BB%8F.png",第一财经 +https://stream1.freetv.fun/di-yi-cai-jing-6.ctv +#EXTINF:-1 group-title="☘️上海频道" tvg-name="第一财经" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%AC%AC%E4%B8%80%E8%B4%A2%E7%BB%8F.png",第一财经 +https://stream1.freetv.fun/di-yi-cai-jing-3.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="纪实人文" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BA%AA%E5%AE%9E%E4%BA%BA%E6%96%87.png",纪实人文 +http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225738/index.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="纪实人文" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BA%AA%E5%AE%9E%E4%BA%BA%E6%96%87.png",纪实人文 +http://[2409:8087:5e08:24::2]:6610/000000001000/5000000004000010282/index.m3u8?channel-id=bestzb&Contentid=5000000004000010282&livemode=1&stbId=3 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="纪实人文" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BA%AA%E5%AE%9E%E4%BA%BA%E6%96%87.png",纪实人文 +http://[2409:8087:1a09:df::401d]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225738/1.m3u8?icpid=88888888&from=5&hms_devid=980&online=1720054946&vqe=3 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="纪实人文" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BA%AA%E5%AE%9E%E4%BA%BA%E6%96%87.png",纪实人文 +http://[2409:8087:74d9:21::6]/270000001128/9900000528/index.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="纪实人文" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BA%AA%E5%AE%9E%E4%BA%BA%E6%96%87.png",纪实人文 +http://[2409:8087:5e01:34::20]:6610/ZTE_CMS/00000001000000060000000000000365/index.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="纪实人文" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BA%AA%E5%AE%9E%E4%BA%BA%E6%96%87.png",纪实人文 +http://[2409:8087:5e00:24::10]:6060/200000001898/460000089800010067/ +#EXTINF:-1 group-title="☘️上海频道" tvg-name="纪实人文" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BA%AA%E5%AE%9E%E4%BA%BA%E6%96%87.png",纪实人文 +http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010067/ +#EXTINF:-1 group-title="☘️上海频道" tvg-name="纪实人文" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BA%AA%E5%AE%9E%E4%BA%BA%E6%96%87.png",纪实人文 +http://ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225738/index.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="纪实人文" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BA%AA%E5%AE%9E%E4%BA%BA%E6%96%87.png",纪实人文 +http://[2409:8087:5e08:24::2]:6610/000000001000/5000000004000010282/index.m3u8?channel-id=bestzb&amp;Contentid=5000000004000010282&amp;livemode=1&amp;stbId=3 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="纪实人文" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BA%AA%E5%AE%9E%E4%BA%BA%E6%96%87.png",纪实人文 +http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010067/1.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="都市剧场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%83%BD%E5%B8%82%E5%89%A7%E5%9C%BA.png",都市剧场 +https://satellitepull.cnr.cn/live/wxcqxwgb/playlist.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="都市剧场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%83%BD%E5%B8%82%E5%89%A7%E5%9C%BA.png",都市剧场 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000002000000015/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000015&IASHttpSessionId=OTT19019320240419154124000281 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="都市剧场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%83%BD%E5%B8%82%E5%89%A7%E5%9C%BA.png",都市剧场 +http://[2409:8087:5e08:24::2]:6610/000000001000/5000000011000031111/index.m3u8?channel-id=bestzb&Contentid=5000000011000031111&livemode=1&stbId=3 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="都市剧场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%83%BD%E5%B8%82%E5%89%A7%E5%9C%BA.png",都市剧场 +http://miqlin.cyou:8888/udp/233.18.204.48:5140 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="都市剧场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%83%BD%E5%B8%82%E5%89%A7%E5%9C%BA.png",都市剧场 +http://[2409:8087:5e00:24::1e]:6060/000000001000/5000000011000031111/1.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="都市剧场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%83%BD%E5%B8%82%E5%89%A7%E5%9C%BA.png",都市剧场 +http://[2409:8087:1e03:21::2]:6060/cms001/ch00000090990000001203/index.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="都市剧场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%83%BD%E5%B8%82%E5%89%A7%E5%9C%BA.png",都市剧场 +http://[2409:8087:2801:22:100::6d]/wh7f454c46tw225448578_554191943/hwltc.tv.cdn.zj.chinamobile.com/PLTV/88888888/224/3221229280/1/index.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="都市剧场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%83%BD%E5%B8%82%E5%89%A7%E5%9C%BA.png",都市剧场 +http://[2409:8087:5e08:24::12]:6610/000000001000/2000000002000000015/index.m3u8 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="都市剧场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%83%BD%E5%B8%82%E5%89%A7%E5%9C%BA.png",都市剧场 +http://iptv.cdn.ha.chinamobile.com/PLTV/88888888/224/3221226694/1.m3u8 +#EXTINF:-1 group-title="☘️重庆频道" tvg-name="重庆汽摩" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%8D%E5%BA%86%E6%B1%BD%E6%91%A9.png",重庆汽摩 +https://cc06.tv12.xyz/33.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="优漫卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BC%98%E6%BC%AB%E5%8D%A1%E9%80%9A.png",优漫卡通 +http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010118 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="优漫卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BC%98%E6%BC%AB%E5%8D%A1%E9%80%9A.png",优漫卡通 +http://z.b.bkpcp.top/m.php?id=ymkt +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="优漫卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BC%98%E6%BC%AB%E5%8D%A1%E9%80%9A.png",优漫卡通 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/2/224/3221225656/2.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="优漫卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BC%98%E6%BC%AB%E5%8D%A1%E9%80%9A.png",优漫卡通 +https://live.lalifeier.eu.org/jstv/ymkt.m3u8?t=1745796321&key=a52fbb40a8c25dfa0feef5a1b4b5910d +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="优漫卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BC%98%E6%BC%AB%E5%8D%A1%E9%80%9A.png",优漫卡通 +https://live.lalifeier.eu.org/jstv/ymkt.m3u8?t=1746307365&key=c18c5077358ab692ad43005bbc7b32bd +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="优漫卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BC%98%E6%BC%AB%E5%8D%A1%E9%80%9A.png",优漫卡通 +https://www.freetv.top/migu/626064703.m3u8?migutoken=deac6c5275081b54ad412a195e499b7c0cb8f04446b6c80aaa9d3eb1063d620261c68202d59aea05060007b58a62d5d208f16379d861d6f1627c10c9dd894f0bf7e3ca97b04696255e193e871c +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="优漫卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BC%98%E6%BC%AB%E5%8D%A1%E9%80%9A.png",优漫卡通 +https://www.freetv.top/migu/626064703.m3u8?migutoken=7f7c4b909389a0cd5172701768041a0f3887534c4534a68bf1dc85550389e9ab156655484be16e89604513fde9da2f036ebae28d31515b0be32eb12462f5de9d9cab8f00c44671241d5c6e1356 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="优漫卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BC%98%E6%BC%AB%E5%8D%A1%E9%80%9A.png",优漫卡通 +https://stream1.freetv.fun/you-man-qia-tong-11.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="优漫卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BC%98%E6%BC%AB%E5%8D%A1%E9%80%9A.png",优漫卡通 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226932/1.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="优漫卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BC%98%E6%BC%AB%E5%8D%A1%E9%80%9A.png",优漫卡通 +https://stream1.freetv.fun/4073fb5ec1ec48f010e1db882aeb63ddc7104c56c5c729c4d08e932d585591a8.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="南京信息" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E4%BA%AC%E4%BF%A1%E6%81%AF.png",南京信息 +http://live.nbs.cn/channels/njtv/xxpd/500k.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="南京信息" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E4%BA%AC%E4%BF%A1%E6%81%AF.png",南京信息 +https://live.nbs.cn/channels/njtv/xxpd/m3u8:500k/live.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="南京信息" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E4%BA%AC%E4%BF%A1%E6%81%AF.png",南京信息 +http://[2409:8087:2001:20:2800:0:df6e:eb10]/wh7f454c46tw3029680014_-204362700/ott.mobaibox.com/PLTV/3/224/3221227730/index.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="南京信息" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E4%BA%AC%E4%BF%A1%E6%81%AF.png",南京信息 +http://[2409:8087:2001:20:2800:0:df6e:eb10]:80/wh7f454c46tw471420022_-144346351/ott.mobaibox.com/PLTV/3/224/3221227730/index.m3u8?icpid=3&RTS=1674380586&from=40&popid=40&hms_devid=2110&prioritypopid=40&vqe=3 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="南京十八" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E4%BA%AC%E5%8D%81%E5%85%AB.png",南京十八 +http://z.b.bkpcp.top/m.php?id=njsb +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="南京十八" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E4%BA%AC%E5%8D%81%E5%85%AB.png",南京十八 +http://live.nbs.cn/channels/njtv/sbpd/500k.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="南京十八" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E4%BA%AC%E5%8D%81%E5%85%AB.png",南京十八 +http://live.nbs.cn/channels/njtv/sbpd/500k.m3u8?zjiangsd +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="南京十八" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E4%BA%AC%E5%8D%81%E5%85%AB.png",南京十八 +http://live.nbs.cn/channels/njtv/sbpd/m3u8:500k/live.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="南京十八" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E4%BA%AC%E5%8D%81%E5%85%AB.png",南京十八 +https://live.nbs.cn/channels/njtv/sbpd/m3u8:500k/live.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="南京十八" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E4%BA%AC%E5%8D%81%E5%85%AB.png",南京十八 +https://www.freetv.top/migu/838151753.m3u8?migutoken=8d26f1ff3a7322649e82c96f1a66d55d677c626a8ee62463a8c2625094b8270bd4345b1d0806f71840b81eac2b68f3a2aeabe6407feb4ee2f36580799b57c48c1418a87aee8ca513ec1544ca7a +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="南京十八" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E4%BA%AC%E5%8D%81%E5%85%AB.png",南京十八 +http://[2409:8087:2001:20:2800:0:df6e:eb04]/wh7f454c46tw3568749588_-1882152959/ott.mobaibox.com/PLTV/4/224/3221227178/index.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="南京娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E4%BA%AC%E5%A8%B1%E4%B9%90.png",南京娱乐 +http://live.nbs.cn/channels/njtv/ylpd/500k.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="南京娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E4%BA%AC%E5%A8%B1%E4%B9%90.png",南京娱乐 +https://live.nbs.cn/channels/njtv/ylpd/m3u8:500k/live.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="南京娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E4%BA%AC%E5%A8%B1%E4%B9%90.png",南京娱乐 +http://[2409:8087:2001:20:2800:0:df6e:eb10]/wh7f454c46tw3055198838_-954191684/ott.mobaibox.com/PLTV/3/224/3221227722/index.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="南京娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E4%BA%AC%E5%A8%B1%E4%B9%90.png",南京娱乐 +http://[2409:8087:2001:20:2800:0:df6e:eb10]:80/wh7f454c46tw1756933853_327829486/ott.mobaibox.com/PLTV/3/224/3221227722/index.m3u8?icpid=3&RTS=1674386167&from=40&popid=40&hms_devid=2110&prioritypopid=40&vqe=3 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="南京少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E4%BA%AC%E5%B0%91%E5%84%BF.png",南京少儿 +https://live.nbs.cn/channels/njtv/sepd/nbs23.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="南京少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E4%BA%AC%E5%B0%91%E5%84%BF.png",南京少儿 +http://live.nbs.cn/channels/njtv/sepd/500k.m3u8?zjiangsd +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="南京少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E4%BA%AC%E5%B0%91%E5%84%BF.png",南京少儿 +https://live.nbs.cn/channels/njtv/sepd/m3u8:500k/live.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="南京少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E4%BA%AC%E5%B0%91%E5%84%BF.png",南京少儿 +http://[2409:8087:2001:20:2800:0:df6e:eb10]/wh7f454c46tw3425352611_209642410/ott.mobaibox.com/PLTV/4/224/3221227733/index.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="南京少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E4%BA%AC%E5%B0%91%E5%84%BF.png",南京少儿 +http://[2409:8087:2001:20:2800:0:df6e:eb10]/wh7f454c46tw3425352611_209642410/ott.mobaibox.com/PLTV/4/224/3221227733/index.m3u8?icpid=4&RTS=1663233805&from=40&popid=40&hms_devid=2110&prioritypopid=40&vqe=3 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="南京少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E4%BA%AC%E5%B0%91%E5%84%BF.png",南京少儿 +http://live.nbs.cn/channels/njtv/sepd/500k.m3u8#http://live.nbs.cn/channels/njtv/sepd/m3u8:500k/live.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="南京少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E4%BA%AC%E5%B0%91%E5%84%BF.png",南京少儿 +http://live.nbs.cn/channels/njtv/sepd/500k.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="南京少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E4%BA%AC%E5%B0%91%E5%84%BF.png",南京少儿 +http://live.nbs.cn/channels/njtv/sepd/m3u8:500k/live.m3u8#http://live.nbs.cn/channels/njtv/sepd/500k.m3u8?zjiangsd +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="南京教科" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E4%BA%AC%E6%95%99%E7%A7%91.png",南京教科 +http://live.nbs.cn/channels/njtv/jkpd/nbs06.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="南京教科" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E4%BA%AC%E6%95%99%E7%A7%91.png",南京教科 +http://z.b.bkpcp.top/m.php?id=njkj +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="南京教科" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E4%BA%AC%E6%95%99%E7%A7%91.png",南京教科 +https://live.nbs.cn/channels/njtv/jkpd/nbs06.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="南京教科" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E4%BA%AC%E6%95%99%E7%A7%91.png",南京教科 +https://www.freetv.top/migu/838153729.m3u8?migutoken=68341b05540f514ec344fce1684f8a66005aec759b66a516681cab444a9ba187b5fe8f24736f20a63bce950472d823cb104a3f9b1e3d92a9aaca7c063902981bf22e9689666398fd6a3f36c311 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="南京教科" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E4%BA%AC%E6%95%99%E7%A7%91.png",南京教科 +https://live.nbs.cn/channels/njtv/jkpd/m3u8:500k/live.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="南京教科" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E4%BA%AC%E6%95%99%E7%A7%91.png",南京教科 +http://[2409:8087:2001:20:2800:0:df6e:eb04]/wh7f454c46tw3484211223_471033633/ott.mobaibox.com/PLTV/4/224/3221227194/index.m3u8?icpid=4&RTS=1663233864&from=40&popid=40&hms_devid=2041&prioritypopid=40&vqe=3 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="南京教科" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E4%BA%AC%E6%95%99%E7%A7%91.png",南京教科 +http://live.nbs.cn/channels/njtv/jkpd/500k.m3u8?zjiangsd +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="南京新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E4%BA%AC%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",南京新闻综合 +http://z.b.bkpcp.top/m.php?id=njxwzh +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="南京新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E4%BA%AC%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",南京新闻综合 +http://live.nbs.cn/channels/njtv/xwzh/nbs06.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="南京新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E4%BA%AC%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",南京新闻综合 +https://live.nbs.cn/channels/njtv/xwzh/nbs06.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="南京新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E4%BA%AC%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",南京新闻综合 +https://www.freetv.top/migu/838109047.m3u8?migutoken=74a123656ffd42bf35e581516bd59c04fe4bcfe92f39e16931582e1b674ff2fc4d90da5f9b3dc796b8700456682cfb198f958ef81602312978e5168c1b35bb475fe775bf234a1c7965f918691c +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="南京新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E4%BA%AC%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",南京新闻综合 +https://live.nbs.cn/channels/njtv/xwzh/m3u8:500k/live.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="南京生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E4%BA%AC%E7%94%9F%E6%B4%BB.png",南京生活 +https://live.nbs.cn/channels/njtv/shpd/m3u8:500k/live.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="南京生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E4%BA%AC%E7%94%9F%E6%B4%BB.png",南京生活 +http://[2409:8087:2001:20:2800:0:df6e:eb11]/wh7f454c46tw3530023629_201686832/ott.mobaibox.com/PLTV/4/224/3221227786/index.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="南京生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E4%BA%AC%E7%94%9F%E6%B4%BB.png",南京生活 +http://live.nbs.cn/channels/njtv/shpd/500k.m3u8?zjiangsd +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="常州公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B8%B8%E5%B7%9E%E5%85%AC%E5%85%B1.png",常州公共 +http://[2409:8087:2001:20:2800:0:df6e:eb12]/wh7f454c46tw4212693148_669088627/ott.mobaibox.com/PLTV/3/224/3221227905/index.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="常州公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B8%B8%E5%B7%9E%E5%85%AC%E5%85%B1.png",常州公共 +http://[2409:8087:2001:20:2800:0:df6e:eb12]/wh7f454c46tw4212693148_669088627/ott.mobaibox.com/PLTV/3/224/3221227905/index.m3u8?icpid=3&RTS=1663019844&from=40&popid=40&hms_devid=2112&prioritypopid=40&vqe=3 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="常州生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B8%B8%E5%B7%9E%E7%94%9F%E6%B4%BB.png",常州生活 +http://[2409:8087:2001:20:2800:0:df6e:eb12]/wh7f454c46tw3951544714_750576923/ott.mobaibox.com/PLTV/3/224/3221227902/index.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="常州生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B8%B8%E5%B7%9E%E7%94%9F%E6%B4%BB.png",常州生活 +http://[2409:8087:2001:20:2800:0:df6e:eb12]/wh7f454c46tw3951544714_750576923/ott.mobaibox.com/PLTV/3/224/3221227902/index.m3u8?icpid=3&RTS=1663019583&from=40&popid=40&hms_devid=2112&prioritypopid=40&vqe=3 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="常州都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B8%B8%E5%B7%9E%E9%83%BD%E5%B8%82.png",常州都市 +http://[2409:8087:2001:20:2800:0:df6e:eb12]/wh7f454c46tw4002153568_939060722/ott.mobaibox.com/PLTV/3/224/3221227955/index.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="常州都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B8%B8%E5%B7%9E%E9%83%BD%E5%B8%82.png",常州都市 +http://[2409:8087:2001:20:2800:0:df6e:eb12]/wh7f454c46tw4002153568_939060722/ott.mobaibox.com/PLTV/3/224/3221227955/index.m3u8?icpid=3&RTS=1663019634&from=40&popid=40&hms_devid=2112&prioritypopid=40&vqe=3 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="徐州新聞綜合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BE%90%E5%B7%9E%E6%96%B0%E8%81%9E%E7%B6%9C%E5%90%88.png",徐州新聞綜合 +http://z.b.bkpcp.top/m.php?id=xzxwzh +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="新沂新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E6%B2%82%E6%96%B0%E9%97%BB.png",新沂新闻 +http://live.xysrmt.cn/xwzh/sd/live.m3u8?zjiangsd" +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="新沂生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E6%B2%82%E7%94%9F%E6%B4%BB.png",新沂生活 +http://live.xysrmt.cn/shpd/sd/live.m3u8?zjiangsd +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="无锡娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%97%A0%E9%94%A1%E5%A8%B1%E4%B9%90.png",无锡娱乐 +https://stream.thmz.com/wxtv2/playlist.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="无锡娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%97%A0%E9%94%A1%E5%A8%B1%E4%B9%90.png",无锡娱乐 +http://stream.thmz.com/wxtv2/sd/live.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="无锡娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%97%A0%E9%94%A1%E5%A8%B1%E4%B9%90.png",无锡娱乐 +http://stream.thmz.com/wxtv2/sd/live.m3u8?_upt=978cd8731706199708 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="无锡娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%97%A0%E9%94%A1%E5%A8%B1%E4%B9%90.png",无锡娱乐 +http://stream.thmz.com/wxtv2/sd/live.m3u8?_upt=acffe97a1704940314 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="无锡娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%97%A0%E9%94%A1%E5%A8%B1%E4%B9%90.png",无锡娱乐 +http://stream.thmz.com/wxtv2/playlist.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="无锡新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%97%A0%E9%94%A1%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",无锡新闻综合 +http://m.m3u8.wifiwx.com/live/wifiwx-239.m3u8?zjiangsd +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="无锡新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%97%A0%E9%94%A1%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",无锡新闻综合 +http://stream.thmz.com/wxtv1/playlist.m3u8?_upt=156143371706166361 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="无锡新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%97%A0%E9%94%A1%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",无锡新闻综合 +http://stream.thmz.com/wxtv1/sd/live.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="无锡新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%97%A0%E9%94%A1%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",无锡新闻综合 +http://stream.thmz.com/wxtv1/sd/live.m3u8?_upt=4ba3ab191698644028 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="无锡新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%97%A0%E9%94%A1%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",无锡新闻综合 +http://stream.thmz.com/wxtv1/playlist.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="无锡生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%97%A0%E9%94%A1%E7%94%9F%E6%B4%BB.png",无锡生活 +https://stream.thmz.com/wxtv4/playlist.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="无锡生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%97%A0%E9%94%A1%E7%94%9F%E6%B4%BB.png",无锡生活 +http://m.m3u8.wifiwx.com/live/wifiwx-244.m3u8?zjiangsd +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="无锡生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%97%A0%E9%94%A1%E7%94%9F%E6%B4%BB.png",无锡生活 +http://stream.thmz.com/wxtv4/sd/live.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="无锡生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%97%A0%E9%94%A1%E7%94%9F%E6%B4%BB.png",无锡生活 +http://stream.thmz.com/wxtv4/sd/live.m3u8?_upt=978cd8731706199708 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="无锡生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%97%A0%E9%94%A1%E7%94%9F%E6%B4%BB.png",无锡生活 +http://stream.thmz.com/wxtv4/playlist.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="无锡经济" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%97%A0%E9%94%A1%E7%BB%8F%E6%B5%8E.png",无锡经济 +https://stream.thmz.com/wxtv5/playlist.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="无锡经济" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%97%A0%E9%94%A1%E7%BB%8F%E6%B5%8E.png",无锡经济 +http://stream.thmz.com/wxtv5/sd/live.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="无锡经济" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%97%A0%E9%94%A1%E7%BB%8F%E6%B5%8E.png",无锡经济 +http://stream.thmz.com/wxtv5/playlist.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="无锡都市资讯" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%97%A0%E9%94%A1%E9%83%BD%E5%B8%82%E8%B5%84%E8%AE%AF.png",无锡都市资讯 +http://stream.thmz.com/wxtv3/playlist.m3u8?_upt=1758133b1706166861 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="无锡都市资讯" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%97%A0%E9%94%A1%E9%83%BD%E5%B8%82%E8%B5%84%E8%AE%AF.png",无锡都市资讯 +http://stream.thmz.com/wxtv3/sd/live.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="无锡都市资讯" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%97%A0%E9%94%A1%E9%83%BD%E5%B8%82%E8%B5%84%E8%AE%AF.png",无锡都市资讯 +http://stream.thmz.com/wxtv3/sd/live.m3u8?_upt=978cd8731706199708 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="无锡都市资讯" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%97%A0%E9%94%A1%E9%83%BD%E5%B8%82%E8%B5%84%E8%AE%AF.png",无锡都市资讯 +http://stream.thmz.com/wxtv3/playlist.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="江苏体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E4%BD%93%E8%82%B2.png",江苏体育 +https://live.lalifeier.eu.org/jstv/jsty.m3u8?t=1746725062&key=0472e68b6d6133153804a3943cfdca96 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="江苏体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E4%BD%93%E8%82%B2.png",江苏体育 +https://live.lalifeier.eu.org/jstv/jsty.m3u8?t=1746739480&key=6f468215466d6daf15f5239fa2c164d6 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="江苏体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E4%BD%93%E8%82%B2.png",江苏体育 +https://live.lalifeier.eu.org/jstv/jsty.m3u8?t=1746775525&key=4573d423f55d4f3c1b70698e0046e086 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="江苏体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E4%BD%93%E8%82%B2.png",江苏体育 +https://live.lalifeier.eu.org/jstv/jsty.m3u8?t=1746782860&key=242483d6da1c67c17a454ee431e41b24 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="江苏体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E4%BD%93%E8%82%B2.png",江苏体育 +https://live.lalifeier.eu.org/jstv/jsty.m3u8?t=1746739480&amp;key=6f468215466d6daf15f5239fa2c164d6 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="江苏体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E4%BD%93%E8%82%B2.png",江苏体育 +https://live.lalifeier.eu.org/jstv/jsty.m3u8?t=1746811400&key=4867c9569d3be7173b932d82cac7adb2 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="江苏体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E4%BD%93%E8%82%B2.png",江苏体育 +https://live.lalifeier.eu.org/jstv/jsty.m3u8?t=1746825793&key=7db9095368ec4160797186b0972ce60e +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="江苏体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E4%BD%93%E8%82%B2.png",江苏体育 +https://live.lalifeier.eu.org/jstv/jsty.m3u8?t=1746861745&key=51e661097bab1305a852b8befcfee768 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="江苏体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E4%BD%93%E8%82%B2.png",江苏体育 +https://live.lalifeier.eu.org/jstv/jsty.m3u8?t=1746894586&key=11abeed3c4c1657927919a946bcde3d4 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="江苏体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E4%BD%93%E8%82%B2.png",江苏体育 +https://live.lalifeier.eu.org/jstv/jsty.m3u8?t=1746775525&amp;key=4573d423f55d4f3c1b70698e0046e086 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="江苏城市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E5%9F%8E%E5%B8%82.png",江苏城市 +http://z.b.bkpcp.top/m.php?id=jscs +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="江苏城市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E5%9F%8E%E5%B8%82.png",江苏城市 +https://stream1.freetv.fun/675206b8446ce719bfb293b5a5296db3aa26521c9810de7c996838247cc56964.ctv +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="江苏城市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E5%9F%8E%E5%B8%82.png",江苏城市 +https://live.lalifeier.eu.org/jstv/jscs.m3u8?t=1746725062&key=e57cf54e37873e637818478262c5e325 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="江苏城市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E5%9F%8E%E5%B8%82.png",江苏城市 +https://live.lalifeier.eu.org/jstv/jscs.m3u8?t=1746739480&key=cf6114e517839815a35a1b2178a4b0a8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="江苏城市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E5%9F%8E%E5%B8%82.png",江苏城市 +https://live.lalifeier.eu.org/jstv/jscs.m3u8?t=1746775525&key=3479c2ea7851f393c6eda126cf7e7a4b +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="江苏城市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E5%9F%8E%E5%B8%82.png",江苏城市 +https://live.lalifeier.eu.org/jstv/jscs.m3u8?t=1746782860&key=54751c5146cf1b2e5f00c2e60406f94a +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="江苏城市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E5%9F%8E%E5%B8%82.png",江苏城市 +https://live.lalifeier.eu.org/jstv/jscs.m3u8?t=1746811400&key=20191f2a864add9396b2dd61be5ae0cb +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="江苏城市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E5%9F%8E%E5%B8%82.png",江苏城市 +https://live.lalifeier.eu.org/jstv/jscs.m3u8?t=1746825793&key=aad2ef4a4cbbfa1733ca1dc829f6b657 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="江苏城市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E5%9F%8E%E5%B8%82.png",江苏城市 +https://live.lalifeier.eu.org/jstv/jscs.m3u8?t=1746861745&key=81bb0577aef93ca5ce69e317aa2f8d20 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="江苏城市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E5%9F%8E%E5%B8%82.png",江苏城市 +https://live.lalifeier.eu.org/jstv/jscs.m3u8?t=1746894586&key=23d8b85e9e9262a3ff7a986bcb1cc6ad +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="江苏影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E5%BD%B1%E8%A7%86.png",江苏影视 +http://z.b.bkpcp.top/m.php?id=jsys +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="江苏影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E5%BD%B1%E8%A7%86.png",江苏影视 +https://stream1.freetv.fun/a89dd489fa013bc4f36bcc4afe388f1783e2251c276e2566a9359d68a61c6d91.ctv +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="江苏影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E5%BD%B1%E8%A7%86.png",江苏影视 +https://live.lalifeier.eu.org/jstv/jsys.m3u8?t=1746725062&key=671d97cef383f3e9e04cda80c217820d +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="江苏影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E5%BD%B1%E8%A7%86.png",江苏影视 +https://live.lalifeier.eu.org/jstv/jsys.m3u8?t=1746739480&key=c34e89e435ead53afa0771a9e400d58f +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="江苏影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E5%BD%B1%E8%A7%86.png",江苏影视 +https://live.lalifeier.eu.org/jstv/jsys.m3u8?t=1746775525&key=a9aca05b56b7f7bbd79419a5d12fa1b9 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="江苏影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E5%BD%B1%E8%A7%86.png",江苏影视 +https://live.lalifeier.eu.org/jstv/jsys.m3u8?t=1746782860&key=ef5b072ba1c8441907607b8fc026abc9 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="江苏影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E5%BD%B1%E8%A7%86.png",江苏影视 +https://live.lalifeier.eu.org/jstv/jsys.m3u8?t=1746811400&key=dd4cd4980493b1b2d2b28ad1ec3d9825 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="江苏影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E5%BD%B1%E8%A7%86.png",江苏影视 +https://live.lalifeier.eu.org/jstv/jsys.m3u8?t=1746825793&key=b8b1b6007fd431b47d8a1c003ee15044 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="江苏影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E5%BD%B1%E8%A7%86.png",江苏影视 +https://live.lalifeier.eu.org/jstv/jsys.m3u8?t=1746861745&key=2e69b07e44956963021eb180448ed2a7 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="江苏影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E5%BD%B1%E8%A7%86.png",江苏影视 +https://live.lalifeier.eu.org/jstv/jsys.m3u8?t=1746894586&key=0ac2fffa87c226d17c6a2ba1a7eac681 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="江苏教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E6%95%99%E8%82%B2.png",江苏教育 +http://z.b.bkpcp.top/m.php?id=jsjy +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="江苏教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E6%95%99%E8%82%B2.png",江苏教育 +http://goo.bkpcp.top/mg/jsjy +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="江苏教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E6%95%99%E8%82%B2.png",江苏教育 +https://stream1.freetv.fun/7174b4fd66ddb2a7456b7040105dc27a1e57c166593870bb773cb5f6b4546c54.ctv +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="江苏教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E6%95%99%E8%82%B2.png",江苏教育 +https://live.lalifeier.eu.org/jstv/jsjy.m3u8?t=1746725062&key=f7b56e094c6bf53dd8344ed149869fe6 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="江苏教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E6%95%99%E8%82%B2.png",江苏教育 +https://live.lalifeier.eu.org/jstv/jsjy.m3u8?t=1746739480&key=3ba5927a5b06e0f3169ecb5ffef590ef +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="江苏教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E6%95%99%E8%82%B2.png",江苏教育 +https://live.lalifeier.eu.org/jstv/jsjy.m3u8?t=1746775525&key=f8bf0b20dd0f0c846a7ff46e4588f3fd +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="江苏教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E6%95%99%E8%82%B2.png",江苏教育 +https://live.lalifeier.eu.org/jstv/jsjy.m3u8?t=1746782860&key=0d1358d152d9ee14863da875c7e261a5 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="江苏教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E6%95%99%E8%82%B2.png",江苏教育 +https://live.lalifeier.eu.org/jstv/jsjy.m3u8?t=1746811400&key=18bfa4a2b6ec3c5b0d62e0f8fdbfb5ee +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="江苏教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E6%95%99%E8%82%B2.png",江苏教育 +https://live.lalifeier.eu.org/jstv/jsjy.m3u8?t=1746825793&key=90c98ab037191bf8ad71a250918599aa +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="江苏教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E6%95%99%E8%82%B2.png",江苏教育 +https://live.lalifeier.eu.org/jstv/jsjy.m3u8?t=1746861745&key=9d854cb007730cef4dcddfae5cc67025 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="泗洪新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B3%97%E6%B4%AA%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",泗洪新闻综合 +http://live1.habctv.com/ggpdsl/sd/live.m3u8?zjiangsd#http://live1.habctv.com/ggpdsl/sd/live.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="涟水电视台综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B6%9F%E6%B0%B4%E7%94%B5%E8%A7%86%E5%8F%B0%E7%BB%BC%E5%90%88.png",涟水电视台综合 +http://live1.habctv.com/ggpdsl/sd/live.m3u8?zjiangsd#http://live1.habctv.com/ggpdsl/sd/live.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="淮安公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%AE%E5%AE%89%E5%85%AC%E5%85%B1.png",淮安公共 +http://live1.habctv.com/ggpdsl/sd/live.m3u8?zjiangsd#http://live1.habctv.com/ggpdsl/sd/live.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="淮安影院娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%AE%E5%AE%89%E5%BD%B1%E9%99%A2%E5%A8%B1%E4%B9%90.png",淮安影院娱乐 +http://live1.habctv.com/ysylsl/sd/live.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="淮安新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%AE%E5%AE%89%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",淮安新闻综合 +http://z.b.bkpcp.top/m.php?id=haxwzh +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="淮安新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%AE%E5%AE%89%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",淮安新闻综合 +http://live1.habctv.com/zhpdsl/sd/live.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="淮安新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%AE%E5%AE%89%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",淮安新闻综合 +http://live1.habctv.com/zhpdsl/sd/live.m3u8?zjiangsd +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="淮阴综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%AE%E9%98%B4%E7%BB%BC%E5%90%88.png",淮阴综合 +https://huaiyin-tv-replay.cm.jstv.com/huaiyin-tv/huaiyinf.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="苏州文化生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%8B%8F%E5%B7%9E%E6%96%87%E5%8C%96%E7%94%9F%E6%B4%BB.png",苏州文化生活 +https://stream1.freetv.fun/su-zhou-wen-hua-sheng-huo-2.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="苏州新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%8B%8F%E5%B7%9E%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",苏州新闻综合 +http://z.b.bkpcp.top/m.php?id=szxwzh +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="苏州新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%8B%8F%E5%B7%9E%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",苏州新闻综合 +https://stream1.freetv.fun/su-zhou-xin-wen-zong-he-13.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="苏州生活资讯" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%8B%8F%E5%B7%9E%E7%94%9F%E6%B4%BB%E8%B5%84%E8%AE%AF.png",苏州生活资讯 +https://stream1.freetv.fun/su-zhou-sheng-huo-zi-xun-1.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="苏州社会经济" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%8B%8F%E5%B7%9E%E7%A4%BE%E4%BC%9A%E7%BB%8F%E6%B5%8E.png",苏州社会经济 +https://live-auth.51kandianshi.com/szgd/csztv2.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="苏州社会经济" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%8B%8F%E5%B7%9E%E7%A4%BE%E4%BC%9A%E7%BB%8F%E6%B5%8E.png",苏州社会经济 +https://stream1.freetv.fun/su-zhou-she-hui-jing-ji-2.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="连云港公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%BF%9E%E4%BA%91%E6%B8%AF%E5%85%AC%E5%85%B1.png",连云港公共 +http://live.lyg1.com/ggpd/sd/live.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="连云港新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%BF%9E%E4%BA%91%E6%B8%AF%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",连云港新闻综合 +http://z.b.bkpcp.top/m.php?id=lygxwzh +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="连云港新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%BF%9E%E4%BA%91%E6%B8%AF%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",连云港新闻综合 +http://live.lyg1.com/zhpd/sd/live.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="镇江二套社会民生" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%95%87%E6%B1%9F%E4%BA%8C%E5%A5%97%E7%A4%BE%E4%BC%9A%E6%B0%91%E7%94%9F.png",镇江二套社会民生 +http://zjtv-wshls.homecdn.com/live/2aa16.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="镇江新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%95%87%E6%B1%9F%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",镇江新闻综合 +http://cm-wshls.homecdn.com/live/2aa50.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="镇江新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%95%87%E6%B1%9F%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",镇江新闻综合 +http://zjtv-wshls.homecdn.com/live/2aa50.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="靖江新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%96%E6%B1%9F%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",靖江新闻综合 +http://ls.qingting.fm/live/23797.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="靖江新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%96%E6%B1%9F%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",靖江新闻综合 +https://stream1.freetv.fun/jing-jiang-xin-wen-zong-he-1.m3u8 +#EXTINF:-1 group-title="☘️江苏频道" tvg-name="靖江新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%96%E6%B1%9F%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",靖江新闻综合 +https://stream1.freetv.fun/jing-jiang-xin-wen-zong-he-7.m3u8 +#EXTINF:-1 group-title="☘️辽宁频道" tvg-name="辽宁北方" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%BE%BD%E5%AE%81%E5%8C%97%E6%96%B9.png",辽宁北方 +https://stream1.freetv.fun/liao-zhu-bei-fang-3.m3u8 +#EXTINF:-1 group-title="☘️辽宁频道" tvg-name="辽宁影视剧" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%BE%BD%E5%AE%81%E5%BD%B1%E8%A7%86%E5%89%A7.png",辽宁影视剧 +https://stream1.freetv.fun/liao-zhu-ying-shi-ju-1.m3u8 +#EXTINF:-1 group-title="☘️辽宁频道" tvg-name="辽宁影视剧" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%BE%BD%E5%AE%81%E5%BD%B1%E8%A7%86%E5%89%A7.png",辽宁影视剧 +https://stream1.freetv.fun/liao-zhu-ying-shi-ju-2.m3u8 +#EXTINF:-1 group-title="☘️辽宁频道" tvg-name="辽宁影视剧" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%BE%BD%E5%AE%81%E5%BD%B1%E8%A7%86%E5%89%A7.png",辽宁影视剧 +https://stream1.freetv.fun/liao-zhu-ying-shi-ju-3.m3u8 +#EXTINF:-1 group-title="☘️辽宁频道" tvg-name="辽宁教育青少" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%BE%BD%E5%AE%81%E6%95%99%E8%82%B2%E9%9D%92%E5%B0%91.png",辽宁教育青少 +https://stream1.freetv.fun/liao-zhu-jiao-yu-qing-shao-1.m3u8 +#EXTINF:-1 group-title="☘️辽宁频道" tvg-name="辽宁生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%BE%BD%E5%AE%81%E7%94%9F%E6%B4%BB.png",辽宁生活 +https://stream1.freetv.fun/liao-zhu-sheng-huo-1.m3u8 +#EXTINF:-1 group-title="☘️辽宁频道" tvg-name="辽宁经济" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%BE%BD%E5%AE%81%E7%BB%8F%E6%B5%8E.png",辽宁经济 +http://ls.qingting.fm/live/23797.m3u8 +#EXTINF:-1 group-title="☘️辽宁频道" tvg-name="辽宁经济" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%BE%BD%E5%AE%81%E7%BB%8F%E6%B5%8E.png",辽宁经济 +https://stream1.freetv.fun/liao-zhu-jing-ji-2.m3u8 +#EXTINF:-1 group-title="☘️辽宁频道" tvg-name="辽宁都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%BE%BD%E5%AE%81%E9%83%BD%E5%B8%82.png",辽宁都市 +https://ls.qingting.fm/live/1099/64k.m3u8 +#EXTINF:-1 group-title="☘️辽宁频道" tvg-name="辽宁都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%BE%BD%E5%AE%81%E9%83%BD%E5%B8%82.png",辽宁都市 +https://stream1.freetv.fun/liao-zhu-du-shi-4.m3u8 +#EXTINF:-1 group-title="☘️辽宁频道" tvg-name="辽宁都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%BE%BD%E5%AE%81%E9%83%BD%E5%B8%82.png",辽宁都市 +https://stream1.freetv.fun/liao-zhu-du-shi-5.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E9%83%BD%E5%B8%82.png",湖南都市 +http://php.jdshipin.com:8880/iptv.php +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E9%83%BD%E5%B8%82.png",湖南都市 +http://php.jdshipin.com:8880/iptv.php?id=hnds +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E9%83%BD%E5%B8%82.png",湖南都市 +https://stream1.freetv.fun/hu-nan-du-shi-6.ctv +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E9%83%BD%E5%B8%82.png",湖南都市 +https://stream1.freetv.fun/hu-nan-du-shi-8.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E9%83%BD%E5%B8%82.png",湖南都市 +https://stream1.freetv.fun/hu-nan-du-shi-14.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E9%83%BD%E5%B8%82.png",湖南都市 +https://stream1.freetv.fun/hu-nan-du-shi-12.ctv +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E9%83%BD%E5%B8%82.png",湖南都市 +https://stream1.freetv.fun/hu-nan-du-shi-1.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E9%83%BD%E5%B8%82.png",湖南都市 +https://stream1.freetv.fun/hu-nan-du-shi-3.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E9%83%BD%E5%B8%82.png",湖南都市 +http://pili-live-snapshot.tv.hntvcloud.com/mg-tv/channel-6.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南经视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E7%BB%8F%E8%A7%86.png",湖南经视 +https://stream1.freetv.fun/hu-nan-jing-shi-10.ctv +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南经视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E7%BB%8F%E8%A7%86.png",湖南经视 +https://stream1.freetv.fun/hu-nan-jing-shi-4.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南经视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E7%BB%8F%E8%A7%86.png",湖南经视 +https://stream1.freetv.fun/hu-nan-jing-shi-14.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南经视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E7%BB%8F%E8%A7%86.png",湖南经视 +https://stream1.freetv.fun/hu-nan-jing-shi-gao-qing-2.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南经视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E7%BB%8F%E8%A7%86.png",湖南经视 +https://stream1.freetv.fun/hu-nan-jing-shi-2.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南经视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E7%BB%8F%E8%A7%86.png",湖南经视 +https://stream1.freetv.fun/hu-nan-jing-shi-13.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南经视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E7%BB%8F%E8%A7%86.png",湖南经视 +https://stream1.freetv.fun/hu-nan-jing-shi-10.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南经视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E7%BB%8F%E8%A7%86.png",湖南经视 +https://stream1.freetv.fun/hu-nan-jing-shi-9.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南经视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E7%BB%8F%E8%A7%86.png",湖南经视 +https://stream1.freetv.fun/hu-nan-jing-shi-1.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南经视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E7%BB%8F%E8%A7%86.png",湖南经视 +https://stream1.freetv.fun/hu-nan-jing-shi-12.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南电视剧" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E7%94%B5%E8%A7%86%E5%89%A7.png",湖南电视剧 +https://stream1.freetv.fun/hu-nan-dian-shi-ju-3.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南电视剧" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E7%94%B5%E8%A7%86%E5%89%A7.png",湖南电视剧 +https://stream1.freetv.fun/hu-nan-dian-shi-ju-gao-qing-1.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南电视剧" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E7%94%B5%E8%A7%86%E5%89%A7.png",湖南电视剧 +https://stream1.freetv.fun/hu-nan-dian-shi-ju-14.ctv +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南电视剧" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E7%94%B5%E8%A7%86%E5%89%A7.png",湖南电视剧 +https://stream1.freetv.fun/hu-nan-dian-shi-ju-11.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南电视剧" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E7%94%B5%E8%A7%86%E5%89%A7.png",湖南电视剧 +https://stream1.freetv.fun/hu-nan-dian-shi-ju-2.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南电视剧" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E7%94%B5%E8%A7%86%E5%89%A7.png",湖南电视剧 +https://stream1.freetv.fun/hu-nan-dian-shi-ju-7.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南电视剧" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E7%94%B5%E8%A7%86%E5%89%A7.png",湖南电视剧 +https://stream1.freetv.fun/hu-nan-dian-shi-ju-1.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南电视剧" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E7%94%B5%E8%A7%86%E5%89%A7.png",湖南电视剧 +https://stream1.freetv.fun/hu-nan-dian-shi-ju-10.ctv +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南电视剧" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E7%94%B5%E8%A7%86%E5%89%A7.png",湖南电视剧 +https://stream1.freetv.fun/hu-nan-dian-shi-ju-12.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南电视剧" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E7%94%B5%E8%A7%86%E5%89%A7.png",湖南电视剧 +https://stream1.freetv.fun/hu-nan-dian-shi-ju-8.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E7%94%B5%E5%BD%B1.png",湖南电影 +https://stream1.freetv.fun/hu-nan-dian-ying-2.ctv +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E7%94%B5%E5%BD%B1.png",湖南电影 +https://stream1.freetv.fun/hu-nan-dian-ying-11.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E7%94%B5%E5%BD%B1.png",湖南电影 +https://stream1.freetv.fun/hu-nan-dian-ying-12.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E7%94%B5%E5%BD%B1.png",湖南电影 +https://stream1.freetv.fun/hu-nan-dian-ying-8.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E7%94%B5%E5%BD%B1.png",湖南电影 +https://stream1.freetv.fun/hu-nan-dian-ying-15.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E7%94%B5%E5%BD%B1.png",湖南电影 +https://stream1.freetv.fun/hu-nan-dian-ying-10.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E7%94%B5%E5%BD%B1.png",湖南电影 +https://stream1.freetv.fun/hu-nan-dian-ying-7.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E7%94%B5%E5%BD%B1.png",湖南电影 +https://stream1.freetv.fun/hu-nan-dian-ying-13.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E7%94%B5%E5%BD%B1.png",湖南电影 +https://stream1.freetv.fun/hu-nan-dian-ying-6.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E7%94%B5%E5%BD%B1.png",湖南电影 +https://stream1.freetv.fun/hu-nan-dian-ying-2.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南爱晚" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E7%88%B1%E6%99%9A.png",湖南爱晚 +http://p2.vzan.com/527645544/149039617847513156/live.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南爱晚" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E7%88%B1%E6%99%9A.png",湖南爱晚 +http://php.jdshipin.com:8880/iptv.php +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南爱晚" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E7%88%B1%E6%99%9A.png",湖南爱晚 +http://pili-live-snapshot.tv.hntvcloud.com/mg-tv/channel-9.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E6%95%99%E8%82%B2.png",湖南教育 +https://stream1.freetv.fun/hu-nan-jiao-yu-6.ctv +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E6%95%99%E8%82%B2.png",湖南教育 +https://stream1.freetv.fun/hu-nan-jiao-yu-4.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E6%95%99%E8%82%B2.png",湖南教育 +https://stream1.freetv.fun/hu-nan-jiao-yu-5.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E6%95%99%E8%82%B2.png",湖南教育 +http://php.jdshipin.com:8880/iptv.php +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%A8%B1%E4%B9%90.png",湖南娱乐 +https://stream1.freetv.fun/hu-nan-yu-le-9.ctv +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%A8%B1%E4%B9%90.png",湖南娱乐 +https://stream1.freetv.fun/hu-nan-yu-le-13.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%A8%B1%E4%B9%90.png",湖南娱乐 +https://stream1.freetv.fun/hu-nan-yu-le-16.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%A8%B1%E4%B9%90.png",湖南娱乐 +https://stream1.freetv.fun/hu-nan-yu-le-16.ctv +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%A8%B1%E4%B9%90.png",湖南娱乐 +https://stream1.freetv.fun/hu-nan-yu-le-8.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%A8%B1%E4%B9%90.png",湖南娱乐 +https://stream1.freetv.fun/hu-nan-yu-le-9.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%A8%B1%E4%B9%90.png",湖南娱乐 +https://stream1.freetv.fun/hu-nan-yu-le-gao-qing-3.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%A8%B1%E4%B9%90.png",湖南娱乐 +https://stream1.freetv.fun/hu-nan-yu-le-2.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%A8%B1%E4%B9%90.png",湖南娱乐 +https://stream1.freetv.fun/hu-nan-yu-le-7.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%A8%B1%E4%B9%90.png",湖南娱乐 +http://php.jdshipin.com:8880/iptv.php +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南国际" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%9B%BD%E9%99%85.png",湖南国际 +https://stream1.freetv.fun/hu-nan-guo-ji-4.ctv +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南国际" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%9B%BD%E9%99%85.png",湖南国际 +https://stream1.freetv.fun/hu-nan-guo-ji-13.ctv +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南国际" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%9B%BD%E9%99%85.png",湖南国际 +https://stream1.freetv.fun/hu-nan-guo-ji-2.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南国际" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%9B%BD%E9%99%85.png",湖南国际 +https://stream1.freetv.fun/hu-nan-guo-ji-9.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南国际" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%9B%BD%E9%99%85.png",湖南国际 +https://stream1.freetv.fun/hu-nan-guo-ji-7.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南国际" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%9B%BD%E9%99%85.png",湖南国际 +https://stream1.freetv.fun/hu-nan-guo-ji-2.ctv +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南国际" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%9B%BD%E9%99%85.png",湖南国际 +https://stream1.freetv.fun/hu-nan-guo-ji-3.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南国际" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%9B%BD%E9%99%85.png",湖南国际 +http://php.jdshipin.com:8880/iptv.php +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南国际" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%9B%BD%E9%99%85.png",湖南国际 +http://pili-live-snapshot.tv.hntvcloud.com/mg-tv/channel-4.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%85%AC%E5%85%B1.png",湖南公共 +https://stream1.freetv.fun/hu-nan-gong-gong-5.ctv +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%85%AC%E5%85%B1.png",湖南公共 +https://stream1.freetv.fun/hu-nan-gong-gong-1.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%85%AC%E5%85%B1.png",湖南公共 +https://stream1.freetv.fun/hu-nan-gong-gong-4.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%85%AC%E5%85%B1.png",湖南公共 +https://stream1.freetv.fun/hu-nan-gong-gong-7.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%85%AC%E5%85%B1.png",湖南公共 +https://stream1.freetv.fun/hu-nan-gong-gong-gao-qing-1.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%85%AC%E5%85%B1.png",湖南公共 +https://stream1.freetv.fun/hu-nan-gong-gong-6.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%85%AC%E5%85%B1.png",湖南公共 +https://stream1.freetv.fun/hu-nan-gong-gong-2.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%85%AC%E5%85%B1.png",湖南公共 +https://stream1.freetv.fun/hu-nan-gong-gong-5.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%85%AC%E5%85%B1.png",湖南公共 +https://stream1.freetv.fun/hu-nan-gong-gong-3.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%85%AC%E5%85%B1.png",湖南公共 +https://stream1.freetv.fun/hu-nan-gong-gong-7.ctv +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="金鹰纪实" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%91%E9%B9%B0%E7%BA%AA%E5%AE%9E.png",金鹰纪实 +http://iptv.huuc.edu.cn/hls/gedocu.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="金鹰纪实" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%91%E9%B9%B0%E7%BA%AA%E5%AE%9E.png",金鹰纪实 +https://stream1.freetv.fun/jin-ying-ji-shi-1.ctv +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="金鹰纪实" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%91%E9%B9%B0%E7%BA%AA%E5%AE%9E.png",金鹰纪实 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226572/1.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="金鹰纪实" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%91%E9%B9%B0%E7%BA%AA%E5%AE%9E.png",金鹰纪实 +https://stream1.freetv.fun/jin-ying-ji-shi-14.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="金鹰纪实" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%91%E9%B9%B0%E7%BA%AA%E5%AE%9E.png",金鹰纪实 +https://stream1.freetv.fun/jin-ying-ji-shi-gao-qing-2.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="金鹰纪实" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%91%E9%B9%B0%E7%BA%AA%E5%AE%9E.png",金鹰纪实 +https://stream1.freetv.fun/jin-ying-ji-shi-22.ctv +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="金鹰纪实" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%91%E9%B9%B0%E7%BA%AA%E5%AE%9E.png",金鹰纪实 +https://stream1.freetv.fun/jin-ying-ji-shi-15.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="金鹰纪实" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%91%E9%B9%B0%E7%BA%AA%E5%AE%9E.png",金鹰纪实 +https://stream1.freetv.fun/jin-ying-ji-shi-37.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="金鹰纪实" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%91%E9%B9%B0%E7%BA%AA%E5%AE%9E.png",金鹰纪实 +https://stream1.freetv.fun/jin-ying-ji-shi-18.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="金鹰纪实" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%91%E9%B9%B0%E7%BA%AA%E5%AE%9E.png",金鹰纪实 +https://stream1.freetv.fun/jin-ying-ji-shi-gao-qing-3.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南金鹰纪实" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E9%87%91%E9%B9%B0%E7%BA%AA%E5%AE%9E.png",湖南金鹰纪实 +http://yc.myds.me:35455/itv/5000000011000031203.m3u8?cdn=bestzb +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南金鹰纪实" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E9%87%91%E9%B9%B0%E7%BA%AA%E5%AE%9E.png",湖南金鹰纪实 +http://nas.suntao.online:35455/itv/5000000011000031203.m3u8?cdn=bestzb +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="长沙新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%95%BF%E6%B2%99%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",长沙新闻综合 +http://ls.qingting.fm/live/4877.m3u8 +#EXTINF:-1 group-title="☘️湖南频道" tvg-name="益阳新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9B%8A%E9%98%B3%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",益阳新闻综合 +http://220.169.100.41:10087/udp/239.76.255.15:9000 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E7%BB%BC%E5%90%88.png",湖北综合 +http://[2409:8087:4c0a:22:1::11]:6410/170000001115/UmaiCHAN638072216f7da/index.m3u8?AuthInfo=9kOOdBn7MFF%2F2bWjKgahUUAdKgLqNB5aOAUhcp5CeNLx3R3LdIBdA5q61lut1LwZcw4SC2tJubc%2Bq5t%2F61jvWCtjrJL0x%2BHncPgdmcbBW9I +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E7%BB%BC%E5%90%88.png",湖北综合 +https://stream1.freetv.fun/hu-bei-zong-he-4.ctv +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E7%BB%BC%E5%90%88.png",湖北综合 +https://stream1.freetv.fun/hu-bei-zong-he-3.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E7%BB%BC%E5%90%88.png",湖北综合 +https://stream1.freetv.fun/hu-bei-zong-he-10.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E7%BB%BC%E5%90%88.png",湖北综合 +https://stream1.freetv.fun/hu-bei-zong-he-13.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E7%BB%BC%E5%90%88.png",湖北综合 +https://stream1.freetv.fun/hu-bei-zong-he-7.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E7%BB%BC%E5%90%88.png",湖北综合 +https://stream1.freetv.fun/hu-bei-zong-he-2.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E7%BB%BC%E5%90%88.png",湖北综合 +https://stream1.freetv.fun/hu-bei-zong-he-12.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E7%BB%BC%E5%90%88.png",湖北综合 +https://stream1.freetv.fun/hu-bei-zong-he-8.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E7%BB%BC%E5%90%88.png",湖北综合 +https://stream1.freetv.fun/hu-bei-zong-he-9.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北经视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E7%BB%8F%E8%A7%86.png",湖北经视 +http://[2409:8087:4c0a:22:1::11]:6410/170000001115/UmaiCHAN63807203543e3/index.m3u8?AuthInfo=9kOOdBn7MFF%2F2bWjKgahUUAdKgLqNB5aOAUhcp5CeNLVCQ3pDe4nBySab%2B3xPL123aTSCRugzF2ABe36IIJw2evZbYdWUo0ffUw53bflDgU +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北经视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E7%BB%8F%E8%A7%86.png",湖北经视 +https://stream1.freetv.fun/hu-bei-jing-shi-2.ctv +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北经视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E7%BB%8F%E8%A7%86.png",湖北经视 +https://stream1.freetv.fun/hu-bei-jing-shi-11.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北经视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E7%BB%8F%E8%A7%86.png",湖北经视 +https://stream1.freetv.fun/hu-bei-jing-shi-8.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北经视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E7%BB%8F%E8%A7%86.png",湖北经视 +https://stream1.freetv.fun/hu-bei-jing-shi-16.ctv +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北经视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E7%BB%8F%E8%A7%86.png",湖北经视 +https://stream1.freetv.fun/hu-bei-jing-shi-18.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北经视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E7%BB%8F%E8%A7%86.png",湖北经视 +https://stream1.freetv.fun/hu-bei-jing-shi-14.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北经视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E7%BB%8F%E8%A7%86.png",湖北经视 +https://stream1.freetv.fun/hu-bei-jing-shi-6.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北经视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E7%BB%8F%E8%A7%86.png",湖北经视 +https://stream1.freetv.fun/hu-bei-jing-shi-19.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北经视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E7%BB%8F%E8%A7%86.png",湖北经视 +https://stream1.freetv.fun/hu-bei-jing-shi-3.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E7%94%9F%E6%B4%BB.png",湖北生活 +http://satellitepull.cnr.cn/live/wx32hubczshgb/playlist.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E7%94%9F%E6%B4%BB.png",湖北生活 +https://satellitepull.cnr.cn/live/wx32hubczshgb/playlist.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E7%94%9F%E6%B4%BB.png",湖北生活 +http://[2409:8087:4c0a:22:1::11]:6410/170000001115/UmaiCHAN638072c62e405/index.m3u8?AuthInfo=9kOOdBn7MFF%2F2bWjKgahUUAdKgLqNB5aOAUhcp5CeNKJPodw5BcDirSOw7egztI5bUvJjqPzSNAhrA37GrbRBIAjGQpzP0QmgsmuHnQyd2c +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E7%94%9F%E6%B4%BB.png",湖北生活 +https://stream1.freetv.fun/hu-bei-sheng-huo-3.ctv +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E7%94%9F%E6%B4%BB.png",湖北生活 +https://stream1.freetv.fun/hu-bei-sheng-huo-12.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E7%94%9F%E6%B4%BB.png",湖北生活 +https://stream1.freetv.fun/hu-bei-sheng-huo-8.ctv +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E7%94%9F%E6%B4%BB.png",湖北生活 +https://stream1.freetv.fun/hu-bei-sheng-huo-11.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E7%94%9F%E6%B4%BB.png",湖北生活 +https://stream1.freetv.fun/hu-bei-sheng-huo-12.ctv +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E7%94%9F%E6%B4%BB.png",湖北生活 +https://stream1.freetv.fun/hu-bei-sheng-huo-1.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E7%94%9F%E6%B4%BB.png",湖北生活 +https://stream1.freetv.fun/hu-bei-sheng-huo-5.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E6%95%99%E8%82%B2.png",湖北教育 +http://[2409:8087:4c0a:22:1::11]:6410/170000001115/UmaiCHAN638072a6cbbf6/index.m3u8?AuthInfo=9kOOdBn7MFF%2F2bWjKgahUUAdKgLqNB5aOAUhcp5CeNKTFQuOKNd5i0HMa3ydMWIQ6kJ2fBJGJ77BLTXK72CqUYQsX3ZguYt0954s9hfZTfc +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E6%95%99%E8%82%B2.png",湖北教育 +https://stream1.freetv.fun/hu-bei-jiao-yu-4.ctv +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E6%95%99%E8%82%B2.png",湖北教育 +https://stream1.freetv.fun/hu-bei-jiao-yu-14.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E6%95%99%E8%82%B2.png",湖北教育 +https://stream1.freetv.fun/hu-bei-jiao-yu-1.ctv +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E6%95%99%E8%82%B2.png",湖北教育 +http://www.422425.xyz:4022/udp/239.69.1.206:10878 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%BD%B1%E8%A7%86.png",湖北影视 +https://stream1.freetv.fun/hu-bei-ying-shi-1.ctv +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%BD%B1%E8%A7%86.png",湖北影视 +https://stream1.freetv.fun/hu-bei-ying-shi-1.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%BD%B1%E8%A7%86.png",湖北影视 +https://stream1.freetv.fun/hu-bei-ying-shi-15.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%BD%B1%E8%A7%86.png",湖北影视 +https://stream1.freetv.fun/hu-bei-ying-shi-10.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%BD%B1%E8%A7%86.png",湖北影视 +https://stream1.freetv.fun/hu-bei-ying-shi-9.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%BD%B1%E8%A7%86.png",湖北影视 +https://stream1.freetv.fun/hu-bei-ying-shi-2.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%BD%B1%E8%A7%86.png",湖北影视 +http://[2409:8087:4c0a:22:1::11]:6410/170000001115/UmaiCHAN6380728abccd2/index.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%85%AC%E5%85%B1.png",湖北公共 +https://stream1.freetv.fun/hu-bei-gong-gong-5.ctv +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%85%AC%E5%85%B1.png",湖北公共 +https://stream1.freetv.fun/hu-bei-gong-gong-xin-wen-3.ctv +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%85%AC%E5%85%B1.png",湖北公共 +https://stream1.freetv.fun/hu-bei-gong-gong-2.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%85%AC%E5%85%B1.png",湖北公共 +https://stream1.freetv.fun/hu-bei-gong-gong-9.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%85%AC%E5%85%B1.png",湖北公共 +http://[2409:8087:4c0a:22:1::11]:6410/170000001115/UmaiCHAN6380726d0ee3b/index.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北垄上" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%9E%84%E4%B8%8A.png",湖北垄上 +http://[2409:8087:4c0a:22:1::11]:6410/170000001115/UmaiCHAN638072463c333/index.m3u8?AuthInfo=9kOOdBn7MFF%2F2bWjKgahUUAdKgLqNB5aOAUhcp5CeNL%2Be1h4FfA5QqwJ7IPOz3p2qIS7djSxm17Htd%2FckZkm%2FVqsKHEJFJt26ju9iibzMEo +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北垄上" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%9E%84%E4%B8%8A.png",湖北垄上 +https://stream1.freetv.fun/hu-bei-long-shang-9.ctv +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北垄上" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%9E%84%E4%B8%8A.png",湖北垄上 +https://stream1.freetv.fun/hu-bei-long-shang-16.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北垄上" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%9E%84%E4%B8%8A.png",湖北垄上 +https://stream1.freetv.fun/hu-bei-long-shang-7.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北垄上" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%9E%84%E4%B8%8A.png",湖北垄上 +https://stream1.freetv.fun/hu-bei-long-shang-13.ctv +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北垄上" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%9E%84%E4%B8%8A.png",湖北垄上 +https://stream1.freetv.fun/hu-bei-long-shang-1.ctv +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北垄上" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%9E%84%E4%B8%8A.png",湖北垄上 +https://stream1.freetv.fun/hu-bei-long-shang-4.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北垄上" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%9E%84%E4%B8%8A.png",湖北垄上 +https://stream1.freetv.fun/hu-bei-long-shang-17.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北垄上" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%9E%84%E4%B8%8A.png",湖北垄上 +https://stream1.freetv.fun/hu-bei-long-shang-13.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="湖北垄上" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%9E%84%E4%B8%8A.png",湖北垄上 +https://stream1.freetv.fun/hu-bei-long-shang-14.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="武汉一台新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%AD%A6%E6%B1%89%E4%B8%80%E5%8F%B0%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",武汉一台新闻综合 +https://ls.qingting.fm/live/20198/64k.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="武汉一台新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%AD%A6%E6%B1%89%E4%B8%80%E5%8F%B0%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",武汉一台新闻综合 +https://stream1.freetv.fun/wu-yi-xin-wen-zong-he-7.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="武汉一台新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%AD%A6%E6%B1%89%E4%B8%80%E5%8F%B0%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",武汉一台新闻综合 +https://stream1.freetv.fun/wu-yi-1xin-wen-zong-he-1.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="武汉一台新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%AD%A6%E6%B1%89%E4%B8%80%E5%8F%B0%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",武汉一台新闻综合 +https://stream1.freetv.fun/wu-yi-xin-wen-zong-he-1.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="武汉一台新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%AD%A6%E6%B1%89%E4%B8%80%E5%8F%B0%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",武汉一台新闻综合 +https://stream1.freetv.fun/wu-yi-yi-tai-xin-wen-zong-he-4.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="武汉一台新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%AD%A6%E6%B1%89%E4%B8%80%E5%8F%B0%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",武汉一台新闻综合 +https://stream1.freetv.fun/wu-yi-yi-tai-xin-wen-zong-he-5.ctv +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="武汉二台电视剧" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%AD%A6%E6%B1%89%E4%BA%8C%E5%8F%B0%E7%94%B5%E8%A7%86%E5%89%A7.png",武汉二台电视剧 +https://stream1.freetv.fun/wu-yi-2dian-shi-ju-1.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="武汉二台电视剧" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%AD%A6%E6%B1%89%E4%BA%8C%E5%8F%B0%E7%94%B5%E8%A7%86%E5%89%A7.png",武汉二台电视剧 +https://stream1.freetv.fun/wu-yi-er-tai-dian-shi-ju-3.ctv +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="武汉二台电视剧" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%AD%A6%E6%B1%89%E4%BA%8C%E5%8F%B0%E7%94%B5%E8%A7%86%E5%89%A7.png",武汉二台电视剧 +https://stream1.freetv.fun/wu-yi-er-tai-dian-shi-ju-1.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="武汉四台经济" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%AD%A6%E6%B1%89%E5%9B%9B%E5%8F%B0%E7%BB%8F%E6%B5%8E.png",武汉四台经济 +https://stream1.freetv.fun/wu-yi-jing-ji-1.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="武汉教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%AD%A6%E6%B1%89%E6%95%99%E8%82%B2.png",武汉教育 +https://stream1.freetv.fun/wu-yi-jiao-yu-7.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="武汉教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%AD%A6%E6%B1%89%E6%95%99%E8%82%B2.png",武汉教育 +https://stream1.freetv.fun/wu-yi-jiao-yu-5.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="武汉教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%AD%A6%E6%B1%89%E6%95%99%E8%82%B2.png",武汉教育 +https://stream1.freetv.fun/wu-yi-jiao-yu-12.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="武汉教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%AD%A6%E6%B1%89%E6%95%99%E8%82%B2.png",武汉教育 +https://stream1.freetv.fun/wu-yi-jiao-yu-8.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="武汉教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%AD%A6%E6%B1%89%E6%95%99%E8%82%B2.png",武汉教育 +https://stream1.freetv.fun/wu-yi-jiao-yu-1.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="武汉教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%AD%A6%E6%B1%89%E6%95%99%E8%82%B2.png",武汉教育 +https://stream1.freetv.fun/wu-yi-jiao-yu-18.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="武汉教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%AD%A6%E6%B1%89%E6%95%99%E8%82%B2.png",武汉教育 +https://stream1.freetv.fun/wu-yi-jiao-yu-17.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="武汉教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%AD%A6%E6%B1%89%E6%95%99%E8%82%B2.png",武汉教育 +https://stream1.freetv.fun/wu-yi-jiao-yu-13.ctv +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="武汉教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%AD%A6%E6%B1%89%E6%95%99%E8%82%B2.png",武汉教育 +https://stream1.freetv.fun/wu-yi-jiao-yu-11.ctv +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="武汉教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%AD%A6%E6%B1%89%E6%95%99%E8%82%B2.png",武汉教育 +https://stream1.freetv.fun/wu-yi-jiao-yu-15.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="江夏新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E5%A4%8F%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",江夏新闻综合 +https://stream1.freetv.fun/jiang-xia-xin-wen-zong-he-5.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="十堰新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%81%E5%A0%B0%E6%96%B0%E9%97%BB.png",十堰新闻 +https://stream1.freetv.fun/shi-yan-xin-wen-1.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="十堰新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%81%E5%A0%B0%E6%96%B0%E9%97%BB.png",十堰新闻 +https://stream1.freetv.fun/shi-yan-xin-wen-3.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="十堰新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%81%E5%A0%B0%E6%96%B0%E9%97%BB.png",十堰新闻 +https://stream1.freetv.fun/shi-yan-xin-wen-2.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="十堰新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%81%E5%A0%B0%E6%96%B0%E9%97%BB.png",十堰新闻 +https://stream1.freetv.fun/shi-yan-xin-wen-4.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="荆门新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%8D%86%E9%97%A8%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",荆门新闻综合 +https://stream.jmtv.com.cn/xwzh/playlist.m3u8?_upt=3e28e7271664278691 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="荆门新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%8D%86%E9%97%A8%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",荆门新闻综合 +https://stream1.freetv.fun/jing-men-xin-wen-zong-he-3.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="荆门新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%8D%86%E9%97%A8%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",荆门新闻综合 +https://stream1.freetv.fun/jing-men-xin-wen-zong-he-2.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="荆门新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%8D%86%E9%97%A8%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",荆门新闻综合 +https://stream1.freetv.fun/jing-men-xin-wen-zong-he-1.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="荆门新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%8D%86%E9%97%A8%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",荆门新闻综合 +https://stream1.freetv.fun/jing-men-xin-wen-zong-he-6.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="荆门新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%8D%86%E9%97%A8%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",荆门新闻综合 +https://stream1.freetv.fun/jing-men-xin-wen-zong-he-5.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="荆门新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%8D%86%E9%97%A8%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",荆门新闻综合 +https://stream1.freetv.fun/jing-men-xin-wen-zong-he-4.m3u8 +#EXTINF:-1 group-title="☘️湖北频道" tvg-name="荆门新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%8D%86%E9%97%A8%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",荆门新闻综合 +http://stream.jmtv.com.cn/xwzh/sd/live.m3u8 +#EXTINF:-1 group-title="☘️广西频道" tvg-name="北海经济科教" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E6%B5%B7%E7%BB%8F%E6%B5%8E%E7%A7%91%E6%95%99.png",北海经济科教 +https://play-a2.quklive.com:443/live/1727311690820146.m3u8 +#EXTINF:-1 group-title="☘️广西频道" tvg-name="南宁公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E5%AE%81%E5%85%AC%E5%85%B1.png",南宁公共 +http://jzlive.jztvnews.com:90/live/jzgg.m3u8 +#EXTINF:-1 group-title="☘️广西频道" tvg-name="南宁公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E5%AE%81%E5%85%AC%E5%85%B1.png",南宁公共 +http://688b7cbf9b7a8d911a085372b6c70ab5.livehwc3.cn/hls.nntv.cn/nnlive/XWZH_24.m3u8?sub_m3u8=true&edge_slice=true&user_session_id=d1391be1fc200f8e4700c5d82b44edae +#EXTINF:-1 group-title="☘️广西频道" tvg-name="南宁公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E5%AE%81%E5%85%AC%E5%85%B1.png",南宁公共 +https://stream1.freetv.fun/nan-zhu-gong-gong-1.m3u8 +#EXTINF:-1 group-title="☘️广西频道" tvg-name="南宁公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E5%AE%81%E5%85%AC%E5%85%B1.png",南宁公共 +https://stream1.freetv.fun/nan-zhu-gong-gong-5.m3u8 +#EXTINF:-1 group-title="☘️广西频道" tvg-name="南宁公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E5%AE%81%E5%85%AC%E5%85%B1.png",南宁公共 +https://stream1.freetv.fun/nan-zhu-gong-gong-6.m3u8 +#EXTINF:-1 group-title="☘️广西频道" tvg-name="南宁公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E5%AE%81%E5%85%AC%E5%85%B1.png",南宁公共 +https://stream1.freetv.fun/nan-zhu-gong-gong-7.m3u8 +#EXTINF:-1 group-title="☘️广西频道" tvg-name="南宁公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E5%AE%81%E5%85%AC%E5%85%B1.png",南宁公共 +https://stream1.freetv.fun/nan-zhu-gong-gong-9.m3u8 +#EXTINF:-1 group-title="☘️广西频道" tvg-name="南宁新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E5%AE%81%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",南宁新闻综合 +http://688b7cbf9b7a8d911a085372b6c70ab5.livehwc3.cn/hls.nntv.cn/nnlive/XWZH_24.m3u8?sub_m3u8=true&edge_slice=true&user_session_id=d1391be1fc200f8e4700c5d82b44edae +#EXTINF:-1 group-title="☘️广西频道" tvg-name="南宁新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E5%AE%81%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",南宁新闻综合 +https://stream1.freetv.fun/nan-zhu-xin-wen-zong-he-1.m3u8 +#EXTINF:-1 group-title="☘️广西频道" tvg-name="南宁新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E5%AE%81%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",南宁新闻综合 +https://stream1.freetv.fun/nan-zhu-xin-wen-zong-he-3.m3u8 +#EXTINF:-1 group-title="☘️广西频道" tvg-name="南宁新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E5%AE%81%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",南宁新闻综合 +https://stream1.freetv.fun/nan-zhu-xin-wen-zong-he-4.m3u8 +#EXTINF:-1 group-title="☘️广西频道" tvg-name="南宁新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E5%AE%81%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",南宁新闻综合 +http://615bbf179ba53515dccad7b1da5d1ad9.livehwc3.cn/hls.nntv.cn/nnlive/WLSH_24.m3u8?sub_m3u8=true&edge_slice=true&user_session_id=2598844eaee8a4265e706fc14b3fc11d +#EXTINF:-1 group-title="☘️广西频道" tvg-name="南宁都市生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E5%AE%81%E9%83%BD%E5%B8%82%E7%94%9F%E6%B4%BB.png",南宁都市生活 +http://615bbf179ba53515dccad7b1da5d1ad9.livehwc3.cn/hls.nntv.cn/nnlive/WLSH_24.m3u8?sub_m3u8=true&edge_slice=true&user_session_id=2598844eaee8a4265e706fc14b3fc11d +#EXTINF:-1 group-title="☘️广西频道" tvg-name="南宁都市生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E5%AE%81%E9%83%BD%E5%B8%82%E7%94%9F%E6%B4%BB.png",南宁都市生活 +https://stream1.freetv.fun/nan-zhu-du-shi-sheng-huo-1.m3u8 +#EXTINF:-1 group-title="☘️广西频道" tvg-name="南宁都市生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E5%AE%81%E9%83%BD%E5%B8%82%E7%94%9F%E6%B4%BB.png",南宁都市生活 +https://stream1.freetv.fun/nan-zhu-du-shi-sheng-huo-2.m3u8 +#EXTINF:-1 group-title="☘️广西频道" tvg-name="南宁都市生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E5%AE%81%E9%83%BD%E5%B8%82%E7%94%9F%E6%B4%BB.png",南宁都市生活 +https://stream1.freetv.fun/nan-zhu-du-shi-sheng-huo-3.m3u8 +#EXTINF:-1 group-title="☘️广西频道" tvg-name="宾阳综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%BE%E9%98%B3%E7%BB%BC%E5%90%88.png",宾阳综合 +http://pulls.myun.tv/live/0dkp33j5.m3u8 +#EXTINF:-1 group-title="☘️广西频道" tvg-name="灌阳新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%81%8C%E9%98%B3%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",灌阳新闻综合 +https://ls.qingting.fm/live/5043/64k.m3u8 +#EXTINF:-1 group-title="☘️广西频道" tvg-name="灌阳新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%81%8C%E9%98%B3%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",灌阳新闻综合 +https://mobilelive.gxtv.cn/live/gx_live1007/playlist.m3u8 +#EXTINF:-1 group-title="☘️广西频道" tvg-name="广西新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E8%A5%BF%E6%96%B0%E9%97%BB.png",广西新闻 +https://mobilelive.gxtv.cn/live/gx_live1007/playlist.m3u8 +#EXTINF:-1 group-title="☘️广西频道" tvg-name="广西国际" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E8%A5%BF%E5%9B%BD%E9%99%85.png",广西国际 +https://hlscdn.liangtv.cn/live/0234c48e0bc24fe1b41b9999a253e581/1075ee38e04f490690f6a36a16e09c79.m3u8 +#EXTINF:-1 group-title="☘️广西频道" tvg-name="广西国际" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E8%A5%BF%E5%9B%BD%E9%99%85.png",广西国际 +http://hlscdn.liangtv.cn/live/0234c48e0bc24fe1b41b9999a253e581/1075ee38e04f490690f6a36a16e09c79.m3u8 +#EXTINF:-1 group-title="☘️广西频道" tvg-name="广西国际" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E8%A5%BF%E5%9B%BD%E9%99%85.png",广西国际 +https://mobilelive.gxtv.cn/live/nn_live1009/playlist.m3u8 +#EXTINF:-1 group-title="☘️广西频道" tvg-name="南宁影视娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E5%AE%81%E5%BD%B1%E8%A7%86%E5%A8%B1%E4%B9%90.png",南宁影视娱乐 +http://688b7cbf9b7a8d911a085372b6c70ab5.livehwc3.cn/hls.nntv.cn/nnlive/YSYL_244.m3u8?sub_m3u8=true&edge_slice=true&user_session_id=e7eb508555e76e08cc1b198d04f41fb5 +#EXTINF:-1 group-title="☘️天津频道" tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%B4%A5%E5%8D%AB%E8%A7%86.png",天津卫视 +http://php.jdshipin.com/TVOD/hljyd.php?id=3221226459 +#EXTINF:-1 group-title="☘️天津频道" tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%B4%A5%E5%8D%AB%E8%A7%86.png",天津卫视 +http://j.x.bkpcp.top/jx/TIANJHD +#EXTINF:-1 group-title="☘️天津频道" tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%B4%A5%E5%8D%AB%E8%A7%86.png",天津卫视 +http://iptv.huuc.edu.cn/hls/tjhd.m3u8 +#EXTINF:-1 group-title="☘️天津频道" tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%B4%A5%E5%8D%AB%E8%A7%86.png",天津卫视 +http://[2409:8087:1a01:df::4030]:80/TVOD/88888888/224/3221225972/main.m3u8 +#EXTINF:-1 group-title="☘️天津频道" tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%B4%A5%E5%8D%AB%E8%A7%86.png",天津卫视 +http://dsj.motem.top:8880/bptv/10000100000000050000000003873466.m3u8 +#EXTINF:-1 group-title="☘️天津频道" tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%B4%A5%E5%8D%AB%E8%A7%86.png",天津卫视 +http://[2409:8087:1a0a:df::404b]/ottrrs.hl.chinamobile.com/TVOD/88888888/224/3221226459/index.m3u8 +#EXTINF:-1 group-title="☘️天津频道" tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%B4%A5%E5%8D%AB%E8%A7%86.png",天津卫视 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221226459/index.m3u8 +#EXTINF:-1 group-title="☘️天津频道" tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%B4%A5%E5%8D%AB%E8%A7%86.png",天津卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226246/1.m3u8 +#EXTINF:-1 group-title="☘️天津频道" tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%B4%A5%E5%8D%AB%E8%A7%86.png",天津卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226489/1.m3u8 +#EXTINF:-1 group-title="☘️天津频道" tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%B4%A5%E5%8D%AB%E8%A7%86.png",天津卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226502/1.m3u8 +#EXTINF:-1 group-title="☘️四川频道" tvg-name="乐山新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B9%90%E5%B1%B1%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",乐山新闻综合 +https://stream1.freetv.fun/le-shan-xin-wen-zong-he-1.m3u8 +#EXTINF:-1 group-title="☘️四川频道" tvg-name="乐山新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B9%90%E5%B1%B1%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",乐山新闻综合 +https://stream1.freetv.fun/le-shan-xin-wen-zong-he-2.m3u8 +#EXTINF:-1 group-title="☘️四川频道" tvg-name="仁寿综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BB%81%E5%AF%BF%E7%BB%BC%E5%90%88.png",仁寿综合 +https://play.scrstv.com.cn/DT/live.m3u8?auth_key=60001724663204-0-0-c1cc4ded9841ac34f63cdbd3aec647ef +#EXTINF:-1 group-title="☘️四川频道" tvg-name="叙州新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8F%99%E5%B7%9E%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",叙州新闻综合 +https://stream1.freetv.fun/xu-zhou-xin-wen-zong-he-1.m3u8 +#EXTINF:-1 group-title="☘️四川频道" tvg-name="叙州新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8F%99%E5%B7%9E%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",叙州新闻综合 +https://stream1.freetv.fun/xu-zhou-xin-wen-zong-he-2.m3u8 +#EXTINF:-1 group-title="☘️四川频道" tvg-name="叙州新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8F%99%E5%B7%9E%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",叙州新闻综合 +https://stream1.freetv.fun/xu-zhou-xin-wen-zong-he-3.m3u8 +#EXTINF:-1 group-title="☘️四川频道" tvg-name="叙州新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8F%99%E5%B7%9E%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",叙州新闻综合 +https://stream1.freetv.fun/xu-zhou-xin-wen-zong-he-6.m3u8 +#EXTINF:-1 group-title="☘️四川频道" tvg-name="叙州新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8F%99%E5%B7%9E%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",叙州新闻综合 +https://stream1.freetv.fun/xu-zhou-xin-wen-zong-he-7.m3u8 +#EXTINF:-1 group-title="☘️四川频道" tvg-name="叙永综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8F%99%E6%B0%B8%E7%BB%BC%E5%90%88.png",叙永综合 +rtmp://luzhi.xuyongrongmei.com:1935/live/xyxw?zsicd +#EXTINF:-1 group-title="☘️四川频道" tvg-name="叙永综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8F%99%E6%B0%B8%E7%BB%BC%E5%90%88.png",叙永综合 +http://luzhi.xuyongrongmei.com:1935/live/_definst_/xyxw/playlist.m3u8 +#EXTINF:-1 group-title="☘️四川频道" tvg-name="叙永综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8F%99%E6%B0%B8%E7%BB%BC%E5%90%88.png",叙永综合 +http://luzhi.xuyongrongmei.com:1935/live/_definst_/xyxw/playlist.m3u8?zsicd +#EXTINF:-1 group-title="☘️四川频道" tvg-name="名山综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%8D%E5%B1%B1%E7%BB%BC%E5%90%88.png",名山综合 +https://m3u8channel-bx.yunxya.com/nmip-media/channellive/channel104666/playlist.m3u8 +#EXTINF:-1 group-title="☘️四川频道" tvg-name="名山综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%8D%E5%B1%B1%E7%BB%BC%E5%90%88.png",名山综合 +https://m3u8channel-ms.yunxya.com:443/nmip-media/audiolive/audio100580/playlist.m3u8 +#EXTINF:-1 group-title="☘️四川频道" tvg-name="四川科教" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%9B%9B%E5%B7%9D%E7%A7%91%E6%95%99.png",四川科教 +https://stream1.freetv.fun/si-chuan-ke-jiao-3.ctv +#EXTINF:-1 group-title="☘️四川频道" tvg-name="四川科教" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%9B%9B%E5%B7%9D%E7%A7%91%E6%95%99.png",四川科教 +https://stream1.freetv.fun/si-chuan-ke-jiao-4.ctv +#EXTINF:-1 group-title="☘️四川频道" tvg-name="四川科教" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%9B%9B%E5%B7%9D%E7%A7%91%E6%95%99.png",四川科教 +https://stream1.freetv.fun/si-chuan-ke-jiao-5.m3u8 +#EXTINF:-1 group-title="☘️四川频道" tvg-name="四川科教" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%9B%9B%E5%B7%9D%E7%A7%91%E6%95%99.png",四川科教 +http://tv.scjyhd.com:4022/udp/239.11.0.194:5140 +#EXTINF:-1 group-title="☘️四川频道" tvg-name="广元综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E5%85%83%E7%BB%BC%E5%90%88.png",广元综合 +https://stream1.freetv.fun/yan-yuan-zong-he-2.ctv +#EXTINF:-1 group-title="☘️四川频道" tvg-name="康巴卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BA%B7%E5%B7%B4%E5%8D%AB%E8%A7%86.png",康巴卫视 +http://php.jdshipin.com/TVOD/hljyd.php?id=3221225660 +#EXTINF:-1 group-title="☘️四川频道" tvg-name="康巴卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BA%B7%E5%B7%B4%E5%8D%AB%E8%A7%86.png",康巴卫视 +http://[2409:8087:2001:20:2800:0:df6e:eb10]:80/wh7f454c46tw3423902933_-437655574/ott.mobaibox.com/PLTV/3/224/3221227645/index.m3u8 +#EXTINF:-1 group-title="☘️四川频道" tvg-name="康巴卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BA%B7%E5%B7%B4%E5%8D%AB%E8%A7%86.png",康巴卫视 +https://stream1.freetv.fun/b3baba1d904b40b2d929ec8cbdfa40800abc7cb6d1c18efed0d6d91d97bce5b3.ctv +#EXTINF:-1 group-title="☘️四川频道" tvg-name="康巴卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BA%B7%E5%B7%B4%E5%8D%AB%E8%A7%86.png",康巴卫视 +https://stream1.freetv.fun/0de2ac9a0e7c3146b44c21f35ce10496eff2b9f67f7b9a106ba8493bf2d9cbee.ctv +#EXTINF:-1 group-title="☘️四川频道" tvg-name="康巴卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BA%B7%E5%B7%B4%E5%8D%AB%E8%A7%86.png",康巴卫视 +https://stream1.freetv.fun/7acb1025eb98d411fe5dc519902069dda51b621f55c7b1fce3acdd50f55d6ad5.ctv +#EXTINF:-1 group-title="☘️四川频道" tvg-name="康巴卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BA%B7%E5%B7%B4%E5%8D%AB%E8%A7%86.png",康巴卫视 +https://stream1.freetv.fun/e1854d983296da1d0804b07dcd259f5aafc1d7f17f59b6e0001d2a0741b5c608.m3u8 +#EXTINF:-1 group-title="☘️四川频道" tvg-name="康巴卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BA%B7%E5%B7%B4%E5%8D%AB%E8%A7%86.png",康巴卫视 +http://[2409:8087:1a0b:df::4005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225660/index.m3u8 +#EXTINF:-1 group-title="☘️四川频道" tvg-name="康巴卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BA%B7%E5%B7%B4%E5%8D%AB%E8%A7%86.png",康巴卫视 +http://[2409:8087:1a0b:df::4005]:80/ottrrs.hl.chinamobile.com/TVOD/88888888/224/3221225660/index.m3u8 +#EXTINF:-1 group-title="☘️四川频道" tvg-name="康巴卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BA%B7%E5%B7%B4%E5%8D%AB%E8%A7%86.png",康巴卫视 +http://otttv.bj.chinamobile.com/PLTV/88888888/224/3221227027/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EkHMvBpWz4rccMxNvSRekpQ%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 group-title="☘️四川频道" tvg-name="康巴卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BA%B7%E5%B7%B4%E5%8D%AB%E8%A7%86.png",康巴卫视 +http://ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225660/index.m3u8 +#EXTINF:-1 group-title="☘️四川频道" tvg-name="德阳新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BE%B7%E9%98%B3%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",德阳新闻综合 +https://stream1.freetv.fun/de-yang-xin-wen-zong-he-1.m3u8 +#EXTINF:-1 group-title="☘️四川频道" tvg-name="德阳新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BE%B7%E9%98%B3%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",德阳新闻综合 +https://stream1.freetv.fun/de-yang-xin-wen-zong-he-2.m3u8 +#EXTINF:-1 group-title="☘️四川频道" tvg-name="德阳新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BE%B7%E9%98%B3%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",德阳新闻综合 +https://stream1.freetv.fun/de-yang-xin-wen-zong-he-3.m3u8 +#EXTINF:-1 group-title="☘️四川频道" tvg-name="旺苍新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%97%BA%E8%8B%8D%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",旺苍新闻综合 +http://live.spccmc.com:90/live/spxwzh.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 group-title="☘️四川频道" tvg-name="松潘新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%9D%BE%E6%BD%98%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",松潘新闻综合 +http://live.spccmc.com:90/live/spxwzh.m3u8 +#EXTINF:-1 group-title="☘️四川频道" tvg-name="松潘新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%9D%BE%E6%BD%98%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",松潘新闻综合 +http://live.spccmc.com:90/live/spxwzh.m3u8?zsicd +#EXTINF:-1 group-title="☘️四川频道" tvg-name="汉源综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%89%E6%BA%90%E7%BB%BC%E5%90%88.png",汉源综合 +http://live.hyxrmt.com:85/live/xwpd.m3u8 +#EXTINF:-1 group-title="☘️四川频道" tvg-name="汶川新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%B6%E5%B7%9D%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",汶川新闻综合 +rtmp://live.iwcmt.cn:1936/live/zhxw +#EXTINF:-1 group-title="☘️四川频道" tvg-name="汶川新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%B6%E5%B7%9D%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",汶川新闻综合 +http://live.iwcmt.cn:90/live/zhxw.m3u8 +#EXTINF:-1 group-title="☘️四川频道" tvg-name="汶川新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%B6%E5%B7%9D%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",汶川新闻综合 +http://live.iwcmt.cn:90/live/zhxw.m3u8?zsicd +#EXTINF:-1 group-title="☘️四川频道" tvg-name="沐川综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%90%E5%B7%9D%E7%BB%BC%E5%90%88.png",沐川综合 +http://file.ysxtv.cn/cms/videos/nmip-media/channellive/channel4/playlist.m3u8?zsicd +#EXTINF:-1 group-title="☘️四川频道" tvg-name="泸县新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B3%B8%E5%8E%BF%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",泸县新闻综合 +http://lxfile.lxxcb.cn/nmip-media/channellive/channel103799/playlist.m3u8 +#EXTINF:-1 group-title="☘️四川频道" tvg-name="泸县新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B3%B8%E5%8E%BF%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",泸县新闻综合 +http://lxfile.lxxcb.cn/nmip-media/channellive/channel103799/playlist.m3u8?zsicd +#EXTINF:-1 group-title="☘️四川频道" tvg-name="泸县新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B3%B8%E5%8E%BF%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",泸县新闻综合 +http://lxfile.lxxcb.cn:80/nmip-media/channellive/channel103799/playlist.m3u8 +#EXTINF:-1 group-title="☘️四川频道" tvg-name="泸县新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B3%B8%E5%8E%BF%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",泸县新闻综合 +https://m3u8channel.ganzitv.com/nmip-media/channellive/channel1/playlist.m3u8 +#EXTINF:-1 group-title="☘️四川频道" tvg-name="甘孜综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%94%98%E5%AD%9C%E7%BB%BC%E5%90%88.png",甘孜综合 +https://m3u8channel.ganzitv.com/nmip-media/channellive/channel1/playlist.m3u8 +#EXTINF:-1 group-title="☘️四川频道" tvg-name="石棉综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9F%B3%E6%A3%89%E7%BB%BC%E5%90%88.png",石棉综合 +http://live.hyxrmt.com:85/live/xwpd.m3u8 +#EXTINF:-1 group-title="☘️四川频道" tvg-name="筠连综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%AD%A0%E8%BF%9E%E7%BB%BC%E5%90%88.png",筠连综合 +http://live.dameijunlian.cn/live1/live1.m3u8 +#EXTINF:-1 group-title="☘️四川频道" tvg-name="筠连综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%AD%A0%E8%BF%9E%E7%BB%BC%E5%90%88.png",筠连综合 +http://live.dameijunlian.cn:80/live1/live1.m3u8 +#EXTINF:-1 group-title="☘️四川频道" tvg-name="绵阳科技" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BB%B5%E9%98%B3%E7%A7%91%E6%8A%80.png",绵阳科技 +https://stream1.freetv.fun/mian-yang-ke-ji-2.m3u8 +#EXTINF:-1 group-title="☘️四川频道" tvg-name="荥经综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%8D%A5%E7%BB%8F%E7%BB%BC%E5%90%88.png",荥经综合 +http://file.ysxtv.cn/cms/videos/nmip-media/channellive/channel4/playlist.m3u8 +#EXTINF:-1 group-title="☘️四川频道" tvg-name="荥经综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%8D%A5%E7%BB%8F%E7%BB%BC%E5%90%88.png",荥经综合 +https://file.ysxtv.cn/nmip-media/channellive/channel101492/playlist.m3u8 +#EXTINF:-1 group-title="☘️四川频道" tvg-name="营山电视台" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%90%A5%E5%B1%B1%E7%94%B5%E8%A7%86%E5%8F%B0.png",营山电视台 +https://file.ysxtv.cn/nmip-media/channellive/channel101492/playlist.m3u8 +#EXTINF:-1 group-title="☘️四川频道" tvg-name="营山电视台" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%90%A5%E5%B1%B1%E7%94%B5%E8%A7%86%E5%8F%B0.png",营山电视台 +http://file.ysxtv.cn/cms/videos/nmip-media/channellive/channel4/playlist.m3u8?zsicd#http://file.ysxtv.cn/cms/videos/nmip-media/channellive/channel4/playlist.m3u8 +#EXTINF:-1 group-title="☘️四川频道" tvg-name="蓬安新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%93%AC%E5%AE%89%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",蓬安新闻综合 +https://stream1.freetv.fun/peng-an-xin-wen-zong-he-1.m3u8 +#EXTINF:-1 group-title="☘️四川频道" tvg-name="蓬安新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%93%AC%E5%AE%89%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",蓬安新闻综合 +https://stream1.freetv.fun/peng-an-xin-wen-zong-he-2.m3u8 +#EXTINF:-1 group-title="☘️四川频道" tvg-name="金川新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%91%E5%B7%9D%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",金川新闻综合 +https://stream1.freetv.fun/jin-chuan-xin-wen-zong-he-1.m3u8 +#EXTINF:-1 group-title="☘️四川频道" tvg-name="金川新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%91%E5%B7%9D%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",金川新闻综合 +https://stream1.freetv.fun/jin-chuan-xin-wen-zong-he-2.m3u8 +#EXTINF:-1 group-title="☘️四川频道" tvg-name="金川新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%91%E5%B7%9D%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",金川新闻综合 +https://stream1.freetv.fun/jin-chuan-xin-wen-zong-he-3.m3u8 +#EXTINF:-1 group-title="☘️四川频道" tvg-name="金川新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%91%E5%B7%9D%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",金川新闻综合 +https://stream1.freetv.fun/jin-chuan-xin-wen-zong-he-4.m3u8 +#EXTINF:-1 group-title="☘️陕西频道" tvg-name="陕西新闻资讯" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%99%95%E8%A5%BF%E6%96%B0%E9%97%BB%E8%B5%84%E8%AE%AF.png",陕西新闻资讯 +http://[2409:8087:7000:20::4]:80/dbiptv.sn.chinamobile.com/PLTV/88888888/224/3221226357/index.m3u8 +#EXTINF:-1 group-title="☘️陕西频道" tvg-name="陕西都市青春" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%99%95%E8%A5%BF%E9%83%BD%E5%B8%82%E9%9D%92%E6%98%A5.png",陕西都市青春 +http://[2409:8087:7001:20:3::6]:80/dbiptv.sn.chinamobile.com/PLTV/88888888/224/3221226358/index.m3u8 +#EXTINF:-1 group-title="☘️陕西频道" tvg-name="陕西生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%99%95%E8%A5%BF%E7%94%9F%E6%B4%BB.png",陕西生活 +http://[2409:8087:7000:20::4]:80/dbiptv.sn.chinamobile.com/PLTV/88888888/224/3221226359/index.m3u8 +#EXTINF:-1 group-title="☘️陕西频道" tvg-name="陕西公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%99%95%E8%A5%BF%E5%85%AC%E5%85%B1.png",陕西公共 +http://ls.qingting.fm/live/1222.m3u8 +#EXTINF:-1 group-title="☘️陕西频道" tvg-name="陕西公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%99%95%E8%A5%BF%E5%85%AC%E5%85%B1.png",陕西公共 +http://[2409:8087:7000:20::4]:80/dbiptv.sn.chinamobile.com/PLTV/88888888/224/3221226361/index.m3u8 +#EXTINF:-1 group-title="☘️陕西频道" tvg-name="陕西体育休闲" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%99%95%E8%A5%BF%E4%BD%93%E8%82%B2%E4%BC%91%E9%97%B2.png",陕西体育休闲 +http://[2409:8087:7000:20::4]:80/dbiptv.sn.chinamobile.com/PLTV/88888888/224/3221226363/index.m3u8 +#EXTINF:-1 group-title="☘️陕西频道" tvg-name="陕西影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%99%95%E8%A5%BF%E5%BD%B1%E8%A7%86.png",陕西影视 +http://[2409:8087:7000:20::4]:80/dbiptv.sn.chinamobile.com/PLTV/88888888/224/3221226360/index.m3u8 +#EXTINF:-1 group-title="☘️陕西频道" tvg-name="陕西影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%99%95%E8%A5%BF%E5%BD%B1%E8%A7%86.png",陕西影视 +http://php.jdshipin.com:8880/qly.php?id=6329 +#EXTINF:-1 group-title="☘️福建频道" tvg-name="三明新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%89%E6%98%8E%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",三明新闻综合 +http://ls.qingting.fm/live/4885.m3u8 +#EXTINF:-1 group-title="☘️福建频道" tvg-name="三明新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%89%E6%98%8E%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",三明新闻综合 +https://ls.qingting.fm/live/5022100/64k.m3u8 +#EXTINF:-1 group-title="☘️福建频道" tvg-name="云霄综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E9%9C%84%E7%BB%BC%E5%90%88.png",云霄综合 +https://live.zzyxxw.com:2443/live/xwzh.m3u8 +#EXTINF:-1 group-title="☘️福建频道" tvg-name="云霄综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E9%9C%84%E7%BB%BC%E5%90%88.png",云霄综合 +http://live.zzyxxw.com:85/live/xwzh.m3u8 +#EXTINF:-1 group-title="☘️福建频道" tvg-name="云霄综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E9%9C%84%E7%BB%BC%E5%90%88.png",云霄综合 +http://live.zzyxxw.com:85/live/xwzh.m3u8?fujian +#EXTINF:-1 group-title="☘️福建频道" tvg-name="厦门卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8E%A6%E9%97%A8%E5%8D%AB%E8%A7%86.png",厦门卫视 +http://dsj.motem.top:8880/bptv/10000100000000050000000003887454.m3u8 +#EXTINF:-1 group-title="☘️福建频道" tvg-name="厦门卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8E%A6%E9%97%A8%E5%8D%AB%E8%A7%86.png",厦门卫视 +http://goo.bkpcp.top/mg/xmws +#EXTINF:-1 group-title="☘️福建频道" tvg-name="厦门卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8E%A6%E9%97%A8%E5%8D%AB%E8%A7%86.png",厦门卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226542/1.m3u8 +#EXTINF:-1 group-title="☘️福建频道" tvg-name="厦门卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8E%A6%E9%97%A8%E5%8D%AB%E8%A7%86.png",厦门卫视 +http://[2409:8087:74F1:0021::0008]/270000001128/9900000058/index.m3u8 +#EXTINF:-1 group-title="☘️福建频道" tvg-name="厦门卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8E%A6%E9%97%A8%E5%8D%AB%E8%A7%86.png",厦门卫视 +http://[2409:8087:3428:20:500::100f]:6610/PLTV/88888888/224/3221226964/index.m3u8?servicetype=1&IASHttpSessionId=RR423820220409134714119178 +#EXTINF:-1 group-title="☘️福建频道" tvg-name="厦门卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8E%A6%E9%97%A8%E5%8D%AB%E8%A7%86.png",厦门卫视 +http://[2409:8087:3428:20:500::1009]:6610/PLTV/88888888/224/3221226964/index.m3u8?servicetype=1&IASHttpSessionId=RR423820220409134714119178 +#EXTINF:-1 group-title="☘️福建频道" tvg-name="厦门卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8E%A6%E9%97%A8%E5%8D%AB%E8%A7%86.png",厦门卫视 +http://[2409:8087:3428:20:500::100f]:6610/PLTV/88888888/224/3221226781/index.m3u8?servicetype=1&IASHttpSessionId=RR423820220409134714119178 +#EXTINF:-1 group-title="☘️福建频道" tvg-name="厦门卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8E%A6%E9%97%A8%E5%8D%AB%E8%A7%86.png",厦门卫视 +http://[2409:8087:3428:20:500::1009]:6610/PLTV/88888888/224/3221226781/index.m3u8?servicetype=1&IASHttpSessionId=RR423820220409134714119178 +#EXTINF:-1 group-title="☘️福建频道" tvg-name="厦门卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8E%A6%E9%97%A8%E5%8D%AB%E8%A7%86.png",厦门卫视 +http://[2409:8087:5e01:34::23]:6610/ZTE_CMS/00000001000000060000000000000193/index.m3u8 +#EXTINF:-1 group-title="☘️福建频道" tvg-name="厦门卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8E%A6%E9%97%A8%E5%8D%AB%E8%A7%86.png",厦门卫视 +https://stream1.freetv.fun/cc2a1fdd054d0069e308a8c5358596fe1ba08562b102d8223a3b02e620082f96.m3u8 +#EXTINF:-1 group-title="☘️福建频道" tvg-name="漳州新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%BC%B3%E5%B7%9E%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",漳州新闻综合 +https://stream1.freetv.fun/zhang-zhou-xin-wen-zong-he-1.m3u8 +#EXTINF:-1 group-title="☘️福建频道" tvg-name="漳州新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%BC%B3%E5%B7%9E%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",漳州新闻综合 +https://stream1.freetv.fun/zhang-zhou-xin-wen-zong-he-2.m3u8 +#EXTINF:-1 group-title="☘️福建频道" tvg-name="漳州新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%BC%B3%E5%B7%9E%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",漳州新闻综合 +https://stream1.freetv.fun/zhang-zhou-xin-wen-zong-he-3.m3u8 +#EXTINF:-1 group-title="☘️福建频道" tvg-name="福州少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%A6%8F%E5%B7%9E%E5%B0%91%E5%84%BF.png",福州少儿 +http://live.zohi.tv/video/s10001-fztv-4/index.m3u8 +#EXTINF:-1 group-title="☘️福建频道" tvg-name="福州生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%A6%8F%E5%B7%9E%E7%94%9F%E6%B4%BB.png",福州生活 +http://live.zohi.tv/video/s10001-fztv-3/index.m3u8 +#EXTINF:-1 group-title="☘️福建频道" tvg-name="福州综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%A6%8F%E5%B7%9E%E7%BB%BC%E5%90%88.png",福州综合 +http://live.zohi.tv/video/s10001-fztv-1/index.m3u8 +#EXTINF:-1 group-title="☘️福建频道" tvg-name="福建新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%A6%8F%E5%BB%BA%E6%96%B0%E9%97%BB.png",福建新闻 +http://satellitepull.cnr.cn/live/wx32fjxwgb/playlist.m3u8 +#EXTINF:-1 group-title="☘️福建频道" tvg-name="福建新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%A6%8F%E5%BB%BA%E6%96%B0%E9%97%BB.png",福建新闻 +https://satellitepull.cnr.cn/live/wx32fjxwgb/playlist.m3u8 +#EXTINF:-1 group-title="☘️福建频道" tvg-name="福建新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%A6%8F%E5%BB%BA%E6%96%B0%E9%97%BB.png",福建新闻 +http://live.xmcdn.com/live/792/64.m3u8 +#EXTINF:-1 group-title="☘️福建频道" tvg-name="福建新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%A6%8F%E5%BB%BA%E6%96%B0%E9%97%BB.png",福建新闻 +https://stream1.freetv.fun/fu-jian-xin-wen-1.m3u8 +#EXTINF:-1 group-title="☘️福建频道" tvg-name="福建新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%A6%8F%E5%BB%BA%E6%96%B0%E9%97%BB.png",福建新闻 +https://stream1.freetv.fun/fu-jian-xin-wen-2.m3u8 +#EXTINF:-1 group-title="☘️福建频道" tvg-name="福建新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%A6%8F%E5%BB%BA%E6%96%B0%E9%97%BB.png",福建新闻 +https://stream1.freetv.fun/fu-jian-xin-wen-3.m3u8 +#EXTINF:-1 group-title="☘️福建频道" tvg-name="福建新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%A6%8F%E5%BB%BA%E6%96%B0%E9%97%BB.png",福建新闻 +https://stream1.freetv.fun/fu-jian-xin-wen-4.m3u8 +#EXTINF:-1 group-title="☘️福建频道" tvg-name="福建新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%A6%8F%E5%BB%BA%E6%96%B0%E9%97%BB.png",福建新闻 +https://stream1.freetv.fun/fu-jian-xin-wen-5.m3u8 +#EXTINF:-1 group-title="☘️福建频道" tvg-name="福建新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%A6%8F%E5%BB%BA%E6%96%B0%E9%97%BB.png",福建新闻 +https://stream1.freetv.fun/fu-jian-xin-wen-6.m3u8 +#EXTINF:-1 group-title="☘️福建频道" tvg-name="福建新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%A6%8F%E5%BB%BA%E6%96%B0%E9%97%BB.png",福建新闻 +https://stream1.freetv.fun/fu-jian-xin-wen-8.m3u8 +#EXTINF:-1 group-title="☘️福建频道" tvg-name="福建电视剧" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%A6%8F%E5%BB%BA%E7%94%B5%E8%A7%86%E5%89%A7.png",福建电视剧 +https://stream1.freetv.fun/fu-jian-dian-shi-ju-1.m3u8 +#EXTINF:-1 group-title="☘️福建频道" tvg-name="福建电视剧" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%A6%8F%E5%BB%BA%E7%94%B5%E8%A7%86%E5%89%A7.png",福建电视剧 +https://stream1.freetv.fun/fu-jian-dian-shi-ju-2.m3u8 +#EXTINF:-1 group-title="☘️福建频道" tvg-name="福建电视剧" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%A6%8F%E5%BB%BA%E7%94%B5%E8%A7%86%E5%89%A7.png",福建电视剧 +https://stream1.freetv.fun/fu-jian-dian-shi-ju-3.m3u8 +#EXTINF:-1 group-title="☘️福建频道" tvg-name="福建电视剧" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%A6%8F%E5%BB%BA%E7%94%B5%E8%A7%86%E5%89%A7.png",福建电视剧 +https://stream1.freetv.fun/fu-jian-dian-shi-ju-4.m3u8 +#EXTINF:-1 group-title="☘️福建频道" tvg-name="福建电视剧" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%A6%8F%E5%BB%BA%E7%94%B5%E8%A7%86%E5%89%A7.png",福建电视剧 +https://stream1.freetv.fun/fu-jian-dian-shi-ju-5.m3u8 +#EXTINF:-1 group-title="☘️福建频道" tvg-name="福建电视剧" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%A6%8F%E5%BB%BA%E7%94%B5%E8%A7%86%E5%89%A7.png",福建电视剧 +https://stream1.freetv.fun/fu-jian-dian-shi-ju-6.m3u8 +#EXTINF:-1 group-title="☘️福建频道" tvg-name="福建经济" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%A6%8F%E5%BB%BA%E7%BB%8F%E6%B5%8E.png",福建经济 +http://satellitepull.cnr.cn/live/wx32fjdnjjgb/playlist.m3u8 +#EXTINF:-1 group-title="☘️福建频道" tvg-name="福建经济" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%A6%8F%E5%BB%BA%E7%BB%8F%E6%B5%8E.png",福建经济 +https://stream1.freetv.fun/fu-jian-jing-ji-1.m3u8 +#EXTINF:-1 group-title="☘️福建频道" tvg-name="福建经济" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%A6%8F%E5%BB%BA%E7%BB%8F%E6%B5%8E.png",福建经济 +https://stream1.freetv.fun/fu-jian-jing-ji-2.m3u8 +#EXTINF:-1 group-title="☘️福建频道" tvg-name="福建经济" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%A6%8F%E5%BB%BA%E7%BB%8F%E6%B5%8E.png",福建经济 +https://stream1.freetv.fun/fu-jian-jing-ji-4.m3u8 +#EXTINF:-1 group-title="☘️福建频道" tvg-name="福建经济" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%A6%8F%E5%BB%BA%E7%BB%8F%E6%B5%8E.png",福建经济 +https://stream1.freetv.fun/fu-jian-jing-ji-5.m3u8 +#EXTINF:-1 group-title="☘️福建频道" tvg-name="福建经济" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%A6%8F%E5%BB%BA%E7%BB%8F%E6%B5%8E.png",福建经济 +https://stream1.freetv.fun/fu-jian-jing-ji-6.m3u8 +#EXTINF:-1 group-title="☘️福建频道" tvg-name="福建综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%A6%8F%E5%BB%BA%E7%BB%BC%E5%90%88.png",福建综合 +https://stream1.freetv.fun/fu-jian-zong-he-1.m3u8 +#EXTINF:-1 group-title="☘️福建频道" tvg-name="福建综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%A6%8F%E5%BB%BA%E7%BB%BC%E5%90%88.png",福建综合 +https://stream1.freetv.fun/fu-jian-zong-he-2.m3u8 +#EXTINF:-1 group-title="☘️福建频道" tvg-name="福建综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%A6%8F%E5%BB%BA%E7%BB%BC%E5%90%88.png",福建综合 +https://stream1.freetv.fun/fu-jian-zong-he-3.m3u8 +#EXTINF:-1 group-title="☘️福建频道" tvg-name="福建综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%A6%8F%E5%BB%BA%E7%BB%BC%E5%90%88.png",福建综合 +https://stream1.freetv.fun/fu-jian-zong-he-4.m3u8 +#EXTINF:-1 group-title="☘️福建频道" tvg-name="福建综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%A6%8F%E5%BB%BA%E7%BB%BC%E5%90%88.png",福建综合 +https://stream1.freetv.fun/fu-jian-zong-he-5.m3u8 +#EXTINF:-1 group-title="☘️福建频道" tvg-name="福建综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%A6%8F%E5%BB%BA%E7%BB%BC%E5%90%88.png",福建综合 +https://stream1.freetv.fun/fu-jian-zong-he-6.m3u8 +#EXTINF:-1 group-title="☘️福建频道" tvg-name="福建少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%A6%8F%E5%BB%BA%E5%B0%91%E5%84%BF.png",福建少儿 +https://stream1.freetv.fun/fu-jian-shao-er-1.m3u8 +#EXTINF:-1 group-title="☘️福建频道" tvg-name="福建少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%A6%8F%E5%BB%BA%E5%B0%91%E5%84%BF.png",福建少儿 +https://stream1.freetv.fun/fu-jian-shao-er-2.m3u8 +#EXTINF:-1 group-title="☘️福建频道" tvg-name="福建少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%A6%8F%E5%BB%BA%E5%B0%91%E5%84%BF.png",福建少儿 +https://stream1.freetv.fun/fu-jian-shao-er-3.m3u8 +#EXTINF:-1 group-title="☘️福建频道" tvg-name="福建少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%A6%8F%E5%BB%BA%E5%B0%91%E5%84%BF.png",福建少儿 +https://stream1.freetv.fun/fu-jian-shao-er-4.m3u8 +#EXTINF:-1 group-title="☘️福建频道" tvg-name="福建少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%A6%8F%E5%BB%BA%E5%B0%91%E5%84%BF.png",福建少儿 +https://stream1.freetv.fun/fu-jian-shao-er-6.m3u8 +#EXTINF:-1 group-title="☘️福建频道" tvg-name="福建少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%A6%8F%E5%BB%BA%E5%B0%91%E5%84%BF.png",福建少儿 +https://stream1.freetv.fun/fu-jian-shao-er-7.m3u8 +#EXTINF:-1 group-title="☘️海南频道" tvg-name="海南新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%B7%E5%8D%97%E6%96%B0%E9%97%BB.png",海南新闻 +http://satellitepull.cnr.cn/live/wxhainxwgb/playlist.m3u8 +#EXTINF:-1 group-title="☘️海南频道" tvg-name="海南新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%B7%E5%8D%97%E6%96%B0%E9%97%BB.png",海南新闻 +https://satellitepull.cnr.cn/live/wxhainxwgb/playlist.m3u8 +#EXTINF:-1 group-title="☘️海南频道" tvg-name="海南新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%B7%E5%8D%97%E6%96%B0%E9%97%BB.png",海南新闻 +http://[2409:8087:5e00:24::1e]:6060/000000001000/4600001000000000111/1.m3u8 +#EXTINF:-1 group-title="☘️海南频道" tvg-name="海南新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%B7%E5%8D%97%E6%96%B0%E9%97%BB.png",海南新闻 +http://ls.qingting.fm/live/1861.m3u8 +#EXTINF:-1 group-title="☘️海南频道" tvg-name="海南新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%B7%E5%8D%97%E6%96%B0%E9%97%BB.png",海南新闻 +https://stream1.freetv.fun/ipv6-hai-nan-xin-wen-6.m3u8 +#EXTINF:-1 group-title="☘️海南频道" tvg-name="海南自贸" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%B7%E5%8D%97%E8%87%AA%E8%B4%B8.png",海南自贸 +http://[2409:8087:5e00:24::1e]:6060/000000001000/4600001000000000116/1.m3u8 +#EXTINF:-1 group-title="☘️海南频道" tvg-name="海南文旅" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%B7%E5%8D%97%E6%96%87%E6%97%85.png",海南文旅 +http://[2409:8087:5e00:24::1e]:6060/000000001000/4600001000000000113/1.m3u8 +#EXTINF:-1 group-title="☘️海南频道" tvg-name="海南文旅" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%B7%E5%8D%97%E6%96%87%E6%97%85.png",海南文旅 +https://stream1.freetv.fun/ipv6-hai-nan-wen-lu-7.m3u8 +#EXTINF:-1 group-title="☘️海南频道" tvg-name="海南文旅" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%B7%E5%8D%97%E6%96%87%E6%97%85.png",海南文旅 +https://stream1.freetv.fun/ipv6-hai-nan-wen-lu-9.m3u8 +#EXTINF:-1 group-title="☘️海南频道" tvg-name="海南少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%B7%E5%8D%97%E5%B0%91%E5%84%BF.png",海南少儿 +http://[2409:8087:5e00:24::1e]:6060/000000001000/4600001000000000112/1.m3u8 +#EXTINF:-1 group-title="☘️海南频道" tvg-name="海南公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%B7%E5%8D%97%E5%85%AC%E5%85%B1.png",海南公共 +http://[2409:8087:5e00:24::1e]:6060/000000001000/460000100000000057/1.m3u8 +#EXTINF:-1 group-title="☘️海南频道" tvg-name="海南公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%B7%E5%8D%97%E5%85%AC%E5%85%B1.png",海南公共 +https://stream1.freetv.fun/ipv6-hai-nan-gong-gong-8.m3u8 +#EXTINF:-1 group-title="☘️海南频道" tvg-name="海南公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%B7%E5%8D%97%E5%85%AC%E5%85%B1.png",海南公共 +https://stream1.freetv.fun/ipv6-hai-nan-gong-gong-9.m3u8 +#EXTINF:-1 group-title="☘️河南频道" tvg-name="梨园" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%A2%A8%E5%9B%AD.png",梨园 +http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225581/2/index.m3u8 +#EXTINF:-1 group-title="☘️河南频道" tvg-name="临颍综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%B4%E9%A2%8D%E7%BB%BC%E5%90%88.png",临颍综合 +http://tvpull.dxhmt.cn:9081/tv/11122-1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 group-title="☘️河南频道" tvg-name="义马新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B9%89%E9%A9%AC%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",义马新闻综合 +http://tvpull.dxhmt.cn:9081/tv/11281-1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 group-title="☘️河南频道" tvg-name="光山综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%85%89%E5%B1%B1%E7%BB%BC%E5%90%88.png",光山综合 +http://tvpull.dxhmt.cn:9081/tv/11522-1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 group-title="☘️河南频道" tvg-name="兰考新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%85%B0%E8%80%83%E6%96%B0%E9%97%BB.png",兰考新闻 +http://tvpull.dxhmt.cn:9081/tv/10225-1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 group-title="☘️河南频道" tvg-name="卫辉综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%AB%E8%BE%89%E7%BB%BC%E5%90%88.png",卫辉综合 +http://tvpull.dxhmt.cn:9081/tv/10781-1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 group-title="☘️河南频道" tvg-name="叶县" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8F%B6%E5%8E%BF.png",叶县 +http://tvpull.dxhmt.cn:9081/tv/10422-1.m3u8# +#EXTINF:-1 group-title="☘️河南频道" tvg-name="唐河一套" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%94%90%E6%B2%B3%E4%B8%80%E5%A5%97.png",唐河一套 +http://tvpull.dxhmt.cn:9081/tv/11328-1.m3u8 +#EXTINF:-1 group-title="☘️河南频道" tvg-name="固始综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%9B%BA%E5%A7%8B%E7%BB%BC%E5%90%88.png",固始综合 +http://tvpull.dxhmt.cn:9081/tv/11525-1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 group-title="☘️河南频道" tvg-name="宝丰综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%9D%E4%B8%B0%E7%BB%BC%E5%90%88.png",宝丰综合 +http://tvpull.dxhmt.cn:9081/tv/10421-1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 group-title="☘️河南频道" tvg-name="巩义新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B7%A9%E4%B9%89%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",巩义新闻综合 +http://tvpull.dxhmt.cn:9081/tv/10181-1.m3u8?zhend +#EXTINF:-1 group-title="☘️河南频道" tvg-name="扶沟综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%89%B6%E6%B2%9F%E7%BB%BC%E5%90%88.png",扶沟综合 +http://tvpull.dxhmt.cn:9081/tv/11621-1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 group-title="☘️河南频道" tvg-name="新乡县电视台" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E4%B9%A1%E5%8E%BF%E7%94%B5%E8%A7%86%E5%8F%B0.png",新乡县电视台 +http://tvpull.dxhmt.cn:9081/tv/10721-1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 group-title="☘️河南频道" tvg-name="新县综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E5%8E%BF%E7%BB%BC%E5%90%88.png",新县综合 +http://tvpull.dxhmt.cn:9081/tv/11523-1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 group-title="☘️河南频道" tvg-name="新蔡综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E8%94%A1%E7%BB%BC%E5%90%88.png",新蔡综合 +http://tvpull.dxhmt.cn:9081/tv/11729-1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 group-title="☘️河南频道" tvg-name="桐柏新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%A1%90%E6%9F%8F%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",桐柏新闻综合 +http://tvpull.dxhmt.cn:9081/tv/11330-1.m3u8 +#EXTINF:-1 group-title="☘️河南频道" tvg-name="桐柏新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%A1%90%E6%9F%8F%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",桐柏新闻综合 +http://tvpull.dxhmt.cn:9081/tv/11330-1.m3u8?zhend +#EXTINF:-1 group-title="☘️河南频道" tvg-name="泌阳新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B3%8C%E9%98%B3%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",泌阳新闻综合 +http://tvpull.dxhmt.cn:9081/tv/11726-1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 group-title="☘️河南频道" tvg-name="渑池新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B8%91%E6%B1%A0%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",渑池新闻综合 +http://tvpull.dxhmt.cn:9081/tv/11221-1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 group-title="☘️河南频道" tvg-name="温县综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B8%A9%E5%8E%BF%E7%BB%BC%E5%90%88.png",温县综合 +http://tvpull.dxhmt.cn:9081/tv/10825-1.m3u8?zhend +#EXTINF:-1 group-title="☘️河南频道" tvg-name="潢川综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%BD%A2%E5%B7%9D%E7%BB%BC%E5%90%88.png",潢川综合 +http://tvpull.dxhmt.cn:9081/tv/11526-1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 group-title="☘️河南频道" tvg-name="登封综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%99%BB%E5%B0%81%E7%BB%BC%E5%90%88.png",登封综合 +http://tvpull.dxhmt.cn:9081/tv/10185-1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 group-title="☘️河南频道" tvg-name="禹州综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%A6%B9%E5%B7%9E%E7%BB%BC%E5%90%88.png",禹州综合 +http://tvpull.dxhmt.cn:9081/tv/11081-1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 group-title="☘️河南频道" tvg-name="西华综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%A5%BF%E5%8D%8E%E7%BB%BC%E5%90%88.png",西华综合 +http://tvpull.dxhmt.cn:9081/tv/11622-1.m3u8 +#EXTINF:-1 group-title="☘️河南频道" tvg-name="郏县综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%83%8F%E5%8E%BF%E7%BB%BC%E5%90%88.png",郏县综合 +http://tvpull.dxhmt.cn:9081/tv/10425-1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 group-title="☘️河南频道" tvg-name="郸城新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%83%B8%E5%9F%8E%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",郸城新闻综合 +http://tvpull.dxhmt.cn:9081/tv/11625-1.m3u8?wsSecret=df15530a0abec41b14bca00fc96270d1&amp;wsTime=1654956569 +#EXTINF:-1 group-title="☘️河南频道" tvg-name="鄢陵综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%84%A2%E9%99%B5%E7%BB%BC%E5%90%88.png",鄢陵综合 +http://tvpull.dxhmt.cn:9081/tv/11024-1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 group-title="☘️河南频道" tvg-name="项城新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%A1%B9%E5%9F%8E%E6%96%B0%E9%97%BB.png",项城新闻 +http://tvpull.dxhmt.cn:9081/tv/11681-1.m3u8#@http://live.dxhmt.cn:9081/tv/11681-1.m3u8#@http://p2.weizan.cn/978354/131995006225520039/live.m3u8 +#EXTINF:-1 group-title="☘️河南频道" tvg-name="邓州新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%82%93%E5%B7%9E%E6%96%B0%E9%97%BB.png",邓州新闻 +http://tvpull.dxhmt.cn:9081/tv/11381-1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 group-title="☘️河南频道" tvg-name="荥阳综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%8D%A5%E9%98%B3%E7%BB%BC%E5%90%88.png",荥阳综合 +http://iptv.cdn.ha.chinamobile.com/PLTV/88888888/224/3221226673/index.m3u8 +#EXTINF:-1 group-title="☘️河南频道" tvg-name="荥阳综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%8D%A5%E9%98%B3%E7%BB%BC%E5%90%88.png",荥阳综合 +http://tvpull.dxhmt.cn:9081/tv/10182-1.m3u8 +#EXTINF:-1 group-title="☘️河南频道" tvg-name="荥阳综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%8D%A5%E9%98%B3%E7%BB%BC%E5%90%88.png",荥阳综合 +http://tvpull.dxhmt.cn:9081/tv/10182-1.m3u8?zhend +#EXTINF:-1 group-title="☘️河南频道" tvg-name="禹州公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%A6%B9%E5%B7%9E%E5%85%AC%E5%85%B1.png",禹州公共 +http://tvpull.dxhmt.cn:9081/tv/11081-2.m3u8 +#EXTINF:-1 group-title="☘️河南频道" tvg-name="灵宝新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%81%B5%E5%AE%9D%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",灵宝新闻综合 +http://tvpull.dxhmt.cn:9081/tv/11282-1.m3u8?zhend +#EXTINF:-1 group-title="☘️河南频道" tvg-name="滑县新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%BB%91%E5%8E%BF%E6%96%B0%E9%97%BB.png",滑县新闻 +http://tvpull.dxhmt.cn:9081/tv/10526-1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 group-title="☘️河南频道" tvg-name="济源电视一套" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%8E%E6%BA%90%E7%94%B5%E8%A7%86%E4%B8%80%E5%A5%97.png",济源电视一套 +http://tvpull.dxhmt.cn:9081/tv/19001-1.m3u8 +#EXTINF:-1 group-title="☘️河南频道" tvg-name="洛阳综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B4%9B%E9%98%B3%E7%BB%BC%E5%90%88.png",洛阳综合 +https://wshlslive.migucloud.com/live/6AL7GTQX_C0/playlist.m3u8 +#EXTINF:-1 group-title="☘️河南频道" tvg-name="洛阳科教" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B4%9B%E9%98%B3%E7%A7%91%E6%95%99.png",洛阳科教 +https://wshlslive.migucloud.com/live/RJ0EYBCZ_C0/playlist.m3u8 +#EXTINF:-1 group-title="☘️河南频道" tvg-name="洛阳文旅" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B4%9B%E9%98%B3%E6%96%87%E6%97%85.png",洛阳文旅 +https://wshlslive.migucloud.com/live/CVN934JS_C0/playlist.m3u8 +#EXTINF:-1 group-title="☘️河南频道" tvg-name="河南都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8D%97%E9%83%BD%E5%B8%82.png",河南都市 +http://1.94.31.214/php/hntv.php?id=hnds +#EXTINF:-1 group-title="☘️河南频道" tvg-name="河南都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8D%97%E9%83%BD%E5%B8%82.png",河南都市 +http://www.lwfz.fun:8800/rtp/239.16.20.164:11640 +#EXTINF:-1 group-title="☘️河南频道" tvg-name="河南都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8D%97%E9%83%BD%E5%B8%82.png",河南都市 +http://iptv.cdn.ha.chinamobile.com/PLTV/88888888/224/3221227241/index.m3u8 +#EXTINF:-1 group-title="☘️河南频道" tvg-name="河南都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8D%97%E9%83%BD%E5%B8%82.png",河南都市 +https://live.lalifeier.eu.org/hntv/hnds.m3u8?t=1745796321&key=fe18400b0aeee777efcd1e3282435d28 +#EXTINF:-1 group-title="☘️河南频道" tvg-name="河南都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8D%97%E9%83%BD%E5%B8%82.png",河南都市 +https://live.lalifeier.eu.org/hntv/hnds.m3u8?t=1746307365&key=d2cc347e46058bc7b0e9200005d7f1ca +#EXTINF:-1 group-title="☘️河南频道" tvg-name="河南都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8D%97%E9%83%BD%E5%B8%82.png",河南都市 +https://live.lalifeier.eu.org/hntv/hnds.m3u8?t=1746393735&key=15d3cc47dac12d622b6ca5af30779f06 +#EXTINF:-1 group-title="☘️河南频道" tvg-name="河南都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8D%97%E9%83%BD%E5%B8%82.png",河南都市 +https://stream1.freetv.fun/he-nan-du-shi-1.ctv +#EXTINF:-1 group-title="☘️河南频道" tvg-name="河南都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8D%97%E9%83%BD%E5%B8%82.png",河南都市 +https://stream1.freetv.fun/he-nan-du-shi-1.m3u8 +#EXTINF:-1 group-title="☘️河南频道" tvg-name="河南都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8D%97%E9%83%BD%E5%B8%82.png",河南都市 +https://stream1.freetv.fun/he-nan-du-shi-10.m3u8 +#EXTINF:-1 group-title="☘️河南频道" tvg-name="河南都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8D%97%E9%83%BD%E5%B8%82.png",河南都市 +https://stream1.freetv.fun/he-nan-du-shi-11.m3u8 +#EXTINF:-1 group-title="☘️河南频道" tvg-name="河南民生" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8D%97%E6%B0%91%E7%94%9F.png",河南民生 +http://iptv.cdn.ha.chinamobile.com/PLTV/88888888/224/3221227268/index.m3u8 +#EXTINF:-1 group-title="☘️河南频道" tvg-name="河南民生" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8D%97%E6%B0%91%E7%94%9F.png",河南民生 +https://live.lalifeier.eu.org/hntv/hnms.m3u8?t=1745796321&key=5f28534538b48cf3d6dc58909f8897f3 +#EXTINF:-1 group-title="☘️河南频道" tvg-name="河南民生" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8D%97%E6%B0%91%E7%94%9F.png",河南民生 +https://live.lalifeier.eu.org/hntv/hnms.m3u8?t=1746307365&key=4ca269e387096c8e47a0ee8ffd77e387 +#EXTINF:-1 group-title="☘️河南频道" tvg-name="河南民生" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8D%97%E6%B0%91%E7%94%9F.png",河南民生 +https://live.lalifeier.eu.org/hntv/hnms.m3u8?t=1746393735&key=b741672d258ca54d259ed1c846cb637f +#EXTINF:-1 group-title="☘️河南频道" tvg-name="河南民生" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8D%97%E6%B0%91%E7%94%9F.png",河南民生 +https://stream1.freetv.fun/he-nan-min-sheng-3.ctv +#EXTINF:-1 group-title="☘️河南频道" tvg-name="河南民生" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8D%97%E6%B0%91%E7%94%9F.png",河南民生 +https://stream1.freetv.fun/he-nan-min-sheng-4.m3u8 +#EXTINF:-1 group-title="☘️河南频道" tvg-name="河南民生" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8D%97%E6%B0%91%E7%94%9F.png",河南民生 +https://stream1.freetv.fun/he-nan-min-sheng-5.m3u8 +#EXTINF:-1 group-title="☘️河南频道" tvg-name="河南民生" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8D%97%E6%B0%91%E7%94%9F.png",河南民生 +https://stream1.freetv.fun/he-nan-min-sheng-6.m3u8 +#EXTINF:-1 group-title="☘️河南频道" tvg-name="河南民生" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8D%97%E6%B0%91%E7%94%9F.png",河南民生 +https://stream1.freetv.fun/he-nan-min-sheng-7.m3u8 +#EXTINF:-1 group-title="☘️河南频道" tvg-name="河南民生" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8D%97%E6%B0%91%E7%94%9F.png",河南民生 +https://stream1.freetv.fun/he-nan-min-sheng-8.m3u8 +#EXTINF:-1 group-title="☘️河南频道" tvg-name="沁阳新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%81%E9%98%B3%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",沁阳新闻综合 +http://tvpull.dxhmt.cn:9081/tv/10882-1.m3u8 +#EXTINF:-1 group-title="☘️河南频道" tvg-name="沁阳新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%81%E9%98%B3%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",沁阳新闻综合 +https://stream1.freetv.fun/qin-yang-xin-wen-zong-he-1.m3u8 +#EXTINF:-1 group-title="☘️河南频道" tvg-name="永城综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B0%B8%E5%9F%8E%E7%BB%BC%E5%90%88.png",永城综合 +http://iptv.cdn.ha.chinamobile.com/PLTV/88888888/224/3221227057/index.m3u8 +#EXTINF:-1 group-title="☘️河南频道" tvg-name="永城综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B0%B8%E5%9F%8E%E7%BB%BC%E5%90%88.png",永城综合 +http://tvpull.dxhmt.cn:9081/tv/11481-1.m3u8 +#EXTINF:-1 group-title="☘️河南频道" tvg-name="方城一套" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B9%E5%9F%8E%E4%B8%80%E5%A5%97.png",方城一套 +http://tvpull.dxhmt.cn:9081/tv/11322-1.m3u8 +#EXTINF:-1 group-title="☘️河南频道" tvg-name="新野综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E9%87%8E%E7%BB%BC%E5%90%88.png",新野综合 +http://tvpull.dxhmt.cn:9081/tv/11329-1.m3u8?zhend +#EXTINF:-1 group-title="☘️河南频道" tvg-name="新安新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E5%AE%89%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",新安新闻综合 +http://tvpull.dxhmt.cn:9081/tv/10323-1.m3u8 +#EXTINF:-1 group-title="☘️河南频道" tvg-name="新安新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E5%AE%89%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",新安新闻综合 +http://tvpull.dxhmt.cn:9081/tv/10323-1.m3u8?zhend +#EXTINF:-1 group-title="☘️河南频道" tvg-name="开封新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BC%80%E5%B0%81%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",开封新闻综合 +http://iptv.cdn.ha.chinamobile.com/PLTV/88888888/224/3221226689/index.m3u8 +#EXTINF:-1 group-title="☘️河南频道" tvg-name="开封新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BC%80%E5%B0%81%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",开封新闻综合 +https://stream1.freetv.fun/kai-feng-xin-wen-zong-he-2.m3u8 +#EXTINF:-1 group-title="☘️河南频道" tvg-name="开封新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BC%80%E5%B0%81%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",开封新闻综合 +http://tvpull.dxhmt.cn:9081/tv/10200-2.m3u8 +#EXTINF:-1 group-title="☘️河南频道" tvg-name="开封新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BC%80%E5%B0%81%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",开封新闻综合 +http://tvpull.dxhmt.cn:9081/tv/10200-2.m3u8?zhend +#EXTINF:-1 group-title="☘️河南频道" tvg-name="开封文化旅游" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BC%80%E5%B0%81%E6%96%87%E5%8C%96%E6%97%85%E6%B8%B8.png",开封文化旅游 +http://iptv.cdn.ha.chinamobile.com/PLTV/88888888/224/3221226515/index.m3u8 +#EXTINF:-1 group-title="☘️河南频道" tvg-name="开封文化旅游" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BC%80%E5%B0%81%E6%96%87%E5%8C%96%E6%97%85%E6%B8%B8.png",开封文化旅游 +http://tvpull.dxhmt.cn:9081/tv/10200-3.m3u8 +#EXTINF:-1 group-title="☘️河南频道" tvg-name="开封文化旅游" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BC%80%E5%B0%81%E6%96%87%E5%8C%96%E6%97%85%E6%B8%B8.png",开封文化旅游 +http://tvpull.dxhmt.cn:9081/tv/10200-3.m3u8?zhend +#EXTINF:-1 group-title="☘️河南频道" tvg-name="嵩县综合新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B5%A9%E5%8E%BF%E7%BB%BC%E5%90%88%E6%96%B0%E9%97%BB.png",嵩县综合新闻 +http://tvpull.dxhmt.cn:9081/tv/10325-1.m3u8?zhendhttp://wshls.live.migucloud.com/live/MZCYG799_C0/playlist.m3u8?zhend +#EXTINF:-1 group-title="☘️河南频道" tvg-name="嵩县综合新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B5%A9%E5%8E%BF%E7%BB%BC%E5%90%88%E6%96%B0%E9%97%BB.png",嵩县综合新闻 +http://wshls.live.migucloud.com/live/MZCYG799_C0/playlist.m3u8 +#EXTINF:-1 group-title="☘️河南频道" tvg-name="嵩县综合新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B5%A9%E5%8E%BF%E7%BB%BC%E5%90%88%E6%96%B0%E9%97%BB.png",嵩县综合新闻 +http://wshls.live.migucloud.com/live/MZCYG799_C0/playlist.m3u8?zhend +#EXTINF:-1 group-title="☘️河南频道" tvg-name="宜阳综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%9C%E9%98%B3%E7%BB%BC%E5%90%88.png",宜阳综合 +http://tvpull.dxhmt.cn:9081/tv/10327-1.m3u8 +#EXTINF:-1 group-title="☘️河南频道" tvg-name="周口新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%91%A8%E5%8F%A3%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",周口新闻综合 +https://stream1.freetv.fun/zhou-kou-xin-wen-zong-he-1.m3u8 +#EXTINF:-1 group-title="☘️河南频道" tvg-name="周口新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%91%A8%E5%8F%A3%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",周口新闻综合 +https://stream1.freetv.fun/zhou-kou-xin-wen-zong-he-2.m3u8 +#EXTINF:-1 group-title="☘️河南频道" tvg-name="内黄综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%86%85%E9%BB%84%E7%BB%BC%E5%90%88.png",内黄综合 +http://tvpull.dxhmt.cn:9081/tv/10527-1.m3u8?wsSecret=df15530a0abec41b14bca00fc96270d1&wsTime=1654956569 +#EXTINF:-1 group-title="☘️河南频道" tvg-name="内乡综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%86%85%E4%B9%A1%E7%BB%BC%E5%90%88.png",内乡综合 +http://tvpull.dxhmt.cn:9081/tv/11325-1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 group-title="☘️河南频道" tvg-name="偃师新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%81%83%E5%B8%88%E6%96%B0%E9%97%BB.png",偃师新闻 +http://tvpull.dxhmt.cn:9081/tv/10381-1.m3u8?wsSecret=df15530a0abec41b14bca00fc96270d1&wsTime=1654956569 +#EXTINF:-1 group-title="☘️河北频道" tvg-name="鹿泉一套" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%B9%BF%E6%B3%89%E4%B8%80%E5%A5%97.png",鹿泉一套 +https://jwcdnqx.hebyun.com.cn/zb/luquanyi/1500k/tzwj_video.m3u8 +#EXTINF:-1 group-title="☘️河北频道" tvg-name="邯郸科技教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%82%AF%E9%83%B8%E7%A7%91%E6%8A%80%E6%95%99%E8%82%B2.png",邯郸科技教育 +http://live.hd.hdbs.cn/video/s10001-2021hdkjjy/index.m3u8?zhebd +#EXTINF:-1 group-title="☘️河北频道" tvg-name="邯郸科技教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%82%AF%E9%83%B8%E7%A7%91%E6%8A%80%E6%95%99%E8%82%B2.png",邯郸科技教育 +https://jwcdnqx.hebyun.com.cn/live/hdkj/1500k/tzwj_video.m3u8 +#EXTINF:-1 group-title="☘️河北频道" tvg-name="邯郸公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%82%AF%E9%83%B8%E5%85%AC%E5%85%B1.png",邯郸公共 +http://live.hd.hdbs.cn/video/s10001-2021hdgg/index.m3u8?zhebd +#EXTINF:-1 group-title="☘️河北频道" tvg-name="邯郸公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%82%AF%E9%83%B8%E5%85%AC%E5%85%B1.png",邯郸公共 +https://jwcdnqx.hebyun.com.cn/zb/hdgg/1500k/tzwj_video.m3u8 +#EXTINF:-1 group-title="☘️河北频道" tvg-name="邯郸科教" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%82%AF%E9%83%B8%E7%A7%91%E6%95%99.png",邯郸科教 +https://jwcdnqx.hebyun.com.cn/zb/hdkj/1500k/tzwj_video.m3u8 +#EXTINF:-1 group-title="☘️河北频道" tvg-name="邢台综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%82%A2%E5%8F%B0%E7%BB%BC%E5%90%88.png",邢台综合 +http://jwplay.hebyun.com.cn/live/xtsrmtzs/1500k/tzwj_video.m3u8 +#EXTINF:-1 group-title="☘️河北频道" tvg-name="邢台综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%82%A2%E5%8F%B0%E7%BB%BC%E5%90%88.png",邢台综合 +https://jwplay.hebyun.com.cn/live/xttv/1500k/tzwj_video.m3u8 +#EXTINF:-1 group-title="☘️河北频道" tvg-name="邢台综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%82%A2%E5%8F%B0%E7%BB%BC%E5%90%88.png",邢台综合 +https://jwplay.hebyun.com.cn/live/xttv/1500k/tzwj_video.m3u8?zhebd +#EXTINF:-1 group-title="☘️河北频道" tvg-name="邢台综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%82%A2%E5%8F%B0%E7%BB%BC%E5%90%88.png",邢台综合 +https://jwplay.hebyun.com.cn:443/live/xtsrmtzs/1500k/tzwj_video.m3u8 +#EXTINF:-1 group-title="☘️河北频道" tvg-name="邢台综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%82%A2%E5%8F%B0%E7%BB%BC%E5%90%88.png",邢台综合 +https://stream1.freetv.fun/xing-tai-zong-he-7.ctv +#EXTINF:-1 group-title="☘️河北频道" tvg-name="邢台综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%82%A2%E5%8F%B0%E7%BB%BC%E5%90%88.png",邢台综合 +https://stream1.freetv.fun/xing-tai-zong-he-8.ctv +#EXTINF:-1 group-title="☘️河北频道" tvg-name="邢台综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%82%A2%E5%8F%B0%E7%BB%BC%E5%90%88.png",邢台综合 +https://stream1.freetv.fun/xing-tai-zong-he-8.m3u8 +#EXTINF:-1 group-title="☘️河北频道" tvg-name="邢台综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%82%A2%E5%8F%B0%E7%BB%BC%E5%90%88.png",邢台综合 +https://stream1.freetv.fun/xing-tai-zong-he-9.m3u8 +#EXTINF:-1 group-title="☘️河北频道" tvg-name="衡水公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%A1%A1%E6%B0%B4%E5%85%AC%E5%85%B1.png",衡水公共 +http://ls.qingting.fm/live/2810.m3u8 +#EXTINF:-1 group-title="☘️河北频道" tvg-name="石家庄都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9F%B3%E5%AE%B6%E5%BA%84%E9%83%BD%E5%B8%82.png",石家庄都市 +https://stream1.freetv.fun/shi-jia-zhuang-du-shi-1.ctv +#EXTINF:-1 group-title="☘️河北频道" tvg-name="石家庄都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9F%B3%E5%AE%B6%E5%BA%84%E9%83%BD%E5%B8%82.png",石家庄都市 +https://stream1.freetv.fun/shi-jia-zhuang-du-shi-11.ctv +#EXTINF:-1 group-title="☘️河北频道" tvg-name="石家庄都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9F%B3%E5%AE%B6%E5%BA%84%E9%83%BD%E5%B8%82.png",石家庄都市 +https://stream1.freetv.fun/shi-jia-zhuang-du-shi-12.m3u8 +#EXTINF:-1 group-title="☘️河北频道" tvg-name="石家庄都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9F%B3%E5%AE%B6%E5%BA%84%E9%83%BD%E5%B8%82.png",石家庄都市 +https://stream1.freetv.fun/shi-jia-zhuang-du-shi-17.m3u8 +#EXTINF:-1 group-title="☘️河北频道" tvg-name="石家庄都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9F%B3%E5%AE%B6%E5%BA%84%E9%83%BD%E5%B8%82.png",石家庄都市 +https://stream1.freetv.fun/shi-jia-zhuang-du-shi-4.ctv +#EXTINF:-1 group-title="☘️河北频道" tvg-name="石家庄都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9F%B3%E5%AE%B6%E5%BA%84%E9%83%BD%E5%B8%82.png",石家庄都市 +https://stream1.freetv.fun/shi-jia-zhuang-du-shi-5.ctv +#EXTINF:-1 group-title="☘️河北频道" tvg-name="石家庄都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9F%B3%E5%AE%B6%E5%BA%84%E9%83%BD%E5%B8%82.png",石家庄都市 +https://stream1.freetv.fun/shi-jia-zhuang-du-shi-6.ctv +#EXTINF:-1 group-title="☘️河北频道" tvg-name="石家庄都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9F%B3%E5%AE%B6%E5%BA%84%E9%83%BD%E5%B8%82.png",石家庄都市 +https://stream1.freetv.fun/shi-jia-zhuang-du-shi-8.m3u8 +#EXTINF:-1 group-title="☘️河北频道" tvg-name="石家庄都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9F%B3%E5%AE%B6%E5%BA%84%E9%83%BD%E5%B8%82.png",石家庄都市 +https://stream1.freetv.fun/shi-jia-zhuang-du-shi-9.m3u8 +#EXTINF:-1 group-title="☘️河北频道" tvg-name="石家庄生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9F%B3%E5%AE%B6%E5%BA%84%E7%94%9F%E6%B4%BB.png",石家庄生活 +https://stream1.freetv.fun/shi-jia-zhuang-sheng-huo-1.ctv +#EXTINF:-1 group-title="☘️河北频道" tvg-name="石家庄生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9F%B3%E5%AE%B6%E5%BA%84%E7%94%9F%E6%B4%BB.png",石家庄生活 +https://stream1.freetv.fun/shi-jia-zhuang-sheng-huo-10.ctv +#EXTINF:-1 group-title="☘️河北频道" tvg-name="石家庄生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9F%B3%E5%AE%B6%E5%BA%84%E7%94%9F%E6%B4%BB.png",石家庄生活 +https://stream1.freetv.fun/shi-jia-zhuang-sheng-huo-11.ctv +#EXTINF:-1 group-title="☘️河北频道" tvg-name="石家庄生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9F%B3%E5%AE%B6%E5%BA%84%E7%94%9F%E6%B4%BB.png",石家庄生活 +https://stream1.freetv.fun/shi-jia-zhuang-sheng-huo-15.ctv +#EXTINF:-1 group-title="☘️河北频道" tvg-name="石家庄生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9F%B3%E5%AE%B6%E5%BA%84%E7%94%9F%E6%B4%BB.png",石家庄生活 +https://stream1.freetv.fun/shi-jia-zhuang-sheng-huo-2.ctv +#EXTINF:-1 group-title="☘️河北频道" tvg-name="石家庄生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9F%B3%E5%AE%B6%E5%BA%84%E7%94%9F%E6%B4%BB.png",石家庄生活 +https://stream1.freetv.fun/shi-jia-zhuang-sheng-huo-5.ctv +#EXTINF:-1 group-title="☘️河北频道" tvg-name="石家庄生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9F%B3%E5%AE%B6%E5%BA%84%E7%94%9F%E6%B4%BB.png",石家庄生活 +https://stream1.freetv.fun/shi-jia-zhuang-sheng-huo-7.ctv +#EXTINF:-1 group-title="☘️河北频道" tvg-name="石家庄新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9F%B3%E5%AE%B6%E5%BA%84%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",石家庄新闻综合 +https://stream1.freetv.fun/shi-jia-zhuang-xin-wen-zong-he-2.ctv +#EXTINF:-1 group-title="☘️河北频道" tvg-name="石家庄新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9F%B3%E5%AE%B6%E5%BA%84%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",石家庄新闻综合 +https://stream1.freetv.fun/shi-jia-zhuang-xin-wen-zong-he-3.m3u8 +#EXTINF:-1 group-title="☘️河北频道" tvg-name="石家庄新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9F%B3%E5%AE%B6%E5%BA%84%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",石家庄新闻综合 +https://stream1.freetv.fun/shi-jia-zhuang-xin-wen-zong-he-4.m3u8 +#EXTINF:-1 group-title="☘️河北频道" tvg-name="石家庄新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9F%B3%E5%AE%B6%E5%BA%84%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",石家庄新闻综合 +https://stream1.freetv.fun/shi-jia-zhuang-xin-wen-zong-he-5.ctv +#EXTINF:-1 group-title="☘️河北频道" tvg-name="石家庄新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9F%B3%E5%AE%B6%E5%BA%84%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",石家庄新闻综合 +https://stream1.freetv.fun/shi-jia-zhuang-xin-wen-zong-he-6.ctv +#EXTINF:-1 group-title="☘️河北频道" tvg-name="石家庄新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9F%B3%E5%AE%B6%E5%BA%84%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",石家庄新闻综合 +https://stream1.freetv.fun/shi-jia-zhuang-xin-wen-zong-he-7.ctv +#EXTINF:-1 group-title="☘️河北频道" tvg-name="石家庄新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9F%B3%E5%AE%B6%E5%BA%84%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",石家庄新闻综合 +https://stream1.freetv.fun/shi-jia-zhuang-xin-wen-zong-he-8.ctv +#EXTINF:-1 group-title="☘️河北频道" tvg-name="石家庄新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9F%B3%E5%AE%B6%E5%BA%84%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",石家庄新闻综合 +https://stream1.freetv.fun/shi-jia-zhuang-xin-wen-zong-he-8.m3u8 +#EXTINF:-1 group-title="☘️河北频道" tvg-name="石家庄新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9F%B3%E5%AE%B6%E5%BA%84%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",石家庄新闻综合 +https://stream1.freetv.fun/shi-jia-zhuang-xin-wen-zong-he-9.m3u8 +#EXTINF:-1 group-title="☘️河北频道" tvg-name="石家庄娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9F%B3%E5%AE%B6%E5%BA%84%E5%A8%B1%E4%B9%90.png",石家庄娱乐 +https://stream1.freetv.fun/shi-jia-zhuang-yu-le-1.ctv +#EXTINF:-1 group-title="☘️河北频道" tvg-name="石家庄娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9F%B3%E5%AE%B6%E5%BA%84%E5%A8%B1%E4%B9%90.png",石家庄娱乐 +https://stream1.freetv.fun/shi-jia-zhuang-yu-le-10.m3u8 +#EXTINF:-1 group-title="☘️河北频道" tvg-name="石家庄娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9F%B3%E5%AE%B6%E5%BA%84%E5%A8%B1%E4%B9%90.png",石家庄娱乐 +https://stream1.freetv.fun/shi-jia-zhuang-yu-le-11.m3u8 +#EXTINF:-1 group-title="☘️河北频道" tvg-name="石家庄娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9F%B3%E5%AE%B6%E5%BA%84%E5%A8%B1%E4%B9%90.png",石家庄娱乐 +https://stream1.freetv.fun/shi-jia-zhuang-yu-le-12.ctv +#EXTINF:-1 group-title="☘️河北频道" tvg-name="石家庄娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9F%B3%E5%AE%B6%E5%BA%84%E5%A8%B1%E4%B9%90.png",石家庄娱乐 +https://stream1.freetv.fun/shi-jia-zhuang-yu-le-3.m3u8 +#EXTINF:-1 group-title="☘️河北频道" tvg-name="石家庄娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9F%B3%E5%AE%B6%E5%BA%84%E5%A8%B1%E4%B9%90.png",石家庄娱乐 +https://stream1.freetv.fun/shi-jia-zhuang-yu-le-4.ctv +#EXTINF:-1 group-title="☘️河北频道" tvg-name="石家庄娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9F%B3%E5%AE%B6%E5%BA%84%E5%A8%B1%E4%B9%90.png",石家庄娱乐 +https://stream1.freetv.fun/shi-jia-zhuang-yu-le-6.ctv +#EXTINF:-1 group-title="☘️河北频道" tvg-name="石家庄娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9F%B3%E5%AE%B6%E5%BA%84%E5%A8%B1%E4%B9%90.png",石家庄娱乐 +https://stream1.freetv.fun/shi-jia-zhuang-yu-le-7.ctv +#EXTINF:-1 group-title="☘️河北频道" tvg-name="石家庄娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9F%B3%E5%AE%B6%E5%BA%84%E5%A8%B1%E4%B9%90.png",石家庄娱乐 +https://stream1.freetv.fun/shi-jia-zhuang-yu-le-8.m3u8 +#EXTINF:-1 group-title="☘️河北频道" tvg-name="石家庄娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9F%B3%E5%AE%B6%E5%BA%84%E5%A8%B1%E4%B9%90.png",石家庄娱乐 +https://stream1.freetv.fun/shi-jia-zhuang-yu-le-9.ctv +#EXTINF:-1 group-title="☘️河北频道" tvg-name="滦平新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%BB%A6%E5%B9%B3%E6%96%B0%E9%97%BB.png",滦平新闻 +http://jwplay.hebyun.com.cn/live/LPTV001/1500k/tzwj_video.m3u8 +#EXTINF:-1 group-title="☘️河北频道" tvg-name="河北都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E9%83%BD%E5%B8%82.png",河北都市 +http://jwplay.hebyun.com.cn/live/hbnmtv/1500k/tzwj_video.m3u8 +#EXTINF:-1 group-title="☘️河北频道" tvg-name="河北都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E9%83%BD%E5%B8%82.png",河北都市 +https://event.pull.hebtv.com/jishi/dushipindao.m3u8 +#EXTINF:-1 group-title="☘️河北频道" tvg-name="河北都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E9%83%BD%E5%B8%82.png",河北都市 +https://live.lalifeier.eu.org/hebtv/hbds.m3u8?t=1745774515&key=ce739e0d0528ad5a5e6434e48c963ced +#EXTINF:-1 group-title="☘️河北频道" tvg-name="河北都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E9%83%BD%E5%B8%82.png",河北都市 +https://live.lalifeier.eu.org/hebtv/hbds.m3u8?t=1746292937&key=31037b0f5b409589966488a8534d4f77 +#EXTINF:-1 group-title="☘️河北频道" tvg-name="河北都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E9%83%BD%E5%B8%82.png",河北都市 +https://live.lalifeier.eu.org/hebtv/hbds.m3u8?t=1746307365&key=ac1ef10a10a447846c16428759df6b95 +#EXTINF:-1 group-title="☘️河北频道" tvg-name="河北都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E9%83%BD%E5%B8%82.png",河北都市 +https://live.lalifeier.eu.org/hebtv/hbds.m3u8?t=1746379256&key=4da081270bc85d02099091b47a9ee5dd +#EXTINF:-1 group-title="☘️河北频道" tvg-name="河北都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E9%83%BD%E5%B8%82.png",河北都市 +https://live.lalifeier.eu.org/hebtv/hbds.m3u8?t=1746393735&key=c6af04dacacc8befbdb92a0fec4c60ee +#EXTINF:-1 group-title="☘️河北频道" tvg-name="河北都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E9%83%BD%E5%B8%82.png",河北都市 +https://stream1.freetv.fun/he-bei-du-shi-13.ctv +#EXTINF:-1 group-title="☘️河北频道" tvg-name="河北都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E9%83%BD%E5%B8%82.png",河北都市 +https://stream1.freetv.fun/he-bei-du-shi-14.m3u8 +#EXTINF:-1 group-title="☘️河北频道" tvg-name="河北都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E9%83%BD%E5%B8%82.png",河北都市 +https://stream1.freetv.fun/he-bei-du-shi-16.ctv +#EXTINF:-1 group-title="☘️河北频道" tvg-name="河北农民" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E5%86%9C%E6%B0%91.png",河北农民 +https://ls.qingting.fm/live/1650/64k.m3u8 +#EXTINF:-1 group-title="☘️河北频道" tvg-name="河北农民" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E5%86%9C%E6%B0%91.png",河北农民 +http://ls.qingting.fm/live/1650.m3u8 +#EXTINF:-1 group-title="☘️河北频道" tvg-name="河北农民" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E5%86%9C%E6%B0%91.png",河北农民 +https://event.pull.hebtv.com/jishi/nongminpindao.m3u8 +#EXTINF:-1 group-title="☘️河北频道" tvg-name="河北农民" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E5%86%9C%E6%B0%91.png",河北农民 +https://live.lalifeier.eu.org/hebtv/hbnm.m3u8?t=1745774515&key=fec9ea387b470ccb0dc8e6e0e5b36bec +#EXTINF:-1 group-title="☘️河北频道" tvg-name="河北农民" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E5%86%9C%E6%B0%91.png",河北农民 +https://live.lalifeier.eu.org/hebtv/hbnm.m3u8?t=1746292937&key=9dc8fc082e1d72b74063dfc2bc945e16 +#EXTINF:-1 group-title="☘️河北频道" tvg-name="河北农民" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E5%86%9C%E6%B0%91.png",河北农民 +https://live.lalifeier.eu.org/hebtv/hbnm.m3u8?t=1746307365&key=f8b778466518d5f6d89b1a38fcbea28d +#EXTINF:-1 group-title="☘️河北频道" tvg-name="河北农民" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E5%86%9C%E6%B0%91.png",河北农民 +https://live.lalifeier.eu.org/hebtv/hbnm.m3u8?t=1746379256&key=3505bde88f415af4e966dafa916ad8ae +#EXTINF:-1 group-title="☘️河北频道" tvg-name="河北农民" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E5%86%9C%E6%B0%91.png",河北农民 +https://live.lalifeier.eu.org/hebtv/hbnm.m3u8?t=1746393735&key=34100a9736334c36296dd0d2a32def60 +#EXTINF:-1 group-title="☘️河北频道" tvg-name="河北农民" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E5%86%9C%E6%B0%91.png",河北农民 +https://stream1.freetv.fun/he-bei-nong-min-3.ctv +#EXTINF:-1 group-title="☘️河北频道" tvg-name="河北农民" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E5%86%9C%E6%B0%91.png",河北农民 +https://stream1.freetv.fun/he-bei-nong-min-7.ctv +#EXTINF:-1 group-title="☘️河北频道" tvg-name="昌黎综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%98%8C%E9%BB%8E%E7%BB%BC%E5%90%88.png",昌黎综合 +https://jwcdnqx.hebyun.com.cn/live/clzhpd/1500k/tzwj_video.m3u8 +#EXTINF:-1 group-title="☘️河北频道" tvg-name="任丘文娱" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BB%BB%E4%B8%98%E6%96%87%E5%A8%B1.png",任丘文娱 +https://jwcdnqx.hebyun.com.cn/live/rqtv2/1500k/tzwj_video.m3u8 +#EXTINF:-1 group-title="☘️河北频道" tvg-name="任丘综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BB%BB%E4%B8%98%E7%BB%BC%E5%90%88.png",任丘综合 +https://jwcdnqx.hebyun.com.cn/live/rqtv1/1500k/tzwj_video.m3u8 +#EXTINF:-1 group-title="☘️河北频道" tvg-name="兴隆综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%85%B4%E9%9A%86%E7%BB%BC%E5%90%88.png",兴隆综合 +https://jwcdnqx.hebyun.com.cn/live/xlzh/1500k/tzwj_video.m3u8 +#EXTINF:-1 group-title="☘️河北频道" tvg-name="平泉影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%B3%E6%B3%89%E5%BD%B1%E8%A7%86.png",平泉影视 +https://jwcdnqx.hebyun.com.cn/live/pqys/1500k/tzwj_video.m3u8 +#EXTINF:-1 group-title="☘️河北频道" tvg-name="平泉综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%B3%E6%B3%89%E7%BB%BC%E5%90%88.png",平泉综合 +https://jwcdnqx.hebyun.com.cn/live/pqzh/1500k/tzwj_video.m3u8 +#EXTINF:-1 group-title="☘️河北频道" tvg-name="昌黎" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%98%8C%E9%BB%8E.png",昌黎 +https://jwcdnqx.hebyun.com.cn/live/clzhpd/1500k/tzwj_video.m3u8 +#EXTINF:-1 group-title="☘️河北频道" tvg-name="清河新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B8%85%E6%B2%B3%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",清河新闻综合 +https://jwcdnqx.hebyun.com.cn/live/qinghe/1500k/tzwj_video.m3u8 +#EXTINF:-1 group-title="☘️河北频道" tvg-name="清河经济综艺" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B8%85%E6%B2%B3%E7%BB%8F%E6%B5%8E%E7%BB%BC%E8%89%BA.png",清河经济综艺 +https://jwcdnqx.hebyun.com.cn/live/qinghe1/1500k/tzwj_video.m3u8 +#EXTINF:-1 group-title="☘️贵州频道" tvg-name="安顺新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E9%A1%BA%E6%96%B0%E9%97%BB.png",安顺新闻 +http://hplayer1.juyun.tv/camera/154379194.m3u8 +#EXTINF:-1 group-title="☘️贵州频道" tvg-name="安顺新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E9%A1%BA%E6%96%B0%E9%97%BB.png",安顺新闻 +https://ls.qingting.fm/live/5022203/64k.m3u8 +#EXTINF:-1 group-title="☘️甘肃频道" tvg-name="甘肃经济" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%94%98%E8%82%83%E7%BB%8F%E6%B5%8E.png",甘肃经济 +https://hls.gstv.com.cn/49048r/10iv1j.m3u8 +#EXTINF:-1 group-title="☘️甘肃频道" tvg-name="甘肃公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%94%98%E8%82%83%E5%85%AC%E5%85%B1.png",甘肃公共 +https://hls.gstv.com.cn/49048r/3t5xyc.m3u8 +#EXTINF:-1 group-title="☘️甘肃频道" tvg-name="甘肃都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%94%98%E8%82%83%E9%83%BD%E5%B8%82.png",甘肃都市 +https://hls.gstv.com.cn/49048r/l54391.m3u8 +#EXTINF:-1 group-title="☘️甘肃频道" tvg-name="嘉峪关综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%98%89%E5%B3%AA%E5%85%B3%E7%BB%BC%E5%90%88.png",嘉峪关综合 +http://play.kankanlive.com/live/1720583434627241.m3u8 +#EXTINF:-1 group-title="☘️甘肃频道" tvg-name="张掖新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BC%A0%E6%8E%96%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",张掖新闻综合 +https://play.kankanlive.com/live/1720583434627241.m3u8 +#EXTINF:-1 group-title="☘️甘肃频道" tvg-name="成县综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%88%90%E5%8E%BF%E7%BB%BC%E5%90%88.png",成县综合 +https://play.kankanlive.com/live/1702454377323961.m3u8 +#EXTINF:-1 group-title="☘️甘肃频道" tvg-name="渭源新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B8%AD%E6%BA%90%E6%96%B0%E9%97%BB.png",渭源新闻 +http://play.kankanlive.com/live/1720408280309109.m3u8 +#EXTINF:-1 group-title="☘️甘肃频道" tvg-name="甘肃少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%94%98%E8%82%83%E5%B0%91%E5%84%BF.png",甘肃少儿 +https://hls.gstv.com.cn/49048r/922k96.m3u8 +#EXTINF:-1 group-title="☘️甘肃频道" tvg-name="甘肃少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%94%98%E8%82%83%E5%B0%91%E5%84%BF.png",甘肃少儿 +https://3ee63cd9178a070a2db29f77915c49d4.livehwc3.cn/play.kankanlive.com/live/1702033926169975.m3u8 +#EXTINF:-1 group-title="☘️甘肃频道" tvg-name="白银综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%99%BD%E9%93%B6%E7%BB%BC%E5%90%88.png",白银综合 +http://play.kankanlive.com/live/1720408089419110.m3u8 +#EXTINF:-1 group-title="☘️甘肃频道" tvg-name="白银综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%99%BD%E9%93%B6%E7%BB%BC%E5%90%88.png",白银综合 +https://play.kankanlive.com/live/1720408089419110.m3u8 +#EXTINF:-1 group-title="☘️甘肃频道" tvg-name="西和综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%A5%BF%E5%92%8C%E7%BB%BC%E5%90%88.png",西和综合 +https://play.kankanlive.com/live/1659926941626981.m3u8 +#EXTINF:-1 group-title="☘️甘肃频道" tvg-name="酒泉综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%85%92%E6%B3%89%E7%BB%BC%E5%90%88.png",酒泉综合 +https://3ee63cd9178a070a2db29f77915c49d4.livehwc3.cn/play.kankanlive.com/live/1702033926169975.m3u8 +#EXTINF:-1 group-title="☘️新疆频道" tvg-name="哈密一套" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%93%88%E5%AF%86%E4%B8%80%E5%A5%97.png",哈密一套 +https://tvpull.hmgbtv.com/hmtv/channel9cd66b3d5d258b2b.flv +#EXTINF:-1 group-title="☘️新疆频道" tvg-name="哈密二套" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%93%88%E5%AF%86%E4%BA%8C%E5%A5%97.png",哈密二套 +https://tvpull.hmgbtv.com/hmtv/channel108259412c6a6711/playlist.m3u8 +#EXTINF:-1 group-title="☘️新疆频道" tvg-name="哈密三套" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%93%88%E5%AF%86%E4%B8%89%E5%A5%97.png",哈密三套 +https://tvpull.hmgbtv.com/hmtv/channelfb0e5c505477aa44/playlist.m3u8 +#EXTINF:-1 group-title="☘️新疆频道" tvg-name="新疆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E7%96%86%E5%8D%AB%E8%A7%86.png",新疆卫视 +http://php.jdshipin.com/TVOD/hljyd.php?id=3221225635 +#EXTINF:-1 group-title="☘️新疆频道" tvg-name="新疆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E7%96%86%E5%8D%AB%E8%A7%86.png",新疆卫视 +http://z.b.bkpcp.top/m.php?id=xjws +#EXTINF:-1 group-title="☘️新疆频道" tvg-name="新疆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E7%96%86%E5%8D%AB%E8%A7%86.png",新疆卫视 +http://j.x.bkpcp.top/jx/XJWS +#EXTINF:-1 group-title="☘️新疆频道" tvg-name="新疆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E7%96%86%E5%8D%AB%E8%A7%86.png",新疆卫视 +http://goo.bkpcp.top/mg/xjws +#EXTINF:-1 group-title="☘️新疆频道" tvg-name="新疆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E7%96%86%E5%8D%AB%E8%A7%86.png",新疆卫视 +http://dsj.motem.top:8880/bptv/10000100000000050000000003887448.m3u8 +#EXTINF:-1 group-title="☘️新疆频道" tvg-name="新疆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E7%96%86%E5%8D%AB%E8%A7%86.png",新疆卫视 +http://[2409:8087:1a0a:df::404b]/ottrrs.hl.chinamobile.com/TVOD/88888888/224/3221225635/index.m3u8 +#EXTINF:-1 group-title="☘️新疆频道" tvg-name="新疆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E7%96%86%E5%8D%AB%E8%A7%86.png",新疆卫视 +http://[2409:8087:2001:20:2800:0:df6e:eb0b]/wh7f454c46tw993550557_162751766/ott.mobaibox.com/PLTV/3/224/3221228290/index.m3u8?icpid=3&RTS=1668604377&from=40&popid=40&hms_devid=2038&prioritypopid=40&vqe=3 +#EXTINF:-1 group-title="☘️新疆频道" tvg-name="新疆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E7%96%86%E5%8D%AB%E8%A7%86.png",新疆卫视 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221226460/index.m3u8 +#EXTINF:-1 group-title="☘️新疆频道" tvg-name="新疆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E7%96%86%E5%8D%AB%E8%A7%86.png",新疆卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226546/1.m3u8 +#EXTINF:-1 group-title="☘️新疆频道" tvg-name="新疆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E7%96%86%E5%8D%AB%E8%A7%86.png",新疆卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226923/1.m3u8 +#EXTINF:-1 group-title="☘️山东频道" tvg-name="山东少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E5%B0%91%E5%84%BF.png",山东少儿 +https://stream1.freetv.fun/shan-dong-shao-er-6.m3u8 +#EXTINF:-1 group-title="☘️山东频道" tvg-name="山东少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E5%B0%91%E5%84%BF.png",山东少儿 +https://stream1.freetv.fun/shan-dong-shao-er-2.m3u8 +#EXTINF:-1 group-title="☘️山东频道" tvg-name="山东少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E5%B0%91%E5%84%BF.png",山东少儿 +https://stream1.freetv.fun/shan-dong-shao-er-9.m3u8 +#EXTINF:-1 group-title="☘️山东频道" tvg-name="山东少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E5%B0%91%E5%84%BF.png",山东少儿 +http://livealone302.iqilu.com/iqilu/sepd.m3u8 +#EXTINF:-1 group-title="☘️山东频道" tvg-name="山东少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E5%B0%91%E5%84%BF.png",山东少儿 +https://stream1.freetv.fun/shan-dong-shao-er-1.m3u8 +#EXTINF:-1 group-title="☘️山东频道" tvg-name="山东少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E5%B0%91%E5%84%BF.png",山东少儿 +https://stream1.freetv.fun/shan-dong-shao-er-4.m3u8 +#EXTINF:-1 group-title="☘️山东频道" tvg-name="山东少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E5%B0%91%E5%84%BF.png",山东少儿 +https://stream1.freetv.fun/shan-dong-shao-er-8.m3u8 +#EXTINF:-1 group-title="☘️山东频道" tvg-name="山东少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E5%B0%91%E5%84%BF.png",山东少儿 +https://stream1.freetv.fun/shan-dong-shao-er-10.m3u8 +#EXTINF:-1 group-title="☘️山东频道" tvg-name="山东少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E5%B0%91%E5%84%BF.png",山东少儿 +https://stream1.freetv.fun/shan-dong-shao-er-5.m3u8 +#EXTINF:-1 group-title="☘️山东频道" tvg-name="山东少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E5%B0%91%E5%84%BF.png",山东少儿 +https://stream1.freetv.fun/shan-dong-shao-er-7.m3u8 +#EXTINF:-1 group-title="☘️山东频道" tvg-name="山东新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E6%96%B0%E9%97%BB.png",山东新闻 +http://live.xmcdn.com/live/1440/64.m3u8 +#EXTINF:-1 group-title="☘️山东频道" tvg-name="山东新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E6%96%B0%E9%97%BB.png",山东新闻 +https://stream1.freetv.fun/shan-dong-xin-wen-8.m3u8 +#EXTINF:-1 group-title="☘️山东频道" tvg-name="山东新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E6%96%B0%E9%97%BB.png",山东新闻 +https://stream1.freetv.fun/shan-dong-xin-wen-1.m3u8 +#EXTINF:-1 group-title="☘️山东频道" tvg-name="山东新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E6%96%B0%E9%97%BB.png",山东新闻 +https://stream1.freetv.fun/shan-dong-xin-wen-4.m3u8 +#EXTINF:-1 group-title="☘️山东频道" tvg-name="山东新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E6%96%B0%E9%97%BB.png",山东新闻 +https://stream1.freetv.fun/shan-dong-xin-wen-6.m3u8 +#EXTINF:-1 group-title="☘️山东频道" tvg-name="山东新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E6%96%B0%E9%97%BB.png",山东新闻 +https://stream1.freetv.fun/shan-dong-xin-wen-10.m3u8 +#EXTINF:-1 group-title="☘️山东频道" tvg-name="山东新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E6%96%B0%E9%97%BB.png",山东新闻 +https://stream1.freetv.fun/shan-dong-xin-wen-2.m3u8 +#EXTINF:-1 group-title="☘️山东频道" tvg-name="山东新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E6%96%B0%E9%97%BB.png",山东新闻 +http://ls.qingting.fm/live/60180.m3u8 +#EXTINF:-1 group-title="☘️山东频道" tvg-name="山东新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E6%96%B0%E9%97%BB.png",山东新闻 +http://livealone302.iqilu.com/iqilu/ggpd.m3u8 +#EXTINF:-1 group-title="☘️山东频道" tvg-name="山东新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E6%96%B0%E9%97%BB.png",山东新闻 +https://stream1.freetv.fun/shan-dong-xin-wen-7.m3u8 +#EXTINF:-1 group-title="☘️山东频道" tvg-name="山东教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E6%95%99%E8%82%B2.png",山东教育 +http://z.b.bkpcp.top/m.php?id=sdjy +#EXTINF:-1 group-title="☘️山东频道" tvg-name="山东教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E6%95%99%E8%82%B2.png",山东教育 +http://goo.bkpcp.top/mg/sdjy +#EXTINF:-1 group-title="☘️山东频道" tvg-name="山东教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E6%95%99%E8%82%B2.png",山东教育 +http://iptv.huuc.edu.cn/hls/sdetv.m3u8 +#EXTINF:-1 group-title="☘️山东频道" tvg-name="山东教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E6%95%99%E8%82%B2.png",山东教育 +http://rrs01.hw.gmcc.net:8088/PLTV/81/224/3221226701/1.m3u8 +#EXTINF:-1 group-title="☘️山东频道" tvg-name="山东居家购物" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E5%B1%85%E5%AE%B6%E8%B4%AD%E7%89%A9.png",山东居家购物 +http://livealone302.iqilu.com/iqilu/gwpd.m3u8 +#EXTINF:-1 group-title="☘️山东频道" tvg-name="山东农科" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E5%86%9C%E7%A7%91.png",山东农科 +http://livealone302.iqilu.com/iqilu/nkpd.m3u8 +#EXTINF:-1 group-title="☘️山东频道" tvg-name="山东齐鲁" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E9%BD%90%E9%B2%81.png",山东齐鲁 +http://livealone302.iqilu.com/iqilu/qlpd.m3u8 +#EXTINF:-1 group-title="☘️山东频道" tvg-name="山东生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E7%94%9F%E6%B4%BB.png",山东生活 +http://ls.qingting.fm/live/60260.m3u8 +#EXTINF:-1 group-title="☘️山东频道" tvg-name="山东生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E7%94%9F%E6%B4%BB.png",山东生活 +http://livealone302.iqilu.com/iqilu/shpd.m3u8 +#EXTINF:-1 group-title="☘️山东频道" tvg-name="山东体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E4%BD%93%E8%82%B2.png",山东体育 +http://satellitepull.cnr.cn/live/wxsdtyxxgb/playlist.m3u8 +#EXTINF:-1 group-title="☘️山东频道" tvg-name="山东体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E4%BD%93%E8%82%B2.png",山东体育 +https://satellitepull.cnr.cn/live/wxsdtyxxgb/playlist.m3u8 +#EXTINF:-1 group-title="☘️山东频道" tvg-name="山东体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E4%BD%93%E8%82%B2.png",山东体育 +https://stream1.freetv.fun/shan-dong-ti-yu-8.m3u8 +#EXTINF:-1 group-title="☘️山东频道" tvg-name="山东体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E4%BD%93%E8%82%B2.png",山东体育 +https://stream1.freetv.fun/shan-dong-ti-yu-18.m3u8 +#EXTINF:-1 group-title="☘️山东频道" tvg-name="山东体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E4%BD%93%E8%82%B2.png",山东体育 +https://stream1.freetv.fun/shan-dong-ti-yu-19.m3u8 +#EXTINF:-1 group-title="☘️山东频道" tvg-name="山东体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E4%BD%93%E8%82%B2.png",山东体育 +https://stream1.freetv.fun/shan-dong-ti-yu-4.m3u8 +#EXTINF:-1 group-title="☘️山东频道" tvg-name="山东体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E4%BD%93%E8%82%B2.png",山东体育 +https://stream1.freetv.fun/shan-dong-ti-yu-23.m3u8 +#EXTINF:-1 group-title="☘️山东频道" tvg-name="山东体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E4%BD%93%E8%82%B2.png",山东体育 +https://stream1.freetv.fun/shan-dong-ti-yu-15.m3u8 +#EXTINF:-1 group-title="☘️山东频道" tvg-name="山东体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E4%BD%93%E8%82%B2.png",山东体育 +http://livealone302.iqilu.com/iqilu/typd.m3u8 +#EXTINF:-1 group-title="☘️山东频道" tvg-name="山东体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E4%BD%93%E8%82%B2.png",山东体育 +https://stream1.freetv.fun/shan-dong-ti-yu-7.m3u8 +#EXTINF:-1 group-title="☘️山东频道" tvg-name="山东综艺" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E7%BB%BC%E8%89%BA.png",山东综艺 +http://livealone302.iqilu.com/iqilu/zypd.m3u8 +#EXTINF:-1 group-title="☘️山东频道" tvg-name="济南综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%8E%E5%8D%97%E7%BB%BC%E5%90%88.png",济南综合 +https://stream1.freetv.fun/ji-nan-zong-he-2.m3u8 +#EXTINF:-1 group-title="☘️山东频道" tvg-name="济南综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%8E%E5%8D%97%E7%BB%BC%E5%90%88.png",济南综合 +https://stream1.freetv.fun/ji-nan-zong-he-3.m3u8 +#EXTINF:-1 group-title="☘️山东频道" tvg-name="济南综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%8E%E5%8D%97%E7%BB%BC%E5%90%88.png",济南综合 +https://stream1.freetv.fun/ji-nan-zong-he-1.m3u8 +#EXTINF:-1 group-title="☘️山东频道" tvg-name="济南新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%8E%E5%8D%97%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",济南新闻综合 +https://stream1.freetv.fun/ji-nan-xin-wen-zong-he-7.m3u8 +#EXTINF:-1 group-title="☘️山东频道" tvg-name="济南新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%8E%E5%8D%97%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",济南新闻综合 +https://stream1.freetv.fun/ipv6-ji-nan-xin-wen-zong-he-8.m3u8 +#EXTINF:-1 group-title="☘️山东频道" tvg-name="济南教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%8E%E5%8D%97%E6%95%99%E8%82%B2.png",济南教育 +https://stream1.freetv.fun/ji-nan-jiao-yu-1.m3u8 +#EXTINF:-1 group-title="☘️山东频道" tvg-name="日照公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%97%A5%E7%85%A7%E5%85%AC%E5%85%B1.png",日照公共 +http://live.rzw.com.cn/kzpd/sd/live.m3u8?shandd +#EXTINF:-1 group-title="☘️山东频道" tvg-name="日照新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%97%A5%E7%85%A7%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",日照新闻综合 +http://live.rzw.com.cn/xwzh/sd/live.m3u8?shandd +#EXTINF:-1 group-title="☘️山东频道" tvg-name="日照科教" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%97%A5%E7%85%A7%E7%A7%91%E6%95%99.png",日照科教 +http://live.rzw.com.cn/ggpd/sd/live.m3u8?shandd +#EXTINF:-1 group-title="☘️山东频道" tvg-name="潍坊新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%BD%8D%E5%9D%8A%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",潍坊新闻综合 +https://stream1.freetv.fun/ipv6-wei-fang-xin-wen-zong-he-2.m3u8 +#EXTINF:-1 group-title="☘️山东频道" tvg-name="潍坊新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%BD%8D%E5%9D%8A%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",潍坊新闻综合 +https://stream1.freetv.fun/ipv6-wei-fang-xin-wen-zong-he-1.m3u8 +#EXTINF:-1 group-title="☘️山西频道" tvg-name="五台综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%94%E5%8F%B0%E7%BB%BC%E5%90%88.png",五台综合 +https://568slnjf.live.sxmty.com/live/hls/90c8b2efeb164cc0a6c2409eed668d6b/f77cbb89ec57435b9ba4c47589c16e4f-1.m3u8 +#EXTINF:-1 group-title="☘️山西频道" tvg-name="五台综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%94%E5%8F%B0%E7%BB%BC%E5%90%88.png",五台综合 +https://568slnjf.live.sxmty.com/live/hls/90c8b2efeb164cc0a6c2409eed668d6b/f77cbb89ec57435b9ba4c47589c16e4f-1.m3u8?zshanxd +#EXTINF:-1 group-title="☘️山西频道" tvg-name="五台综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%94%E5%8F%B0%E7%BB%BC%E5%90%88.png",五台综合 +https://568slnjf.live.sxmty.com/live/hls/90c8b2efeb164cc0a6c2409eed668d6b/f77cbb89ec57435b9ba4c47589c16e4f-1.m3u8?zshanxd&amp;quot; +#EXTINF:-1 group-title="☘️山西频道" tvg-name="古县综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8F%A4%E5%8E%BF%E7%BB%BC%E5%90%88.png",古县综合 +https://l2fpdktp.live.sxmty.com/live/hls/e4c3b363cc4549788e2d983f403e07db/d99ce1eb686e41b9afc888110bd95aa7.m3u8?zshanxd +#EXTINF:-1 group-title="☘️山西频道" tvg-name="太谷新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%AA%E8%B0%B7%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",太谷新闻综合 +https://p2.vzan.com/slowlive/596867413819827251/live.m3u8?zbid=1725814272&tpid=1516989100&type=0 +#EXTINF:-1 group-title="☘️山西频道" tvg-name="太谷新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%AA%E8%B0%B7%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",太谷新闻综合 +https://p2.vzan.com/slowlive/596867413819827251/live.m3u8?zbid=1725814272&amp;tpid=1516989100&amp;type=0 +#EXTINF:-1 group-title="☘️山西频道" tvg-name="定襄综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%9A%E8%A5%84%E7%BB%BC%E5%90%88.png",定襄综合 +http://lbyzztfe.live.sxmty.com/live/hls/645ff4c60e0a49f0a203abbd73dd8be9/0720e665f10f48e98c9639f4f492fb4a-1.m3u8?zshanxd +#EXTINF:-1 group-title="☘️山西频道" tvg-name="山西影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E5%BD%B1%E8%A7%86.png",山西影视 +https://live.lalifeier.eu.org/sxrtv/sxys.m3u8?t=1745796321&key=0721c661fb4b291613b070d85d8af084 +#EXTINF:-1 group-title="☘️山西频道" tvg-name="山西影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E5%BD%B1%E8%A7%86.png",山西影视 +https://live.lalifeier.eu.org/sxrtv/sxys.m3u8?t=1746307365&key=a8b9568fc8b9a14d097cb74c31fed7ed +#EXTINF:-1 group-title="☘️山西频道" tvg-name="山西影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E5%BD%B1%E8%A7%86.png",山西影视 +https://live.lalifeier.eu.org/sxrtv/sxys.m3u8?t=1746739480&key=fd1183aefcdce4619903e0d10d8de72a +#EXTINF:-1 group-title="☘️山西频道" tvg-name="山西影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E5%BD%B1%E8%A7%86.png",山西影视 +https://live.lalifeier.eu.org/sxrtv/sxys.m3u8?t=1746782860&key=a8f0d638d8a684e085af26c8c4eb6145 +#EXTINF:-1 group-title="☘️山西频道" tvg-name="山西影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E5%BD%B1%E8%A7%86.png",山西影视 +https://live.lalifeier.eu.org/sxrtv/sxys.m3u8?t=1746825793&key=450ea9eaa1453bb67aa01073a994648f +#EXTINF:-1 group-title="☘️山西频道" tvg-name="山西影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E5%BD%B1%E8%A7%86.png",山西影视 +https://live.lalifeier.eu.org/sxrtv/sxys.m3u8?t=1746894586&key=73695eb2df46d11e20cb1fc6ee223620 +#EXTINF:-1 group-title="☘️山西频道" tvg-name="山西影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E5%BD%B1%E8%A7%86.png",山西影视 +https://live.lalifeier.eu.org/sxrtv/sxys.m3u8?t=1746912103&key=e238171d14680bceaeb7ef24ec9006c4 +#EXTINF:-1 group-title="☘️山西频道" tvg-name="山西影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E5%BD%B1%E8%A7%86.png",山西影视 +https://live.lalifeier.eu.org/sxrtv/sxys.m3u8?t=1746955518&key=fda6ad2e5256fd40de740c612cc2a25d +#EXTINF:-1 group-title="☘️山西频道" tvg-name="山西影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E5%BD%B1%E8%A7%86.png",山西影视 +https://live.lalifeier.eu.org/sxrtv/sxys.m3u8?t=1746998549&key=679b4a1f9fcaf36339d523717ec01d0c +#EXTINF:-1 group-title="☘️山西频道" tvg-name="山西影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E5%BD%B1%E8%A7%86.png",山西影视 +https://live.lalifeier.eu.org/sxrtv/sxys.m3u8?t=1747085050&key=13cb75cc4308da5f219dfc577747c9d1 +#EXTINF:-1 group-title="☘️山西频道" tvg-name="山西文体生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E6%96%87%E4%BD%93%E7%94%9F%E6%B4%BB.png",山西文体生活 +https://live.lalifeier.eu.org/sxrtv/sxwtsh.m3u8?t=1745796321&key=5d07585f428e3bbbe66ef7a534c8db1e +#EXTINF:-1 group-title="☘️山西频道" tvg-name="山西文体生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E6%96%87%E4%BD%93%E7%94%9F%E6%B4%BB.png",山西文体生活 +https://live.lalifeier.eu.org/sxrtv/sxwtsh.m3u8?t=1746307365&key=1cf53f641a43923de396153d3e9e40b6 +#EXTINF:-1 group-title="☘️山西频道" tvg-name="山西文体生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E6%96%87%E4%BD%93%E7%94%9F%E6%B4%BB.png",山西文体生活 +https://live.lalifeier.eu.org/sxrtv/sxwtsh.m3u8?t=1746393735&key=ef71ca0281e5b344d896cad03a642087 +#EXTINF:-1 group-title="☘️山西频道" tvg-name="山西文体生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E6%96%87%E4%BD%93%E7%94%9F%E6%B4%BB.png",山西文体生活 +https://live.lalifeier.eu.org/sxrtv/sxwtsh.m3u8?t=1746739480&key=1e99e4e3afb45f5b37b9628c02a67e9c +#EXTINF:-1 group-title="☘️山西频道" tvg-name="山西文体生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E6%96%87%E4%BD%93%E7%94%9F%E6%B4%BB.png",山西文体生活 +https://live.lalifeier.eu.org/sxrtv/sxwtsh.m3u8?t=1746782860&key=71ef64431d275eb633b8f941bc634f72 +#EXTINF:-1 group-title="☘️山西频道" tvg-name="山西文体生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E6%96%87%E4%BD%93%E7%94%9F%E6%B4%BB.png",山西文体生活 +https://live.lalifeier.eu.org/sxrtv/sxwtsh.m3u8?t=1746825793&key=5142858c802757f04dcc637cb4d85f30 +#EXTINF:-1 group-title="☘️山西频道" tvg-name="山西文体生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E6%96%87%E4%BD%93%E7%94%9F%E6%B4%BB.png",山西文体生活 +https://live.lalifeier.eu.org/sxrtv/sxwtsh.m3u8?t=1746894586&key=c6a5f1f5f996b2aabb55a5cdf52e4d2a +#EXTINF:-1 group-title="☘️山西频道" tvg-name="山西文体生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E6%96%87%E4%BD%93%E7%94%9F%E6%B4%BB.png",山西文体生活 +https://live.lalifeier.eu.org/sxrtv/sxwtsh.m3u8?t=1746912103&key=5c65e72df2b709f053313a6b2cbc9527 +#EXTINF:-1 group-title="☘️山西频道" tvg-name="山西文体生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E6%96%87%E4%BD%93%E7%94%9F%E6%B4%BB.png",山西文体生活 +https://live.lalifeier.eu.org/sxrtv/sxwtsh.m3u8?t=1746955518&key=a6c711577151ae68c81ba837b68d3c85 +#EXTINF:-1 group-title="☘️山西频道" tvg-name="山西文体生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E6%96%87%E4%BD%93%E7%94%9F%E6%B4%BB.png",山西文体生活 +https://live.lalifeier.eu.org/sxrtv/sxwtsh.m3u8?t=1746998549&key=493ed7e4e9490eec3f2395bf390e8ff5 +#EXTINF:-1 group-title="☘️山西频道" tvg-name="山西社会与法治" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E7%A4%BE%E4%BC%9A%E4%B8%8E%E6%B3%95%E6%B2%BB.png",山西社会与法治 +https://live.lalifeier.eu.org/sxrtv/sxshfz.m3u8?t=1745796321&key=71bbd0d7dc1eb84139ebea659e164651 +#EXTINF:-1 group-title="☘️山西频道" tvg-name="山西社会与法治" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E7%A4%BE%E4%BC%9A%E4%B8%8E%E6%B3%95%E6%B2%BB.png",山西社会与法治 +https://live.lalifeier.eu.org/sxrtv/sxshfz.m3u8?t=1746307365&key=9694e5e21a889c83c54bbf66c0e524a0 +#EXTINF:-1 group-title="☘️山西频道" tvg-name="山西社会与法治" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E7%A4%BE%E4%BC%9A%E4%B8%8E%E6%B3%95%E6%B2%BB.png",山西社会与法治 +https://live.lalifeier.eu.org/sxrtv/sxshfz.m3u8?t=1746393735&key=cf4f8ab07efd070291584465074e9386 +#EXTINF:-1 group-title="☘️山西频道" tvg-name="山西社会与法治" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E7%A4%BE%E4%BC%9A%E4%B8%8E%E6%B3%95%E6%B2%BB.png",山西社会与法治 +https://live.lalifeier.eu.org/sxrtv/sxshfz.m3u8?t=1746739480&key=130acdaaceca0cb4c1908e9c62f198f6 +#EXTINF:-1 group-title="☘️山西频道" tvg-name="山西社会与法治" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E7%A4%BE%E4%BC%9A%E4%B8%8E%E6%B3%95%E6%B2%BB.png",山西社会与法治 +https://live.lalifeier.eu.org/sxrtv/sxshfz.m3u8?t=1746782860&key=ebef35c2611b5fa53739dd5a43ff56a2 +#EXTINF:-1 group-title="☘️山西频道" tvg-name="山西社会与法治" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E7%A4%BE%E4%BC%9A%E4%B8%8E%E6%B3%95%E6%B2%BB.png",山西社会与法治 +https://live.lalifeier.eu.org/sxrtv/sxshfz.m3u8?t=1746825793&key=ef2ea843ce172cf34ec4babdac487a02 +#EXTINF:-1 group-title="☘️山西频道" tvg-name="山西社会与法治" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E7%A4%BE%E4%BC%9A%E4%B8%8E%E6%B3%95%E6%B2%BB.png",山西社会与法治 +https://live.lalifeier.eu.org/sxrtv/sxshfz.m3u8?t=1746894586&key=5b2f72e7f8d290e267468ea0edf545f5 +#EXTINF:-1 group-title="☘️山西频道" tvg-name="山西社会与法治" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E7%A4%BE%E4%BC%9A%E4%B8%8E%E6%B3%95%E6%B2%BB.png",山西社会与法治 +https://live.lalifeier.eu.org/sxrtv/sxshfz.m3u8?t=1746912103&key=d065d576a4cdaceb01c54b906f00b1aa +#EXTINF:-1 group-title="☘️山西频道" tvg-name="山西社会与法治" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E7%A4%BE%E4%BC%9A%E4%B8%8E%E6%B3%95%E6%B2%BB.png",山西社会与法治 +https://live.lalifeier.eu.org/sxrtv/sxshfz.m3u8?t=1746955518&key=68f1cf509d7e9ac18257b8961fa1d137 +#EXTINF:-1 group-title="☘️山西频道" tvg-name="山西社会与法治" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E7%A4%BE%E4%BC%9A%E4%B8%8E%E6%B3%95%E6%B2%BB.png",山西社会与法治 +https://live.lalifeier.eu.org/sxrtv/sxshfz.m3u8?t=1746998549&key=eeacb192b8da97be8afc5170199c63b3 +#EXTINF:-1 group-title="☘️山西频道" tvg-name="山西经济" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E7%BB%8F%E6%B5%8E.png",山西经济 +https://live.lalifeier.eu.org/sxrtv/sxjj.m3u8?t=1745796321&key=f20ee9d210e6bb63a4a7d65e67bdec2b +#EXTINF:-1 group-title="☘️山西频道" tvg-name="山西经济" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E7%BB%8F%E6%B5%8E.png",山西经济 +https://live.lalifeier.eu.org/sxrtv/sxjj.m3u8?t=1746307365&key=9efd994033ee8bd840c01f930811f94a +#EXTINF:-1 group-title="☘️山西频道" tvg-name="山西经济" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E7%BB%8F%E6%B5%8E.png",山西经济 +https://live.lalifeier.eu.org/sxrtv/sxjj.m3u8?t=1746739480&key=b9cddd868005403a67c2222c55e276ec +#EXTINF:-1 group-title="☘️山西频道" tvg-name="山西经济" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E7%BB%8F%E6%B5%8E.png",山西经济 +https://live.lalifeier.eu.org/sxrtv/sxjj.m3u8?t=1746782860&key=299077551840c4371caa9029cbf5c09b +#EXTINF:-1 group-title="☘️山西频道" tvg-name="山西经济" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E7%BB%8F%E6%B5%8E.png",山西经济 +https://live.lalifeier.eu.org/sxrtv/sxjj.m3u8?t=1746825793&key=75d19f84d6471c5d0be786cc9cbf3a69 +#EXTINF:-1 group-title="☘️山西频道" tvg-name="山西经济" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E7%BB%8F%E6%B5%8E.png",山西经济 +https://live.lalifeier.eu.org/sxrtv/sxjj.m3u8?t=1746894586&key=ddac6d4d99eb13dbaa5f3abd96089612 +#EXTINF:-1 group-title="☘️山西频道" tvg-name="山西经济" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E7%BB%8F%E6%B5%8E.png",山西经济 +https://live.lalifeier.eu.org/sxrtv/sxjj.m3u8?t=1746912103&key=017e66ad91ac046adbab917d141af774 +#EXTINF:-1 group-title="☘️山西频道" tvg-name="山西经济" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E7%BB%8F%E6%B5%8E.png",山西经济 +https://live.lalifeier.eu.org/sxrtv/sxjj.m3u8?t=1746955518&key=7402757d1e9dfdea97791b731d81c50f +#EXTINF:-1 group-title="☘️山西频道" tvg-name="山西经济" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E7%BB%8F%E6%B5%8E.png",山西经济 +https://live.lalifeier.eu.org/sxrtv/sxjj.m3u8?t=1746998549&key=b8bdf3ad88f1851832a4f068e3494cd5 +#EXTINF:-1 group-title="☘️山西频道" tvg-name="山西经济" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E7%BB%8F%E6%B5%8E.png",山西经济 +https://live.lalifeier.eu.org/sxrtv/sxjj.m3u8?t=1747085050&key=2ad6b4b00575498ce63ec10cbe48374f +#EXTINF:-1 group-title="☘️山西频道" tvg-name="平遥新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%B3%E9%81%A5%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",平遥新闻综合 +https://tntgjhjb.live.sxmty.com/live/hls/3a4585ac11ec4e1bb07b419101b370c3/baf63e2b313440c2a25d7859f9b73b05-1.m3u8?zshanxd +#EXTINF:-1 group-title="☘️山西频道" tvg-name="怀仁综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%80%80%E4%BB%81%E7%BB%BC%E5%90%88.png",怀仁综合 +https://1yp7hc5p.live.sxmty.com/live/hls/bff8529922344209985b6e49baa9555a/efa2543628fc4a7ea93d3d6c975f77dc-1.m3u8 +#EXTINF:-1 group-title="☘️山西频道" tvg-name="怀仁综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%80%80%E4%BB%81%E7%BB%BC%E5%90%88.png",怀仁综合 +http://1yp7hc5p.live.sxmty.com/live/hls/bff8529922344209985b6e49baa9555a/efa2543628fc4a7ea93d3d6c975f77dc.m3u8?zshanxd +#EXTINF:-1 group-title="☘️山西频道" tvg-name="武乡新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%AD%A6%E4%B9%A1%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",武乡新闻综合 +http://uzoiczhh.live.sxmty.com/live/hls/0d41f1480c4042d49927858f01fde707/53130407737b417b9a6259b57246bae3.m3u8?zshanxd +#EXTINF:-1 group-title="☘️山西频道" tvg-name="武乡新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%AD%A6%E4%B9%A1%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",武乡新闻综合 +https://stream1.freetv.fun/wu-xiang-xin-wen-zong-he-1.m3u8 +#EXTINF:-1 group-title="☘️山西频道" tvg-name="武乡新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%AD%A6%E4%B9%A1%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",武乡新闻综合 +https://stream1.freetv.fun/wu-xiang-xin-wen-zong-he-2.m3u8 +#EXTINF:-1 group-title="☘️山西频道" tvg-name="武乡新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%AD%A6%E4%B9%A1%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",武乡新闻综合 +https://stream1.freetv.fun/wu-xiang-xin-wen-zong-he-4.m3u8 +#EXTINF:-1 group-title="☘️山西频道" tvg-name="武乡新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%AD%A6%E4%B9%A1%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",武乡新闻综合 +https://stream1.freetv.fun/wu-xiang-xin-wen-zong-he-5.m3u8 +#EXTINF:-1 group-title="☘️山西频道" tvg-name="汾西综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%BE%E8%A5%BF%E7%BB%BC%E5%90%88.png",汾西综合 +https://qmmqvzoz.live.sxmty.com/live/hls/f24f8a390c084386a564074c9260100c/be3fdf07606145739ab2c4b80fe0136a.m3u8?zshanxd +#EXTINF:-1 group-title="☘️山西频道" tvg-name="祁县新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%A5%81%E5%8E%BF%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",祁县新闻综合 +http://ggpagerl.live.sxmty.com/live/hls/b350dc1ac5da45c2b2233f6eb122ddf4/49d3766c7f204685a2a8f027b234c33d.m3u8?zshanxd +#EXTINF:-1 group-title="☘️山西频道" tvg-name="运城科技教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%BF%90%E5%9F%8E%E7%A7%91%E6%8A%80%E6%95%99%E8%82%B2.png",运城科技教育 +https://stream1.freetv.fun/yun-cheng-ke-ji-jiao-yu-1.m3u8 +#EXTINF:-1 group-title="☘️山西频道" tvg-name="运城科技教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%BF%90%E5%9F%8E%E7%A7%91%E6%8A%80%E6%95%99%E8%82%B2.png",运城科技教育 +https://stream1.freetv.fun/yun-cheng-ke-ji-jiao-yu-2.m3u8 +#EXTINF:-1 group-title="☘️山西频道" tvg-name="长子综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%95%BF%E5%AD%90%E7%BB%BC%E5%90%88.png",长子综合 +https://83awgyp5.live.sxmty.com/live/hls/6f6f4b36f9bd42628b718b595ba507ed/724b7e8907a8414d873eb2a2f69bfa18.m3u8?zshanxd +#EXTINF:-1 group-title="☘️山西频道" tvg-name="阳曲综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%98%B3%E6%9B%B2%E7%BB%BC%E5%90%88.png",阳曲综合 +https://83awgyp5.live.sxmty.com/live/hls/6f6f4b36f9bd42628b718b595ba507ed/724b7e8907a8414d873eb2a2f69bfa18.m3u8?zshanxd +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="安徽国际" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%9B%BD%E9%99%85.png",安徽国际 +https://live.lalifeier.eu.org/ahtv/ahgj.m3u8?t=1746739480&key=a8bd0a3629825fcf4f5968abb0808239 +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="安徽国际" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%9B%BD%E9%99%85.png",安徽国际 +https://live.lalifeier.eu.org/ahtv/ahgj.m3u8?t=1746782860&key=518c9df6090a21278c4b976880a247fe +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="安徽国际" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%9B%BD%E9%99%85.png",安徽国际 +https://live.lalifeier.eu.org/ahtv/ahgj.m3u8?t=1746825793&key=5b1e13b046f517a4ab04f24b4073e258 +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="安徽国际" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%9B%BD%E9%99%85.png",安徽国际 +https://live.lalifeier.eu.org/ahtv/ahgj.m3u8?t=1746894586&key=4ef5d193911199b414e30195e5da4121 +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="安徽国际" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%9B%BD%E9%99%85.png",安徽国际 +https://live.lalifeier.eu.org/ahtv/ahgj.m3u8?t=1746912103&key=2241fb9cdf9ddcaa8bc8ff4aa8fcfdc2 +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="安徽国际" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%9B%BD%E9%99%85.png",安徽国际 +https://live.lalifeier.eu.org/ahtv/ahgj.m3u8?t=1746955518&key=a021e39e7339f6c32c7a786114bb52f8 +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="安徽国际" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%9B%BD%E9%99%85.png",安徽国际 +https://live.lalifeier.eu.org/ahtv/ahgj.m3u8?t=1746998549&key=387f347b5b9aa53781d58834350a991a +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="安徽国际" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%9B%BD%E9%99%85.png",安徽国际 +https://live.lalifeier.eu.org/ahtv/ahgj.m3u8?t=1747085050&key=56296ccf36d519e2f1a3c9348cd31630 +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="安徽国际" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%9B%BD%E9%99%85.png",安徽国际 +https://live.lalifeier.eu.org/ahtv/ahgj.m3u8?t=1747128617&key=b1892d85e0c2c48e75623f760c0ab6a0 +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="安徽国际" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%9B%BD%E9%99%85.png",安徽国际 +https://live.lalifeier.eu.org/ahtv/ahgj.m3u8?t=1747171448&key=ddb960c0f81c29194c7db244b8db91a2 +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="安徽影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%BD%B1%E8%A7%86.png",安徽影视 +https://live.lalifeier.eu.org/ahtv/ahys.m3u8?t=1746739480&key=f93acc4b6fcda2b8c77343bc915ed39e +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="安徽影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%BD%B1%E8%A7%86.png",安徽影视 +https://live.lalifeier.eu.org/ahtv/ahys.m3u8?t=1746782860&key=a71a2d77ca1bea4f110035ccf7d28e16 +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="安徽影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%BD%B1%E8%A7%86.png",安徽影视 +https://live.lalifeier.eu.org/ahtv/ahys.m3u8?t=1746825793&key=4e12022989ce7d4fbe07d37f6f01ffbc +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="安徽影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%BD%B1%E8%A7%86.png",安徽影视 +https://live.lalifeier.eu.org/ahtv/ahys.m3u8?t=1746894586&key=a180911b43d2e4ff4029cf1a8d718922 +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="安徽影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%BD%B1%E8%A7%86.png",安徽影视 +https://live.lalifeier.eu.org/ahtv/ahys.m3u8?t=1746912103&key=d67b3e2f0a3f7e96095d7bea1f6554ed +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="安徽影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%BD%B1%E8%A7%86.png",安徽影视 +https://live.lalifeier.eu.org/ahtv/ahys.m3u8?t=1746955518&key=e01b3d9e6e21cf83cdc5401205caf273 +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="安徽影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%BD%B1%E8%A7%86.png",安徽影视 +https://live.lalifeier.eu.org/ahtv/ahys.m3u8?t=1746998549&key=e75f1668feed4cfcb724ad03d2781a28 +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="安徽影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%BD%B1%E8%A7%86.png",安徽影视 +https://live.lalifeier.eu.org/ahtv/ahys.m3u8?t=1747085050&key=1073807cd29002a75933c55623db0809 +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="安徽影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%BD%B1%E8%A7%86.png",安徽影视 +https://live.lalifeier.eu.org/ahtv/ahys.m3u8?t=1747128617&key=f31f92dd5848444ac373c35c1ff7123c +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="安徽影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%BD%B1%E8%A7%86.png",安徽影视 +https://live.lalifeier.eu.org/ahtv/ahys.m3u8?t=1747171448&key=0bde84c76e29f7582e944565fcdf8439 +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="安徽经济生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E7%BB%8F%E6%B5%8E%E7%94%9F%E6%B4%BB.png",安徽经济生活 +https://live.lalifeier.eu.org/ahtv/ahjjsh.m3u8?t=1745774515&key=a93a5e1794618b8f0038e5d4206cb748 +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="安徽经济生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E7%BB%8F%E6%B5%8E%E7%94%9F%E6%B4%BB.png",安徽经济生活 +https://live.lalifeier.eu.org/ahtv/ahjjsh.m3u8?t=1746292937&key=79ac954604c0abc146445a9603966f0a +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="安徽经济生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E7%BB%8F%E6%B5%8E%E7%94%9F%E6%B4%BB.png",安徽经济生活 +https://live.lalifeier.eu.org/ahtv/ahjjsh.m3u8?t=1746307365&key=eacbd8c7b284760ddec25b1dc3992bad +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="安徽经济生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E7%BB%8F%E6%B5%8E%E7%94%9F%E6%B4%BB.png",安徽经济生活 +https://stream1.freetv.fun/an-hui-jing-ji-sheng-huo-4.ctv +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="安徽经济生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E7%BB%8F%E6%B5%8E%E7%94%9F%E6%B4%BB.png",安徽经济生活 +https://stream1.freetv.fun/an-hui-jing-ji-sheng-huo-5.m3u8 +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="安徽经济生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E7%BB%8F%E6%B5%8E%E7%94%9F%E6%B4%BB.png",安徽经济生活 +https://stream1.freetv.fun/an-hui-jing-ji-sheng-huo-6.m3u8 +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="安徽经济生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E7%BB%8F%E6%B5%8E%E7%94%9F%E6%B4%BB.png",安徽经济生活 +https://stream1.freetv.fun/an-hui-jing-ji-sheng-huo-9.m3u8 +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="安徽经济生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E7%BB%8F%E6%B5%8E%E7%94%9F%E6%B4%BB.png",安徽经济生活 +https://live.lalifeier.eu.org/ahtv/ahjjsh.m3u8?t=1746725062&key=1feff62b20e13453e2d3e2f78f5cb279 +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="安徽经济生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E7%BB%8F%E6%B5%8E%E7%94%9F%E6%B4%BB.png",安徽经济生活 +https://live.lalifeier.eu.org/ahtv/ahjjsh.m3u8?t=1746739480&key=a3dfd5296cbaa4fc4a0e457c4610edf6 +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="安徽经济生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E7%BB%8F%E6%B5%8E%E7%94%9F%E6%B4%BB.png",安徽经济生活 +https://live.lalifeier.eu.org/ahtv/ahjjsh.m3u8?t=1746775525&key=46485d13b58cc203aefa31f141d35395 +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="安徽综艺体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E7%BB%BC%E8%89%BA%E4%BD%93%E8%82%B2.png",安徽综艺体育 +https://live.lalifeier.eu.org/ahtv/ahzyty.m3u8?t=1745774515&key=27009aec794adc785b22478c5aa2ae16 +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="安徽综艺体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E7%BB%BC%E8%89%BA%E4%BD%93%E8%82%B2.png",安徽综艺体育 +https://live.lalifeier.eu.org/ahtv/ahzyty.m3u8?t=1746292937&key=940b0f98a121c28884c74971efaac4de +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="安徽综艺体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E7%BB%BC%E8%89%BA%E4%BD%93%E8%82%B2.png",安徽综艺体育 +https://live.lalifeier.eu.org/ahtv/ahzyty.m3u8?t=1746307365&key=6b104d1fc66c5b34b63d0e19c627e0f9 +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="安徽综艺体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E7%BB%BC%E8%89%BA%E4%BD%93%E8%82%B2.png",安徽综艺体育 +https://stream1.freetv.fun/an-hui-zong-yi-ti-yu-4.ctv +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="安徽综艺体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E7%BB%BC%E8%89%BA%E4%BD%93%E8%82%B2.png",安徽综艺体育 +https://stream1.freetv.fun/an-hui-zong-yi-ti-yu-5.m3u8 +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="安徽综艺体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E7%BB%BC%E8%89%BA%E4%BD%93%E8%82%B2.png",安徽综艺体育 +https://stream1.freetv.fun/an-hui-zong-yi-ti-yu-6.m3u8 +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="安徽综艺体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E7%BB%BC%E8%89%BA%E4%BD%93%E8%82%B2.png",安徽综艺体育 +https://stream1.freetv.fun/an-hui-zong-yi-ti-yu-8.m3u8 +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="安徽综艺体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E7%BB%BC%E8%89%BA%E4%BD%93%E8%82%B2.png",安徽综艺体育 +https://live.lalifeier.eu.org/ahtv/ahzyty.m3u8?t=1746725062&key=4fd742e193737a1cfe3c3dfa3973e299 +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="安徽综艺体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E7%BB%BC%E8%89%BA%E4%BD%93%E8%82%B2.png",安徽综艺体育 +https://live.lalifeier.eu.org/ahtv/ahzyty.m3u8?t=1746739480&key=d9527b9d7ce3a70d8e81d3f27965213f +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="安徽综艺体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E7%BB%BC%E8%89%BA%E4%BD%93%E8%82%B2.png",安徽综艺体育 +https://live.lalifeier.eu.org/ahtv/ahzyty.m3u8?t=1746775525&key=fab8cb8fa94cd29ea294c635fb944f88 +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="黄山新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%84%E5%B1%B1%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",黄山新闻综合 +http://hslive.hsnewsnet.com/lsdream/hve9Wjs/1000/live.m3u8 +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="黄山公共生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%84%E5%B1%B1%E5%85%AC%E5%85%B1%E7%94%9F%E6%B4%BB.png",黄山公共生活 +http://hslive.hsnewsnet.com/lsdream/iY92ady/1000/live.m3u8?zanhd +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="铜陵新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%93%9C%E9%99%B5%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",铜陵新闻综合 +https://ls.qingting.fm/live/21303/64k.m3u8 +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="祁门综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%A5%81%E9%97%A8%E7%BB%BC%E5%90%88.png",祁门综合 +http://live.cztv.cc:85/live/sjpd.m3u8 +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="滁州科教" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%BB%81%E5%B7%9E%E7%A7%91%E6%95%99.png",滁州科教 +http://live.cztv.cc:85/live/sjpd.m3u8 +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="滁州科教" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%BB%81%E5%B7%9E%E7%A7%91%E6%95%99.png",滁州科教 +http://live.cztv.cc:85/live/sjpd.m3u8?zanhd +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="滁州新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%BB%81%E5%B7%9E%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",滁州新闻综合 +http://live.cztv.cc:85/live/xwpd.m3u8 +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="滁州新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%BB%81%E5%B7%9E%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",滁州新闻综合 +http://live.cztv.cc:85/live/xwpd.m3u8?zanhd +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="滁州新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%BB%81%E5%B7%9E%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",滁州新闻综合 +http://live.cztv.cc:85/live/xwpd.m3u8#http://live.cztv.cc:85/live/xwpd.m3u8?zanhd +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="滁州市广播电视台 新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%BB%81%E5%B7%9E%E5%B8%82%E5%B9%BF%E6%92%AD%E7%94%B5%E8%A7%86%E5%8F%B0+%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",滁州市广播电视台 新闻综合 +http://live.cztv.cc:85/live/xwpd.m3u8 +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="滁州公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%BB%81%E5%B7%9E%E5%85%AC%E5%85%B1.png",滁州公共 +http://live.cztv.cc:85/live/ggpd.m3u8 +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="滁州公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%BB%81%E5%B7%9E%E5%85%AC%E5%85%B1.png",滁州公共 +http://live.cztv.cc:85/live/ggpd.m3u8?zanhd +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="宿州科教" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%BF%E5%B7%9E%E7%A7%91%E6%95%99.png",宿州科教 +rtmp://live.ahsz.tv/video/s10001-kxjy +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="宿州新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%BF%E5%B7%9E%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",宿州新闻综合 +rtmp://live.ahsz.tv/video?token=5ee5b1c3db702657f412ed18d270cdb7/s10001-szzh +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="宿州新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%BF%E5%B7%9E%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",宿州新闻综合 +http://live.ahsz.tv/video/s10001-szzh/index.m3u8 +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="宿州新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%BF%E5%B7%9E%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",宿州新闻综合 +http://live.ahsz.tv/video/s10001-szzh/index.m3u8?zanhd +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="宿州公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%BF%E5%B7%9E%E5%85%AC%E5%85%B1.png",宿州公共 +http://live.ahsz.tv/video/s10001-ggpd/index.m3u8 +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="六安新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%85%AD%E5%AE%89%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",六安新闻综合 +http://ls.qingting.fm/live/267.m3u8 +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="六安公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%85%AD%E5%AE%89%E5%85%AC%E5%85%B1.png",六安公共 +http://ls.qingting.fm/live/1794199.m3u8 +#EXTINF:-1 group-title="☘️安徽频道" tvg-name="亳州农村" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%B3%E5%B7%9E%E5%86%9C%E6%9D%91.png",亳州农村 +http://zbbf2.ahbztv.com/live/418.m3u8?zanhd +#EXTINF:-1 group-title="☘️宁夏频道" tvg-name="宁夏经济" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%81%E5%A4%8F%E7%BB%8F%E6%B5%8E.png",宁夏经济 +https://ls.qingting.fm/live/1841/64k.m3u8 +#EXTINF:-1 group-title="☘️宁夏频道" tvg-name="银川生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%93%B6%E5%B7%9D%E7%94%9F%E6%B4%BB.png",银川生活 +http://play-a2.quklive.com/live/1667883987087179.m3u8 +#EXTINF:-1 group-title="☘️宁夏频道" tvg-name="银川公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%93%B6%E5%B7%9D%E5%85%AC%E5%85%B1.png",银川公共 +http://play-a2.quklive.com/live/1667883943560053.m3u8 +#EXTINF:-1 group-title="☘️宁夏频道" tvg-name="银川文体" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%93%B6%E5%B7%9D%E6%96%87%E4%BD%93.png",银川文体 +http://play-a2.quklive.com/live/1667884025738071.m3u8 +#EXTINF:-1 group-title="☘️吉林频道" tvg-name="延边卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BB%B6%E8%BE%B9%E5%8D%AB%E8%A7%86.png",延边卫视 +http://l.cztvcloud.com/channels/lantian/SXxinchang2/720p.m3u8 +#EXTINF:-1 group-title="☘️吉林频道" tvg-name="延边卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BB%B6%E8%BE%B9%E5%8D%AB%E8%A7%86.png",延边卫视 +http://[2409:8087:1e03:21::2]:6060/cms001/ch00000090990000001470/index.m3u8 +#EXTINF:-1 group-title="☘️吉林频道" tvg-name="延边卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BB%B6%E8%BE%B9%E5%8D%AB%E8%A7%86.png",延边卫视 +https://stream1.freetv.fun/d2ea3a364fa453b29060ebccb5a06a1941755859c0182ab0f071473c08738fc2.m3u8 +#EXTINF:-1 group-title="☘️吉林频道" tvg-name="延边卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BB%B6%E8%BE%B9%E5%8D%AB%E8%A7%86.png",延边卫视 +https://stream1.freetv.fun/yan-bian-wei-shi-16.m3u8 +#EXTINF:-1 group-title="☘️吉林频道" tvg-name="延边卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BB%B6%E8%BE%B9%E5%8D%AB%E8%A7%86.png",延边卫视 +https://stream1.freetv.fun/yan-bian-wei-shi-15.m3u8 +#EXTINF:-1 group-title="☘️吉林频道" tvg-name="延边卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BB%B6%E8%BE%B9%E5%8D%AB%E8%A7%86.png",延边卫视 +http://[2409:8087:1a0b:df::4020]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226516/index.m3u8 +#EXTINF:-1 group-title="☘️吉林频道" tvg-name="延边卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BB%B6%E8%BE%B9%E5%8D%AB%E8%A7%86.png",延边卫视 +http://[2409:8087:1a0b:df::4020]:80/ottrrs.hl.chinamobile.com/TVOD/88888888/224/3221226516/index.m3u8 +#EXTINF:-1 group-title="☘️吉林频道" tvg-name="延边卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BB%B6%E8%BE%B9%E5%8D%AB%E8%A7%86.png",延边卫视 +http://otttv.bj.chinamobile.com/PLTV/88888888/224/3221227045/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7Eq0D3NdTUN7FuRzr8eJsbQA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 group-title="☘️吉林频道" tvg-name="延边卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BB%B6%E8%BE%B9%E5%8D%AB%E8%A7%86.png",延边卫视 +http://tvbox6.com/tv/bfgd.php?id=117 +#EXTINF:-1 group-title="☘️吉林频道" tvg-name="延边卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BB%B6%E8%BE%B9%E5%8D%AB%E8%A7%86.png",延边卫视 +http://ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226516/index.m3u8 +#EXTINF:-1 group-title="☘️吉林频道" tvg-name="吉林都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E9%83%BD%E5%B8%82.png",吉林都市 +https://live.lalifeier.eu.org/jlntv/jlds.m3u8?t=1745796321&key=ba85da6410cdc8b830d46c3182ad7775 +#EXTINF:-1 group-title="☘️吉林频道" tvg-name="吉林都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E9%83%BD%E5%B8%82.png",吉林都市 +https://live.lalifeier.eu.org/jlntv/jlds.m3u8?t=1746307365&key=85abbfb19768c29f883db499d3c1114f +#EXTINF:-1 group-title="☘️吉林频道" tvg-name="吉林都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E9%83%BD%E5%B8%82.png",吉林都市 +https://live.lalifeier.eu.org/jlntv/jlds.m3u8?t=1746739480&key=6c2f26f5202f61d90bc0d9b23b01c137 +#EXTINF:-1 group-title="☘️吉林频道" tvg-name="吉林都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E9%83%BD%E5%B8%82.png",吉林都市 +https://live.lalifeier.eu.org/jlntv/jlds.m3u8?t=1746782860&key=68f36448bb1bd917e81d003fdbadd326 +#EXTINF:-1 group-title="☘️吉林频道" tvg-name="吉林都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E9%83%BD%E5%B8%82.png",吉林都市 +https://live.lalifeier.eu.org/jlntv/jlds.m3u8?t=1746825793&key=579bae88e1e81efd086c785ebc559e2e +#EXTINF:-1 group-title="☘️吉林频道" tvg-name="吉林都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E9%83%BD%E5%B8%82.png",吉林都市 +https://live.lalifeier.eu.org/jlntv/jlds.m3u8?t=1746894586&key=11fd4a191abce8eeb0c6aef33de8142b +#EXTINF:-1 group-title="☘️吉林频道" tvg-name="吉林都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E9%83%BD%E5%B8%82.png",吉林都市 +https://live.lalifeier.eu.org/jlntv/jlds.m3u8?t=1746912103&key=b364f0a7c24ece821aac79d7f267d4c7 +#EXTINF:-1 group-title="☘️吉林频道" tvg-name="吉林都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E9%83%BD%E5%B8%82.png",吉林都市 +https://live.lalifeier.eu.org/jlntv/jlds.m3u8?t=1746955518&key=22090c7101a00bc9835acf289ce67983 +#EXTINF:-1 group-title="☘️吉林频道" tvg-name="吉林都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E9%83%BD%E5%B8%82.png",吉林都市 +https://live.lalifeier.eu.org/jlntv/jlds.m3u8?t=1746998549&key=4ba2db565491549914a1a8d3a216027c +#EXTINF:-1 group-title="☘️吉林频道" tvg-name="吉林都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E9%83%BD%E5%B8%82.png",吉林都市 +https://live.lalifeier.eu.org/jlntv/jlds.m3u8?t=1747085050&key=86d50257584917b9b85e6620e5993f01 +#EXTINF:-1 group-title="☘️吉林频道" tvg-name="吉林生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E7%94%9F%E6%B4%BB.png",吉林生活 +https://live.lalifeier.eu.org/jlntv/jlsh.m3u8?t=1745796321&key=8386cb03e732cd707a483bb89f1216af +#EXTINF:-1 group-title="☘️吉林频道" tvg-name="吉林生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E7%94%9F%E6%B4%BB.png",吉林生活 +https://live.lalifeier.eu.org/jlntv/jlsh.m3u8?t=1746307365&key=3501231d172e510eec2f039a508df51d +#EXTINF:-1 group-title="☘️吉林频道" tvg-name="吉林生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E7%94%9F%E6%B4%BB.png",吉林生活 +https://live.lalifeier.eu.org/jlntv/jlsh.m3u8?t=1746739480&key=6041b0053a9baed6657e727b4ea8f0ce +#EXTINF:-1 group-title="☘️吉林频道" tvg-name="吉林生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E7%94%9F%E6%B4%BB.png",吉林生活 +https://live.lalifeier.eu.org/jlntv/jlsh.m3u8?t=1746782860&key=20d9af367e2dfe2afe8b07a3a654aac4 +#EXTINF:-1 group-title="☘️吉林频道" tvg-name="吉林生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E7%94%9F%E6%B4%BB.png",吉林生活 +https://live.lalifeier.eu.org/jlntv/jlsh.m3u8?t=1746825793&key=baa7272850339fdb4248475b7dceed19 +#EXTINF:-1 group-title="☘️吉林频道" tvg-name="吉林生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E7%94%9F%E6%B4%BB.png",吉林生活 +https://live.lalifeier.eu.org/jlntv/jlsh.m3u8?t=1746894586&key=5a74eabf30c3b491e51338cee71492b7 +#EXTINF:-1 group-title="☘️吉林频道" tvg-name="吉林生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E7%94%9F%E6%B4%BB.png",吉林生活 +https://live.lalifeier.eu.org/jlntv/jlsh.m3u8?t=1746912103&key=4b81312c374b1ccc0004f09a6f6832ce +#EXTINF:-1 group-title="☘️吉林频道" tvg-name="吉林生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E7%94%9F%E6%B4%BB.png",吉林生活 +https://live.lalifeier.eu.org/jlntv/jlsh.m3u8?t=1746955518&key=2c2822bdc85be81c1b8c3e99c663c322 +#EXTINF:-1 group-title="☘️吉林频道" tvg-name="吉林生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E7%94%9F%E6%B4%BB.png",吉林生活 +https://live.lalifeier.eu.org/jlntv/jlsh.m3u8?t=1746998549&key=676c1325b233dccba376c6e765951699 +#EXTINF:-1 group-title="☘️吉林频道" tvg-name="吉林生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E7%94%9F%E6%B4%BB.png",吉林生活 +https://live.lalifeier.eu.org/jlntv/jlsh.m3u8?t=1747085050&key=555e5d035fe227c21444eb312ea0ca51 +#EXTINF:-1 group-title="☘️吉林频道" tvg-name="吉林乡村" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E4%B9%A1%E6%9D%91.png",吉林乡村 +https://live.lalifeier.eu.org/jlntv/jlxc.m3u8?t=1745796321&key=b26baf2d67026a93e41fcbbd3f132bc3 +#EXTINF:-1 group-title="☘️吉林频道" tvg-name="吉林乡村" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E4%B9%A1%E6%9D%91.png",吉林乡村 +https://live.lalifeier.eu.org/jlntv/jlxc.m3u8?t=1746307365&key=c561c31cdce71c6e8e33914bfc43027f +#EXTINF:-1 group-title="☘️吉林频道" tvg-name="吉林乡村" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E4%B9%A1%E6%9D%91.png",吉林乡村 +https://live.lalifeier.eu.org/jlntv/jlxc.m3u8?t=1746393735&key=9d6ca0a9c59b1876be2ef4320b7283d8 +#EXTINF:-1 group-title="☘️吉林频道" tvg-name="吉林乡村" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E4%B9%A1%E6%9D%91.png",吉林乡村 +https://live.lalifeier.eu.org/jlntv/jlxc.m3u8?t=1746739480&key=dde7142825cdd8737e3e2bebfff0e616 +#EXTINF:-1 group-title="☘️吉林频道" tvg-name="吉林乡村" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E4%B9%A1%E6%9D%91.png",吉林乡村 +https://live.lalifeier.eu.org/jlntv/jlxc.m3u8?t=1746782860&key=90ce4160416c837f611b772a32abfa17 +#EXTINF:-1 group-title="☘️吉林频道" tvg-name="吉林乡村" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E4%B9%A1%E6%9D%91.png",吉林乡村 +https://live.lalifeier.eu.org/jlntv/jlxc.m3u8?t=1746825793&key=42d3e386e1d1adba85935e9fcb4d4555 +#EXTINF:-1 group-title="☘️吉林频道" tvg-name="吉林乡村" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E4%B9%A1%E6%9D%91.png",吉林乡村 +https://live.lalifeier.eu.org/jlntv/jlxc.m3u8?t=1746894586&key=936b430f303a32e1e3e30555d0a07a3c +#EXTINF:-1 group-title="☘️吉林频道" tvg-name="吉林乡村" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E4%B9%A1%E6%9D%91.png",吉林乡村 +https://live.lalifeier.eu.org/jlntv/jlxc.m3u8?t=1746912103&key=194bf6275950f70026e790f77a66635f +#EXTINF:-1 group-title="☘️吉林频道" tvg-name="吉林乡村" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E4%B9%A1%E6%9D%91.png",吉林乡村 +https://live.lalifeier.eu.org/jlntv/jlxc.m3u8?t=1746955518&key=97cf498922784627e655d0f4c4ae80da +#EXTINF:-1 group-title="☘️吉林频道" tvg-name="吉林乡村" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E4%B9%A1%E6%9D%91.png",吉林乡村 +https://live.lalifeier.eu.org/jlntv/jlxc.m3u8?t=1746998549&key=c95f2d6525e5462cf50af0169297ab5f +#EXTINF:-1 group-title="☘️吉林频道" tvg-name="长白朝语" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%95%BF%E7%99%BD%E6%9C%9D%E8%AF%AD.png",长白朝语 +http://hplayer1.juyun.tv:80/camera/11344136.m3u8 +#EXTINF:-1 group-title="☘️吉林频道" tvg-name="珲春新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%8F%B2%E6%98%A5%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",珲春新闻综合 +https://stream1.freetv.fun/hun-chun-xin-wen-zong-he-3.m3u8 +#EXTINF:-1 group-title="☘️内蒙古频道" tvg-name="内蒙经济" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%86%85%E8%92%99%E7%BB%8F%E6%B5%8E.png",内蒙经济 +https://satellitepull.cnr.cn/live/wx32nmgjjgb/playlist.m3u8 +#EXTINF:-1 group-title="☘️内蒙古频道" tvg-name="内蒙经济" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%86%85%E8%92%99%E7%BB%8F%E6%B5%8E.png",内蒙经济 +https://ls.qingting.fm/live/1885/64k.m3u8 +#EXTINF:-1 group-title="☘️内蒙古频道" tvg-name="内蒙古经济生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%86%85%E8%92%99%E5%8F%A4%E7%BB%8F%E6%B5%8E%E7%94%9F%E6%B4%BB.png",内蒙古经济生活 +https://ls.qingting.fm/live/1885/64k.m3u8 +#EXTINF:-1 group-title="☘️云南频道" tvg-name="文山州公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%87%E5%B1%B1%E5%B7%9E%E5%85%AC%E5%85%B1.png",文山州公共 +http://m3u8.channel.wsrtv.com.cn/cms/videos/nmip-media/channellive/channel8/playlist.m3u8 +#EXTINF:-1 group-title="☘️云南频道" tvg-name="文山州公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%87%E5%B1%B1%E5%B7%9E%E5%85%AC%E5%85%B1.png",文山州公共 +http://m3u8.channel.wsrtv.com.cn/cms/videos/nmip-media/channellive/channel8/playlist.m3u8?zyund +#EXTINF:-1 group-title="☘️云南频道" tvg-name="文山州新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%87%E5%B1%B1%E5%B7%9E%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",文山州新闻综合 +http://m3u8.channel.wsrtv.com.cn/cms/videos/nmip-media/channellive/channel7/playlist.m3u8?zyund +#EXTINF:-1 group-title="☘️云南频道" tvg-name="昆明公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%98%86%E6%98%8E%E5%85%AC%E5%85%B1.png",昆明公共 +http://wshls.live.migucloud.com/live/UD0YLY2G_C0_3/playlist.m3u8 +#EXTINF:-1 group-title="☘️云南频道" tvg-name="昆明科学教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%98%86%E6%98%8E%E7%A7%91%E5%AD%A6%E6%95%99%E8%82%B2.png",昆明科学教育 +http://wshls.live.migucloud.com/live/ZBXWIMTD_C0_2/playlist.m3u8 +#EXTINF:-1 group-title="☘️云南频道" tvg-name="云南都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E5%8D%97%E9%83%BD%E5%B8%82.png",云南都市 +https://live.lalifeier.eu.org/yntv/ynds.m3u8?t=1746739480&key=453c0884a7b501a80d7ccb044637999a +#EXTINF:-1 group-title="☘️云南频道" tvg-name="云南都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E5%8D%97%E9%83%BD%E5%B8%82.png",云南都市 +https://live.lalifeier.eu.org/yntv/ynds.m3u8?t=1746782860&key=6724d02d49e0f76cd5bd6d37981fe7ef +#EXTINF:-1 group-title="☘️云南频道" tvg-name="云南都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E5%8D%97%E9%83%BD%E5%B8%82.png",云南都市 +https://live.lalifeier.eu.org/yntv/ynds.m3u8?t=1746825793&key=4e01176586d57257d23e9e6596713524 +#EXTINF:-1 group-title="☘️云南频道" tvg-name="云南都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E5%8D%97%E9%83%BD%E5%B8%82.png",云南都市 +https://live.lalifeier.eu.org/yntv/ynds.m3u8?t=1746894586&key=79a16c43bcca8f095cff6159011e9a3c +#EXTINF:-1 group-title="☘️云南频道" tvg-name="云南都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E5%8D%97%E9%83%BD%E5%B8%82.png",云南都市 +https://live.lalifeier.eu.org/yntv/ynds.m3u8?t=1746912103&key=d6dbca3b4cc026a2e9f1cffea3792565 +#EXTINF:-1 group-title="☘️云南频道" tvg-name="云南都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E5%8D%97%E9%83%BD%E5%B8%82.png",云南都市 +https://live.lalifeier.eu.org/yntv/ynds.m3u8?t=1746955518&key=e8c20d3634b8dbc93ec5ea419fa76901 +#EXTINF:-1 group-title="☘️云南频道" tvg-name="云南都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E5%8D%97%E9%83%BD%E5%B8%82.png",云南都市 +https://live.lalifeier.eu.org/yntv/ynds.m3u8?t=1746998549&key=5631c2e374f54d9735579094bbe8296b +#EXTINF:-1 group-title="☘️云南频道" tvg-name="云南都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E5%8D%97%E9%83%BD%E5%B8%82.png",云南都市 +https://live.lalifeier.eu.org/yntv/ynds.m3u8?t=1747085050&key=b5d06790a277b5d1fc202752d411012b +#EXTINF:-1 group-title="☘️云南频道" tvg-name="云南都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E5%8D%97%E9%83%BD%E5%B8%82.png",云南都市 +https://live.lalifeier.eu.org/yntv/ynds.m3u8?t=1747128617&key=29bb5b2a04ddc8e754b88e6ed824b7c8 +#EXTINF:-1 group-title="☘️云南频道" tvg-name="云南都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E5%8D%97%E9%83%BD%E5%B8%82.png",云南都市 +https://live.lalifeier.eu.org/yntv/ynds.m3u8?t=1747171448&key=ce20ab3a18f219814a07c95d2e96e3f8 +#EXTINF:-1 group-title="☘️云南频道" tvg-name="云南娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E5%8D%97%E5%A8%B1%E4%B9%90.png",云南娱乐 +https://live.lalifeier.eu.org/yntv/ynyl.m3u8?t=1746739480&key=05deb98788413ff6dd5b513d8bd20a05 +#EXTINF:-1 group-title="☘️云南频道" tvg-name="云南娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E5%8D%97%E5%A8%B1%E4%B9%90.png",云南娱乐 +https://live.lalifeier.eu.org/yntv/ynyl.m3u8?t=1746782860&key=f2d3ae2c22d99c526c12e6b8663b2c74 +#EXTINF:-1 group-title="☘️云南频道" tvg-name="云南娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E5%8D%97%E5%A8%B1%E4%B9%90.png",云南娱乐 +https://live.lalifeier.eu.org/yntv/ynyl.m3u8?t=1746825793&key=fd0e345f87728132870d38344dd76d4e +#EXTINF:-1 group-title="☘️云南频道" tvg-name="云南娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E5%8D%97%E5%A8%B1%E4%B9%90.png",云南娱乐 +https://live.lalifeier.eu.org/yntv/ynyl.m3u8?t=1746894586&key=74e743110e6681acdf99d6fb101510a2 +#EXTINF:-1 group-title="☘️云南频道" tvg-name="云南娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E5%8D%97%E5%A8%B1%E4%B9%90.png",云南娱乐 +https://live.lalifeier.eu.org/yntv/ynyl.m3u8?t=1746912103&key=50a4b15a9f469555da47e102b91d5e79 +#EXTINF:-1 group-title="☘️云南频道" tvg-name="云南娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E5%8D%97%E5%A8%B1%E4%B9%90.png",云南娱乐 +https://live.lalifeier.eu.org/yntv/ynyl.m3u8?t=1746955518&key=31ab5cd732a777243459aa511d41ee1d +#EXTINF:-1 group-title="☘️云南频道" tvg-name="云南娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E5%8D%97%E5%A8%B1%E4%B9%90.png",云南娱乐 +https://live.lalifeier.eu.org/yntv/ynyl.m3u8?t=1746998549&key=bfe87bcedd7443b1a3337f0de882548e +#EXTINF:-1 group-title="☘️云南频道" tvg-name="云南娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E5%8D%97%E5%A8%B1%E4%B9%90.png",云南娱乐 +https://live.lalifeier.eu.org/yntv/ynyl.m3u8?t=1747085050&key=8ea6bbc94cdbd5bc8f17e661752cc518 +#EXTINF:-1 group-title="☘️云南频道" tvg-name="云南娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E5%8D%97%E5%A8%B1%E4%B9%90.png",云南娱乐 +https://live.lalifeier.eu.org/yntv/ynyl.m3u8?t=1747128617&key=1991c63d886e787a123d6d7be6bd1bc2 +#EXTINF:-1 group-title="☘️云南频道" tvg-name="云南娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E5%8D%97%E5%A8%B1%E4%B9%90.png",云南娱乐 +https://live.lalifeier.eu.org/yntv/ynyl.m3u8?t=1747171448&key=6cc0c308736314205c8df6cd3319f288 +#EXTINF:-1 group-title="☘️云南频道" tvg-name="云南少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E5%8D%97%E5%B0%91%E5%84%BF.png",云南少儿 +https://live.lalifeier.eu.org/yntv/ynse.m3u8?t=1746739480&key=bc165c1854372a20a8018ad4929d1cdb +#EXTINF:-1 group-title="☘️云南频道" tvg-name="云南少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E5%8D%97%E5%B0%91%E5%84%BF.png",云南少儿 +https://live.lalifeier.eu.org/yntv/ynse.m3u8?t=1746782860&key=07a964f850f80508947fb617e9264f6c +#EXTINF:-1 group-title="☘️云南频道" tvg-name="云南少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E5%8D%97%E5%B0%91%E5%84%BF.png",云南少儿 +https://live.lalifeier.eu.org/yntv/ynse.m3u8?t=1746825793&key=90b1f7e8bc9047191d87b22ea1bfe31e +#EXTINF:-1 group-title="☘️云南频道" tvg-name="云南少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E5%8D%97%E5%B0%91%E5%84%BF.png",云南少儿 +https://live.lalifeier.eu.org/yntv/ynse.m3u8?t=1746894586&key=b95e880fe526bec5bc10658e1bf9b5bb +#EXTINF:-1 group-title="☘️云南频道" tvg-name="云南少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E5%8D%97%E5%B0%91%E5%84%BF.png",云南少儿 +https://live.lalifeier.eu.org/yntv/ynse.m3u8?t=1746912103&key=3dfc82a0cd777e2c61ad87e8eeffed10 +#EXTINF:-1 group-title="☘️云南频道" tvg-name="云南少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E5%8D%97%E5%B0%91%E5%84%BF.png",云南少儿 +https://live.lalifeier.eu.org/yntv/ynse.m3u8?t=1746955518&key=1913c6f419105d02f2335a33d4719dde +#EXTINF:-1 group-title="☘️云南频道" tvg-name="云南少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E5%8D%97%E5%B0%91%E5%84%BF.png",云南少儿 +https://live.lalifeier.eu.org/yntv/ynse.m3u8?t=1746998549&key=a4abd32d1df7daa64c9c2bd1a57f5f65 +#EXTINF:-1 group-title="☘️云南频道" tvg-name="云南少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E5%8D%97%E5%B0%91%E5%84%BF.png",云南少儿 +https://live.lalifeier.eu.org/yntv/ynse.m3u8?t=1747085050&key=e37b0d97e68104cb26be1d2c7b1b9f4d +#EXTINF:-1 group-title="☘️云南频道" tvg-name="云南少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E5%8D%97%E5%B0%91%E5%84%BF.png",云南少儿 +https://live.lalifeier.eu.org/yntv/ynse.m3u8?t=1747128617&key=dabe27b8c637ef7ce4bebf3070118eb9 +#EXTINF:-1 group-title="☘️云南频道" tvg-name="云南少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E5%8D%97%E5%B0%91%E5%84%BF.png",云南少儿 +https://live.lalifeier.eu.org/yntv/ynse.m3u8?t=1747171448&key=fc89e947c392985f6820045a974ebc0b +#EXTINF:-1 group-title="☘️青海频道" tvg-name="安多卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%A4%9A%E5%8D%AB%E8%A7%86.png",安多卫视 +http://php.jdshipin.com/TVOD/hljyd.php?id=3221225659 +#EXTINF:-1 group-title="☘️青海频道" tvg-name="安多卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%A4%9A%E5%8D%AB%E8%A7%86.png",安多卫视 +https://liveout.xntv.tv/a65jur/96iln2.m3u8 +#EXTINF:-1 group-title="☘️青海频道" tvg-name="安多卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%A4%9A%E5%8D%AB%E8%A7%86.png",安多卫视 +https://liveout.xntv.tv/a65jur/90p2i1.m3u8?zqinghd +#EXTINF:-1 group-title="☘️青海频道" tvg-name="安多卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%A4%9A%E5%8D%AB%E8%A7%86.png",安多卫视 +rtmp://liveout.xntv.tv/a65jur/96iln2 +#EXTINF:-1 group-title="☘️青海频道" tvg-name="安多卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%A4%9A%E5%8D%AB%E8%A7%86.png",安多卫视 +https://stream1.freetv.fun/52d0df257c5c3cec42f2ae19268dbbc261256ff391b27bd83553bea941d0c186.m3u8 +#EXTINF:-1 group-title="☘️青海频道" tvg-name="安多卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%A4%9A%E5%8D%AB%E8%A7%86.png",安多卫视 +http://[2409:8087:1a0b:df::4007]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225659/index.m3u8 +#EXTINF:-1 group-title="☘️青海频道" tvg-name="安多卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%A4%9A%E5%8D%AB%E8%A7%86.png",安多卫视 +http://[2409:8087:1a0b:df::4007]:80/ottrrs.hl.chinamobile.com/TVOD/88888888/224/3221225659/index.m3u8 +#EXTINF:-1 group-title="☘️青海频道" tvg-name="安多卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%A4%9A%E5%8D%AB%E8%A7%86.png",安多卫视 +http://ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225659/index.m3u8 +#EXTINF:-1 group-title="☘️青海频道" tvg-name="安多卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%A4%9A%E5%8D%AB%E8%A7%86.png",安多卫视 +https://liveout.xntv.tv/a65jur/96iln2.m3u8#@http://cm-wshls.homecdn.com/live/5a296.dlv#@http://dtrmlive.qhdtrm.cn/xnds/sd/live.m3u8#@http://cm-wshls.homecdn.com/live/5a296.m3u8#rtmp://liveout.xntv.tv/a65jur/96iln2 +#EXTINF:-1 group-title="☘️青海频道" tvg-name="安多卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%A4%9A%E5%8D%AB%E8%A7%86.png",安多卫视 +http://tv.scjyhd.com:4022/udp/239.11.0.124:5140 +#EXTINF:-1 group-title="☘️青海频道" tvg-name="西宁新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%A5%BF%E5%AE%81%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",西宁新闻综合 +https://liveout.xntv.tv/a65jur/96iln2.m3u8 +#EXTINF:-1 group-title="☘️青海频道" tvg-name="西宁新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%A5%BF%E5%AE%81%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",西宁新闻综合 +https://liveout.xntv.tv/a65jur/96iln2.m3u8?zqinghd +#EXTINF:-1 group-title="☘️青海频道" tvg-name="西宁新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%A5%BF%E5%AE%81%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",西宁新闻综合 +https://stream1.freetv.fun/xi-zhu-xin-wen-zong-he-1.m3u8 +#EXTINF:-1 group-title="☘️青海频道" tvg-name="西宁新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%A5%BF%E5%AE%81%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",西宁新闻综合 +https://stream1.freetv.fun/xi-zhu-xin-wen-zong-he-2.m3u8 +#EXTINF:-1 group-title="☘️青海频道" tvg-name="西宁新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%A5%BF%E5%AE%81%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",西宁新闻综合 +https://stream1.freetv.fun/xi-zhu-xin-wen-zong-he-3.m3u8 +#EXTINF:-1 group-title="☘️青海频道" tvg-name="西宁新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%A5%BF%E5%AE%81%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",西宁新闻综合 +https://stream1.freetv.fun/zhu-xia--xi-zhu-xin-wen-zong-he-1.m3u8 +#EXTINF:-1 group-title="☘️青海频道" tvg-name="西宁新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%A5%BF%E5%AE%81%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",西宁新闻综合 +rtmp://liveout.xntv.tv/a65jur/96iln2 +#EXTINF:-1 group-title="☘️青海频道" tvg-name="西宁新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%A5%BF%E5%AE%81%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",西宁新闻综合 +https://liveout.xntv.tv/a65jur/90p2i1.m3u8?zqinghd#https://liveout.xntv.tv/a65jur/90p2i1.m3u8#http://dtrmlive.qhdtrm.cn/xnds/sd/live.m3u8 +#EXTINF:-1 group-title="☘️青海频道" tvg-name="西宁新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%A5%BF%E5%AE%81%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",西宁新闻综合 +https://liveout.xntv.tv/a65jur/90p2i1.m3u8?zqinghd +#EXTINF:-1 group-title="☘️青海频道" tvg-name="西宁生活服务" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%A5%BF%E5%AE%81%E7%94%9F%E6%B4%BB%E6%9C%8D%E5%8A%A1.png",西宁生活服务 +https://liveout.xntv.tv/a65jur/90p2i1.m3u8 +#EXTINF:-1 group-title="☘️青海频道" tvg-name="西宁生活服务" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%A5%BF%E5%AE%81%E7%94%9F%E6%B4%BB%E6%9C%8D%E5%8A%A1.png",西宁生活服务 +https://liveout.xntv.tv/a65jur/90p2i1.m3u8?zqinghd +#EXTINF:-1 group-title="☘️青海频道" tvg-name="西宁生活服务" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%A5%BF%E5%AE%81%E7%94%9F%E6%B4%BB%E6%9C%8D%E5%8A%A1.png",西宁生活服务 +https://stream1.freetv.fun/xi-zhu-sheng-huo-fu-wu-1.m3u8 +#EXTINF:-1 group-title="☘️青海频道" tvg-name="西宁生活服务" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%A5%BF%E5%AE%81%E7%94%9F%E6%B4%BB%E6%9C%8D%E5%8A%A1.png",西宁生活服务 +https://stream1.freetv.fun/xi-zhu-sheng-huo-fu-wu-2.m3u8 +#EXTINF:-1 group-title="☘️青海频道" tvg-name="西宁生活服务" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%A5%BF%E5%AE%81%E7%94%9F%E6%B4%BB%E6%9C%8D%E5%8A%A1.png",西宁生活服务 +https://stream1.freetv.fun/xi-zhu-sheng-huo-fu-wu-3.m3u8 +#EXTINF:-1 group-title="☘️青海频道" tvg-name="青海综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%92%E6%B5%B7%E7%BB%BC%E5%90%88.png",青海综合 +http://lmt.scqstv.com/live1/live1.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="黑龙江文体" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E6%96%87%E4%BD%93.png",黑龙江文体 +http://php.jdshipin.com/TVOD/hljyd.php?id=3221226239 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="黑龙江文体" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E6%96%87%E4%BD%93.png",黑龙江文体 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226239/index.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="黑龙江文体" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E6%96%87%E4%BD%93.png",黑龙江文体 +http://[2409:8087:1a01:df::4025]:80/TVOD/88888888/224/3221225965/main.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="黑龙江文体" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E6%96%87%E4%BD%93.png",黑龙江文体 +http://[2409:8087:1a01:df::4025]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226239/1.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="黑龙江文体" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E6%96%87%E4%BD%93.png",黑龙江文体 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221226239/index.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="黑龙江文体" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E6%96%87%E4%BD%93.png",黑龙江文体 +http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226239/index.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="黑龙江文体" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E6%96%87%E4%BD%93.png",黑龙江文体 +http://ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226239/index.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="黑龙江文体" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E6%96%87%E4%BD%93.png",黑龙江文体 +https://stream1.freetv.fun/hei-long-jiang-wen-ti-1.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="黑龙江文体" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E6%96%87%E4%BD%93.png",黑龙江文体 +https://stream1.freetv.fun/hei-long-jiang-wen-ti-18.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="黑龙江文体" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E6%96%87%E4%BD%93.png",黑龙江文体 +https://stream1.freetv.fun/hei-long-jiang-wen-ti-7.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="黑龙江新闻法治" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E6%96%B0%E9%97%BB%E6%B3%95%E6%B2%BB.png",黑龙江新闻法治 +http://satellitepull.cnr.cn/live/wx32hljxwgb/playlist.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="黑龙江新闻法治" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E6%96%B0%E9%97%BB%E6%B3%95%E6%B2%BB.png",黑龙江新闻法治 +https://satellitepull.cnr.cn/live/wx32hljxwgb/playlist.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="黑龙江新闻法治" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E6%96%B0%E9%97%BB%E6%B3%95%E6%B2%BB.png",黑龙江新闻法治 +http://php.jdshipin.com/TVOD/hljyd.php?id=3221226330 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="黑龙江新闻法治" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E6%96%B0%E9%97%BB%E6%B3%95%E6%B2%BB.png",黑龙江新闻法治 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226330/index.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="黑龙江新闻法治" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E6%96%B0%E9%97%BB%E6%B3%95%E6%B2%BB.png",黑龙江新闻法治 +http://[2409:8087:1a01:df::4077]/PLTV/88888888/224/3221225967/index.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="黑龙江新闻法治" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E6%96%B0%E9%97%BB%E6%B3%95%E6%B2%BB.png",黑龙江新闻法治 +https://ls.qingting.fm/live/4974/64k.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="黑龙江新闻法治" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E6%96%B0%E9%97%BB%E6%B3%95%E6%B2%BB.png",黑龙江新闻法治 +https://stream1.freetv.fun/hei-long-jiang-xin-wen-fa-zhi-4.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="黑龙江新闻法治" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E6%96%B0%E9%97%BB%E6%B3%95%E6%B2%BB.png",黑龙江新闻法治 +https://stream1.freetv.fun/hei-long-jiang-xin-wen-fa-zhi-5.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="黑龙江新闻法治" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E6%96%B0%E9%97%BB%E6%B3%95%E6%B2%BB.png",黑龙江新闻法治 +https://stream1.freetv.fun/hei-long-jiang-xin-wen-fa-zhi-6.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="黑龙江新闻法治" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E6%96%B0%E9%97%BB%E6%B3%95%E6%B2%BB.png",黑龙江新闻法治 +https://stream1.freetv.fun/hei-long-jiang-xin-wen-fa-zhi-7.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="黑龙江影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%BD%B1%E8%A7%86.png",黑龙江影视 +http://php.jdshipin.com/TVOD/hljyd.php?id=3221226298 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="黑龙江影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%BD%B1%E8%A7%86.png",黑龙江影视 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226298/index.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="黑龙江影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%BD%B1%E8%A7%86.png",黑龙江影视 +http://[2409:8087:1a01:df::4035]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226298/1.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="黑龙江影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%BD%B1%E8%A7%86.png",黑龙江影视 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221226298/index.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="黑龙江影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%BD%B1%E8%A7%86.png",黑龙江影视 +http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226298/index.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="黑龙江影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%BD%B1%E8%A7%86.png",黑龙江影视 +http://ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226298/index.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="黑龙江影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%BD%B1%E8%A7%86.png",黑龙江影视 +https://stream1.freetv.fun/hei-long-jiang-ying-shi-1.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="黑龙江影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%BD%B1%E8%A7%86.png",黑龙江影视 +https://stream1.freetv.fun/hei-long-jiang-ying-shi-17.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="黑龙江影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%BD%B1%E8%A7%86.png",黑龙江影视 +https://stream1.freetv.fun/hei-long-jiang-ying-shi-7.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="黑龙江影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%BD%B1%E8%A7%86.png",黑龙江影视 +https://stream1.freetv.fun/hei-long-jiang-ying-shi-8.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="黑龙江都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E9%83%BD%E5%B8%82.png",黑龙江都市 +http://php.jdshipin.com/TVOD/hljyd.php?id=3221226301 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="黑龙江都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E9%83%BD%E5%B8%82.png",黑龙江都市 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226301/index.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="黑龙江都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E9%83%BD%E5%B8%82.png",黑龙江都市 +http://[2409:8087:1a01:df::4025]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226301/1.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="黑龙江都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E9%83%BD%E5%B8%82.png",黑龙江都市 +http://[2409:8087:1a01:df::4055]:80/TVOD/88888888/224/3221225969/main.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="黑龙江都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E9%83%BD%E5%B8%82.png",黑龙江都市 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221226301/index.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="黑龙江都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E9%83%BD%E5%B8%82.png",黑龙江都市 +http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226301/1.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="黑龙江都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E9%83%BD%E5%B8%82.png",黑龙江都市 +http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226301/index.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="黑龙江都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E9%83%BD%E5%B8%82.png",黑龙江都市 +https://stream1.freetv.fun/hei-long-jiang-du-shi-1.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="黑龙江都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E9%83%BD%E5%B8%82.png",黑龙江都市 +https://stream1.freetv.fun/hei-long-jiang-du-shi-12.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="黑龙江都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E9%83%BD%E5%B8%82.png",黑龙江都市 +https://stream1.freetv.fun/hei-long-jiang-du-shi-7.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="黑龙江少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%B0%91%E5%84%BF.png",黑龙江少儿 +http://php.jdshipin.com/TVOD/hljyd.php?id=3221226304 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="黑龙江少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%B0%91%E5%84%BF.png",黑龙江少儿 +https://ls.qingting.fm/live/4972/64k.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="黑龙江少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%B0%91%E5%84%BF.png",黑龙江少儿 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226304/index.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="黑龙江少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%B0%91%E5%84%BF.png",黑龙江少儿 +http://[2409:8087:1a01:df::4035]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226304/1.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="黑龙江少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%B0%91%E5%84%BF.png",黑龙江少儿 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221226304/index.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="黑龙江少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%B0%91%E5%84%BF.png",黑龙江少儿 +http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226304/index.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="黑龙江少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%B0%91%E5%84%BF.png",黑龙江少儿 +http://ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226304/index.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="黑龙江少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%B0%91%E5%84%BF.png",黑龙江少儿 +https://stream1.freetv.fun/hei-long-jiang-shao-er-2.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="黑龙江少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%B0%91%E5%84%BF.png",黑龙江少儿 +https://stream1.freetv.fun/hei-long-jiang-shao-er-8.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="黑龙江少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%B0%91%E5%84%BF.png",黑龙江少儿 +https://stream1.freetv.fun/ipv6-hei-long-jiang-shao-er-1.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="黑龙江新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E6%96%B0%E9%97%BB.png",黑龙江新闻 +https://ls.qingting.fm/live/4974/64k.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="黑龙江科教" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E7%A7%91%E6%95%99.png",黑龙江科教 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221226242/index.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="哈尔滨新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%93%88%E5%B0%94%E6%BB%A8%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",哈尔滨新闻综合 +http://php.jdshipin.com/TVOD/hljyd.php?id=3221226434 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="哈尔滨新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%93%88%E5%B0%94%E6%BB%A8%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",哈尔滨新闻综合 +https://stream1.freetv.fun/ha-er-bin-xin-wen-zong-he-1.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="哈尔滨新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%93%88%E5%B0%94%E6%BB%A8%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",哈尔滨新闻综合 +https://stream1.freetv.fun/ha-er-bin-xin-wen-zong-he-4.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="大庆新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A7%E5%BA%86%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",大庆新闻综合 +https://stream1.freetv.fun/da-qing-xin-wen-zong-he-1.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="鹤岗新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%B9%A4%E5%B2%97%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",鹤岗新闻综合 +http://php.jdshipin.com/TVOD/hljyd.php?id=3221226534 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="鹤岗新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%B9%A4%E5%B2%97%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",鹤岗新闻综合 +http://[2409:8087:1a01:df::4059]:80/TVOD/88888888/224/3221226073/main.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="鹤岗新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%B9%A4%E5%B2%97%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",鹤岗新闻综合 +http://[2409:8087:1a01:df::4060]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226534/index.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="佳木斯新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BD%B3%E6%9C%A8%E6%96%AF%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",佳木斯新闻综合 +http://php.jdshipin.com/TVOD/hljyd.php?id=3221226451 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="佳木斯新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BD%B3%E6%9C%A8%E6%96%AF%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",佳木斯新闻综合 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226451/index.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="齐齐哈尔新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BD%90%E9%BD%90%E5%93%88%E5%B0%94%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",齐齐哈尔新闻综合 +http://php.jdshipin.com/TVOD/hljyd.php?id=3221226437 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="齐齐哈尔新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BD%90%E9%BD%90%E5%93%88%E5%B0%94%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",齐齐哈尔新闻综合 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226437/index.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="齐齐哈尔经济法制" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BD%90%E9%BD%90%E5%93%88%E5%B0%94%E7%BB%8F%E6%B5%8E%E6%B3%95%E5%88%B6.png",齐齐哈尔经济法制 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226555/index.m3u8 +#EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="双鸭山综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8F%8C%E9%B8%AD%E5%B1%B1%E7%BB%BC%E5%90%88.png",双鸭山综合 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226529/index.m3u8 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="CHC家庭影院" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC%E5%AE%B6%E5%BA%AD%E5%BD%B1%E9%99%A2.png",CHC家庭影院 +http://117.12.149.38:4022/rtp/225.1.1.213:5002 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="CHC家庭影院" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC%E5%AE%B6%E5%BA%AD%E5%BD%B1%E9%99%A2.png",CHC家庭影院 +http://111.162.205.201:8686/rtp/225.1.1.213:5002 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="CHC家庭影院" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC%E5%AE%B6%E5%BA%AD%E5%BD%B1%E9%99%A2.png",CHC家庭影院 +http://60.26.181.220:4022/rtp/225.1.1.213:5002 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="CHC家庭影院" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC%E5%AE%B6%E5%BA%AD%E5%BD%B1%E9%99%A2.png",CHC家庭影院 +http://gat.bkpcp.top/ymg.php?id=jtyy +#EXTINF:-1 group-title="🎬电影频道" tvg-name="CHC家庭影院" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC%E5%AE%B6%E5%BA%AD%E5%BD%B1%E9%99%A2.png",CHC家庭影院 +http://goo.bkpcp.top/mg/jtyy +#EXTINF:-1 group-title="🎬电影频道" tvg-name="CHC家庭影院" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC%E5%AE%B6%E5%BA%AD%E5%BD%B1%E9%99%A2.png",CHC家庭影院 +http://z.b.bkpcp.top/m.php?id=jtyy +#EXTINF:-1 group-title="🎬电影频道" tvg-name="CHC家庭影院" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC%E5%AE%B6%E5%BA%AD%E5%BD%B1%E9%99%A2.png",CHC家庭影院 +http://[2409:8087:4c0a:22:1::11]:6410/170000001115/UmaiCHAN63807601b19dd/index.m3u8?m3u8_level=2 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="CHC家庭影院" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC%E5%AE%B6%E5%BA%AD%E5%BD%B1%E9%99%A2.png",CHC家庭影院 +http://eastscreen.tv/ooooo.php +#EXTINF:-1 group-title="🎬电影频道" tvg-name="CHC家庭影院" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC%E5%AE%B6%E5%BA%AD%E5%BD%B1%E9%99%A2.png",CHC家庭影院 +https://www.freetv.top/migu/644368373.m3u8?migutoken=b9d9d0ba0208e949cf0736455b86290b2d1d2ff4727f523b7117dde6eb883cb4582c5ce1519685e57d54bfb562057c10a00dde58bb674d8600fd2d918b8cb440294e083e7b8f19e0dbcc9250d8 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="CHC家庭影院" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC%E5%AE%B6%E5%BA%AD%E5%BD%B1%E9%99%A2.png",CHC家庭影院 +https://stream1.freetv.fun/chcjia-ting-ying-yuan-1.ctv +#EXTINF:-1 group-title="🎬电影频道" tvg-name="CHC动作电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC%E5%8A%A8%E4%BD%9C%E7%94%B5%E5%BD%B1.png",CHC动作电影 +http://60.26.181.220:4022/rtp/225.1.1.215:5002 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="CHC动作电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC%E5%8A%A8%E4%BD%9C%E7%94%B5%E5%BD%B1.png",CHC动作电影 +http://z.b.bkpcp.top/m.php +#EXTINF:-1 group-title="🎬电影频道" tvg-name="CHC动作电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC%E5%8A%A8%E4%BD%9C%E7%94%B5%E5%BD%B1.png",CHC动作电影 +http://goo.bkpcp.top/mg/dzdy +#EXTINF:-1 group-title="🎬电影频道" tvg-name="CHC动作电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC%E5%8A%A8%E4%BD%9C%E7%94%B5%E5%BD%B1.png",CHC动作电影 +http://z.b.bkpcp.top/m.php?id=dzdy +#EXTINF:-1 group-title="🎬电影频道" tvg-name="CHC动作电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC%E5%8A%A8%E4%BD%9C%E7%94%B5%E5%BD%B1.png",CHC动作电影 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226329/1.m3u8 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="CHC动作电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC%E5%8A%A8%E4%BD%9C%E7%94%B5%E5%BD%B1.png",CHC动作电影 +http://[2409:8087:1a01:df::4021]:80/TVOD/88888888/224/3221225555/main.m3u8 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="CHC动作电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC%E5%8A%A8%E4%BD%9C%E7%94%B5%E5%BD%B1.png",CHC动作电影 +http://[2409:8087:4c0a:22:1::11]:6410/170000001115/UmaiCHAN6380763222d00/index.m3u8?m3u8_level=2 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="CHC动作电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC%E5%8A%A8%E4%BD%9C%E7%94%B5%E5%BD%B1.png",CHC动作电影 +http://[2409:8087:3c02:0021:0000:0001:0000:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00002030/index.m3u8?IASHttpSessionId= +#EXTINF:-1 group-title="🎬电影频道" tvg-name="CHC动作电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC%E5%8A%A8%E4%BD%9C%E7%94%B5%E5%BD%B1.png",CHC动作电影 +http://data.3g.yy.com/live/hls/1382735573/1382735573 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="CHC动作电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC%E5%8A%A8%E4%BD%9C%E7%94%B5%E5%BD%B1.png",CHC动作电影 +https://www.freetv.top/migu/644368714.m3u8?migutoken=2e48d18419793654f347e8ca29e0028ce9f3eaaa7a108b006304178b8f790f34908f8a09bbb8f4b8b8abcf36e2341f1043dde8719cf4927fcd0dcde4667f8b91e68e820314791d9b70452862c9 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="CHC高清电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC%E9%AB%98%E6%B8%85%E7%94%B5%E5%BD%B1.png",CHC高清电影 +http://[2409:8087:7001:20:2::3]:80/dbiptv.sn.chinamobile.com/PLTV/88888888/224/3221226463/index.m3u8 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="CHC高清电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC%E9%AB%98%E6%B8%85%E7%94%B5%E5%BD%B1.png",CHC高清电影 +http://[2409:8087:4c0d:22:2::157]:6610/170000001115/UmaiCHAN6380764b172c9/1.m3u8?m3u8_level=2 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="CHC高清电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC%E9%AB%98%E6%B8%85%E7%94%B5%E5%BD%B1.png",CHC高清电影 +http://[2409:8087:4c0a:22:1::11]:6410/170000001115/UmaiCHAN6380764b172c9/index.m3u8 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="CHC高清电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC%E9%AB%98%E6%B8%85%E7%94%B5%E5%BD%B1.png",CHC高清电影 +http://dbiptv.sn.chinamobile.com/PLTV/88888888/224/3221226463/1.m3u8 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="淘剧场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%98%E5%89%A7%E5%9C%BA.png",淘剧场 +http://[2409:8087:1:20:20::26]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226553/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EQaJ92NID2SpQlY6_VJVogg%7E_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNOuQYJeiYEeFWTkFfE86Vq-%2CEND +#EXTINF:-1 group-title="🎬电影频道" tvg-name="淘剧场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%98%E5%89%A7%E5%9C%BA.png",淘剧场 +http://dsj.motem.top:8880/bptv/10000100000000050000000003887497.m3u8 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="淘娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%98%E5%A8%B1%E4%B9%90.png",淘娱乐 +http://[2409:8087:1:20:20::2c]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226551/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7Ex0efg9fpenP8E8lWJUb5Lg%7E_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNNg3bzRax0E9tLmO9xgXVx8%2CEND +#EXTINF:-1 group-title="🎬电影频道" tvg-name="淘娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%98%E5%A8%B1%E4%B9%90.png",淘娱乐 +http://dsj.motem.top:8880/bptv/10000100000000050000000003887499.m3u8 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="淘电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%98%E7%94%B5%E5%BD%B1.png",淘电影 +http://[2409:8087:1:20:20::26]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226552/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EXOsrWMA-UCdUl1hQSR9EKw%7E_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNNg3bzRax0E9tLmO9xgXVx8%2CEND +#EXTINF:-1 group-title="🎬电影频道" tvg-name="淘电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%98%E7%94%B5%E5%BD%B1.png",淘电影 +http://dsj.motem.top:8880/bptv/10000100000000050000000003887498.m3u8 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="淘电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%98%E7%94%B5%E5%BD%B1.png",淘电影 +http://yc.myds.me:35455/bptv/10000100000000050000000003887498.m3u8 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="淘电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%98%E7%94%B5%E5%BD%B1.png",淘电影 +https://stream1.freetv.fun/tao-dian-ying-3.ctv +#EXTINF:-1 group-title="🎬电影频道" tvg-name="淘电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%98%E7%94%B5%E5%BD%B1.png",淘电影 +https://stream1.freetv.fun/tao-dian-ying-8.ctv +#EXTINF:-1 group-title="🎬电影频道" tvg-name="淘电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%98%E7%94%B5%E5%BD%B1.png",淘电影 +https://stream1.freetv.fun/tao-dian-ying-15.ctv +#EXTINF:-1 group-title="🎬电影频道" tvg-name="淘电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%98%E7%94%B5%E5%BD%B1.png",淘电影 +https://stream1.freetv.fun/tao-dian-ying-7.ctv +#EXTINF:-1 group-title="🎬电影频道" tvg-name="淘电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%98%E7%94%B5%E5%BD%B1.png",淘电影 +https://stream1.freetv.fun/tao-dian-ying-7.m3u8 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="淘电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%98%E7%94%B5%E5%BD%B1.png",淘电影 +https://stream1.freetv.fun/ipv6-tao-dian-ying-5.m3u8 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="淘电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%98%E7%94%B5%E5%BD%B1.png",淘电影 +https://stream1.freetv.fun/tao-dian-ying-6.ctv +#EXTINF:-1 group-title="🎬电影频道" tvg-name="NewTV惊悚悬疑" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/NewTV%E6%83%8A%E6%82%9A%E6%82%AC%E7%96%91.png",NewTV惊悚悬疑 +http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010077 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="NewTV惊悚悬疑" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/NewTV%E6%83%8A%E6%82%9A%E6%82%AC%E7%96%91.png",NewTV惊悚悬疑 +http://ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225665/index.m3u8 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="NewTV动作电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/NewTV%E5%8A%A8%E4%BD%9C%E7%94%B5%E5%BD%B1.png",NewTV动作电影 +http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010003 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="黑莓电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E8%8E%93%E7%94%B5%E5%BD%B1.png",黑莓电影 +http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010073 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="黑莓电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E8%8E%93%E7%94%B5%E5%BD%B1.png",黑莓电影 +https://epg.pw/stream/ffcb6572863f0745a7369fbd9d901f1dfd0ab8fab8bad8bebb4e01c90b303c47.m3u8 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="黑莓电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E8%8E%93%E7%94%B5%E5%BD%B1.png",黑莓电影 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226939/1.m3u8 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="黑莓电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E8%8E%93%E7%94%B5%E5%BD%B1.png",黑莓电影 +http://[2409:8087:1a01:df::4001]:80/TVOD/88888888/224/3221225681/main.m3u8 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="黑莓电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E8%8E%93%E7%94%B5%E5%BD%B1.png",黑莓电影 +http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225666/index.m3u8 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="黑莓电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E8%8E%93%E7%94%B5%E5%BD%B1.png",黑莓电影 +http://[2409:8087:2001:20:2800:0:df6e:eb08]/ott.mobaibox.com/PLTV/3/224/3221227520/index.m3u8 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="黑莓电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E8%8E%93%E7%94%B5%E5%BD%B1.png",黑莓电影 +http://[2409:8087:1:20:20::27]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226939/1.m3u8 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="黑莓电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E8%8E%93%E7%94%B5%E5%BD%B1.png",黑莓电影 +http://[2409:8087:1:20:20::27]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226939/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7E +#EXTINF:-1 group-title="🎬电影频道" tvg-name="黑莓电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E8%8E%93%E7%94%B5%E5%BD%B1.png",黑莓电影 +http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225764/2/index.m3u8 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="黑莓电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E8%8E%93%E7%94%B5%E5%BD%B1.png",黑莓电影 +http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225769/2/index.m3u8 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="靖天映画" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%96%E5%A4%A9%E6%98%A0%E7%94%BB.png",靖天映画 +https://cdn.iptv8k.top/dl/jrys.php?id=320&amp;amp;time=20240926215313&amp;amp;ip=111.229.253.40 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="靖天映画" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%96%E5%A4%A9%E6%98%A0%E7%94%BB.png",靖天映画 +https://cdn.iptv8k.top/dl/jrys.php?id=320&time=20240926215313&ip=111.229.253.40 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="靖天映画" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%96%E5%A4%A9%E6%98%A0%E7%94%BB.png",靖天映画 +https://cdn.iptv8k.top/dl/jrys.php?id=320&amp;amp;amp;time=20240926215313&amp;amp;amp;ip=111.229.253.40 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="靖天映画" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%96%E5%A4%A9%E6%98%A0%E7%94%BB.png",靖天映画 +https://tv.iill.top/litv/4gtv-4gtv055 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="靖天戏剧" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%96%E5%A4%A9%E6%88%8F%E5%89%A7.png",靖天戏剧 +https://cdn.iptv8k.top/dl/jrys.php?id=318&time=20240926215313&ip=111.229.253.40 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="靖天戏剧" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%96%E5%A4%A9%E6%88%8F%E5%89%A7.png",靖天戏剧 +https://cdn.iptv8k.top/dl/jrys.php?id=318&amp;amp;time=20240926215313&amp;amp;ip=111.229.253.40 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="靖天戏剧" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%96%E5%A4%A9%E6%88%8F%E5%89%A7.png",靖天戏剧 +https://cdn.iptv8k.top/dl/jrys.php?id=318&amp;time=20240926215313&amp;ip=111.229.253.40 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="靖天戏剧" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%96%E5%A4%A9%E6%88%8F%E5%89%A7.png",靖天戏剧 +http://serv00.bkpcp.top/litv3.php?id=4gtv-4gtv058 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="靖天戏剧" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%96%E5%A4%A9%E6%88%8F%E5%89%A7.png",靖天戏剧 +https://tv.iill.top/litv/4gtv-4gtv058 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="经典电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BB%8F%E5%85%B8%E7%94%B5%E5%BD%B1.png",经典电影 +https://cdn.iptv8k.top/dl/jrys.php?id=396&time=20240926215313&ip=111.229.253.40 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="经典电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BB%8F%E5%85%B8%E7%94%B5%E5%BD%B1.png",经典电影 +http://goo.bkpcp.top/mg/jdxgdy +#EXTINF:-1 group-title="🎬电影频道" tvg-name="经典电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BB%8F%E5%85%B8%E7%94%B5%E5%BD%B1.png",经典电影 +https://tv.iill.top/4gtv/201 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="经典电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BB%8F%E5%85%B8%E7%94%B5%E5%BD%B1.png",经典电影 +https://stream1.freetv.fun/jing-dian-dian-ying-2.ctv +#EXTINF:-1 group-title="🎬电影频道" tvg-name="经典电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BB%8F%E5%85%B8%E7%94%B5%E5%BD%B1.png",经典电影 +https://stream1.freetv.fun/jing-dian-dian-ying-7.m3u8 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="经典电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BB%8F%E5%85%B8%E7%94%B5%E5%BD%B1.png",经典电影 +https://stream1.freetv.fun/jing-dian-dian-ying-8.m3u8 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="经典电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BB%8F%E5%85%B8%E7%94%B5%E5%BD%B1.png",经典电影 +https://stream1.freetv.fun/jing-dian-dian-ying-9.ctv +#EXTINF:-1 group-title="🎬电影频道" tvg-name="经典电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BB%8F%E5%85%B8%E7%94%B5%E5%BD%B1.png",经典电影 +https://stream1.freetv.fun/jing-dian-dian-ying-3.m3u8 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="经典电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BB%8F%E5%85%B8%E7%94%B5%E5%BD%B1.png",经典电影 +https://stream1.freetv.fun/jing-dian-dian-ying-6.m3u8 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="经典电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BB%8F%E5%85%B8%E7%94%B5%E5%BD%B1.png",经典电影 +https://stream1.freetv.fun/jing-dian-dian-ying-8.ctv +#EXTINF:-1 group-title="🎬电影频道" tvg-name="天映经典" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%98%A0%E7%BB%8F%E5%85%B8.png",天映经典 +https://cdn.iptv8k.top/dl/jrys.php?id=71&time=20240926215313&ip=111.229.253.40 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="天映经典" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%98%A0%E7%BB%8F%E5%85%B8.png",天映经典 +https://cdn.iptv8k.top/dl/jrys.php?id=71&amp;time=20240926215313&amp;ip=111.229.253.40 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="天映经典" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%98%A0%E7%BB%8F%E5%85%B8.png",天映经典 +http://php.jdshipin.com/smt.php +#EXTINF:-1 group-title="🎬电影频道" tvg-name="天映经典" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%98%A0%E7%BB%8F%E5%85%B8.png",天映经典 +http://j.s.bkpcp.top/jj/tyjd +#EXTINF:-1 group-title="🎬电影频道" tvg-name="天映经典" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%98%A0%E7%BB%8F%E5%85%B8.png",天映经典 +http://j.s.bkpcp.top/js/tyjd5 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="天映经典" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%98%A0%E7%BB%8F%E5%85%B8.png",天映经典 +http://j.s.bkpcp.top/js/tyjd +#EXTINF:-1 group-title="🎬电影频道" tvg-name="天映经典" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%98%A0%E7%BB%8F%E5%85%B8.png",天映经典 +http://j.s.bkpcp.top/js/tyjd1 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="天映经典" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%98%A0%E7%BB%8F%E5%85%B8.png",天映经典 +http://tl.061833.xyz/tl/null-1 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="天映经典" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%98%A0%E7%BB%8F%E5%85%B8.png",天映经典 +http://j.s.bkpcp.top/js/tyjd2 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="天映经典" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%98%A0%E7%BB%8F%E5%85%B8.png",天映经典 +https://live.tvfix.org/live/tyjd/index.m3u8 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="无线星河" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%97%A0%E7%BA%BF%E6%98%9F%E6%B2%B3.png",无线星河 +http://php.jdshipin.com/smt.php?id=Xinhe +#EXTINF:-1 group-title="🎬电影频道" tvg-name="星空卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%98%9F%E7%A9%BA%E5%8D%AB%E8%A7%86.png",星空卫视 +https://cdn.iptv8k.top/dl/jrys.php?id=21&time=20240926215313&ip=111.229.253.40 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="星空卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%98%9F%E7%A9%BA%E5%8D%AB%E8%A7%86.png",星空卫视 +https://stream1.freetv.fun/xing-kong-wei-shi-4.ctv +#EXTINF:-1 group-title="🎬电影频道" tvg-name="星空卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%98%9F%E7%A9%BA%E5%8D%AB%E8%A7%86.png",星空卫视 +https://stream1.freetv.fun/xing-kong-wei-shi-14.m3u8 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="星空卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%98%9F%E7%A9%BA%E5%8D%AB%E8%A7%86.png",星空卫视 +https://stream1.freetv.fun/xing-kong-wei-shi-11.m3u8 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="星空卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%98%9F%E7%A9%BA%E5%8D%AB%E8%A7%86.png",星空卫视 +https://stream1.freetv.fun/xing-kong-wei-shi-10.m3u8 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="东森电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%A3%AE%E7%94%B5%E5%BD%B1.png",东森电影 +https://cdn.iptv8k.top/dl/jrys.php?id=231&time=20240926215313&ip=111.229.253.40 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="东森电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%A3%AE%E7%94%B5%E5%BD%B1.png",东森电影 +http://mytv.cdn.com.mp/live/dsdy/stream.m3u8 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="东森电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%A3%AE%E7%94%B5%E5%BD%B1.png",东森电影 +https://smart.pendy.dpdns.org/Smart.php?id=ettvmovie +#EXTINF:-1 group-title="🎬电影频道" tvg-name="东森电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%A3%AE%E7%94%B5%E5%BD%B1.png",东森电影 +https://stream1.freetv.fun/dong-sen-dian-ying-6.ctv +#EXTINF:-1 group-title="🎬电影频道" tvg-name="东森电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%A3%AE%E7%94%B5%E5%BD%B1.png",东森电影 +https://stream1.freetv.fun/7e7daf1aca2b5fc6ab5365c3d5201b91e3b538cd4a947fd5bdb0256900d3f638.m3u8 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="东森电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%A3%AE%E7%94%B5%E5%BD%B1.png",东森电影 +https://stream1.freetv.fun/dong-sen-dian-ying-7.m3u8 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="东森电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%A3%AE%E7%94%B5%E5%BD%B1.png",东森电影 +https://stream1.freetv.fun/dong-sen-dian-ying-8.ctv +#EXTINF:-1 group-title="🎬电影频道" tvg-name="东森电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%A3%AE%E7%94%B5%E5%BD%B1.png",东森电影 +https://stream1.freetv.fun/dong-sen-dian-ying-2.m3u8 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="东森电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%A3%AE%E7%94%B5%E5%BD%B1.png",东森电影 +https://stream1.freetv.fun/dong-sen-dian-ying-5.m3u8 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="东森电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%A3%AE%E7%94%B5%E5%BD%B1.png",东森电影 +https://stream1.freetv.fun/dong-sen-dian-ying-1.m3u8 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="龙祥电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BE%99%E7%A5%A5%E7%94%B5%E5%BD%B1.png",龙祥电影 +http://j.s.bkpcp.top/js/lxdy +#EXTINF:-1 group-title="🎬电影频道" tvg-name="龙祥电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BE%99%E7%A5%A5%E7%94%B5%E5%BD%B1.png",龙祥电影 +https://smart.pendy.dpdns.org/Smart.php +#EXTINF:-1 group-title="🎬电影频道" tvg-name="东森洋片" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%A3%AE%E6%B4%8B%E7%89%87.png",东森洋片 +https://cdn.iptv8k.top/dl/jrys.php?id=232&time=20240926215313&ip=111.229.253.40 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="东森超视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%A3%AE%E8%B6%85%E8%A7%86.png",东森超视 +https://cdn.iptv8k.top/dl/jrys.php?id=216&time=20240926215313&ip=111.229.253.40 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="东森超视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%A3%AE%E8%B6%85%E8%A7%86.png",东森超视 +https://cdn.iptv8k.top/dl/jrys.php?id=217&time=20240926215313&ip=111.229.253.40 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="东森超视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%A3%AE%E8%B6%85%E8%A7%86.png",东森超视 +http://38.64.72.148:80/hls/modn/list/2013/chunklist1.m3u8 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="东森超视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%A3%AE%E8%B6%85%E8%A7%86.png",东森超视 +https://smart.pendy.dpdns.org/Smart.php?id=ettvsuper +#EXTINF:-1 group-title="🎬电影频道" tvg-name="东森超视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%A3%AE%E8%B6%85%E8%A7%86.png",东森超视 +https://stream1.freetv.fun/dong-sen-chao-shi-7.ctv +#EXTINF:-1 group-title="🎬电影频道" tvg-name="东森超视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%A3%AE%E8%B6%85%E8%A7%86.png",东森超视 +https://stream1.freetv.fun/dong-sen-chao-shi-8.m3u8 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="东森超视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%A3%AE%E8%B6%85%E8%A7%86.png",东森超视 +https://stream1.freetv.fun/dong-sen-chao-shi-9.m3u8 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="东森超视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%A3%AE%E8%B6%85%E8%A7%86.png",东森超视 +https://stream1.freetv.fun/dong-sen-chao-shi-8.ctv +#EXTINF:-1 group-title="🎬电影频道" tvg-name="东森超视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%A3%AE%E8%B6%85%E8%A7%86.png",东森超视 +https://stream1.freetv.fun/dong-sen-chao-shi-2.ctv +#EXTINF:-1 group-title="🎬电影频道" tvg-name="东森超视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%A3%AE%E8%B6%85%E8%A7%86.png",东森超视 +https://stream1.freetv.fun/dong-sen-chao-shi-6.ctv +#EXTINF:-1 group-title="🏀体育频道" tvg-name="CCTV-5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5.png",CCTV-5 +http://php.jdshipin.com/TVOD/hljyd.php?id=3221226019 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="CCTV-5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5.png",CCTV-5 +http://iptv.huuc.edu.cn/hls/cctv5hd.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="CCTV-5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5.png",CCTV-5 +https://www.freetv.top/migu/641886683.m3u8?migutoken=3e5c01f93922de8d1c940fe15bb47349b27e8f7a2e624dde1a83dff3b2a80f58b7624151a3a4d00488edee34f202818557340903382fae02bb754084eb942bd50e59061df36fab62fb5b908903 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="CCTV-5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5.png",CCTV-5 +https://smart.pendy.dpdns.org/Smart.php?id=cctv5 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="CCTV-5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5.png",CCTV-5 +https://ldcctvwbcdks.v.kcdnvip.com/ldcctvwbcd/cdrmldcctv5plus_1/index.m3u8?b=200-2100 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="CCTV-5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5.png",CCTV-5 +https://ldcctvwbcdks.v.kcdnvip.com/ldcctvwbcd/cdrmldcctv5plus_1/index.m3u8?BR=td&region=shanghai +#EXTINF:-1 group-title="🏀体育频道" tvg-name="CCTV-5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5.png",CCTV-5 +http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/yinhe/88888888/224/3221226019/index.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="CCTV-5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5.png",CCTV-5 +http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226019/index.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="CCTV-5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5.png",CCTV-5 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/yinhe/88888888/224/3221226019/index.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="CCTV-5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5.png",CCTV-5 +http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221226019/index.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="CCTV-5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5%2B.png",CCTV-5+ +http://php.jdshipin.com/TVOD/hljyd.php?id=3221225603 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="CCTV-5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5%2B.png",CCTV-5+ +https://www.freetv.top/migu/641886773.m3u8?migutoken=03a1b82e35e58cd89a95034ecb29e77e50493397000ec2b1e4d1ce59af01e6420d6dbc068c8230ec03be3a35a20eed8714e0959e3570a08713a7a2e8d86085eabf8f1aa85744c80c38343988b2 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="CCTV-5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5%2B.png",CCTV-5+ +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221225603/index.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="CCTV-5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5%2B.png",CCTV-5+ +https://smart.pendy.dpdns.org/Smart.php?id=cctv5plus +#EXTINF:-1 group-title="🏀体育频道" tvg-name="CCTV-5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5%2B.png",CCTV-5+ +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225603/index.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="CCTV-5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5%2B.png",CCTV-5+ +http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/yinhe/88888888/224/3221225603/index.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="CCTV-5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5%2B.png",CCTV-5+ +http://[2409:8087:1a0a:df::404b]/ottrrs.hl.chinamobile.com/TVOD/88888888/224/3221225603/index.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="CCTV-5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5%2B.png",CCTV-5+ +http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221225603/index.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="CCTV-5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5%2B.png",CCTV-5+ +http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225603/index.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="CCTV-5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5%2B.png",CCTV-5+ +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/yinhe/88888888/224/3221225603/index.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="广东体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E4%BD%93%E8%82%B2.png",广东体育 +https://epg.pw/stream/7b470f9fc5c305db0c8622117b7b25ca00eb35ba3e93e865cf0ff9df5c736681.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="广东体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E4%BD%93%E8%82%B2.png",广东体育 +http://cdn2.163189.xyz/live/gdty/stream.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="广东体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E4%BD%93%E8%82%B2.png",广东体育 +http://php.jdshipin.com/PLTV/iptv.php?id=gdty +#EXTINF:-1 group-title="🏀体育频道" tvg-name="广东体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E4%BD%93%E8%82%B2.png",广东体育 +https://stream1.freetv.fun/3864d41a409cbbbd8579e4ec03eb47e6cf65b15f5cae7c3cd44ccd4b9991a017.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="广东体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E4%BD%93%E8%82%B2.png",广东体育 +https://stream1.freetv.fun/e05d674500d8dcf73754cb11d4dcd8ef9e88f287888a1b71fd0766e90963db66.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="广东体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E4%BD%93%E8%82%B2.png",广东体育 +https://stream1.freetv.fun/1d9901836bfdd83dcc89edf1fb53c3f62393cd672a8d49266af2c8130921b0ee.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="广东体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E4%BD%93%E8%82%B2.png",广东体育 +https://stream1.freetv.fun/869475cf6ab5d187816a1b7fbd8649cfc0b41c452e5595eabb2a36e51a61eecf.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="广东体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E4%BD%93%E8%82%B2.png",广东体育 +http://php.jdshipin.com/TVOD/iptv.php?id=gdty +#EXTINF:-1 group-title="🏀体育频道" tvg-name="广东体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E4%BD%93%E8%82%B2.png",广东体育 +https://stream1.freetv.fun/yan-dong-ti-yu-10.ctv +#EXTINF:-1 group-title="🏀体育频道" tvg-name="广东体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E4%BD%93%E8%82%B2.png",广东体育 +https://stream1.freetv.fun/yan-dong-ti-yu-11.ctv +#EXTINF:-1 group-title="🏀体育频道" tvg-name="纬来体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BA%AC%E6%9D%A5%E4%BD%93%E8%82%B2.png",纬来体育 +https://cdn.iptv8k.top/dl/jrys.php?id=291&time=20240926215313&ip=111.229.253.40 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="纬来体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BA%AC%E6%9D%A5%E4%BD%93%E8%82%B2.png",纬来体育 +https://cdn.iptv8k.top/dl/jrys.php?id=292&amp;amp;amp;time=20240926215313&amp;amp;amp;ip=111.229.253.40 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="纬来体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BA%AC%E6%9D%A5%E4%BD%93%E8%82%B2.png",纬来体育 +https://cdn.iptv8k.top/dl/jrys.php?id=292&time=20240926215313&ip=111.229.253.40 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="纬来体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BA%AC%E6%9D%A5%E4%BD%93%E8%82%B2.png",纬来体育 +https://cdn.iptv8k.top/dl/jrys.php?id=292&amp;amp;time=20240926215313&amp;amp;ip=111.229.253.40 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="纬来体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BA%AC%E6%9D%A5%E4%BD%93%E8%82%B2.png",纬来体育 +https://stream1.freetv.fun/wei-lai-ti-yu-9.ctv +#EXTINF:-1 group-title="🏀体育频道" tvg-name="纬来体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BA%AC%E6%9D%A5%E4%BD%93%E8%82%B2.png",纬来体育 +https://epg.pw/stream/8855a9936e37e608a0ec8a014cce1673dee9c5d68d560da376cc92e5edef2b25.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="纬来体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BA%AC%E6%9D%A5%E4%BD%93%E8%82%B2.png",纬来体育 +https://epg.pw/stream/ab6df63b64d0cc44a1f4f029ed847a26fa54a7aebd455578fb05a63f02c22f4b.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="纬来体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BA%AC%E6%9D%A5%E4%BD%93%E8%82%B2.png",纬来体育 +https://epg.pw/stream/4f18dfe0593db5c686eb64ae8edaf2a9202d4d46bdc9bbde2cee27708e12ea01.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="纬来体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BA%AC%E6%9D%A5%E4%BD%93%E8%82%B2.png",纬来体育 +https://stream1.freetv.fun/wei-lai-ti-yu-7.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="纬来体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BA%AC%E6%9D%A5%E4%BD%93%E8%82%B2.png",纬来体育 +https://stream1.freetv.fun/wei-lai-ti-yu-3.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="五星体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%94%E6%98%9F%E4%BD%93%E8%82%B2.png",五星体育 +http://[2409:8087:1e03:21::42]:6610/cms001/ch00000090990000001018/index.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="五星体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%94%E6%98%9F%E4%BD%93%E8%82%B2.png",五星体育 +https://stream1.freetv.fun/wu-xing-ti-yu-3.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="五星体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%94%E6%98%9F%E4%BD%93%E8%82%B2.png",五星体育 +https://stream1.freetv.fun/wu-xing-ti-yu-7.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="五星体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%94%E6%98%9F%E4%BD%93%E8%82%B2.png",五星体育 +https://stream1.freetv.fun/wu-xing-ti-yu-2.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="五星体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%94%E6%98%9F%E4%BD%93%E8%82%B2.png",五星体育 +https://stream1.freetv.fun/wu-xing-ti-yu-10.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="五星体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%94%E6%98%9F%E4%BD%93%E8%82%B2.png",五星体育 +https://stream1.freetv.fun/ipv6-wu-xing-ti-yu-2.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="五星体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%94%E6%98%9F%E4%BD%93%E8%82%B2.png",五星体育 +https://stream1.freetv.fun/wu-xing-ti-yu-9.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="五星体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%94%E6%98%9F%E4%BD%93%E8%82%B2.png",五星体育 +https://stream1.freetv.fun/wu-xing-ti-yu-4.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="五星体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%94%E6%98%9F%E4%BD%93%E8%82%B2.png",五星体育 +https://stream1.freetv.fun/wu-xing-ti-yu-13.ctv +#EXTINF:-1 group-title="🏀体育频道" tvg-name="五星体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%94%E6%98%9F%E4%BD%93%E8%82%B2.png",五星体育 +https://stream1.freetv.fun/ipv6-wu-xing-ti-yu-6.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="劲爆体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8A%B2%E7%88%86%E4%BD%93%E8%82%B2.png",劲爆体育 +http://php.jdshipin.com/itv6s.php?cid=hnbblive&id=2000000002000000008 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="劲爆体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8A%B2%E7%88%86%E4%BD%93%E8%82%B2.png",劲爆体育 +http://z.b.bkpcp.top/m.php?id=jbty +#EXTINF:-1 group-title="🏀体育频道" tvg-name="劲爆体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8A%B2%E7%88%86%E4%BD%93%E8%82%B2.png",劲爆体育 +http://goo.bkpcp.top/mg/jbty +#EXTINF:-1 group-title="🏀体育频道" tvg-name="劲爆体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8A%B2%E7%88%86%E4%BD%93%E8%82%B2.png",劲爆体育 +https://www.freetv.top/migu/796071336.m3u8?migutoken=1cc947d86cb584c31c31c88c005d55965238dbfff7ed75fca8451aed0b564786fde7e4b327e93b92dc96ef57e64e3bb56e8a9e921338080cdae817cb6125d8450b687659ecfee06be9c5d53ac6 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="劲爆体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8A%B2%E7%88%86%E4%BD%93%E8%82%B2.png",劲爆体育 +https://www.freetv.top/migu/796071336.m3u8?migutoken=05144ee4526abc2f6a8d44a41f9e078ef10c1a9f8930d51d7f453315d3577b613eac76898b1e0965789f7010cd3f8a1bca3167ef6e625cb77fc2c575eec35c8d07aaff61dc4b79f75fc67ef667 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="劲爆体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8A%B2%E7%88%86%E4%BD%93%E8%82%B2.png",劲爆体育 +https://live.goodiptv.club/api/yqgd.php?id=jbtyhd +#EXTINF:-1 group-title="🏀体育频道" tvg-name="劲爆体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8A%B2%E7%88%86%E4%BD%93%E8%82%B2.png",劲爆体育 +https://live.v1.mk/api/ghyx.php?id=JinBaoTiYuHD_6000 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="劲爆体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8A%B2%E7%88%86%E4%BD%93%E8%82%B2.png",劲爆体育 +https://live.v1.mk/api/bestv.php?id=jbtyhd8m/8000000 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="劲爆体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8A%B2%E7%88%86%E4%BD%93%E8%82%B2.png",劲爆体育 +http://[2409:8087:5e01:24::8]:6610/000000001000/2000000002000000008/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000008&IASHttpSessionId=OTT19019320240419154124000281 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="劲爆体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8A%B2%E7%88%86%E4%BD%93%E8%82%B2.png",劲爆体育 +http://[2409:8087:5e08:24::11]:6610/000000001000/2000000002000000008/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000008&IASHttpSessionId=OTT19019320240419154124000281 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="爱体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%88%B1%E4%BD%93%E8%82%B2.png",爱体育 +http://php.jdshipin.com:8880/itv6s.php?cid=wasusyt&id=6000000006000290630 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="爱体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%88%B1%E4%BD%93%E8%82%B2.png",爱体育 +http://[2409:8087:5e08:24::11]:6610/000000001000/2000000004000000060/index.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="爱体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%88%B1%E4%BD%93%E8%82%B2.png",爱体育 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000004000000060/index.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="爱体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%88%B1%E4%BD%93%E8%82%B2.png",爱体育 +http://[2409:8087:5e08:24::12]:6610/000000001000/2000000004000000000/index.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="爱体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%88%B1%E4%BD%93%E8%82%B2.png",爱体育 +http://[2409:8087:5e08:24::11]:6610/000000001000/2000000004000000060/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000060&IASHttpSessionId=OTT19019320240419154124000281 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="超级体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%B6%85%E7%BA%A7%E4%BD%93%E8%82%B2.png",超级体育 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226232/1.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="超级体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%B6%85%E7%BA%A7%E4%BD%93%E8%82%B2.png",超级体育 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226348/1.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="超级体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%B6%85%E7%BA%A7%E4%BD%93%E8%82%B2.png",超级体育 +http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225622/2/index.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="超级体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%B6%85%E7%BA%A7%E4%BD%93%E8%82%B2.png",超级体育 +http://[2409:8087:74d9:21::6]:80/270000001128/9900000020/index.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="超级体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%B6%85%E7%BA%A7%E4%BD%93%E8%82%B2.png",超级体育 +http://ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225715/index.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="超级体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%B6%85%E7%BA%A7%E4%BD%93%E8%82%B2.png",超级体育 +http://ottrrs.hl.chinamobile.com/TVOD/88888888/224/3221225715/index.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="超级体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%B6%85%E7%BA%A7%E4%BD%93%E8%82%B2.png",超级体育 +http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010063/ +#EXTINF:-1 group-title="🏀体育频道" tvg-name="超级体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%B6%85%E7%BA%A7%E4%BD%93%E8%82%B2.png",超级体育 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225715/index.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="超级体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%B6%85%E7%BA%A7%E4%BD%93%E8%82%B2.png",超级体育 +http://[2409:8087:5e00:24::1e]:6060/000000001000/1000000001000009204/1.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="超级体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%B6%85%E7%BA%A7%E4%BD%93%E8%82%B2.png",超级体育 +http://[2409:8087:5e08:24::17]:6610/000000001000/1000000004000007755/index.m3u8?channel-id=bestzb&Contentid=1000000004000007755&livemode=1&stbId=3 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="精品体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%B2%BE%E5%93%81%E4%BD%93%E8%82%B2.png",精品体育 +https://epg.pw/stream/f7556eccd4ae06b0c2991fdc7a4f8388496559f728cc82459a8e50346040e226.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="精品体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%B2%BE%E5%93%81%E4%BD%93%E8%82%B2.png",精品体育 +https://epg.pw/stream/94ed0232b61ce8d89883160a4cdfbfc8f3225cae70ef8e17d93eec249a3c8ad6.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="精品体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%B2%BE%E5%93%81%E4%BD%93%E8%82%B2.png",精品体育 +https://epg.pw/stream/866a097a0907c9832440f8df38272dd555abf05200dfbafcc137e214c9b30ca7.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="精品体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%B2%BE%E5%93%81%E4%BD%93%E8%82%B2.png",精品体育 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226328/1.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="精品体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%B2%BE%E5%93%81%E4%BD%93%E8%82%B2.png",精品体育 +http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225709/2/index.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="精品体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%B2%BE%E5%93%81%E4%BD%93%E8%82%B2.png",精品体育 +http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010078/1.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="精品体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%B2%BE%E5%93%81%E4%BD%93%E8%82%B2.png",精品体育 +http://[2409:8087:5e00:24::1e]:6060/000000001000/1000000004000014634/1.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="精品体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%B2%BE%E5%93%81%E4%BD%93%E8%82%B2.png",精品体育 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225674/index.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="精品体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%B2%BE%E5%93%81%E4%BD%93%E8%82%B2.png",精品体育 +http://[2409:8087:1a0b:df::4004]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225674/index.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="精品体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%B2%BE%E5%93%81%E4%BD%93%E8%82%B2.png",精品体育 +http://[2409:8087:74d6:22::7]:6410/270000001128/9900000102/index.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="广州竞赛" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E5%B7%9E%E7%AB%9E%E8%B5%9B.png",广州竞赛 +http://php.jdshipin.com:8880/gztv.php?id=jingsai#https://tencentplay.gztv.com/live/jingsai.m3u8?txSecret=49c8041461997c7a97dbcc3c7fd11b4f&txTime=18d00acf487 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="广州竞赛" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E5%B7%9E%E7%AB%9E%E8%B5%9B.png",广州竞赛 +https://stream1.freetv.fun/yan-zhou-jing-sai-4.ctv +#EXTINF:-1 group-title="🏀体育频道" tvg-name="广州竞赛" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E5%B7%9E%E7%AB%9E%E8%B5%9B.png",广州竞赛 +https://stream1.freetv.fun/yan-zhou-jing-sai-27.ctv +#EXTINF:-1 group-title="🏀体育频道" tvg-name="广州竞赛" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E5%B7%9E%E7%AB%9E%E8%B5%9B.png",广州竞赛 +https://stream1.freetv.fun/yan-zhou-jing-sai-37.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="广州竞赛" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E5%B7%9E%E7%AB%9E%E8%B5%9B.png",广州竞赛 +https://stream1.freetv.fun/yan-zhou-jing-sai-26.ctv +#EXTINF:-1 group-title="🏀体育频道" tvg-name="广州竞赛" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E5%B7%9E%E7%AB%9E%E8%B5%9B.png",广州竞赛 +https://stream1.freetv.fun/yan-zhou-jing-sai-35.ctv +#EXTINF:-1 group-title="🏀体育频道" tvg-name="广州竞赛" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E5%B7%9E%E7%AB%9E%E8%B5%9B.png",广州竞赛 +https://stream1.freetv.fun/yan-zhou-jing-sai-24.ctv +#EXTINF:-1 group-title="🏀体育频道" tvg-name="广州竞赛" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E5%B7%9E%E7%AB%9E%E8%B5%9B.png",广州竞赛 +https://stream1.freetv.fun/yan-zhou-jing-sai-15.ctv +#EXTINF:-1 group-title="🏀体育频道" tvg-name="广州竞赛" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E5%B7%9E%E7%AB%9E%E8%B5%9B.png",广州竞赛 +https://stream1.freetv.fun/yan-zhou-jing-sai-12.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="广州竞赛" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E5%B7%9E%E7%AB%9E%E8%B5%9B.png",广州竞赛 +https://stream1.freetv.fun/yan-zhou-jing-sai-7.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="辽宁体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%BE%BD%E5%AE%81%E4%BD%93%E8%82%B2.png",辽宁体育 +https://stream1.freetv.fun/liao-zhu-ti-yu-5.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="辽宁体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%BE%BD%E5%AE%81%E4%BD%93%E8%82%B2.png",辽宁体育 +https://stream1.freetv.fun/liao-zhu-ti-yu-3.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="山东体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E4%BD%93%E8%82%B2.png",山东体育 +https://stream1.freetv.fun/shan-dong-ti-yu-8.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="山东体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E4%BD%93%E8%82%B2.png",山东体育 +https://stream1.freetv.fun/shan-dong-ti-yu-18.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="山东体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E4%BD%93%E8%82%B2.png",山东体育 +https://stream1.freetv.fun/shan-dong-ti-yu-19.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="山东体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E4%BD%93%E8%82%B2.png",山东体育 +https://stream1.freetv.fun/shan-dong-ti-yu-4.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="山东体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E4%BD%93%E8%82%B2.png",山东体育 +https://stream1.freetv.fun/shan-dong-ti-yu-23.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="山东体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E4%BD%93%E8%82%B2.png",山东体育 +https://stream1.freetv.fun/shan-dong-ti-yu-15.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="山东体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E4%BD%93%E8%82%B2.png",山东体育 +http://livealone302.iqilu.com/iqilu/typd.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="山东体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E4%BD%93%E8%82%B2.png",山东体育 +https://stream1.freetv.fun/shan-dong-ti-yu-7.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="山东体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E4%BD%93%E8%82%B2.png",山东体育 +https://stream1.freetv.fun/shan-dong-ti-yu-22.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="山东体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E4%BD%93%E8%82%B2.png",山东体育 +https://stream1.freetv.fun/shan-dong-ti-yu-6.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="江苏体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E4%BD%93%E8%82%B2.png",江苏体育 +https://live.lalifeier.eu.org/jstv/jsty.m3u8?t=1746725062&key=0472e68b6d6133153804a3943cfdca96 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="江苏体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E4%BD%93%E8%82%B2.png",江苏体育 +https://live.lalifeier.eu.org/jstv/jsty.m3u8?t=1746739480&key=6f468215466d6daf15f5239fa2c164d6 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="江苏体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E4%BD%93%E8%82%B2.png",江苏体育 +https://live.lalifeier.eu.org/jstv/jsty.m3u8?t=1746775525&key=4573d423f55d4f3c1b70698e0046e086 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="江苏体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E4%BD%93%E8%82%B2.png",江苏体育 +https://live.lalifeier.eu.org/jstv/jsty.m3u8?t=1746782860&key=242483d6da1c67c17a454ee431e41b24 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="江苏体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E4%BD%93%E8%82%B2.png",江苏体育 +https://live.lalifeier.eu.org/jstv/jsty.m3u8?t=1746739480&amp;key=6f468215466d6daf15f5239fa2c164d6 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="江苏体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E4%BD%93%E8%82%B2.png",江苏体育 +https://live.lalifeier.eu.org/jstv/jsty.m3u8?t=1746811400&key=4867c9569d3be7173b932d82cac7adb2 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="江苏体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E4%BD%93%E8%82%B2.png",江苏体育 +https://live.lalifeier.eu.org/jstv/jsty.m3u8?t=1746825793&key=7db9095368ec4160797186b0972ce60e +#EXTINF:-1 group-title="🏀体育频道" tvg-name="江苏体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E4%BD%93%E8%82%B2.png",江苏体育 +https://live.lalifeier.eu.org/jstv/jsty.m3u8?t=1746861745&key=51e661097bab1305a852b8befcfee768 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="江苏体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E4%BD%93%E8%82%B2.png",江苏体育 +https://live.lalifeier.eu.org/jstv/jsty.m3u8?t=1746894586&key=11abeed3c4c1657927919a946bcde3d4 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="江苏体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E4%BD%93%E8%82%B2.png",江苏体育 +https://live.lalifeier.eu.org/jstv/jsty.m3u8?t=1746775525&amp;key=4573d423f55d4f3c1b70698e0046e086 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="安徽综艺体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E7%BB%BC%E8%89%BA%E4%BD%93%E8%82%B2.png",安徽综艺体育 +https://live.lalifeier.eu.org/ahtv/ahzyty.m3u8?t=1745774515&key=27009aec794adc785b22478c5aa2ae16 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="安徽综艺体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E7%BB%BC%E8%89%BA%E4%BD%93%E8%82%B2.png",安徽综艺体育 +https://live.lalifeier.eu.org/ahtv/ahzyty.m3u8?t=1746292937&key=940b0f98a121c28884c74971efaac4de +#EXTINF:-1 group-title="🏀体育频道" tvg-name="安徽综艺体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E7%BB%BC%E8%89%BA%E4%BD%93%E8%82%B2.png",安徽综艺体育 +https://live.lalifeier.eu.org/ahtv/ahzyty.m3u8?t=1746307365&key=6b104d1fc66c5b34b63d0e19c627e0f9 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="安徽综艺体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E7%BB%BC%E8%89%BA%E4%BD%93%E8%82%B2.png",安徽综艺体育 +https://stream1.freetv.fun/an-hui-zong-yi-ti-yu-4.ctv +#EXTINF:-1 group-title="🏀体育频道" tvg-name="安徽综艺体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E7%BB%BC%E8%89%BA%E4%BD%93%E8%82%B2.png",安徽综艺体育 +https://stream1.freetv.fun/an-hui-zong-yi-ti-yu-5.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="安徽综艺体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E7%BB%BC%E8%89%BA%E4%BD%93%E8%82%B2.png",安徽综艺体育 +https://stream1.freetv.fun/an-hui-zong-yi-ti-yu-6.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="安徽综艺体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E7%BB%BC%E8%89%BA%E4%BD%93%E8%82%B2.png",安徽综艺体育 +https://stream1.freetv.fun/an-hui-zong-yi-ti-yu-8.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="安徽综艺体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E7%BB%BC%E8%89%BA%E4%BD%93%E8%82%B2.png",安徽综艺体育 +https://live.lalifeier.eu.org/ahtv/ahzyty.m3u8?t=1746725062&key=4fd742e193737a1cfe3c3dfa3973e299 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="安徽综艺体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E7%BB%BC%E8%89%BA%E4%BD%93%E8%82%B2.png",安徽综艺体育 +https://live.lalifeier.eu.org/ahtv/ahzyty.m3u8?t=1746739480&key=d9527b9d7ce3a70d8e81d3f27965213f +#EXTINF:-1 group-title="🏀体育频道" tvg-name="安徽综艺体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E7%BB%BC%E8%89%BA%E4%BD%93%E8%82%B2.png",安徽综艺体育 +https://live.lalifeier.eu.org/ahtv/ahzyty.m3u8?t=1746775525&key=fab8cb8fa94cd29ea294c635fb944f88 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="睛彩篮球" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9D%9B%E5%BD%A9%E7%AF%AE%E7%90%83.png",睛彩篮球 +http://thhomes.cn:4000/rtp/239.3.1.126:8001 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="睛彩篮球" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9D%9B%E5%BD%A9%E7%AF%AE%E7%90%83.png",睛彩篮球 +http://[2409:8087:1a01:df::4055]:80/TVOD/88888888/224/3221225901/main.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="睛彩篮球" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9D%9B%E5%BD%A9%E7%AF%AE%E7%90%83.png",睛彩篮球 +http://congtou.top:9292/rtp/239.77.1.21:5146 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="睛彩篮球" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9D%9B%E5%BD%A9%E7%AF%AE%E7%90%83.png",睛彩篮球 +http://[2409:8087:5e00:24::1e]:6060/000000001000/1000000006000270006/1.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="睛彩篮球" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9D%9B%E5%BD%A9%E7%AF%AE%E7%90%83.png",睛彩篮球 +http://www.1328099.xyz:9001/rtp/239.77.1.21:5146 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="睛彩篮球" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9D%9B%E5%BD%A9%E7%AF%AE%E7%90%83.png",睛彩篮球 +http://[2409:8087:1a0a:df::404b]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226147/index.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="睛彩篮球" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9D%9B%E5%BD%A9%E7%AF%AE%E7%90%83.png",睛彩篮球 +http://[2409:8087:5e00:24::20]:6610/000000001000/1/3000000020000011529/index.m3u8?channel-id=FifastbLive&Contentid=3000000020000011529&livemode=1&stbId=YanG-1989 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="睛彩篮球" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9D%9B%E5%BD%A9%E7%AF%AE%E7%90%83.png",睛彩篮球 +http://[2409:8087:1a01:df::7005]/TVOD/88888888/224/3221225895/main.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="睛彩篮球" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9D%9B%E5%BD%A9%E7%AF%AE%E7%90%83.png",睛彩篮球 +http://[2409:8087:5e00:24::1e]:6060/000000001000/1000000006000270002/1.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="睛彩篮球" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9D%9B%E5%BD%A9%E7%AF%AE%E7%90%83.png",睛彩篮球 +http://ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226147/index.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="睛彩羽毛球" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9D%9B%E5%BD%A9%E7%BE%BD%E6%AF%9B%E7%90%83.png",睛彩羽毛球 +http://thhomes.cn:4000/rtp/239.3.1.127:8001 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="睛彩羽毛球" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9D%9B%E5%BD%A9%E7%BE%BD%E6%AF%9B%E7%90%83.png",睛彩羽毛球 +http://111.193.239.245:9999/rtp/239.3.1.127:8001 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="睛彩广场舞" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9D%9B%E5%BD%A9%E5%B9%BF%E5%9C%BA%E8%88%9E.png",睛彩广场舞 +http://thhomes.cn:4000/rtp/239.3.1.128:8001 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="睛彩广场舞" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9D%9B%E5%BD%A9%E5%B9%BF%E5%9C%BA%E8%88%9E.png",睛彩广场舞 +http://111.193.239.245:9999/rtp/239.3.1.128:8001 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="睛彩广场舞" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9D%9B%E5%BD%A9%E5%B9%BF%E5%9C%BA%E8%88%9E.png",睛彩广场舞 +http://[2409:8087:1a0a:df::4038]/ottrrs.hl.chinamobile.com/TVOD/88888888/224/3221226472/index.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="睛彩广场舞" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9D%9B%E5%BD%A9%E5%B9%BF%E5%9C%BA%E8%88%9E.png",睛彩广场舞 +http://ottrrs.hl.chinamobile.com/TVOD/88888888/224/3221226472/index.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="睛彩广场舞" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9D%9B%E5%BD%A9%E5%B9%BF%E5%9C%BA%E8%88%9E.png",睛彩广场舞 +http://[2409:8087:8:21::02]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226567/1.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="睛彩广场舞" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9D%9B%E5%BD%A9%E5%B9%BF%E5%9C%BA%E8%88%9E.png",睛彩广场舞 +http://[2409:8087:8:21::02]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227040/1.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="睛彩广场舞" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9D%9B%E5%BD%A9%E5%B9%BF%E5%9C%BA%E8%88%9E.png",睛彩广场舞 +http://cdn6.bkpcp.top/itv/yditv.php +#EXTINF:-1 group-title="🏀体育频道" tvg-name="睛彩广场舞" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9D%9B%E5%BD%A9%E5%B9%BF%E5%9C%BA%E8%88%9E.png",睛彩广场舞 +http://[2409:8087:74d4:21::36]/270000001128/9900000532/1.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="睛彩广场舞" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9D%9B%E5%BD%A9%E5%B9%BF%E5%9C%BA%E8%88%9E.png",睛彩广场舞 +http://[2409:8087:1a0a:df::4038]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226472/index.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="睛彩广场舞" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9D%9B%E5%BD%A9%E5%B9%BF%E5%9C%BA%E8%88%9E.png",睛彩广场舞 +http://hwottcdn.ln.chinamobile.com/PLTV/11/224/3221227423/index.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="风云足球" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%A3%8E%E4%BA%91%E8%B6%B3%E7%90%83.png",风云足球 +https://epg.pw/stream/6d7bf281e3d739806a73f5373acaa6e01988ec9739f5ac1355ce54b47a928472.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="风云足球" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%A3%8E%E4%BA%91%E8%B6%B3%E7%90%83.png",风云足球 +https://epg.pw/stream/ac8062ec9484078061d3bef507c15a423ac57ae4144e3fcc4b0a198dd420f911.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="风云足球" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%A3%8E%E4%BA%91%E8%B6%B3%E7%90%83.png",风云足球 +http://[2409:8087:7001:20:2::3]/dbiptv.sn.chinamobile.com/PLTV/88888893/224/3221226984/index.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="风云足球" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%A3%8E%E4%BA%91%E8%B6%B3%E7%90%83.png",风云足球 +https://live.goodiptv.club/api/yqgd.php?id=fyzq +#EXTINF:-1 group-title="🏀体育频道" tvg-name="魅力足球" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%AD%85%E5%8A%9B%E8%B6%B3%E7%90%83.png",魅力足球 +http://z.b.bkpcp.top/m.php?id=mlzq +#EXTINF:-1 group-title="🏀体育频道" tvg-name="魅力足球" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%AD%85%E5%8A%9B%E8%B6%B3%E7%90%83.png",魅力足球 +http://gat.bkpcp.top/ymg.php?id=mlzq +#EXTINF:-1 group-title="🏀体育频道" tvg-name="魅力足球" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%AD%85%E5%8A%9B%E8%B6%B3%E7%90%83.png",魅力足球 +http://goo.bkpcp.top/mg/mlzq +#EXTINF:-1 group-title="🏀体育频道" tvg-name="魅力足球" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%AD%85%E5%8A%9B%E8%B6%B3%E7%90%83.png",魅力足球 +https://tv.fanmingming.com/api/v6?id=mlyy +#EXTINF:-1 group-title="🏀体育频道" tvg-name="魅力足球" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%AD%85%E5%8A%9B%E8%B6%B3%E7%90%83.png",魅力足球 +https://www.freetv.top/migu/796070308.m3u8?migutoken=0a72668399c6f96d928c0bf0adbe330bbae95b55cfc10f2da9e830e2e06051b89a0e1db847eaa61f6b897e3efcb05ecc6160c2ce3c8073fb2d90c8ed191845e1ca16f6bcd3aaa13f6538d2074d +#EXTINF:-1 group-title="🏀体育频道" tvg-name="魅力足球" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%AD%85%E5%8A%9B%E8%B6%B3%E7%90%83.png",魅力足球 +https://www.freetv.top/migu/796070308.m3u8?migutoken=f4f71100ed3cd756f336e1f3b6d522c1338ee1ffd14316eea89e461d4e31e29395a265a9f1ec26b947fb0e7dc16296db47ae3bfea73caaee6901d17bfede63775878c0ab44c872939ba5b53baf +#EXTINF:-1 group-title="🏀体育频道" tvg-name="魅力足球" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%AD%85%E5%8A%9B%E8%B6%B3%E7%90%83.png",魅力足球 +https://www.freetv.top/migu/796070308.m3u8?migutoken=aef1ffa947e5328dd4ec2bb318b58b674fe32113222c6c9eab78bcdc2a9f31cf142a1d60536ea5a5ee039d3753e6bd98bef238d0ba7e3af9153e765e8b77e2a8c28451355b4a426d11c5c304f8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="魅力足球" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%AD%85%E5%8A%9B%E8%B6%B3%E7%90%83.png",魅力足球 +https://stream1.freetv.fun/mei-li-zu-qiu-4.ctv +#EXTINF:-1 group-title="🏀体育频道" tvg-name="魅力足球" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%AD%85%E5%8A%9B%E8%B6%B3%E7%90%83.png",魅力足球 +https://stream1.freetv.fun/mei-li-zu-qiu-2.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="魅力足球" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%AD%85%E5%8A%9B%E8%B6%B3%E7%90%83.png",魅力足球 +https://stream1.freetv.fun/mei-li-zu-qiu-5.ctv +#EXTINF:-1 group-title="🏀体育频道" tvg-name="快乐垂钓" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BF%AB%E4%B9%90%E5%9E%82%E9%92%93.png",快乐垂钓 +http://php.jdshipin.com/itv6.php?cid=bestzb&id=5000000011000031206 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="快乐垂钓" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BF%AB%E4%B9%90%E5%9E%82%E9%92%93.png",快乐垂钓 +http://iptv.cdn.ha.chinamobile.com/PLTV/88888888/224/3221226670/index.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="快乐垂钓" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BF%AB%E4%B9%90%E5%9E%82%E9%92%93.png",快乐垂钓 +http://[2409:8087:1:20:20::2c]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226549/1.m3u8 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="快乐垂钓" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BF%AB%E4%B9%90%E5%9E%82%E9%92%93.png",快乐垂钓 +http://[2409:8087:1:20:20::2c]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226549/1.m3u8?GuardEncType=2&accountinfo=~~V2.0~RHz0NOpqUZZN1Iz6lVLkkg~_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNNSiF8rKF1Pn2LepKMJ2cEG%2CEND +#EXTINF:-1 group-title="🏀体育频道" tvg-name="快乐垂钓" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BF%AB%E4%B9%90%E5%9E%82%E9%92%93.png",快乐垂钓 +http://[2409:8087:1:20:20::2c]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226549/1.m3u8?GuardEncType=2&amp;accountinfo=~~V2.0RHz0NOpqUZZN1Iz6lVLkkg_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNNSiF8rKF1Pn2LepKMJ2cEG%2CEND +#EXTINF:-1 group-title="🏀体育频道" tvg-name="快乐垂钓" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BF%AB%E4%B9%90%E5%9E%82%E9%92%93.png",快乐垂钓 +http://congtou.top:9292/rtp/239.77.0.145:5146 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="快乐垂钓" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BF%AB%E4%B9%90%E5%9E%82%E9%92%93.png",快乐垂钓 +http://[2409:8087:1:20:20::2c]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226549/1.m3u8?GuardEncType=2&amp;accountinfo=~~V2.0~RHz0NOpqUZZN1Iz6lVLkkg~_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNNSiF8rKF1Pn2LepKMJ2cEG%2CEND +#EXTINF:-1 group-title="🏀体育频道" tvg-name="快乐垂钓" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BF%AB%E4%B9%90%E5%9E%82%E9%92%93.png",快乐垂钓 +http://[2409:8087:1:20:20::2c]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226549/1.m3u8?GuardEncType=2&amp;amp;accountinfo=~~V2.0RHz0NOpqUZZN1Iz6lVLkkg_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNNSiF8rKF1Pn2LepKMJ2cEG%2CEND +#EXTINF:-1 group-title="🏀体育频道" tvg-name="快乐垂钓" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BF%AB%E4%B9%90%E5%9E%82%E9%92%93.png",快乐垂钓 +http://[2409:8087:1:20:20::2c]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226549/1.m3u8?GuardEncType=2&amp;amp;accountinfo=~~V2.0~RHz0NOpqUZZN1Iz6lVLkkg~_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNNSiF8rKF1Pn2LepKMJ2cEG%2CEND +#EXTINF:-1 group-title="🏀体育频道" tvg-name="快乐垂钓" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BF%AB%E4%B9%90%E5%9E%82%E9%92%93.png",快乐垂钓 +http://www.1328099.xyz:9001/rtp/239.77.0.145:5146 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="JJ斗地主" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/JJ%E6%96%97%E5%9C%B0%E4%B8%BB.png",JJ斗地主 +http://zzy789.xyz/douyu1.php?id=488743 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="JJ斗地主" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/JJ%E6%96%97%E5%9C%B0%E4%B8%BB.png",JJ斗地主 +http://tc-tct.douyucdn2.cn/dyliveflv1a/488743rAHScWyyII_2000.flv?wsAuth=fd695c444eeee99cc6122ed396c805ba&token=cpn-androidmpro-0-488743-df8b1830ef2e6ce156759645768df95bf77749da61fcc901&logo=0&expire=0&did=d010b07dcb997ada9934081c873542f0&origin=tct&vhost=play2 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="JJ斗地主" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/JJ%E6%96%97%E5%9C%B0%E4%B8%BB.png",JJ斗地主 +http://huanqiuzhibo.cn/manifest/douyu.php?id=488743 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="JJ斗地主" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/JJ%E6%96%97%E5%9C%B0%E4%B8%BB.png",JJ斗地主 +http://www.52sw.top:678/play/huya.php?id=14079954 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="JJ斗地主" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/JJ%E6%96%97%E5%9C%B0%E4%B8%BB.png",JJ斗地主 +https://www.goodiptv.club/douyin/685317364746 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="JJ斗地主" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/JJ%E6%96%97%E5%9C%B0%E4%B8%BB.png",JJ斗地主 +https://live.laobaitv.net/huya/jjworld +#EXTINF:-1 group-title="🏀体育频道" tvg-name="JJ斗地主" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/JJ%E6%96%97%E5%9C%B0%E4%B8%BB.png",JJ斗地主 +https://live.iill.top/huya/14079954 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="JJ斗地主" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/JJ%E6%96%97%E5%9C%B0%E4%B8%BB.png",JJ斗地主 +https://live.iill.top/douyin/685317364746 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="JJ斗地主" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/JJ%E6%96%97%E5%9C%B0%E4%B8%BB.png",JJ斗地主 +https://live.iill.top/douyin/jjworld +#EXTINF:-1 group-title="🪁动画频道" tvg-name="动漫秀场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8A%A8%E6%BC%AB%E7%A7%80%E5%9C%BA.png",动漫秀场 +http://php.jdshipin.com/itv6.php?cid=bestzb&id=5000000011000031113 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="动漫秀场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8A%A8%E6%BC%AB%E7%A7%80%E5%9C%BA.png",动漫秀场 +http://[2409:8087:74d9:21::6]/000000001000PLTV/88888888/224/3221226197/index.m3u8 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="动漫秀场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8A%A8%E6%BC%AB%E7%A7%80%E5%9C%BA.png",动漫秀场 +https://stream1.freetv.fun/dong-man-xiu-chang-21.m3u8 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="动漫秀场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8A%A8%E6%BC%AB%E7%A7%80%E5%9C%BA.png",动漫秀场 +https://stream1.freetv.fun/ipv6-dong-man-xiu-chang-1.m3u8 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="动漫秀场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8A%A8%E6%BC%AB%E7%A7%80%E5%9C%BA.png",动漫秀场 +https://stream1.freetv.fun/dong-man-xiu-chang-11.m3u8 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="动漫秀场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8A%A8%E6%BC%AB%E7%A7%80%E5%9C%BA.png",动漫秀场 +https://stream1.freetv.fun/dong-man-xiu-chang-24.ctv +#EXTINF:-1 group-title="🪁动画频道" tvg-name="动漫秀场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8A%A8%E6%BC%AB%E7%A7%80%E5%9C%BA.png",动漫秀场 +https://stream1.freetv.fun/ipv6-dong-man-xiu-chang-11.m3u8 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="动漫秀场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8A%A8%E6%BC%AB%E7%A7%80%E5%9C%BA.png",动漫秀场 +https://stream1.freetv.fun/dong-man-xiu-chang-22.ctv +#EXTINF:-1 group-title="🪁动画频道" tvg-name="动漫秀场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8A%A8%E6%BC%AB%E7%A7%80%E5%9C%BA.png",动漫秀场 +https://stream1.freetv.fun/dong-man-xiu-chang-9.ctv +#EXTINF:-1 group-title="🪁动画频道" tvg-name="动漫秀场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8A%A8%E6%BC%AB%E7%A7%80%E5%9C%BA.png",动漫秀场 +https://stream1.freetv.fun/7e65432fb94551c8a7abf4afa8996c11471807bf9cf6ec1a3e49a2c25b2c1f58.m3u8 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="青春动漫" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%92%E6%98%A5%E5%8A%A8%E6%BC%AB.png",青春动漫 +http://[2409:8087:5e00:24::2d]:6610/000000001000/1/5000000011000288008/index.m3u8?channel-id=bestzb&Contentid=5000000011000288008&livemode=1&stbId=YanG-1989 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="青春动漫" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%92%E6%98%A5%E5%8A%A8%E6%BC%AB.png",青春动漫 +https://live.v1.mk/api/bestv.php?id=qcdm8m/8000000 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="爱动漫" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%88%B1%E5%8A%A8%E6%BC%AB.png",爱动漫 +http://php.jdshipin.com:8880/itv6s.php?cid=wasusyt&id=6000000006000280630 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="爱动漫" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%88%B1%E5%8A%A8%E6%BC%AB.png",爱动漫 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000004000000059/index.m3u8 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="爱动漫" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%88%B1%E5%8A%A8%E6%BC%AB.png",爱动漫 +http://[2409:8087:5e08:24::11]:6610/000000001000/2000000004000000059/index.m3u8 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="爱动漫" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%88%B1%E5%8A%A8%E6%BC%AB.png",爱动漫 +http://[2409:8087:5e08:24::12]:6610/000000001000/2000000004000000000/index.m3u8 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="爱动漫" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%88%B1%E5%8A%A8%E6%BC%AB.png",爱动漫 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000004000000059/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000059&IASHttpSessionId=OTT19019320240419154124000281&yang-1989 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="爱动漫" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%88%B1%E5%8A%A8%E6%BC%AB.png",爱动漫 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000004000000059/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000059&IASHttpSessionId=OTT19019320240419154124000281 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="爱动漫" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%88%B1%E5%8A%A8%E6%BC%AB.png",爱动漫 +http://[2409:8087:5e08:24::11]:6610/000000001000/2000000004000000059/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000059&IASHttpSessionId=OTT19019320240419154124000281 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="爱动漫" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%88%B1%E5%8A%A8%E6%BC%AB.png",爱动漫 +http://[2409:8087:5e08:24::12]:6610/000000001000/2000000004000000000/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000059 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="爱动漫" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%88%B1%E5%8A%A8%E6%BC%AB.png",爱动漫 +http://[2409:8087:5e00:24::029]:6610/000000001000/2000000004000000059/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000059&IASHttpSessionId=OTT19019320240419154124000281 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="爱动漫" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%88%B1%E5%8A%A8%E6%BC%AB.png",爱动漫 +http://[2409:8087:2801:22:100::58]/wh7f454c46tw4217776971_-290814739/hwltc.tv.cdn.zj.chinamobile.com/PLTV/88888888/224/3221235628/1/index.m3u8 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="宝宝动画" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%9D%E5%AE%9D%E5%8A%A8%E7%94%BB.png",宝宝动画 +http://[2409:8087:5e00:24::2d]:6610/000000001000/1/5000000011000288002/index.m3u8?channel-id=bestzb&Contentid=5000000011000288002&livemode=1&stbId=YanG-1989 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="CN卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CN%E5%8D%A1%E9%80%9A.png",CN卡通 +https://cdn.iptv8k.top/dl/jrys.php?id=364&time=20240926215313&ip=111.229.253.40 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="CN卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CN%E5%8D%A1%E9%80%9A.png",CN卡通 +http://125.227.210.55:8167/VideoInput/play.ts +#EXTINF:-1 group-title="🪁动画频道" tvg-name="CN卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CN%E5%8D%A1%E9%80%9A.png",CN卡通 +https://stream1.freetv.fun/cnqia-tong-1.ctv +#EXTINF:-1 group-title="🪁动画频道" tvg-name="CN卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CN%E5%8D%A1%E9%80%9A.png",CN卡通 +https://stream1.freetv.fun/cnqia-tong-1.m3u8 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="CN卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CN%E5%8D%A1%E9%80%9A.png",CN卡通 +https://stream1.freetv.fun/cnqia-tong-3.ctv +#EXTINF:-1 group-title="🪁动画频道" tvg-name="CN卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CN%E5%8D%A1%E9%80%9A.png",CN卡通 +https://stream1.freetv.fun/cnqia-tong-2.m3u8 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="优漫卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BC%98%E6%BC%AB%E5%8D%A1%E9%80%9A.png",优漫卡通 +http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010118 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="优漫卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BC%98%E6%BC%AB%E5%8D%A1%E9%80%9A.png",优漫卡通 +http://z.b.bkpcp.top/m.php?id=ymkt +#EXTINF:-1 group-title="🪁动画频道" tvg-name="优漫卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BC%98%E6%BC%AB%E5%8D%A1%E9%80%9A.png",优漫卡通 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/2/224/3221225656/2.m3u8 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="优漫卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BC%98%E6%BC%AB%E5%8D%A1%E9%80%9A.png",优漫卡通 +https://live.lalifeier.eu.org/jstv/ymkt.m3u8?t=1745796321&key=a52fbb40a8c25dfa0feef5a1b4b5910d +#EXTINF:-1 group-title="🪁动画频道" tvg-name="优漫卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BC%98%E6%BC%AB%E5%8D%A1%E9%80%9A.png",优漫卡通 +https://live.lalifeier.eu.org/jstv/ymkt.m3u8?t=1746307365&key=c18c5077358ab692ad43005bbc7b32bd +#EXTINF:-1 group-title="🪁动画频道" tvg-name="优漫卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BC%98%E6%BC%AB%E5%8D%A1%E9%80%9A.png",优漫卡通 +https://www.freetv.top/migu/626064703.m3u8?migutoken=deac6c5275081b54ad412a195e499b7c0cb8f04446b6c80aaa9d3eb1063d620261c68202d59aea05060007b58a62d5d208f16379d861d6f1627c10c9dd894f0bf7e3ca97b04696255e193e871c +#EXTINF:-1 group-title="🪁动画频道" tvg-name="优漫卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BC%98%E6%BC%AB%E5%8D%A1%E9%80%9A.png",优漫卡通 +https://www.freetv.top/migu/626064703.m3u8?migutoken=7f7c4b909389a0cd5172701768041a0f3887534c4534a68bf1dc85550389e9ab156655484be16e89604513fde9da2f036ebae28d31515b0be32eb12462f5de9d9cab8f00c44671241d5c6e1356 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="优漫卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BC%98%E6%BC%AB%E5%8D%A1%E9%80%9A.png",优漫卡通 +https://stream1.freetv.fun/you-man-qia-tong-11.m3u8 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="优漫卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BC%98%E6%BC%AB%E5%8D%A1%E9%80%9A.png",优漫卡通 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226932/1.m3u8 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="优漫卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BC%98%E6%BC%AB%E5%8D%A1%E9%80%9A.png",优漫卡通 +https://stream1.freetv.fun/4073fb5ec1ec48f010e1db882aeb63ddc7104c56c5c729c4d08e932d585591a8.m3u8 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="金鹰卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%91%E9%B9%B0%E5%8D%A1%E9%80%9A.png",金鹰卡通 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/2/224/3221225653/2.m3u8 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="金鹰卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%91%E9%B9%B0%E5%8D%A1%E9%80%9A.png",金鹰卡通 +https://stream1.freetv.fun/jin-ying-qia-tong-38.m3u8 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="金鹰卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%91%E9%B9%B0%E5%8D%A1%E9%80%9A.png",金鹰卡通 +https://stream1.freetv.fun/jin-ying-qia-tong-32.ctv +#EXTINF:-1 group-title="🪁动画频道" tvg-name="金鹰卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%91%E9%B9%B0%E5%8D%A1%E9%80%9A.png",金鹰卡通 +https://stream1.freetv.fun/jin-ying-qia-tong-3.m3u8 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="金鹰卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%91%E9%B9%B0%E5%8D%A1%E9%80%9A.png",金鹰卡通 +https://stream1.freetv.fun/jin-ying-qia-tong-22.m3u8 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="金鹰卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%91%E9%B9%B0%E5%8D%A1%E9%80%9A.png",金鹰卡通 +https://stream1.freetv.fun/aec603fdb1ae19a081a7ca50498e3c9429447092a2208a2d383ae2bc812009b5.m3u8 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="金鹰卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%91%E9%B9%B0%E5%8D%A1%E9%80%9A.png",金鹰卡通 +https://stream1.freetv.fun/321f73ad28440de1629cd54e028c9355b2cb709eb8b30b90e4d0f3d5b41b0c4e.m3u8 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="金鹰卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%91%E9%B9%B0%E5%8D%A1%E9%80%9A.png",金鹰卡通 +https://stream1.freetv.fun/jin-ying-qia-tong-19.m3u8 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="金鹰卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%91%E9%B9%B0%E5%8D%A1%E9%80%9A.png",金鹰卡通 +https://stream1.freetv.fun/1b907bbf4760e673ec9ab89e2327cd1d9e5df04ca6ef35a6fb07f5b6757f4791.m3u8 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="金鹰卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%91%E9%B9%B0%E5%8D%A1%E9%80%9A.png",金鹰卡通 +https://stream1.freetv.fun/jin-ying-qia-tong-29.m3u8 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="黑莓动画" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E8%8E%93%E5%8A%A8%E7%94%BB.png",黑莓动画 +http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010002 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="黑莓动画" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E8%8E%93%E5%8A%A8%E7%94%BB.png",黑莓动画 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226935/1.m3u8 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="黑莓动画" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E8%8E%93%E5%8A%A8%E7%94%BB.png",黑莓动画 +http://[2409:8087:1a01:df::4007]:80/TVOD/88888888/224/3221225529/main.m3u8 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="黑莓动画" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E8%8E%93%E5%8A%A8%E7%94%BB.png",黑莓动画 +http://[2409:8087:1a0b:df::4006]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225662/index.m3u8 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="黑莓动画" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E8%8E%93%E5%8A%A8%E7%94%BB.png",黑莓动画 +http://[2409:8087:1a0b:df::4006]:80/ottrrs.hl.chinamobile.com/TVOD/88888888/224/3221225662/index.m3u8 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="黑莓动画" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E8%8E%93%E5%8A%A8%E7%94%BB.png",黑莓动画 +http://[2409:8087:74d9:21::6]/270000001128/9900000096/index.m3u8 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="黑莓动画" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E8%8E%93%E5%8A%A8%E7%94%BB.png",黑莓动画 +http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010002/1.m3u8 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="黑莓动画" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E8%8E%93%E5%8A%A8%E7%94%BB.png",黑莓动画 +http://ottrrs.hl.chinamobile.com/TVOD/88888888/224/3221225662/1.m3u8 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="黑莓动画" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E8%8E%93%E5%8A%A8%E7%94%BB.png",黑莓动画 +http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010002/index.m3u8 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="黑莓动画" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E8%8E%93%E5%8A%A8%E7%94%BB.png",黑莓动画 +http://[2409:8087:74d9:21::6]:80/270000001128/9900000096/index.m3u8 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="24H国漫热播" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/24H%E5%9B%BD%E6%BC%AB%E7%83%AD%E6%92%AD.png",24H国漫热播 +https://www.goodiptv.club/yy/1353937086 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="浙江少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%B0%91%E5%84%BF.png",浙江少儿 +https://qiniup-m-l.cztv.com/channels/lantian/channel008/1080p.m3u8 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="浙江少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%B0%91%E5%84%BF.png",浙江少儿 +https://ct-m-l.cztv.com/channels/lantian/channel008/1080p.m3u8 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="浙江少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%B0%91%E5%84%BF.png",浙江少儿 +https://ali-m-l.cztv.com/channels/lantian/channel008/1080p.m3u8 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="浙江少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%B0%91%E5%84%BF.png",浙江少儿 +http://ali-m-l.cztv.com/channels/lantian/channel008/1080p.m3u8 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="浙江少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%B0%91%E5%84%BF.png",浙江少儿 +http://ali-vl.cztv.com/channels/lantian/channel008/360p.m3u8 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="浙江少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%B0%91%E5%84%BF.png",浙江少儿 +http://ali-m-l.cztv.com/channels/lantian/channel008/1080p.m3u8?fbl= +#EXTINF:-1 group-title="🪁动画频道" tvg-name="浙江少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%B0%91%E5%84%BF.png",浙江少儿 +https://stream1.freetv.fun/zhe-jiang-shao-er-4.ctv +#EXTINF:-1 group-title="🪁动画频道" tvg-name="浙江少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%B0%91%E5%84%BF.png",浙江少儿 +https://stream1.freetv.fun/zhe-jiang-shao-er-4.m3u8 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="浙江少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%B0%91%E5%84%BF.png",浙江少儿 +https://stream1.freetv.fun/zhe-jiang-shao-er-6.ctv +#EXTINF:-1 group-title="🪁动画频道" tvg-name="浙江少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%B0%91%E5%84%BF.png",浙江少儿 +https://stream1.freetv.fun/zhe-jiang-shao-er-12.ctv +#EXTINF:-1 group-title="🪁动画频道" tvg-name="河北少儿科教" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E5%B0%91%E5%84%BF%E7%A7%91%E6%95%99.png",河北少儿科教 +https://stream1.freetv.fun/he-bei-shao-er-ke-jiao-6.ctv +#EXTINF:-1 group-title="🪁动画频道" tvg-name="河北少儿科教" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E5%B0%91%E5%84%BF%E7%A7%91%E6%95%99.png",河北少儿科教 +https://event.pull.hebtv.com/jishi/shaoerkejiao.m3u8 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="河北少儿科教" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E5%B0%91%E5%84%BF%E7%A7%91%E6%95%99.png",河北少儿科教 +https://stream1.freetv.fun/he-bei-shao-er-ke-jiao-2.m3u8 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="河北少儿科教" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E5%B0%91%E5%84%BF%E7%A7%91%E6%95%99.png",河北少儿科教 +https://stream1.freetv.fun/he-bei-shao-er-ke-jiao-12.m3u8 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="河北少儿科教" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E5%B0%91%E5%84%BF%E7%A7%91%E6%95%99.png",河北少儿科教 +https://stream1.freetv.fun/he-bei-shao-er-ke-jiao-7.ctv +#EXTINF:-1 group-title="🪁动画频道" tvg-name="河北少儿科教" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E5%B0%91%E5%84%BF%E7%A7%91%E6%95%99.png",河北少儿科教 +https://stream1.freetv.fun/he-bei-shao-er-ke-jiao-9.ctv +#EXTINF:-1 group-title="🪁动画频道" tvg-name="河北少儿科教" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E5%B0%91%E5%84%BF%E7%A7%91%E6%95%99.png",河北少儿科教 +https://stream1.freetv.fun/he-bei-shao-er-ke-jiao-8.ctv +#EXTINF:-1 group-title="🪁动画频道" tvg-name="河北少儿科教" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E5%B0%91%E5%84%BF%E7%A7%91%E6%95%99.png",河北少儿科教 +https://stream1.freetv.fun/he-bei-shao-er-ke-jiao-17.ctv +#EXTINF:-1 group-title="🪁动画频道" tvg-name="河北少儿科教" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E5%B0%91%E5%84%BF%E7%A7%91%E6%95%99.png",河北少儿科教 +https://stream1.freetv.fun/he-bei-shao-er-ke-jiao-3.m3u8 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="河北少儿科教" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E5%B0%91%E5%84%BF%E7%A7%91%E6%95%99.png",河北少儿科教 +rtmp://tv.pull.hebtv.com/jishi/shaoerkejiao?t=2510710360&k=1c62f2efbb83251f173978255f47079d +#EXTINF:-1 group-title="🪁动画频道" tvg-name="七龙珠" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%83%E9%BE%99%E7%8F%A0.png",七龙珠 +http://tv.666150.xyz/huya.php?id=11601966 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="海绵宝宝" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%B7%E7%BB%B5%E5%AE%9D%E5%AE%9D.png",海绵宝宝 +https://live.metshop.top/douyu/3949681 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="中华小当家" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%AD%E5%8D%8E%E5%B0%8F%E5%BD%93%E5%AE%B6.png",中华小当家 +https://live.metshop.top/huya/11342413 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="中华小当家" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%AD%E5%8D%8E%E5%B0%8F%E5%BD%93%E5%AE%B6.png",中华小当家 +https://live.iill.top/huya/11342413 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="中华小当家" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%AD%E5%8D%8E%E5%B0%8F%E5%BD%93%E5%AE%B6.png",中华小当家 +http://tv.666150.xyz/huya.php?id=11342413 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="猫和老鼠" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%8C%AB%E5%92%8C%E8%80%81%E9%BC%A0.png",猫和老鼠 +https://live.iill.top/huya/11352879 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="猫和老鼠" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%8C%AB%E5%92%8C%E8%80%81%E9%BC%A0.png",猫和老鼠 +http://live.iill.top/huya.php?id=11352879 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="猫和老鼠" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%8C%AB%E5%92%8C%E8%80%81%E9%BC%A0.png",猫和老鼠 +http://tv.666150.xyz/huya.php?id=11352879 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="经典动漫" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BB%8F%E5%85%B8%E5%8A%A8%E6%BC%AB.png",经典动漫 +http://luobo.bkpcp.top/yy/24180320 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="经典动漫" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BB%8F%E5%85%B8%E5%8A%A8%E6%BC%AB.png",经典动漫 +https://www.goodiptv.club/yy/22777075 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="经典动漫" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BB%8F%E5%85%B8%E5%8A%A8%E6%BC%AB.png",经典动漫 +https://www.goodiptv.club/yy/24180320 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="漫画解说" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%BC%AB%E7%94%BB%E8%A7%A3%E8%AF%B4.png",漫画解说 +http://luobo.bkpcp.top/yy/1382735568 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="漫画解说" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%BC%AB%E7%94%BB%E8%A7%A3%E8%AF%B4.png",漫画解说 +https://www.goodiptv.club/douyu/5907076 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="漫画解说" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%BC%AB%E7%94%BB%E8%A7%A3%E8%AF%B4.png",漫画解说 +https://judy.livednow.dpdns.org/yy/1382735568 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="漫画解说" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%BC%AB%E7%94%BB%E8%A7%A3%E8%AF%B4.png",漫画解说 +http://liushizupu.site:35455/yy/1382735568 +#EXTINF:-1 group-title="🎵音乐频道" tvg-name="CCTV-15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-15.png",CCTV-15 +http://hwrr.jx.chinamobile.com:8080/PLTV/88888888/224/3221225641/index.m3u8 +#EXTINF:-1 group-title="🎵音乐频道" tvg-name="CCTV-15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-15.png",CCTV-15 +https://www.freetv.top/migu/673168223.m3u8?migutoken=4e8d5766579c6bef231494cabd07e5b49d965804790214280c9791e4c331fd90311cb62ea43d3a1899229bfa57be4afe5a567b32a6b78153fc9a9801e28a39435e078b48c211e71d6083519be4 +#EXTINF:-1 group-title="🎵音乐频道" tvg-name="CCTV-15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-15.png",CCTV-15 +https://smart.pendy.dpdns.org/Smart.php?id=cctv15 +#EXTINF:-1 group-title="🎵音乐频道" tvg-name="CCTV-15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-15.png",CCTV-15 +http://[2409:8087:1a01:df::4033]:80/TVOD/88888888/224/3221226127/main.m3u8 +#EXTINF:-1 group-title="🎵音乐频道" tvg-name="CCTV-15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-15.png",CCTV-15 +http://[2409:8087:1a0a:df::404b]/ottrrs.hl.chinamobile.com/TVOD/88888888/224/3221225601/index.m3u8 +#EXTINF:-1 group-title="🎵音乐频道" tvg-name="CCTV-15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-15.png",CCTV-15 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221225601/index.m3u8 +#EXTINF:-1 group-title="🎵音乐频道" tvg-name="CCTV-15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-15.png",CCTV-15 +http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221225601/index.m3u8 +#EXTINF:-1 group-title="🎵音乐频道" tvg-name="CCTV-15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-15.png",CCTV-15 +http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225601/index.m3u8 +#EXTINF:-1 group-title="🎵音乐频道" tvg-name="CCTV-15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-15.png",CCTV-15 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226333/1.m3u8 +#EXTINF:-1 group-title="🎵音乐频道" tvg-name="CCTV-15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-15.png",CCTV-15 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226444/1.m3u8 +#EXTINF:-1 group-title="🎵音乐频道" tvg-name="风云音乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%A3%8E%E4%BA%91%E9%9F%B3%E4%B9%90.png",风云音乐 +http://[2409:8087:7001:20:2::3]/dbiptv.sn.chinamobile.com/PLTV/88888893/224/3221226953/index.m3u8 +#EXTINF:-1 group-title="🎵音乐频道" tvg-name="风云音乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%A3%8E%E4%BA%91%E9%9F%B3%E4%B9%90.png",风云音乐 +https://radio.0472.org/?id=641 +#EXTINF:-1 group-title="🎵音乐频道" tvg-name="音乐现场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9F%B3%E4%B9%90%E7%8E%B0%E5%9C%BA.png",音乐现场 +http://satellitepull.cnr.cn/live/wx32nmgyygb/playlist.m3u8 +#EXTINF:-1 group-title="🎵音乐频道" tvg-name="音乐现场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9F%B3%E4%B9%90%E7%8E%B0%E5%9C%BA.png",音乐现场 +https://satellitepull.cnr.cn/live/wx32nmgyygb/playlist.m3u8 +#EXTINF:-1 group-title="🎵音乐频道" tvg-name="音乐之声" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9F%B3%E4%B9%90%E4%B9%8B%E5%A3%B0.png",音乐之声 +http://a.live.hnradio.com/yypd/radio120k_yypd.m3u8?auth_key=1588751172-0-0-d97b858279c1c86650172b9913ea4af2 +#EXTINF:-1 group-title="🎵音乐频道" tvg-name="音乐之声" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9F%B3%E4%B9%90%E4%B9%8B%E5%A3%B0.png",音乐之声 +https://radio.0472.org/?id=641 +#EXTINF:-1 group-title="🕘️更新时间" tvg-name="2025-07-11 18:20:41" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/2025-07-11+18%3A20%3A41.png",2025-07-11 18:20:41 +http://ali-m-l.cztv.com/channels/lantian/channel15/1080p.m3u8 diff --git a/欧歌/lives/公众号【杰歌软件APP】如有收费,直接找退款!.txt b/欧歌/lives/公众号【杰歌软件APP】如有收费,直接找退款!.txt index ba1acca..4ef1132 100644 --- a/欧歌/lives/公众号【杰歌软件APP】如有收费,直接找退款!.txt +++ b/欧歌/lives/公众号【杰歌软件APP】如有收费,直接找退款!.txt @@ -1094,234 +1094,230 @@ webview://https://tv.cctv.com/live/cctv17/$央视网 #EXTINF:-1 group-title="🐲央卫频道" tvg-name="CCTV5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5%2B.png",CCTV5+ webview://https://tv.cctv.com/live/cctv5plus/$央视网 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-1.png",CCTV-1 -http://101.74.30.190:9901/tsfile/live/0001_1.m3u8?key=txiptv&playlive=1&authid=0 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-1.png",CCTV-1 -http://114.238.59.148:4000/rtp/239.49.8.19:9614 +http://ali-m-l.cztv.com/channels/lantian/channel15/1080p.m3u8 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-1.png",CCTV-1 http://114.238.59.2:4000/rtp/239.49.8.19:9614 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-1.png",CCTV-1 -http://ali-m-l.cztv.com/channels/lantian/channel15/1080p.m3u8 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-1.png",CCTV-1 http://60.26.181.220:4022/rtp/225.1.1.120:5002 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-1.png",CCTV-1 -http://111.193.239.245:9999/rtp/239.3.1.129:8008 +http://111.162.205.201:8686/rtp/225.1.1.120:5002 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-1.png",CCTV-1 -http://220.169.100.41:10087/udp/239.76.251.87:9000 +http://114.238.59.148:4000/rtp/239.49.8.19:9614 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-1.png",CCTV-1 -http://tcpsit.vicp.net:8811/udp/225.1.8.1:8008 +http://220.169.100.41:10087/udp/239.76.253.151:9000 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-1.png",CCTV-1 http://58.19.180.108:9981/stream/channelid/1198995092?profile=pass #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-1.png",CCTV-1 -http://221.13.233.107:9901/tsfile/live/0001_1.m3u8?key=txiptv&playlive=1&authid=0 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-2.png",CCTV-2 -http://221.13.233.107:9901/tsfile/live/0002_1.m3u8?key=txiptv&playlive=1&authid=0 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-2.png",CCTV-2 -http://123.160.232.254:9901/tsfile/live/0002_1.m3u8?key=txiptv&playlive=1&authid=0 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-2.png",CCTV-2 -http://nn.7x9d.cn/xzc2.php?ua=TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgNi4xOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTA2LjAuMC4wIFNhZmFyaS81MzcuMzY=&hls=aHR0cDovL3d3dy5kc2suY2MvcGhwL3N4Z2QucGhwP2lkPWNjdHYy -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-2.png",CCTV-2 -http://b.zgjok.com:35455/mgtv/631780532.m3u8 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-2.png",CCTV-2 -http://111.162.205.201:8686/rtp/225.1.1.133:5002 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-2.png",CCTV-2 -http://106.115.24.17:9901/tsfile/live/1001_1.m3u8?key=txiptv&playlive=1&authid=0 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-2.png",CCTV-2 -http://222.218.122.114:8188/udp/239.81.0.115:4056 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-2.png",CCTV-2 -http://tcpsit.vicp.net:8811/udp/225.1.8.2:8084 +http://111.193.239.245:9999/rtp/239.3.1.129:8008 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-1.png",CCTV-1 +http://php.jdshipin.com/TVOD/iptv.php?id=rthk33 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-1.png",CCTV-1 +http://iptv.huuc.edu.cn/hls/cctv1hd.m3u8 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-2.png",CCTV-2 http://60.26.181.220:4022/rtp/225.1.1.133:5002 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-2.png",CCTV-2 +http://219.141.44.245:8188/udp/238.255.2.11:5999 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-2.png",CCTV-2 +http://222.218.122.114:8188/udp/239.81.0.115:4056 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-2.png",CCTV-2 +http://omnix.cn:4000/udp/225.1.8.2:8084 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-2.png",CCTV-2 +http://nn.7x9d.cn/xzc2.php?ua=TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgNi4xOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTA2LjAuMC4wIFNhZmFyaS81MzcuMzY=&hls=aHR0cDovL3d3dy5kc2suY2MvcGhwL3N4Z2QucGhwP2lkPWNjdHYy +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-2.png",CCTV-2 +http://114.238.59.148:4000/rtp/239.49.8.50:9802 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-2.png",CCTV-2 http://27.18.157.225:2701/rtp/239.69.1.102:10250 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-2.png",CCTV-2 +http://php.jdshipin.com/TVOD/hljyd.php?id=3221225588 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-2.png",CCTV-2 +http://goo.bkpcp.top/mg/CCTV2 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-2.png",CCTV-2 +http://iptv.huuc.edu.cn/hls/cctv2hd.m3u8 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-3" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-3.png",CCTV-3 -http://123.160.232.254:9901/tsfile/live/0003_1.m3u8?key=txiptv&playlive=1&authid=0 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-3" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-3.png",CCTV-3 -http://221.13.233.107:9901/tsfile/live/0003_1.m3u8?key=txiptv&playlive=1&authid=0 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-3" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-3.png",CCTV-3 -http://111.162.205.201:8686/rtp/225.1.1.158:5002 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-3" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-3.png",CCTV-3 -http://106.115.24.17:9901/tsfile/live/1002_1.m3u8?key=txiptv&playlive=1&authid=0 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-3" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-3.png",CCTV-3 -http://171.105.180.92:4022/udp/239.81.0.231:4056 +http://b.zgjok.com:35455/mgtv/624878271.m3u8 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-3" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-3.png",CCTV-3 http://60.26.181.220:4022/rtp/225.1.1.158:5002 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-3" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-3.png",CCTV-3 +http://111.162.205.201:8686/rtp/225.1.1.158:5002 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-3" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-3.png",CCTV-3 +http://171.15.18.199:8180/TV00000000000000000003@HHZT +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-3" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-3.png",CCTV-3 http://111.193.239.245:9999/rtp/239.3.1.172:8001 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-3" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-3.png",CCTV-3 -http://tcpsit.vicp.net:8811/udp/225.1.8.88:8000 +http://180.165.29.204:4022/rtp/239.45.1.68:5140 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-3" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-3.png",CCTV-3 -http://111.196.134.250:20000/udp/239.3.1.172:8001 +http://php.jdshipin.com/TVOD/hljyd.php?id=3221226021 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-3" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-3.png",CCTV-3 -http://101.74.30.190:9901/tsfile/live/0003_1.m3u8?key=txiptv&playlive=1&authid=0 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-4.png",CCTV-4 -http://123.160.232.254:9901/tsfile/live/0004_1.m3u8?key=txiptv&playlive=1&authid=0 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-4.png",CCTV-4 -http://111.162.205.201:8686/rtp/225.1.1.150:5002 +http://iptv.huuc.edu.cn/hls/cctv3hd.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-3" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-3.png",CCTV-3 +https://smart.pendy.dpdns.org/Smart.php?id=cctv3 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-3" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-3.png",CCTV-3 +http://[2409:8087:1a01:df::4041]/TVOD/88888888/224/3221225799/main.m3u8 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-4.png",CCTV-4 http://60.26.181.220:4022/rtp/225.1.1.150:5002 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-4.png",CCTV-4 -http://221.13.233.107:9901/tsfile/live/0004_1.m3u8?key=txiptv&playlive=1&authid=0 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-4.png",CCTV-4 -http://111.196.134.250:20000/udp/239.3.1.105:8092 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-4.png",CCTV-4 -http://121.29.141.167:4022/rtp/239.253.92.251:6141 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-4.png",CCTV-4 https://global.cgtn.cicc.media.caton.cloud/master/cgtn-america.m3u8 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-4.png",CCTV-4 -http://180.165.28.24:4022/rtp/239.45.0.2:5140 +http://101.74.30.190:9901/tsfile/live/0004_1.m3u8?key=txiptv&playlive=1&authid=0 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-4.png",CCTV-4 http://180.165.29.204:4022/rtp/239.45.0.2:5140 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-4.png",CCTV-4 http://php.jdshipin.com/TVOD/hljyd.php?id=3221226428 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5.png",CCTV-5 -http://123.160.232.254:9901/tsfile/live/0005_1.m3u8?key=txiptv&playlive=1&authid=0 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5.png",CCTV-5 -http://111.162.205.201:8686/rtp/225.1.1.160:5002 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5.png",CCTV-5 -http://101.74.30.190:9901/tsfile/live/0005_1.m3u8?key=txiptv&playlive=1&authid=0 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5.png",CCTV-5 -http://116.234.0.89:4022/rtp/239.45.1.69:5140 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5.png",CCTV-5 -http://220.169.100.41:10087/udp/239.76.246.155:1234 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5.png",CCTV-5 -http://tcpsit.vicp.net:8811/udp/225.1.8.89:8000 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-4.png",CCTV-4 +http://z.b.bkpcp.top/m.php?id=CCTV-4国际 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-4.png",CCTV-4 +http://iptv.huuc.edu.cn/hls/cctv4hd.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-4.png",CCTV-4 +https://www.freetv.top/migu/631780421.m3u8?migutoken=fefc6a44400a0dd448699ae0ce3d6e2c5a0f49b8d48adb36e747c4fbab039337eb3244f9951acbddaf26b7bf51597a7d1b43c8845e67fd5914ece875dcad325bb388200bc0f12fdff727d03e2d +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-4.png",CCTV-4 +https://smart.pendy.dpdns.org/Smart.php?id=cctv4 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-4.png",CCTV-4 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221226007/index.m3u8 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5.png",CCTV-5 https://ldcctvwbcdbd.a.bdydns.com/ldcctvwbcd/cdrmldcctv5plus_1/index.m3u8 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5.png",CCTV-5 http://60.26.181.220:4022/rtp/225.1.1.160:5002 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5.png",CCTV-5 -http://111.196.134.250:20000/udp/239.3.1.173:8001 +http://116.234.0.89:4022/rtp/239.45.1.69:5140 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5.png",CCTV-5 +http://116.237.148.215:8881/rtp/239.45.1.69:5140 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5.png",CCTV-5 +http://omnix.cn:4000/udp/225.1.8.89:8000 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5.png",CCTV-5 +http://111.162.205.201:8686/rtp/225.1.1.160:5002 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5.png",CCTV-5 http://180.165.29.204:4022/rtp/239.45.1.69:5140 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5%2B.png",CCTV-5+ -http://111.162.205.201:8686/rtp/225.1.1.121:5002 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5%2B.png",CCTV-5+ -http://114.238.59.148:4000/rtp/239.49.8.18:9610 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5.png",CCTV-5 +http://php.jdshipin.com/TVOD/hljyd.php?id=3221226019 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5.png",CCTV-5 +http://iptv.huuc.edu.cn/hls/cctv5hd.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5.png",CCTV-5 +https://www.freetv.top/migu/641886683.m3u8?migutoken=3e5c01f93922de8d1c940fe15bb47349b27e8f7a2e624dde1a83dff3b2a80f58b7624151a3a4d00488edee34f202818557340903382fae02bb754084eb942bd50e59061df36fab62fb5b908903 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5%2B.png",CCTV-5+ http://60.26.181.220:4022/rtp/225.1.1.121:5002 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5%2B.png",CCTV-5+ -http://111.193.239.245:9999/rtp/239.3.1.130:8004 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5%2B.png",CCTV-5+ -http://111.196.134.250:20000/udp/239.3.1.130:8004 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5%2B.png",CCTV-5+ -http://101.74.30.190:9901/tsfile/live/0016_1.m3u8?key=txiptv&playlive=1&authid=0 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5%2B.png",CCTV-5+ http://omnix.cn:4000/udp/225.1.8.20:8004 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5%2B.png",CCTV-5+ +http://114.226.231.231:8787/rtp/239.49.8.18:9610 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5%2B.png",CCTV-5+ +http://111.162.205.201:8686/rtp/225.1.1.121:5002 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5%2B.png",CCTV-5+ +http://111.193.239.245:9999/rtp/239.3.1.130:8004 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5%2B.png",CCTV-5+ http://php.jdshipin.com/TVOD/hljyd.php?id=3221225603 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5%2B.png",CCTV-5+ https://www.freetv.top/migu/641886773.m3u8?migutoken=03a1b82e35e58cd89a95034ecb29e77e50493397000ec2b1e4d1ce59af01e6420d6dbc068c8230ec03be3a35a20eed8714e0959e3570a08713a7a2e8d86085eabf8f1aa85744c80c38343988b2 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5%2B.png",CCTV-5+ http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221225603/index.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5%2B.png",CCTV-5+ +https://smart.pendy.dpdns.org/Smart.php?id=cctv5plus +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5%2B.png",CCTV-5+ +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225603/index.m3u8 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-6" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-6.png",CCTV-6 http://nn.7x9d.cn/xzc2.php?ua=TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgNi4xOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTA2LjAuMC4wIFNhZmFyaS81MzcuMzY=&hls=aHR0cDovL3d3dy5kc2suY2MvcGhwL3N4Z2QucGhwP2lkPWNjdHY2 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-6" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-6.png",CCTV-6 -http://123.160.232.254:9901/tsfile/live/0006_1.m3u8?key=txiptv&playlive=1&authid=0 +http://60.26.181.220:4022/rtp/225.1.1.195:5002 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-6" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-6.png",CCTV-6 http://111.162.205.201:8686/rtp/225.1.1.195:5002 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-6" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-6.png",CCTV-6 -http://121.29.141.167:4022/rtp/239.253.92.193:6058 +http://219.141.44.245:8188/udp/238.255.2.135:5999 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-6" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-6.png",CCTV-6 http://111.193.239.245:9999/rtp/239.3.1.174:8001 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-6" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-6.png",CCTV-6 -http://219.141.44.245:8188/udp/238.255.2.135:5999 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-6" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-6.png",CCTV-6 -http://111.196.134.250:20000/udp/239.3.1.174:8001 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-6" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-6.png",CCTV-6 http://180.165.29.204:4022/rtp/239.45.1.70:5140 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-6" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-6.png",CCTV-6 -http://60.26.181.220:4022/rtp/225.1.1.195:5002 +http://php.jdshipin.com/TVOD/hljyd.php?id=3221226010 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-6" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-6.png",CCTV-6 -http://101.74.30.190:9901/tsfile/live/0006_1.m3u8?key=txiptv&playlive=1&authid=0 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-7" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-7.png",CCTV-7 -http://nn.7x9d.cn/xzc2.php?ua=TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgNi4xOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTA2LjAuMC4wIFNhZmFyaS81MzcuMzY=&hls=aHR0cDovL3d3dy5kc2suY2MvcGhwL3N4Z2QucGhwP2lkPWNjdHY3 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-7" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-7.png",CCTV-7 -http://123.160.232.254:9901/tsfile/live/0007_1.m3u8?key=txiptv&playlive=1&authid=0 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-7" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-7.png",CCTV-7 -http://111.162.205.201:8686/rtp/225.1.1.138:5002 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-7" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-7.png",CCTV-7 -http://171.35.84.178:8688/udp/239.252.220.185:5140 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-7" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-7.png",CCTV-7 -http://221.13.233.107:9901/tsfile/live/0007_1.m3u8?key=txiptv&playlive=1&authid=0 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-7" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-7.png",CCTV-7 -http://tcpsit.vicp.net:8811/udp/225.1.8.7:8104 +http://iptv.huuc.edu.cn/hls/cctv6hd.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-6" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-6.png",CCTV-6 +https://smart.pendy.dpdns.org/Smart.php?id=cctv6 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-6" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-6.png",CCTV-6 +http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/TVOD/88888888/224/3221226010/index.m3u8 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-7" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-7.png",CCTV-7 http://60.26.181.220:4022/rtp/225.1.1.138:5002 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-7" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-7.png",CCTV-7 +http://111.162.205.201:8686/rtp/225.1.1.138:5002 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-7" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-7.png",CCTV-7 +http://123.160.232.254:9901/tsfile/live/0007_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-7" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-7.png",CCTV-7 http://219.141.44.245:8188/udp/238.255.2.12:5999 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-7" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-7.png",CCTV-7 -http://111.196.134.250:20000/udp/239.3.1.61:8104 +http://omnix.cn:4000/udp/225.1.8.7:8104 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-7" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-7.png",CCTV-7 -http://101.74.30.190:9901/tsfile/live/0007_1.m3u8?key=txiptv&playlive=1&authid=0 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-8" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-8.png",CCTV-8 -http://123.160.232.254:9901/tsfile/live/0008_1.m3u8?key=txiptv&playlive=1&authid=0 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-8" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-8.png",CCTV-8 -http://111.162.205.201:8686/rtp/225.1.1.196:5002 +http://171.15.18.199:8180/TV00000000000000000007@HHZT +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-7" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-7.png",CCTV-7 +http://php.jdshipin.com/TVOD/hljyd.php?id=3221225733 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-7" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-7.png",CCTV-7 +http://goo.bkpcp.top/mg/CCTV7 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-7" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-7.png",CCTV-7 +http://iptv.huuc.edu.cn/hls/cctv7hd.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-7" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-7.png",CCTV-7 +https://smart.pendy.dpdns.org/Smart.php?id=cctv7 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-8" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-8.png",CCTV-8 http://60.26.181.220:4022/rtp/225.1.1.196:5002 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-8" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-8.png",CCTV-8 http://219.141.44.245:8188/udp/238.255.2.136:5999 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-8" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-8.png",CCTV-8 -http://111.193.239.245:9999/rtp/239.3.1.175:8001 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-8" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-8.png",CCTV-8 -http://111.196.134.250:20000/udp/239.3.1.175:8001 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-8" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-8.png",CCTV-8 -http://101.74.30.190:9901/tsfile/live/0008_1.m3u8?key=txiptv&playlive=1&authid=0 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-8" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-8.png",CCTV-8 -http://tcpsit.vicp.net:8811/udp/225.1.8.85:8000 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-8" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-8.png",CCTV-8 http://171.15.18.199:8180/TV00000000000000000008@HHZT #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-8" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-8.png",CCTV-8 +http://111.193.239.245:9999/rtp/239.3.1.175:8001 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-8" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-8.png",CCTV-8 http://php.jdshipin.com/TVOD/hljyd.php?id=3221226008 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-9" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-9.png",CCTV-9 -http://123.160.232.254:9901/tsfile/live/0009_1.m3u8?key=txiptv&playlive=1&authid=0 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-9" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-9.png",CCTV-9 -http://221.13.233.107:9901/tsfile/live/1005_1.m3u8?key=txiptv&playlive=1&authid=0 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-9" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-9.png",CCTV-9 -http://111.162.205.201:8686/rtp/225.1.1.119:5002 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-9" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-9.png",CCTV-9 -http://114.238.59.148:4000/rtp/239.49.8.53:9814 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-9" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-9.png",CCTV-9 -http://220.169.100.41:10087/udp/239.76.246.159:1234 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-8" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-8.png",CCTV-8 +http://goo.bkpcp.top/mg/cctv8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-8" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-8.png",CCTV-8 +http://iptv.huuc.edu.cn/hls/cctv8hd.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-8" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-8.png",CCTV-8 +https://www.freetv.top/migu/624878356.m3u8?migutoken=170b73b07e0cf0d307afea3545da5b9609d7c15461a2f4ac0f43634101df9baf391a446b91e5f84446b6a3b0934bb4730e2f3c4a32a565f904f22c8ff745a094d45dfd49c54f31b0b78156a080 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-8" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-8.png",CCTV-8 +http://[2409:8087:1a01:df::4051]:80/TVOD/88888888/224/3221225795/main.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-8" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-8.png",CCTV-8 +https://smart.pendy.dpdns.org/Smart.php?id=cctv8hd #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-9" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-9.png",CCTV-9 http://60.26.181.220:4022/rtp/225.1.1.119:5002 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-9" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-9.png",CCTV-9 +http://111.162.205.201:8686/rtp/225.1.1.119:5002 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-9" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-9.png",CCTV-9 +http://114.226.231.231:8787/rtp/239.49.8.53:9814 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-9" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-9.png",CCTV-9 http://219.141.44.245:8188/udp/238.255.2.155:5999 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-9" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-9.png",CCTV-9 -http://111.196.134.250:20000/udp/239.3.1.62:8112 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-9" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-9.png",CCTV-9 -http://101.74.30.190:9901/tsfile/live/0009_1.m3u8?key=txiptv&playlive=1&authid=0 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-9" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-9.png",CCTV-9 http://php.jdshipin.com/TVOD/hljyd.php?id=3221225734 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-10" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-10.png",CCTV-10 -http://123.160.232.254:9901/tsfile/live/0010_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-9" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-9.png",CCTV-9 +http://iptv.huuc.edu.cn/hls/cctv9hd.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-9" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-9.png",CCTV-9 +https://www.freetv.top/migu/673168140.m3u8?migutoken=749c49cdc31bb395e0349adc81010adc8707f80e51e9d3491ad67bfa71388ad768f7b52c8064338a7ef45eb7ddb192fb4937b21681c82499a0c16653ad9a9bec98ff5ce6ab183e4029bbdf269e +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-9" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-9.png",CCTV-9 +https://smart.pendy.dpdns.org/Smart.php?id=cctv9hd +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-9" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-9.png",CCTV-9 +http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/TVOD/88888888/224/3221225734/index.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-9" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-9.png",CCTV-9 +http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/yinhe/88888888/224/3221225734/index.m3u8 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-10" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-10.png",CCTV-10 http://60.26.181.220:4022/rtp/225.1.1.140:5002 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-10" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-10.png",CCTV-10 -http://111.162.205.201:8686/rtp/225.1.1.140:5002 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-10" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-10.png",CCTV-10 -http://121.29.141.167:4022/rtp/239.253.92.196:6061 +http://171.15.18.199:8180/TV00000000000000000010@HHZT #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-10" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-10.png",CCTV-10 http://114.226.231.231:8787/rtp/239.49.8.54:9818 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-10" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-10.png",CCTV-10 -http://111.196.134.250:20000/udp/239.3.1.63:8116 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-10" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-10.png",CCTV-10 -http://171.15.18.199:8180/TV00000000000000000010@HHZT -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-10" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-10.png",CCTV-10 -http://101.74.30.190:9901/tsfile/live/0010_1.m3u8?key=txiptv&playlive=1&authid=0 +http://111.162.205.201:8686/rtp/225.1.1.140:5002 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-10" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-10.png",CCTV-10 http://z.b.bkpcp.top/m.php?id=CCTV-10科教科教 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-10" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-10.png",CCTV-10 http://goo.bkpcp.top/mg/cctv10 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-11" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-11.png",CCTV-11 -http://123.160.232.254:9901/tsfile/live/0011_1.m3u8?key=txiptv&playlive=1&authid=0 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-11" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-11.png",CCTV-11 -http://106.115.24.19:9901/tsfile/live/0011_1.m3u8?key=txiptv&playlive=1&authid=0 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-11" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-11.png",CCTV-11 -http://111.193.239.245:9999/rtp/239.3.1.152:8120 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-10" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-10.png",CCTV-10 +http://iptv.huuc.edu.cn/hls/cctv10hd.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-10" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-10.png",CCTV-10 +https://smart.pendy.dpdns.org/Smart.php?id=cctv10hd +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-10" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-10.png",CCTV-10 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221225730/index.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-10" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-10.png",CCTV-10 +http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221225730/index.m3u8 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-11" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-11.png",CCTV-11 http://60.26.181.220:4022/rtp/225.1.2.192:5002 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-11" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-11.png",CCTV-11 +http://111.193.239.245:9999/rtp/239.3.1.152:8120 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-11" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-11.png",CCTV-11 http://php.jdshipin.com/TVOD/hljyd.php?id=3221226565 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-11" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-11.png",CCTV-11 http://iptv.huuc.edu.cn/hls/cctv11hd.m3u8 @@ -1333,72 +1329,70 @@ http://[2409:8087:1a0a:df::404b]/ottrrs.hl.chinamobile.com/TVOD/88888888/224/322 http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221225597/index.m3u8 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-11" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-11.png",CCTV-11 http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/yinhe/88888888/224/3221225597/index.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-11" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-11.png",CCTV-11 +http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221225597/index.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-11" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-11.png",CCTV-11 +http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225597/index.m3u8 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-12" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-12.png",CCTV-12 -http://123.160.232.254:9901/tsfile/live/0012_1.m3u8?key=txiptv&playlive=1&authid=0 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-12" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-12.png",CCTV-12 -http://114.238.59.148:4000/rtp/239.49.8.55:9822 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-12" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-12.png",CCTV-12 -http://121.29.141.167:4022/rtp/239.253.92.197:6062 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-12" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-12.png",CCTV-12 -http://220.169.100.41:10087/udp/239.76.246.162:1234 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-12" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-12.png",CCTV-12 -http://111.162.205.201:8686/rtp/225.1.1.142:5002 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-12" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-12.png",CCTV-12 -http://220.169.100.41:10087/udp/239.76.253.162:9000 +http://114.226.231.231:8787/rtp/239.49.8.55:9822 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-12" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-12.png",CCTV-12 http://60.26.181.220:4022/rtp/225.1.1.142:5002 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-12" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-12.png",CCTV-12 -http://101.74.30.190:9901/tsfile/live/0012_1.m3u8?key=txiptv&playlive=1&authid=0 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-12" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-12.png",CCTV-12 http://php.jdshipin.com/TVOD/hljyd.php?id=3221225731 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-12" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-12.png",CCTV-12 http://z.b.bkpcp.top/m.php?id=CCTV-12社会与法社会与法 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-13" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-13.png",CCTV-13 -http://123.160.232.254:9901/tsfile/live/0013_1.m3u8?key=txiptv&playlive=1&authid=0 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-13" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-13.png",CCTV-13 -http://b.zgjok.com:35455/mgtv/608807423.m3u8 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-13" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-13.png",CCTV-13 -http://124.162.19.248:4022/udp/225.0.4.219:7980 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-12" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-12.png",CCTV-12 +http://iptv.huuc.edu.cn/hls/cctv12hd.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-12" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-12.png",CCTV-12 +https://www.freetv.top/migu/673168185.m3u8?migutoken=37acadb43b1d7932b0a1e8a4f2d01a06b42a10c31f3ccb417bae200ac3028f30a8110509f2cd6cd130aee4b21c85693aa49817f3381e4d28e140d8db1a20b6fecea22fec17a70ff1341efe6081 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-12" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-12.png",CCTV-12 +https://smart.pendy.dpdns.org/Smart.php?id=cctv12 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-12" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-12.png",CCTV-12 +http://[2409:8087:1:20:20::29]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226228/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7E2knJCFLHz_HqfBZXNGeA1A%7E_eNUb +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-12" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-12.png",CCTV-12 +http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225731/index.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-12" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-12.png",CCTV-12 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221225731/index.m3u8 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-13" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-13.png",CCTV-13 http://60.26.181.220:4022/rtp/225.1.2.193:5002 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-13" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-13.png",CCTV-13 -http://tcpsit.vicp.net:8811/udp/225.1.8.168:8130 +http://b.zgjok.com:35455/mgtv/608807423.m3u8 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-13" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-13.png",CCTV-13 http://111.162.205.201:8686/rtp/225.1.2.193:5002 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-13" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-13.png",CCTV-13 +http://124.162.19.248:4022/udp/225.0.4.219:7980 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-13" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-13.png",CCTV-13 http://171.15.18.199:8180/TV00000000000000000013@HHZT #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-13" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-13.png",CCTV-13 http://home.yulei.online:9999/rtp/226.0.2.165:9232 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-13" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-13.png",CCTV-13 -http://101.74.30.190:9901/tsfile/live/0013_1.m3u8?key=txiptv&playlive=1&authid=0 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-13" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-13.png",CCTV-13 https://event.pull.hebtv.com/jishi/cp1.m3u8 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-14" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-14.png",CCTV-14 -http://123.160.232.254:9901/tsfile/live/0014_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-13" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-13.png",CCTV-13 +http://z.b.bkpcp.top/m.php?id=cctv13 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-13" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-13.png",CCTV-13 +http://j.x.bkpcp.top/jx/CCTV13HD +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-13" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-13.png",CCTV-13 +http://ali-m-l.cztv.com/channels/lantian/channel21/1080p.m3u8 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-14" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-14.png",CCTV-14 http://116.237.148.215:8881/rtp/239.45.3.23:5140 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-14" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-14.png",CCTV-14 -http://111.193.239.245:9999/rtp/239.3.1.65:8132 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-14" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-14.png",CCTV-14 http://27.18.157.225:2701/rtp/239.69.1.107:10280 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-14" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-14.png",CCTV-14 http://60.26.181.220:4022/rtp/225.1.1.144:5002 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-14" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-14.png",CCTV-14 -http://111.196.134.250:20000/udp/239.3.1.65:8132 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-14" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-14.png",CCTV-14 http://171.15.18.199:8180/TV00000000000000000014@HHZT #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-14" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-14.png",CCTV-14 -http://101.74.30.190:9901/tsfile/live/0014_1.m3u8?key=txiptv&playlive=1&authid=0 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-14" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-14.png",CCTV-14 -http://114.238.59.148:4000/rtp/239.49.8.56:9826 +http://111.193.239.245:9999/rtp/239.3.1.65:8132 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-14" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-14.png",CCTV-14 http://php.jdshipin.com/TVOD/hljyd.php?id=3221225732 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-15.png",CCTV-15 -http://123.160.232.254:9901/tsfile/live/0015_1.m3u8?key=txiptv&playlive=1&authid=0 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-15.png",CCTV-15 -http://111.162.205.201:8686/rtp/225.1.2.194:5002 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-15.png",CCTV-15 -http://tcpsit.vicp.net:8811/udp/225.1.8.74:8136 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-14" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-14.png",CCTV-14 +http://iptv.huuc.edu.cn/hls/cctv14hd.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-14" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-14.png",CCTV-14 +https://www.freetv.top/migu/624878440.m3u8?migutoken=239edad94ac0bbff14f123c7f8996ed7639110bd6cf64ec8ba8cf85842224956d452ec8b683385cb27f8a7685224a03e3aa4d914b8fe33249da9df699351b105c795452d03f2be0a1f1e39adb0 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-14" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-14.png",CCTV-14 +https://event.pull.hebtv.com/jishi/cp2.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-14" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-14.png",CCTV-14 +https://smart.pendy.dpdns.org/Smart.php?id=cctv14 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-15.png",CCTV-15 http://60.26.181.220:4022/rtp/225.1.2.194:5002 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-15.png",CCTV-15 @@ -1413,38 +1407,42 @@ https://smart.pendy.dpdns.org/Smart.php?id=cctv15 http://[2409:8087:1a01:df::4033]:80/TVOD/88888888/224/3221226127/main.m3u8 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-15.png",CCTV-15 http://[2409:8087:1a0a:df::404b]/ottrrs.hl.chinamobile.com/TVOD/88888888/224/3221225601/index.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-15.png",CCTV-15 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221225601/index.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-15.png",CCTV-15 +http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221225601/index.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-15.png",CCTV-15 +http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225601/index.m3u8 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-16" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-16.png",CCTV-16 -http://171.35.84.178:8688/udp/239.252.220.237:5140 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-16" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-16.png",CCTV-16 -http://36.24.204.5:8888/udp/233.50.201.192:5140 +http://60.26.181.220:4022/rtp/225.1.2.237:5002 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-16" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-16.png",CCTV-16 http://117.12.149.38:4022/rtp/225.1.2.237:5002 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-16" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-16.png",CCTV-16 -http://111.162.205.201:8686/rtp/225.1.2.237:5002 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-16" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-16.png",CCTV-16 http://27.18.157.225:2701/rtp/239.69.1.247:11124 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-16" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-16.png",CCTV-16 +http://111.162.205.201:8686/rtp/225.1.2.237:5002 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-16" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-16.png",CCTV-16 http://111.193.239.245:9999/rtp/239.3.1.184:8001 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-16" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-16.png",CCTV-16 -http://111.196.134.250:20000/udp/239.3.1.184:8001 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-16" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-16.png",CCTV-16 -http://60.26.181.220:4022/rtp/225.1.2.237:5002 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-16" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-16.png",CCTV-16 http://php.jdshipin.com/TVOD/hljyd.php?id=3221226100 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-16" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-16.png",CCTV-16 http://livetv.wqwqwq.sbs/gaoma/cctv4k16.m3u8 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-17" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-17.png",CCTV-17 -http://111.162.205.201:8686/rtp/225.1.2.52:5002 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-16" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-16.png",CCTV-16 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221226100/index.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-16" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-16.png",CCTV-16 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/yinhe/88888888/224/3221226100/index.m3u8 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-16" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-16.png",CCTV-16 +http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226100/index.m3u8 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-17" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-17.png",CCTV-17 http://60.26.181.220:4022/rtp/225.1.2.52:5002 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-17" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-17.png",CCTV-17 -http://111.193.239.245:9999/rtp/239.3.1.151:8144 -#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-17" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-17.png",CCTV-17 http://b.zgjok.com:35455/mgtv/673168256.m3u8 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-17" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-17.png",CCTV-17 -http://180.165.29.204:4022/rtp/239.45.3.52:5140 +http://111.193.239.245:9999/rtp/239.3.1.151:8144 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-17" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-17.png",CCTV-17 -http://114.238.59.148:4000/rtp/239.49.8.52:9810 +http://218.1.137.125:4022/rtp/239.45.3.52:5140 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-17" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-17.png",CCTV-17 +http://180.165.29.204:4022/rtp/239.45.3.52:5140 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-17" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-17.png",CCTV-17 http://php.jdshipin.com/TVOD/hljyd.php?id=3221225765 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-17" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-17.png",CCTV-17 @@ -1453,6 +1451,8 @@ http://[2409:8087:1a01:df::4025]:80/TVOD/88888888/224/3221225708/main.m3u8 http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225765/1.m3u8?icpid=88888888&from=1&hms_devid=1012&vqe=3 #EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-17" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-17.png",CCTV-17 http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221225765/index.m3u8CCTV1 +#EXTINF:-1 group-title="📺央视频道" tvg-name="CCTV-17" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-17.png",CCTV-17 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221225765/index.m3u8 #EXTINF:-1 group-title="📺央视频道" tvg-name="CETV1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CETV1.png",CETV1 http://[2409:8087:1a0b:df::4020]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225652/index.m3u8 #EXTINF:-1 group-title="📺央视频道" tvg-name="CETV1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CETV1.png",CETV1 @@ -1480,15 +1480,13 @@ http://otttv.bj.chinamobile.com/PLTV/88888888/224/3221226997/1.m3u8?GuardEncType #EXTINF:-1 group-title="📡卫视频道" tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E5%8D%AB%E8%A7%86.png",广东卫视 http://satellitepull.cnr.cn/live/wxgdws/playlist.m3u8 #EXTINF:-1 group-title="📡卫视频道" tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E5%8D%AB%E8%A7%86.png",广东卫视 -http://123.160.232.254:9901/tsfile/live/0125_1.m3u8?key=txiptv&playlive=1&authid=0 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E5%8D%AB%E8%A7%86.png",广东卫视 -http://114.238.59.148:4000/rtp/239.49.8.13:9422 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E5%8D%AB%E8%A7%86.png",广东卫视 http://60.26.181.220:4022/rtp/225.1.1.116:5002 #EXTINF:-1 group-title="📡卫视频道" tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E5%8D%AB%E8%A7%86.png",广东卫视 +http://171.15.18.199:8180/TV00000000000000000031@HHZT +#EXTINF:-1 group-title="📡卫视频道" tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E5%8D%AB%E8%A7%86.png",广东卫视 http://111.193.239.245:9999/rtp/239.3.1.142:8048 #EXTINF:-1 group-title="📡卫视频道" tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E5%8D%AB%E8%A7%86.png",广东卫视 -http://171.15.18.199:8180/TV00000000000000000031@HHZT +http://218.1.137.125:4022/rtp/239.45.3.230:5140 #EXTINF:-1 group-title="📡卫视频道" tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E5%8D%AB%E8%A7%86.png",广东卫视 http://z.b.bkpcp.top/m.php?id=gdws #EXTINF:-1 group-title="📡卫视频道" tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E5%8D%AB%E8%A7%86.png",广东卫视 @@ -1497,6 +1495,8 @@ http://j.x.bkpcp.top/jx/GUANGDHD http://goo.bkpcp.top/mg/gdws #EXTINF:-1 group-title="📡卫视频道" tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E5%8D%AB%E8%A7%86.png",广东卫视 http://iptv.huuc.edu.cn/hls/gdhd.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E4%B8%9C%E5%8D%AB%E8%A7%86.png",广东卫视 +http://dsj.motem.top:8880/bptv/10000100000000050000000003873459.m3u8 #EXTINF:-1 group-title="📡卫视频道" tvg-name="香港卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%A6%99%E6%B8%AF%E5%8D%AB%E8%A7%86.png",香港卫视 http://cctvtxyh5c.liveplay.myqcloud.com/cstv/xianggangweishi_2/index.m3u8 #EXTINF:-1 group-title="📡卫视频道" tvg-name="香港卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%A6%99%E6%B8%AF%E5%8D%AB%E8%A7%86.png",香港卫视 @@ -1512,38 +1512,32 @@ https://stream1.freetv.fun/xiang-gang-wei-shi-13.m3u8 #EXTINF:-1 group-title="📡卫视频道" tvg-name="香港卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%A6%99%E6%B8%AF%E5%8D%AB%E8%A7%86.png",香港卫视 https://stream1.freetv.fun/xiang-gang-wei-shi-8.m3u8 #EXTINF:-1 group-title="📡卫视频道" tvg-name="香港卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%A6%99%E6%B8%AF%E5%8D%AB%E8%A7%86.png",香港卫视 -https://stream1.freetv.fun/5335c88a9a7d8b74173b491f480d4f94e8d3bd596af54478106aa2399e6c7917.ctv -#EXTINF:-1 group-title="📡卫视频道" tvg-name="浙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",浙江卫视 -http://123.160.232.254:9901/tsfile/live/0124_1.m3u8?key=txiptv&playlive=1&authid=0 +https://stream1.freetv.fun/c751876ae5ceaa0d82b5cf2badc152342aa92a4b45bf504d12ee45966b2fc644.ctv #EXTINF:-1 group-title="📡卫视频道" tvg-name="浙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",浙江卫视 http://139.155.142.13:9177/miguHD.php?id=浙江卫视 #EXTINF:-1 group-title="📡卫视频道" tvg-name="浙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",浙江卫视 -http://joyznm.i234.me:20000/udp/239.3.1.137:8036 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="浙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",浙江卫视 http://27.18.157.225:2701/rtp/239.254.96.143:8932 #EXTINF:-1 group-title="📡卫视频道" tvg-name="浙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",浙江卫视 http://114.226.231.231:8787/rtp/239.49.8.20:9618 #EXTINF:-1 group-title="📡卫视频道" tvg-name="浙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",浙江卫视 http://60.26.181.220:4022/rtp/225.1.1.112:5002 #EXTINF:-1 group-title="📡卫视频道" tvg-name="浙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",浙江卫视 -http://111.162.205.201:8686/rtp/225.1.1.112:5002 +http://joyznm.i234.me:20000/udp/239.3.1.137:8036 #EXTINF:-1 group-title="📡卫视频道" tvg-name="浙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",浙江卫视 http://171.15.18.199:8180/TV00000000000000000020@HHZT #EXTINF:-1 group-title="📡卫视频道" tvg-name="浙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",浙江卫视 http://zwebl02.cztv.com/live/channel011080P.m3u8?auth_key=2524708799-0-0-9a1229d8b9d311024ebea08c3fb1d63f #EXTINF:-1 group-title="📡卫视频道" tvg-name="浙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",浙江卫视 http://zhfivel02.cztv.com/channel01/1080p.m3u8?auth_key=2524708799-0-0-adde67b1b344fdd5e512f30a4ae31915 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="湖南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%8D%AB%E8%A7%86.png",湖南卫视 -http://123.160.232.254:9901/tsfile/live/0128_1.m3u8?key=txiptv&playlive=1&authid=0 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="湖南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%8D%AB%E8%A7%86.png",湖南卫视 -http://111.162.205.201:8686/rtp/225.1.1.114:5002 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="湖南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%8D%AB%E8%A7%86.png",湖南卫视 -http://114.226.231.231:8787/rtp/239.49.8.12:9418 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="湖南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%8D%AB%E8%A7%86.png",湖南卫视 -http://tcpsit.vicp.net:8811/udp/225.1.8.41:8012 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="浙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",浙江卫视 +http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010070 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="浙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",浙江卫视 +http://z.b.bkpcp.top/m.php?id=zjws #EXTINF:-1 group-title="📡卫视频道" tvg-name="湖南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%8D%AB%E8%A7%86.png",湖南卫视 http://60.26.181.220:4022/rtp/225.1.1.114:5002 #EXTINF:-1 group-title="📡卫视频道" tvg-name="湖南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%8D%AB%E8%A7%86.png",湖南卫视 +http://114.226.231.231:8787/rtp/239.49.8.12:9418 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="湖南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%8D%AB%E8%A7%86.png",湖南卫视 http://171.15.18.199:8180/TV00000000000000000018@HHZT #EXTINF:-1 group-title="📡卫视频道" tvg-name="湖南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%8D%AB%E8%A7%86.png",湖南卫视 http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010058 @@ -1553,19 +1547,17 @@ http://z.b.bkpcp.top/m.php?id=hunws http://j.x.bkpcp.top/jx/HUNANHD #EXTINF:-1 group-title="📡卫视频道" tvg-name="湖南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%8D%AB%E8%A7%86.png",湖南卫视 http://iptv.huuc.edu.cn/hls/hunanhd.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="湖南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%8D%AB%E8%A7%86.png",湖南卫视 +http://dsj.motem.top:8880/bptv/10000100000000050000000003873458.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="湖南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%8D%AB%E8%A7%86.png",湖南卫视 +http://[2409:8087:1a0a:df::404b]/ottrrs.hl.chinamobile.com/TVOD/88888888/224/3221225610/index.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="湖南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%8D%AB%E8%A7%86.png",湖南卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226493/1.m3u8 #EXTINF:-1 group-title="📡卫视频道" tvg-name="北京卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E5%8D%AB%E8%A7%86.png",北京卫视 http://satellitepull.cnr.cn/live/wxbtv/playlist.m3u8 #EXTINF:-1 group-title="📡卫视频道" tvg-name="北京卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E5%8D%AB%E8%A7%86.png",北京卫视 -http://198.16.100.186:8278/beijing/playlist.m3u8?tid=MD5D2836914028369140&ct=20273&tsum=a5b068469f28162e31477052e2de91d6 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="北京卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E5%8D%AB%E8%A7%86.png",北京卫视 -http://123.160.232.254:9901/tsfile/live/0122_1.m3u8?key=txiptv&playlive=1&authid=0 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="北京卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E5%8D%AB%E8%A7%86.png",北京卫视 http://116.237.148.215:8881/rtp/239.45.3.229:5140 #EXTINF:-1 group-title="📡卫视频道" tvg-name="北京卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E5%8D%AB%E8%A7%86.png",北京卫视 -http://220.169.100.41:10087/udp/239.76.253.184:9000 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="北京卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E5%8D%AB%E8%A7%86.png",北京卫视 -http://tcpsit.vicp.net:8811/udp/225.1.8.21:8002 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="北京卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E5%8D%AB%E8%A7%86.png",北京卫视 http://60.26.181.220:4022/rtp/225.1.1.113:5002 #EXTINF:-1 group-title="📡卫视频道" tvg-name="北京卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E5%8D%AB%E8%A7%86.png",北京卫视 http://zqh2333.top:2222/rtp/239.93.24.180:5140 @@ -1573,94 +1565,94 @@ http://zqh2333.top:2222/rtp/239.93.24.180:5140 http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010143 #EXTINF:-1 group-title="📡卫视频道" tvg-name="北京卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E5%8D%AB%E8%A7%86.png",北京卫视 http://z.b.bkpcp.top/m.php?id=bjws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="北京卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E5%8D%AB%E8%A7%86.png",北京卫视 +http://j.x.bkpcp.top/jx/BEIJHD +#EXTINF:-1 group-title="📡卫视频道" tvg-name="北京卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E5%8D%AB%E8%A7%86.png",北京卫视 +http://[2409:8087:1:20:20::2c]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226436/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7ElMQ3ov45VmhzipweN5VstQ%7E_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNPg_yZ8DZHTaSU92MIl_o3b%2CEND +#EXTINF:-1 group-title="📡卫视频道" tvg-name="北京卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E5%8D%AB%E8%A7%86.png",北京卫视 +http://iptv.huuc.edu.cn/hls/btv1hd.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="北京卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E5%8D%AB%E8%A7%86.png",北京卫视 +https://smart.pendy.dpdns.org/Smart.php?id=beijing #EXTINF:-1 group-title="📡卫视频道" tvg-name="湖北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%8D%AB%E8%A7%86.png",湖北卫视 http://satellitepull.cnr.cn/live/wx32hubws/playlist.m3u8 #EXTINF:-1 group-title="📡卫视频道" tvg-name="湖北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%8D%AB%E8%A7%86.png",湖北卫视 -http://112.27.145.212:9901/tsfile/live/1535_1.m3u8?key=txiptv&playlive=1&authid=0 +http://60.26.181.220:4022/rtp/225.1.1.147:5002 #EXTINF:-1 group-title="📡卫视频道" tvg-name="湖北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%8D%AB%E8%A7%86.png",湖北卫视 http://joyznm.i234.me:20000/udp/239.3.1.138:8044 #EXTINF:-1 group-title="📡卫视频道" tvg-name="湖北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%8D%AB%E8%A7%86.png",湖北卫视 -http://111.162.205.201:8686/rtp/225.1.1.147:5002 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="湖北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%8D%AB%E8%A7%86.png",湖北卫视 http://114.226.231.231:8787/rtp/239.49.8.8:9632 #EXTINF:-1 group-title="📡卫视频道" tvg-name="湖北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%8D%AB%E8%A7%86.png",湖北卫视 -http://tcpsit.vicp.net:8811/udp/225.1.8.47:8044 +http://111.193.239.245:9999/rtp/239.3.1.138:8044 #EXTINF:-1 group-title="📡卫视频道" tvg-name="湖北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%8D%AB%E8%A7%86.png",湖北卫视 -http://219.141.44.245:8188/udp/238.255.2.102:5999 +http://180.165.29.204:4022/rtp/239.45.3.239:5140 #EXTINF:-1 group-title="📡卫视频道" tvg-name="湖北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%8D%AB%E8%A7%86.png",湖北卫视 -http://60.26.181.220:4022/rtp/225.1.1.147:5002 +http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010057 #EXTINF:-1 group-title="📡卫视频道" tvg-name="湖北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%8D%AB%E8%A7%86.png",湖北卫视 -http://111.196.134.250:20000/udp/239.3.1.138:8044 +http://z.b.bkpcp.top/m.php?id=hubws #EXTINF:-1 group-title="📡卫视频道" tvg-name="湖北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%8D%AB%E8%A7%86.png",湖北卫视 -http://101.74.30.190:9901/tsfile/live/0132_1.m3u8?key=txiptv&playlive=1&authid=0 +http://j.x.bkpcp.top/jx/HUBEIHD +#EXTINF:-1 group-title="📡卫视频道" tvg-name="湖北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8C%97%E5%8D%AB%E8%A7%86.png",湖北卫视 +http://goo.bkpcp.top/mg/hubws #EXTINF:-1 group-title="📡卫视频道" tvg-name="黑龙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",黑龙江卫视 http://satellitepull.cnr.cn/live/wx32hljws/playlist.m3u8 #EXTINF:-1 group-title="📡卫视频道" tvg-name="黑龙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",黑龙江卫视 -http://114.238.59.2:4000/rtp/239.49.8.14:9426 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="黑龙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",黑龙江卫视 http://116.237.148.215:8881/rtp/239.45.3.232:5140 #EXTINF:-1 group-title="📡卫视频道" tvg-name="黑龙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",黑龙江卫视 http://114.226.231.231:8787/rtp/239.49.8.14:9426 #EXTINF:-1 group-title="📡卫视频道" tvg-name="黑龙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",黑龙江卫视 -http://220.169.100.41:10087/udp/239.76.253.200:9000 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="黑龙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",黑龙江卫视 http://60.26.181.220:4022/rtp/225.1.1.115:5002 #EXTINF:-1 group-title="📡卫视频道" tvg-name="黑龙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",黑龙江卫视 -http://111.196.134.250:20000/udp/239.3.1.133:8016 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="黑龙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",黑龙江卫视 -http://114.238.59.148:4000/rtp/239.49.8.14:9426 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="黑龙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",黑龙江卫视 http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010056 #EXTINF:-1 group-title="📡卫视频道" tvg-name="黑龙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",黑龙江卫视 http://j.x.bkpcp.top/jx/HEILJHD -#EXTINF:-1 group-title="📡卫视频道" tvg-name="安徽卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%8D%AB%E8%A7%86.png",安徽卫视 -http://satellitepull.cnr.cn/live/wxahws/playlist.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="黑龙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",黑龙江卫视 +http://l.cztvcloud.com/channels/lantian/SXyuyao3/720p.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="黑龙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",黑龙江卫视 +http://iptv.huuc.edu.cn/hls/hljhd.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="黑龙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",黑龙江卫视 +http://dsj.motem.top:8880/bptv/10000100000000050000000003873470.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="黑龙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E5%8D%AB%E8%A7%86.png",黑龙江卫视 +http://z.b.bkpcp.top/m.php?id=hljws #EXTINF:-1 group-title="📡卫视频道" tvg-name="安徽卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%8D%AB%E8%A7%86.png",安徽卫视 http://203.205.191.53/live.ahsx.ahtv.cn/live/ahwssx.m3u8 #EXTINF:-1 group-title="📡卫视频道" tvg-name="安徽卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%8D%AB%E8%A7%86.png",安徽卫视 +http://satellitepull.cnr.cn/live/wxahws/playlist.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="安徽卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%8D%AB%E8%A7%86.png",安徽卫视 http://joyznm.i234.me:20000/udp/239.3.1.211:8064 #EXTINF:-1 group-title="📡卫视频道" tvg-name="安徽卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%8D%AB%E8%A7%86.png",安徽卫视 -http://114.226.231.231:8787/rtp/239.49.8.204:6000 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="安徽卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%8D%AB%E8%A7%86.png",安徽卫视 -http://111.162.205.201:8686/rtp/225.1.1.127:5002 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="安徽卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%8D%AB%E8%A7%86.png",安徽卫视 http://60.26.181.220:4022/rtp/225.1.1.127:5002 #EXTINF:-1 group-title="📡卫视频道" tvg-name="安徽卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%8D%AB%E8%A7%86.png",安徽卫视 +http://114.226.231.231:8787/rtp/239.49.8.204:6000 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="安徽卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%8D%AB%E8%A7%86.png",安徽卫视 http://111.193.239.245:9999/rtp/239.3.1.211:8064 #EXTINF:-1 group-title="📡卫视频道" tvg-name="安徽卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%8D%AB%E8%A7%86.png",安徽卫视 -http://121.29.141.167:4022/rtp/239.253.92.209:6566 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="安徽卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%8D%AB%E8%A7%86.png",安徽卫视 -http://114.238.59.148:4000/rtp/239.49.8.204:6000 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="安徽卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%8D%AB%E8%A7%86.png",安徽卫视 http://php.jdshipin.com/TVOD/hljyd.php?id=3221226391 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="安徽卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%8D%AB%E8%A7%86.png",安徽卫视 +http://j.x.bkpcp.top/jx/ANHUIHD +#EXTINF:-1 group-title="📡卫视频道" tvg-name="安徽卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%8D%AB%E8%A7%86.png",安徽卫视 +http://iptv.huuc.edu.cn/hls/ahhd.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="安徽卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%89%E5%BE%BD%E5%8D%AB%E8%A7%86.png",安徽卫视 +http://dsj.motem.top:8880/bptv/10000100000000050000000003873469.m3u8 #EXTINF:-1 group-title="📡卫视频道" tvg-name="重庆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%8D%E5%BA%86%E5%8D%AB%E8%A7%86.png",重庆卫视 http://satellitepull.cnr.cn/live/wxcqws/playlist.m3u8 #EXTINF:-1 group-title="📡卫视频道" tvg-name="重庆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%8D%E5%BA%86%E5%8D%AB%E8%A7%86.png",重庆卫视 -http://123.160.232.254:9901/tsfile/live/0142_1.m3u8?key=txiptv&playlive=1&authid=0 +http://60.26.181.220:4022/rtp/225.1.1.155:5002 #EXTINF:-1 group-title="📡卫视频道" tvg-name="重庆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%8D%E5%BA%86%E5%8D%AB%E8%A7%86.png",重庆卫视 http://114.226.231.231:8787/rtp/239.49.8.57:9830 #EXTINF:-1 group-title="📡卫视频道" tvg-name="重庆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%8D%E5%BA%86%E5%8D%AB%E8%A7%86.png",重庆卫视 -http://tcpsit.vicp.net:8811/udp/225.1.8.172:8162 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="重庆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%8D%E5%BA%86%E5%8D%AB%E8%A7%86.png",重庆卫视 -http://219.141.44.245:8188/udp/238.255.2.78:5999 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="重庆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%8D%E5%BA%86%E5%8D%AB%E8%A7%86.png",重庆卫视 -http://111.196.134.250:20000/udp/239.3.1.122:8160 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="重庆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%8D%E5%BA%86%E5%8D%AB%E8%A7%86.png",重庆卫视 -http://111.162.205.201:8686/rtp/225.1.1.155:5002 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="重庆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%8D%E5%BA%86%E5%8D%AB%E8%A7%86.png",重庆卫视 -http://60.26.181.220:4022/rtp/225.1.1.155:5002 +http://123.160.232.254:9901/tsfile/live/0142_1.m3u8?key=txiptv&playlive=1&authid=0 #EXTINF:-1 group-title="📡卫视频道" tvg-name="重庆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%8D%E5%BA%86%E5%8D%AB%E8%A7%86.png",重庆卫视 http://171.15.18.199:8180/TV00000000000000000030@HHZT #EXTINF:-1 group-title="📡卫视频道" tvg-name="重庆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%8D%E5%BA%86%E5%8D%AB%E8%A7%86.png",重庆卫视 http://111.193.239.245:9999/rtp/239.3.1.122:8160 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="东方卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E5%8D%AB%E8%A7%86.png",东方卫视 -http://123.160.232.254:9901/tsfile/live/0107_1.m3u8?key=txiptv&playlive=1&authid=0 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="东方卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E5%8D%AB%E8%A7%86.png",东方卫视 -http://111.162.205.201:8686/rtp/225.1.2.31:5002 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="东方卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E5%8D%AB%E8%A7%86.png",东方卫视 -http://tcpsit.vicp.net:8811/udp/225.1.8.45:8032 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="东方卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E5%8D%AB%E8%A7%86.png",东方卫视 -http://111.196.134.250:20000/udp/239.3.1.136:8032 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="重庆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%8D%E5%BA%86%E5%8D%AB%E8%A7%86.png",重庆卫视 +http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010053 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="重庆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%8D%E5%BA%86%E5%8D%AB%E8%A7%86.png",重庆卫视 +http://z.b.bkpcp.top/m.php?id=cqws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="重庆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%8D%E5%BA%86%E5%8D%AB%E8%A7%86.png",重庆卫视 +http://j.x.bkpcp.top/jx/CHONGQHD +#EXTINF:-1 group-title="📡卫视频道" tvg-name="重庆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%8D%E5%BA%86%E5%8D%AB%E8%A7%86.png",重庆卫视 +http://iptv.huuc.edu.cn/hls/cqhd.m3u8 #EXTINF:-1 group-title="📡卫视频道" tvg-name="东方卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E5%8D%AB%E8%A7%86.png",东方卫视 http://60.26.181.220:4022/rtp/225.1.2.31:5002 #EXTINF:-1 group-title="📡卫视频道" tvg-name="东方卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E5%8D%AB%E8%A7%86.png",东方卫视 @@ -1673,17 +1665,21 @@ http://z.b.bkpcp.top/m.php?id=dfws#rtsp://115.85.232.19/PLTV/88888910/224/322122 http://goo.bkpcp.top/mg/dfws #EXTINF:-1 group-title="📡卫视频道" tvg-name="东方卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E5%8D%AB%E8%A7%86.png",东方卫视 http://iptv.huuc.edu.cn/hls/dfhd.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="东方卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E5%8D%AB%E8%A7%86.png",东方卫视 +https://www.freetv.top/migu/651632648.m3u8?migutoken=67b4219a3e6acdcf288118ed6bf84d3197052966f0bc854079b6038b3fca6437744ca78bb0ea1fad6f61b4c73d0df57bd8b539ec247fd28ce16d1375716bbf774ea19c99e4585bb828fa3851c0 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="东方卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E5%8D%AB%E8%A7%86.png",东方卫视 +http://dsj.motem.top:8880/bptv/10000100000000050000000003873462.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="东方卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E5%8D%AB%E8%A7%86.png",东方卫视 +https://bp-cdn-ali.bestv.cn/enhance/bestvdfws_enhance.m3u8?auth_key=1746334807-ddb61092a75249868c8bd1834313f437-0-8a760296d281d86bc4612f5fc4f85247 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="东方卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E5%8D%AB%E8%A7%86.png",东方卫视 +https://live.lalifeier.eu.org/kankanews/dfws.m3u8?t=1746372302&key=04c79ed1fd72dbd3188040c54dc3858b #EXTINF:-1 group-title="📡卫视频道" tvg-name="东南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E5%8D%97%E5%8D%AB%E8%A7%86.png",东南卫视 http://satellitepull.cnr.cn/live/wx32fjws/playlist.m3u8 #EXTINF:-1 group-title="📡卫视频道" tvg-name="东南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E5%8D%97%E5%8D%AB%E8%A7%86.png",东南卫视 -http://123.160.232.254:9901/tsfile/live/0137_1.m3u8?key=txiptv&playlive=1&authid=0 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="东南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E5%8D%97%E5%8D%AB%E8%A7%86.png",东南卫视 -http://121.29.141.167:4022/rtp/239.253.92.201:6146 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="东南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E5%8D%97%E5%8D%AB%E8%A7%86.png",东南卫视 -http://tcpsit.vicp.net:8811/udp/225.1.8.79:8148 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="东南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E5%8D%97%E5%8D%AB%E8%A7%86.png",东南卫视 http://115.171.80.94:1688/udp/225.1.8.79:8148 #EXTINF:-1 group-title="📡卫视频道" tvg-name="东南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E5%8D%97%E5%8D%AB%E8%A7%86.png",东南卫视 +http://123.160.232.254:9901/tsfile/live/0137_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="东南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E5%8D%97%E5%8D%AB%E8%A7%86.png",东南卫视 http://219.141.44.245:8188/udp/238.255.2.103:5999 #EXTINF:-1 group-title="📡卫视频道" tvg-name="东南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E5%8D%97%E5%8D%AB%E8%A7%86.png",东南卫视 http://111.193.239.245:9999/rtp/239.3.1.156:8148 @@ -1693,6 +1689,10 @@ http://171.15.18.199:8180/TV00000000000000000033@HHZT http://180.165.29.204:4022/rtp/239.45.1.121:5140 #EXTINF:-1 group-title="📡卫视频道" tvg-name="东南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E5%8D%97%E5%8D%AB%E8%A7%86.png",东南卫视 http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010096 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="东南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E5%8D%97%E5%8D%AB%E8%A7%86.png",东南卫视 +http://z.b.bkpcp.top/m.php?id=dnws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="东南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E5%8D%97%E5%8D%AB%E8%A7%86.png",东南卫视 +http://j.x.bkpcp.top/jx/DONGNHD #EXTINF:-1 group-title="📡卫视频道" tvg-name="甘肃卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%94%98%E8%82%83%E5%8D%AB%E8%A7%86.png",甘肃卫视 http://222.218.122.114:8188/udp/239.81.0.207:4056 #EXTINF:-1 group-title="📡卫视频道" tvg-name="甘肃卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%94%98%E8%82%83%E5%8D%AB%E8%A7%86.png",甘肃卫视 @@ -1714,13 +1714,9 @@ http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221 #EXTINF:-1 group-title="📡卫视频道" tvg-name="甘肃卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%94%98%E8%82%83%E5%8D%AB%E8%A7%86.png",甘肃卫视 http://[2409:8c02:21c:60::2b]/live.rxip.sc96655.com/live/gsws_4000.m3u8 #EXTINF:-1 group-title="📡卫视频道" tvg-name="广西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E8%A5%BF%E5%8D%AB%E8%A7%86.png",广西卫视 -http://123.160.232.254:9901/tsfile/live/0113_1.m3u8?key=txiptv&playlive=1&authid=0 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="广西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E8%A5%BF%E5%8D%AB%E8%A7%86.png",广西卫视 -http://121.29.141.167:4022/rtp/239.253.92.76:8043 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="广西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E8%A5%BF%E5%8D%AB%E8%A7%86.png",广西卫视 http://60.26.181.220:4022/rtp/225.1.2.81:5002 #EXTINF:-1 group-title="📡卫视频道" tvg-name="广西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E8%A5%BF%E5%8D%AB%E8%A7%86.png",广西卫视 -http://101.74.30.190:9901/tsfile/live/0113_1.m3u8?key=txiptv&playlive=1&authid=0 +http://123.160.232.254:9901/tsfile/live/0113_1.m3u8?key=txiptv&playlive=1&authid=0 #EXTINF:-1 group-title="📡卫视频道" tvg-name="广西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E8%A5%BF%E5%8D%AB%E8%A7%86.png",广西卫视 http://180.165.29.204:4022/rtp/239.45.0.5:5140 #EXTINF:-1 group-title="📡卫视频道" tvg-name="广西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E8%A5%BF%E5%8D%AB%E8%A7%86.png",广西卫视 @@ -1733,8 +1729,10 @@ http://z.b.bkpcp.top/m.php?id=gxws https://mobilelive.gxtv.cn/live/gx_live1004/playlist.m3u8 #EXTINF:-1 group-title="📡卫视频道" tvg-name="广西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E8%A5%BF%E5%8D%AB%E8%A7%86.png",广西卫视 http://goo.bkpcp.top/mg/gxws -#EXTINF:-1 group-title="📡卫视频道" tvg-name="贵州卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%B4%B5%E5%B7%9E%E5%8D%AB%E8%A7%86.png",贵州卫视 -http://111.162.205.201:8686/rtp/225.1.2.28:5002 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="广西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E8%A5%BF%E5%8D%AB%E8%A7%86.png",广西卫视 +http://live.cztv.cc:85/live/ggpd.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="广西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E8%A5%BF%E5%8D%AB%E8%A7%86.png",广西卫视 +https://hlscdn.liangtv.cn/live/de0f97348eb84f62aa6b7d8cf0430770/dd505d87880c478f901f38560ca4d4e6.m3u8 #EXTINF:-1 group-title="📡卫视频道" tvg-name="贵州卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%B4%B5%E5%B7%9E%E5%8D%AB%E8%A7%86.png",贵州卫视 http://115.171.80.94:1688/udp/225.1.8.77:8076 #EXTINF:-1 group-title="📡卫视频道" tvg-name="贵州卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%B4%B5%E5%B7%9E%E5%8D%AB%E8%A7%86.png",贵州卫视 @@ -1742,10 +1740,6 @@ http://219.141.44.245:8188/udp/238.255.2.1:5999 #EXTINF:-1 group-title="📡卫视频道" tvg-name="贵州卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%B4%B5%E5%B7%9E%E5%8D%AB%E8%A7%86.png",贵州卫视 http://60.26.181.220:4022/rtp/225.1.2.28:5002 #EXTINF:-1 group-title="📡卫视频道" tvg-name="贵州卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%B4%B5%E5%B7%9E%E5%8D%AB%E8%A7%86.png",贵州卫视 -http://121.29.141.167:4022/rtp/239.253.92.105:6055 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="贵州卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%B4%B5%E5%B7%9E%E5%8D%AB%E8%A7%86.png",贵州卫视 -http://tcpsit.vicp.net:8811/udp/225.1.8.77:8076 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="贵州卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%B4%B5%E5%B7%9E%E5%8D%AB%E8%A7%86.png",贵州卫视 http://111.193.239.245:9999/rtp/239.3.1.149:8076 #EXTINF:-1 group-title="📡卫视频道" tvg-name="贵州卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%B4%B5%E5%B7%9E%E5%8D%AB%E8%A7%86.png",贵州卫视 http://php.jdshipin.com/TVOD/hljyd.php?id=3221226474 @@ -1753,12 +1747,18 @@ http://php.jdshipin.com/TVOD/hljyd.php?id=3221226474 http://z.b.bkpcp.top/m.php?id=gzws #EXTINF:-1 group-title="📡卫视频道" tvg-name="贵州卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%B4%B5%E5%B7%9E%E5%8D%AB%E8%A7%86.png",贵州卫视 http://j.x.bkpcp.top/jx/GUIZHD +#EXTINF:-1 group-title="📡卫视频道" tvg-name="贵州卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%B4%B5%E5%B7%9E%E5%8D%AB%E8%A7%86.png",贵州卫视 +http://goo.bkpcp.top/mg/gzws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="贵州卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%B4%B5%E5%B7%9E%E5%8D%AB%E8%A7%86.png",贵州卫视 +http://[2409:8087:1a01:df::4030]:80/TVOD/88888888/224/3221225974/main.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="贵州卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%B4%B5%E5%B7%9E%E5%8D%AB%E8%A7%86.png",贵州卫视 +http://dsj.motem.top:8880/bptv/10000100000000050000000003873471.m3u8 #EXTINF:-1 group-title="📡卫视频道" tvg-name="海南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%B7%E5%8D%97%E5%8D%AB%E8%A7%86.png",海南卫视 http://satellitepull.cnr.cn/live/wxhainlyws/playlist.m3u8 #EXTINF:-1 group-title="📡卫视频道" tvg-name="海南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%B7%E5%8D%97%E5%8D%AB%E8%A7%86.png",海南卫视 -http://171.15.18.199:8180/TV00000000000000000028@HHZT +http://116.237.148.215:8881/rtp/239.45.1.81:5140 #EXTINF:-1 group-title="📡卫视频道" tvg-name="海南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%B7%E5%8D%97%E5%8D%AB%E8%A7%86.png",海南卫视 -http://121.29.141.167:4022/rtp/239.253.93.155:6323 +http://171.15.18.199:8180/TV00000000000000000028@HHZT #EXTINF:-1 group-title="📡卫视频道" tvg-name="海南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%B7%E5%8D%97%E5%8D%AB%E8%A7%86.png",海南卫视 http://218.1.137.125:4022/rtp/239.45.1.81:5140 #EXTINF:-1 group-title="📡卫视频道" tvg-name="海南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%B7%E5%8D%97%E5%8D%AB%E8%A7%86.png",海南卫视 @@ -1780,49 +1780,43 @@ http://222.218.122.114:8188/udp/239.81.0.94:4056 #EXTINF:-1 group-title="📡卫视频道" tvg-name="河北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E5%8D%AB%E8%A7%86.png",河北卫视 http://116.237.148.215:8881/rtp/239.45.1.44:5140 #EXTINF:-1 group-title="📡卫视频道" tvg-name="河北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E5%8D%AB%E8%A7%86.png",河北卫视 -http://111.162.205.201:8686/rtp/225.1.2.27:5002 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="河北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E5%8D%AB%E8%A7%86.png",河北卫视 http://27.18.157.225:2701/rtp/239.254.96.113:9616 #EXTINF:-1 group-title="📡卫视频道" tvg-name="河北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E5%8D%AB%E8%A7%86.png",河北卫视 -http://111.193.239.245:9999/rtp/239.3.1.148:8072 +http://114.226.231.231:8787/rtp/239.49.8.188:6000 #EXTINF:-1 group-title="📡卫视频道" tvg-name="河北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E5%8D%AB%E8%A7%86.png",河北卫视 http://60.26.181.220:4022/rtp/225.1.2.27:5002 #EXTINF:-1 group-title="📡卫视频道" tvg-name="河北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E5%8D%AB%E8%A7%86.png",河北卫视 -http://219.141.44.245:8188/udp/238.255.2.77:5999 +http://111.193.239.245:9999/rtp/239.3.1.148:8072 #EXTINF:-1 group-title="📡卫视频道" tvg-name="河北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E5%8D%AB%E8%A7%86.png",河北卫视 -http://tcpsit.vicp.net:8811/udp/225.1.8.76:8002 +http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010101 #EXTINF:-1 group-title="📡卫视频道" tvg-name="河北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E5%8D%AB%E8%A7%86.png",河北卫视 -http://101.74.30.190:9901/tsfile/live/0117_1.m3u8?key=txiptv&playlive=1&authid=0 +http://z.b.bkpcp.top/m.php?id=hbws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="河北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8C%97%E5%8D%AB%E8%A7%86.png",河北卫视 +https://jwplay.hebyun.com.cn/live/hbwstv/1500k/tzwj_video.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="河南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8D%97%E5%8D%AB%E8%A7%86.png",河南卫视 +http://satellitepull.cnr.cn/live/wxhnws/playlist.m3u8 #EXTINF:-1 group-title="📡卫视频道" tvg-name="河南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8D%97%E5%8D%AB%E8%A7%86.png",河南卫视 http://xxwx.yoesun.com/xxw/河南网.php #EXTINF:-1 group-title="📡卫视频道" tvg-name="河南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8D%97%E5%8D%AB%E8%A7%86.png",河南卫视 +http://xxwx.yoesun.com/xxw/河南网.php?id=hnws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="河南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8D%97%E5%8D%AB%E8%A7%86.png",河南卫视 http://150.158.10.195:80/dxxw.php?id=hnws #EXTINF:-1 group-title="📡卫视频道" tvg-name="河南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8D%97%E5%8D%AB%E8%A7%86.png",河南卫视 http://1.94.31.214/php/hntv.php #EXTINF:-1 group-title="📡卫视频道" tvg-name="河南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8D%97%E5%8D%AB%E8%A7%86.png",河南卫视 -http://xxwx.yoesun.com/xxw/河南网.php?id=hnws -#EXTINF:-1 group-title="📡卫视频道" tvg-name="河南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8D%97%E5%8D%AB%E8%A7%86.png",河南卫视 -http://satellitepull.cnr.cn/live/wxhnws/playlist.m3u8 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="河南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8D%97%E5%8D%AB%E8%A7%86.png",河南卫视 -http://123.160.232.254:9901/tsfile/live/0139_1.m3u8?key=txiptv&playlive=1&authid=0 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="河南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8D%97%E5%8D%AB%E8%A7%86.png",河南卫视 -http://111.162.205.201:8686/rtp/225.1.2.61:5002 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="河南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8D%97%E5%8D%AB%E8%A7%86.png",河南卫视 http://60.26.181.220:4022/rtp/225.1.2.61:5002 #EXTINF:-1 group-title="📡卫视频道" tvg-name="河南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8D%97%E5%8D%AB%E8%A7%86.png",河南卫视 http://171.15.18.199:8180/TV00000000000000000016@HHZT #EXTINF:-1 group-title="📡卫视频道" tvg-name="河南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8D%97%E5%8D%AB%E8%A7%86.png",河南卫视 http://tvpull.dxhmt.cn:9081/tv/11425-1.m3u8 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="吉林卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E5%8D%AB%E8%A7%86.png",吉林卫视 -http://111.162.205.201:8686/rtp/225.1.2.26:5002 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="吉林卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E5%8D%AB%E8%A7%86.png",吉林卫视 -http://171.35.84.178:8688/udp/239.252.220.188:5140 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="吉林卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E5%8D%AB%E8%A7%86.png",吉林卫视 -http://60.26.181.220:4022/rtp/225.1.2.26:5002 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="河南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8D%97%E5%8D%AB%E8%A7%86.png",河南卫视 +http://php.jdshipin.com/TVOD/hljyd.php?id=3221226480 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="河南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%B3%E5%8D%97%E5%8D%AB%E8%A7%86.png",河南卫视 +http://z.b.bkpcp.top/m.php?id=hnws #EXTINF:-1 group-title="📡卫视频道" tvg-name="吉林卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E5%8D%AB%E8%A7%86.png",吉林卫视 https://hyf000.eu.org/80947108/JILINWS #EXTINF:-1 group-title="📡卫视频道" tvg-name="吉林卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E5%8D%AB%E8%A7%86.png",吉林卫视 -http://111.196.134.250:20000/udp/239.3.1.240:8172 +http://60.26.181.220:4022/rtp/225.1.2.26:5002 #EXTINF:-1 group-title="📡卫视频道" tvg-name="吉林卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E5%8D%AB%E8%A7%86.png",吉林卫视 http://171.15.18.199:8180/TV00000000000000000036@HHZT #EXTINF:-1 group-title="📡卫视频道" tvg-name="吉林卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E5%8D%AB%E8%A7%86.png",吉林卫视 @@ -1833,18 +1827,18 @@ http://z.b.bkpcp.top/m.php?id=jlws http://j.x.bkpcp.top/jx/JILHD #EXTINF:-1 group-title="📡卫视频道" tvg-name="吉林卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E5%8D%AB%E8%A7%86.png",吉林卫视 http://goo.bkpcp.top/mg/jlws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="吉林卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E5%8D%AB%E8%A7%86.png",吉林卫视 +http://dsj.motem.top:8880/bptv/10000100000000050000000004972569.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="吉林卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E5%8D%AB%E8%A7%86.png",吉林卫视 +http://[2409:8087:1a0a:df::404b]/ottrrs.hl.chinamobile.com/TVOD/88888888/224/3221226397/index.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="吉林卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E5%8D%AB%E8%A7%86.png",吉林卫视 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221226397/index.m3u8 #EXTINF:-1 group-title="📡卫视频道" tvg-name="江苏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E5%8D%AB%E8%A7%86.png",江苏卫视 -http://106.115.24.17:9901/tsfile/live/1023_1.m3u8?key=txiptv&playlive=1&authid=0 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="江苏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E5%8D%AB%E8%A7%86.png",江苏卫视 -http://220.169.100.41:10087/udp/239.76.251.89:9000 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="江苏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E5%8D%AB%E8%A7%86.png",江苏卫视 -http://111.162.205.201:8686/rtp/225.1.1.126:5002 +http://114.226.231.231:8787/rtp/239.49.8.16:9602 #EXTINF:-1 group-title="📡卫视频道" tvg-name="江苏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E5%8D%AB%E8%A7%86.png",江苏卫视 http://60.26.181.220:4022/rtp/225.1.1.126:5002 #EXTINF:-1 group-title="📡卫视频道" tvg-name="江苏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E5%8D%AB%E8%A7%86.png",江苏卫视 -http://121.29.141.167:4022/rtp/239.253.92.88:8018 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="江苏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E5%8D%AB%E8%A7%86.png",江苏卫视 -http://101.74.30.190:9901/tsfile/live/0127_1.m3u8?key=txiptv&playlive=1&authid=0 +http://114.238.59.148:4000/rtp/239.49.8.16:9602 #EXTINF:-1 group-title="📡卫视频道" tvg-name="江苏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E5%8D%AB%E8%A7%86.png",江苏卫视 http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010059 #EXTINF:-1 group-title="📡卫视频道" tvg-name="江苏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E5%8D%AB%E8%A7%86.png",江苏卫视 @@ -1853,18 +1847,18 @@ http://z.b.bkpcp.top/m.php?id=jsws http://goo.bkpcp.top/mg/jsws #EXTINF:-1 group-title="📡卫视频道" tvg-name="江苏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E5%8D%AB%E8%A7%86.png",江苏卫视 http://iptv.huuc.edu.cn/hls/jshd.m3u8 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="江西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%A5%BF%E5%8D%AB%E8%A7%86.png",江西卫视 -http://123.160.232.254:9901/tsfile/live/0138_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="江苏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E5%8D%AB%E8%A7%86.png",江苏卫视 +http://dsj.motem.top:8880/bptv/10000100000000050000000003873461.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="江苏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E5%8D%AB%E8%A7%86.png",江苏卫视 +http://[2409:8087:1a0a:df::404b]/ottrrs.hl.chinamobile.com/TVOD/88888888/224/3221226310/index.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="江苏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%8B%8F%E5%8D%AB%E8%A7%86.png",江苏卫视 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221226310/index.m3u8 #EXTINF:-1 group-title="📡卫视频道" tvg-name="江西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%A5%BF%E5%8D%AB%E8%A7%86.png",江西卫视 http://joyznm.i234.me:20000/udp/239.3.1.123:8164 #EXTINF:-1 group-title="📡卫视频道" tvg-name="江西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%A5%BF%E5%8D%AB%E8%A7%86.png",江西卫视 -http://220.169.100.41:10087/udp/239.76.252.225:9000 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="江西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%A5%BF%E5%8D%AB%E8%A7%86.png",江西卫视 http://60.26.181.220:4022/rtp/225.1.2.29:5002 #EXTINF:-1 group-title="📡卫视频道" tvg-name="江西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%A5%BF%E5%8D%AB%E8%A7%86.png",江西卫视 -http://112.30.73.119:9902/tsfile/live/0138_1.m3u8?key=txiptv&playlive=0&authid=0 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="江西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%A5%BF%E5%8D%AB%E8%A7%86.png",江西卫视 -http://121.29.141.167:4022/rtp/239.253.92.19:6145 +http://123.160.232.254:9901/tsfile/live/0138_1.m3u8?key=txiptv&playlive=1&authid=0 #EXTINF:-1 group-title="📡卫视频道" tvg-name="江西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%A5%BF%E5%8D%AB%E8%A7%86.png",江西卫视 http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010060 #EXTINF:-1 group-title="📡卫视频道" tvg-name="江西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%A5%BF%E5%8D%AB%E8%A7%86.png",江西卫视 @@ -1873,15 +1867,15 @@ http://z.b.bkpcp.top/m.php?id=jxws http://goo.bkpcp.top/mg/jxws #EXTINF:-1 group-title="📡卫视频道" tvg-name="江西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%A5%BF%E5%8D%AB%E8%A7%86.png",江西卫视 http://iptv.huuc.edu.cn/hls/jxhd.m3u8 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="辽宁卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%BE%BD%E5%AE%81%E5%8D%AB%E8%A7%86.png",辽宁卫视 -http://123.160.232.254:9901/tsfile/live/0121_1.m3u8?key=txiptv&playlive=1&authid=0 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="辽宁卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%BE%BD%E5%AE%81%E5%8D%AB%E8%A7%86.png",辽宁卫视 -http://tcpsit.vicp.net:8811/udp/225.1.8.51:8056 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="江西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%A5%BF%E5%8D%AB%E8%A7%86.png",江西卫视 +https://www.freetv.top/migu/783847495.m3u8?migutoken=fddcc05dc0245329d3208607a5b1f5a1980bc31a7ced510e345af6cc68f5b86d2d9178b45706a0b6a0ceddc82ce06e53375cfedbc96fd0b00c12195c7d77b6f23811a67970bcfeb47629aa5aa6 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="江西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%A5%BF%E5%8D%AB%E8%A7%86.png",江西卫视 +http://[2409:8087:1a01:df::4027]:80/TVOD/88888888/224/3221225935/main.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="江西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%9F%E8%A5%BF%E5%8D%AB%E8%A7%86.png",江西卫视 +http://dsj.motem.top:8880/bptv/10000100000000050000000004796511.m3u8 #EXTINF:-1 group-title="📡卫视频道" tvg-name="辽宁卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%BE%BD%E5%AE%81%E5%8D%AB%E8%A7%86.png",辽宁卫视 http://60.26.181.220:4022/rtp/225.1.1.154:5002 #EXTINF:-1 group-title="📡卫视频道" tvg-name="辽宁卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%BE%BD%E5%AE%81%E5%8D%AB%E8%A7%86.png",辽宁卫视 -http://121.29.141.167:4022/rtp/239.253.92.115:6056 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="辽宁卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%BE%BD%E5%AE%81%E5%8D%AB%E8%A7%86.png",辽宁卫视 http://php.jdshipin.com/TVOD/hljyd.php?id=3221226546 #EXTINF:-1 group-title="📡卫视频道" tvg-name="辽宁卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%BE%BD%E5%AE%81%E5%8D%AB%E8%A7%86.png",辽宁卫视 http://z.b.bkpcp.top/m.php?id=lnws @@ -1893,6 +1887,12 @@ http://iptv.huuc.edu.cn/hls/lnhd.m3u8 http://dsj.motem.top:8880/bptv/10000100000000050000000003873468.m3u8 #EXTINF:-1 group-title="📡卫视频道" tvg-name="辽宁卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%BE%BD%E5%AE%81%E5%8D%AB%E8%A7%86.png",辽宁卫视 http://[2409:8087:1a0a:df::404b]/ottrrs.hl.chinamobile.com/TVOD/88888888/224/3221226546/index.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="辽宁卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%BE%BD%E5%AE%81%E5%8D%AB%E8%A7%86.png",辽宁卫视 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221226254/index.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="辽宁卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%BE%BD%E5%AE%81%E5%8D%AB%E8%A7%86.png",辽宁卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226327/1.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="辽宁卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%BE%BD%E5%AE%81%E5%8D%AB%E8%A7%86.png",辽宁卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226336/1.m3u8 #EXTINF:-1 group-title="📡卫视频道" tvg-name="内蒙古卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%86%85%E8%92%99%E5%8F%A4%E5%8D%AB%E8%A7%86.png",内蒙古卫视 http://satellitepull.cnr.cn/live/wx32nmgws/playlist.m3u8 #EXTINF:-1 group-title="📡卫视频道" tvg-name="内蒙古卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%86%85%E8%92%99%E5%8F%A4%E5%8D%AB%E8%A7%86.png",内蒙古卫视 @@ -1936,8 +1936,6 @@ http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/8/32 #EXTINF:-1 group-title="📡卫视频道" tvg-name="青海卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%92%E6%B5%B7%E5%8D%AB%E8%A7%86.png",青海卫视 http://satellitepull.cnr.cn/live/wx32qhws/playlist.m3u8 #EXTINF:-1 group-title="📡卫视频道" tvg-name="青海卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%92%E6%B5%B7%E5%8D%AB%E8%A7%86.png",青海卫视 -http://123.160.232.254:9901/tsfile/live/0140_1.m3u8?key=txiptv&playlive=1&authid=0 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="青海卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%92%E6%B5%B7%E5%8D%AB%E8%A7%86.png",青海卫视 http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010111 #EXTINF:-1 group-title="📡卫视频道" tvg-name="青海卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%92%E6%B5%B7%E5%8D%AB%E8%A7%86.png",青海卫视 http://z.b.bkpcp.top/m.php?id=qhws @@ -1953,26 +1951,28 @@ http://[2409:8087:1a0a:df::404b]/ottrrs.hl.chinamobile.com/TVOD/88888888/224/322 http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226529/1.m3u8 #EXTINF:-1 group-title="📡卫视频道" tvg-name="青海卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%92%E6%B5%B7%E5%8D%AB%E8%A7%86.png",青海卫视 http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226916/1.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="青海卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%92%E6%B5%B7%E5%8D%AB%E8%A7%86.png",青海卫视 +http://[2409:8087:1e03:21::2]:6060/cms001/ch00000090990000001082/index.m3u8 #EXTINF:-1 group-title="📡卫视频道" tvg-name="山东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E5%8D%AB%E8%A7%86.png",山东卫视 http://nn.7x9d.cn/xzc2.php?ua=TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgNi4xOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTA2LjAuMC4wIFNhZmFyaS81MzcuMzY=&hls=aHR0cDovL3d3dy5kc2suY2MvcGhwL3N4Z2QucGhwP2lkPXNkd3M= #EXTINF:-1 group-title="📡卫视频道" tvg-name="山东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E5%8D%AB%E8%A7%86.png",山东卫视 -http://123.160.232.254:9901/tsfile/live/0131_1.m3u8?key=txiptv&playlive=1&authid=0 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="山东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E5%8D%AB%E8%A7%86.png",山东卫视 -http://joyznm.i234.me:20000/udp/239.3.1.209:8052 +http://115.171.80.94:1688/udp/225.1.8.50:8052 #EXTINF:-1 group-title="📡卫视频道" tvg-name="山东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E5%8D%AB%E8%A7%86.png",山东卫视 http://114.226.231.231:8787/rtp/239.49.8.7:9306 #EXTINF:-1 group-title="📡卫视频道" tvg-name="山东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E5%8D%AB%E8%A7%86.png",山东卫视 -http://220.169.100.41:10087/udp/239.76.246.195:1234 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="山东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E5%8D%AB%E8%A7%86.png",山东卫视 -http://115.171.80.94:1688/udp/225.1.8.50:8052 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="山东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E5%8D%AB%E8%A7%86.png",山东卫视 -http://tcpsit.vicp.net:8811/udp/225.1.8.50:8052 +http://joyznm.i234.me:20000/udp/239.3.1.209:8052 #EXTINF:-1 group-title="📡卫视频道" tvg-name="山东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E5%8D%AB%E8%A7%86.png",山东卫视 http://111.193.239.245:9999/rtp/239.3.1.209:8052 #EXTINF:-1 group-title="📡卫视频道" tvg-name="山东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E5%8D%AB%E8%A7%86.png",山东卫视 -http://121.29.141.167:4022/rtp/239.253.92.207:8109 +http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010066 #EXTINF:-1 group-title="📡卫视频道" tvg-name="山东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E5%8D%AB%E8%A7%86.png",山东卫视 -http://114.238.59.2:4000/rtp/239.49.8.7:9306 +http://z.b.bkpcp.top/m.php?id=sdws +#EXTINF:-1 group-title="📡卫视频道" tvg-name="山东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E5%8D%AB%E8%A7%86.png",山东卫视 +http://j.x.bkpcp.top/jx/SHANDHD +#EXTINF:-1 group-title="📡卫视频道" tvg-name="山东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E5%8D%AB%E8%A7%86.png",山东卫视 +http://l.cztvcloud.com/channels/lantian/SXshengzhou1/720p.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="山东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E5%8D%AB%E8%A7%86.png",山东卫视 +http://iptv.huuc.edu.cn/hls/sdhd.m3u8 #EXTINF:-1 group-title="📡卫视频道" tvg-name="山西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E5%8D%AB%E8%A7%86.png",山西卫视 http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010114 #EXTINF:-1 group-title="📡卫视频道" tvg-name="山西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E8%A5%BF%E5%8D%AB%E8%A7%86.png",山西卫视 @@ -2016,36 +2016,34 @@ https://www.freetv.top/migu/738910838.m3u8?migutoken=35df06ac83a8fe0b0d98f96b8db #EXTINF:-1 group-title="📡卫视频道" tvg-name="四川卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%9B%9B%E5%B7%9D%E5%8D%AB%E8%A7%86.png",四川卫视 http://222.218.122.114:8188/udp/239.81.0.130:4056 #EXTINF:-1 group-title="📡卫视频道" tvg-name="四川卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%9B%9B%E5%B7%9D%E5%8D%AB%E8%A7%86.png",四川卫视 -http://116.237.148.215:8881/rtp/239.45.1.83:5140 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="四川卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%9B%9B%E5%B7%9D%E5%8D%AB%E8%A7%86.png",四川卫视 -http://111.162.205.201:8686/rtp/225.1.1.123:5002 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="四川卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%9B%9B%E5%B7%9D%E5%8D%AB%E8%A7%86.png",四川卫视 http://60.26.181.220:4022/rtp/225.1.1.123:5002 #EXTINF:-1 group-title="📡卫视频道" tvg-name="四川卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%9B%9B%E5%B7%9D%E5%8D%AB%E8%A7%86.png",四川卫视 -http://219.141.44.245:8188/udp/238.255.2.76:5999 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="四川卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%9B%9B%E5%B7%9D%E5%8D%AB%E8%A7%86.png",四川卫视 http://171.15.18.199:8180/TV00000000000000000040@HHZT #EXTINF:-1 group-title="📡卫视频道" tvg-name="四川卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%9B%9B%E5%B7%9D%E5%8D%AB%E8%A7%86.png",四川卫视 -http://121.29.141.167:4022/rtp/239.253.92.16:6043 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="四川卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%9B%9B%E5%B7%9D%E5%8D%AB%E8%A7%86.png",四川卫视 http://php.jdshipin.com/TVOD/hljyd.php?id=3221226338 #EXTINF:-1 group-title="📡卫视频道" tvg-name="四川卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%9B%9B%E5%B7%9D%E5%8D%AB%E8%A7%86.png",四川卫视 http://z.b.bkpcp.top/m.php?id=scws #EXTINF:-1 group-title="📡卫视频道" tvg-name="四川卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%9B%9B%E5%B7%9D%E5%8D%AB%E8%A7%86.png",四川卫视 http://j.x.bkpcp.top/jx/SICHD +#EXTINF:-1 group-title="📡卫视频道" tvg-name="四川卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%9B%9B%E5%B7%9D%E5%8D%AB%E8%A7%86.png",四川卫视 +http://iptv.huuc.edu.cn/hls/schd.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="四川卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%9B%9B%E5%B7%9D%E5%8D%AB%E8%A7%86.png",四川卫视 +http://dsj.motem.top:8880/bptv/10000100000000050000000003887274.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="四川卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%9B%9B%E5%B7%9D%E5%8D%AB%E8%A7%86.png",四川卫视 +http://[2409:8087:1a0a:df::404b]/ottrrs.hl.chinamobile.com/TVOD/88888888/224/3221226338/index.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="四川卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%9B%9B%E5%B7%9D%E5%8D%AB%E8%A7%86.png",四川卫视 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221226338/index.m3u8 #EXTINF:-1 group-title="📡卫视频道" tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%B1%E5%9C%B3%E5%8D%AB%E8%A7%86.png",深圳卫视 http://satellitepull.cnr.cn/live/wxszws/playlist.m3u8 #EXTINF:-1 group-title="📡卫视频道" tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%B1%E5%9C%B3%E5%8D%AB%E8%A7%86.png",深圳卫视 -http://123.160.232.254:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%B1%E5%9C%B3%E5%8D%AB%E8%A7%86.png",深圳卫视 http://60.26.181.220:4022/rtp/225.1.1.117:5002 #EXTINF:-1 group-title="📡卫视频道" tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%B1%E5%9C%B3%E5%8D%AB%E8%A7%86.png",深圳卫视 http://219.141.44.245:8188/udp/238.255.2.61:5999 #EXTINF:-1 group-title="📡卫视频道" tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%B1%E5%9C%B3%E5%8D%AB%E8%A7%86.png",深圳卫视 -http://111.196.134.250:20000/udp/239.3.1.134:8020 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%B1%E5%9C%B3%E5%8D%AB%E8%A7%86.png",深圳卫视 http://111.162.205.201:8686/rtp/225.1.1.117:5002 #EXTINF:-1 group-title="📡卫视频道" tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%B1%E5%9C%B3%E5%8D%AB%E8%A7%86.png",深圳卫视 +http://114.238.59.148:4000/rtp/239.49.8.15:9430 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%B1%E5%9C%B3%E5%8D%AB%E8%A7%86.png",深圳卫视 http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010068 #EXTINF:-1 group-title="📡卫视频道" tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%B1%E5%9C%B3%E5%8D%AB%E8%A7%86.png",深圳卫视 http://iptv.huuc.edu.cn/hls/szhd.m3u8 @@ -2053,6 +2051,8 @@ http://iptv.huuc.edu.cn/hls/szhd.m3u8 https://smart.pendy.dpdns.org/Smart.php?id=shenzhen #EXTINF:-1 group-title="📡卫视频道" tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%B1%E5%9C%B3%E5%8D%AB%E8%A7%86.png",深圳卫视 http://dsj.motem.top:8880/bptv/10000100000000050000000003873474.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%B1%E5%9C%B3%E5%8D%AB%E8%A7%86.png",深圳卫视 +http://z.b.bkpcp.top/m.php?id=szws #EXTINF:-1 group-title="📡卫视频道" tvg-name="三沙卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%89%E6%B2%99%E5%8D%AB%E8%A7%86.png",三沙卫视 http://dsj.motem.top:8880/bptv/10000100000000050000000003887452.m3u8 #EXTINF:-1 group-title="📡卫视频道" tvg-name="三沙卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%89%E6%B2%99%E5%8D%AB%E8%A7%86.png",三沙卫视 @@ -2074,25 +2074,25 @@ http://[2409:8087:5e01:34::21]:6610/ZTE_CMS/08984400000000060000000000000319/ind #EXTINF:-1 group-title="📡卫视频道" tvg-name="三沙卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%89%E6%B2%99%E5%8D%AB%E8%A7%86.png",三沙卫视 https://stream1.freetv.fun/8bd6b69c423ac31e71c2311ad33f4f291e1314c69005ffb7b3b7defc2944adb2.m3u8 #EXTINF:-1 group-title="📡卫视频道" tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%B4%A5%E5%8D%AB%E8%A7%86.png",天津卫视 -http://123.160.232.254:9901/tsfile/live/0135_1.m3u8?key=txiptv&playlive=1&authid=0 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%B4%A5%E5%8D%AB%E8%A7%86.png",天津卫视 -http://111.162.205.201:8686/rtp/225.1.1.111:5002 +http://60.26.181.220:4022/rtp/225.1.1.111:5002 #EXTINF:-1 group-title="📡卫视频道" tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%B4%A5%E5%8D%AB%E8%A7%86.png",天津卫视 http://116.237.148.215:8881/rtp/239.45.1.124:5140 #EXTINF:-1 group-title="📡卫视频道" tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%B4%A5%E5%8D%AB%E8%A7%86.png",天津卫视 http://114.226.231.231:8787/rtp/239.49.8.35:8620 #EXTINF:-1 group-title="📡卫视频道" tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%B4%A5%E5%8D%AB%E8%A7%86.png",天津卫视 -http://60.26.181.220:4022/rtp/225.1.1.111:5002 +http://111.162.205.201:8686/rtp/225.1.1.111:5002 #EXTINF:-1 group-title="📡卫视频道" tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%B4%A5%E5%8D%AB%E8%A7%86.png",天津卫视 http://111.193.239.245:9999/rtp/239.3.1.141:1234 #EXTINF:-1 group-title="📡卫视频道" tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%B4%A5%E5%8D%AB%E8%A7%86.png",天津卫视 -http://121.29.141.167:4022/rtp/239.253.92.91:8021 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%B4%A5%E5%8D%AB%E8%A7%86.png",天津卫视 http://php.jdshipin.com/TVOD/hljyd.php?id=3221226459 #EXTINF:-1 group-title="📡卫视频道" tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%B4%A5%E5%8D%AB%E8%A7%86.png",天津卫视 http://j.x.bkpcp.top/jx/TIANJHD #EXTINF:-1 group-title="📡卫视频道" tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%B4%A5%E5%8D%AB%E8%A7%86.png",天津卫视 http://iptv.huuc.edu.cn/hls/tjhd.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%B4%A5%E5%8D%AB%E8%A7%86.png",天津卫视 +http://[2409:8087:1a01:df::4030]:80/TVOD/88888888/224/3221225972/main.m3u8 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%B4%A5%E5%8D%AB%E8%A7%86.png",天津卫视 +http://dsj.motem.top:8880/bptv/10000100000000050000000003873466.m3u8 #EXTINF:-1 group-title="📡卫视频道" tvg-name="西藏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%A5%BF%E8%97%8F%E5%8D%AB%E8%A7%86.png",西藏卫视 http://satellitepull.cnr.cn/live/wxxzws/playlist.m3u8 #EXTINF:-1 group-title="📡卫视频道" tvg-name="西藏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%A5%BF%E8%97%8F%E5%8D%AB%E8%A7%86.png",西藏卫视 @@ -2134,10 +2134,10 @@ http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/32212 #EXTINF:-1 group-title="📡卫视频道" tvg-name="新疆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E7%96%86%E5%8D%AB%E8%A7%86.png",新疆卫视 http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226546/1.m3u8 #EXTINF:-1 group-title="📡卫视频道" tvg-name="云南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E5%8D%97%E5%8D%AB%E8%A7%86.png",云南卫视 -http://123.160.232.254:9901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=1&authid=0 -#EXTINF:-1 group-title="📡卫视频道" tvg-name="云南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E5%8D%97%E5%8D%AB%E8%A7%86.png",云南卫视 http://116.237.148.215:8881/rtp/239.45.0.4:5140 #EXTINF:-1 group-title="📡卫视频道" tvg-name="云南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E5%8D%97%E5%8D%AB%E8%A7%86.png",云南卫视 +http://218.1.137.125:4022/rtp/239.45.0.4:5140 +#EXTINF:-1 group-title="📡卫视频道" tvg-name="云南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E5%8D%97%E5%8D%AB%E8%A7%86.png",云南卫视 http://180.165.29.204:4022/rtp/239.45.0.4:5140 #EXTINF:-1 group-title="📡卫视频道" tvg-name="云南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E5%8D%97%E5%8D%AB%E8%A7%86.png",云南卫视 http://php.jdshipin.com/TVOD/hljyd.php?id=3221226444 @@ -2430,12 +2430,8 @@ https://stream1.freetv.fun/shan-tou-jing-ji-5.ctv #EXTINF:-1 group-title="☘️广东频道" tvg-name="汕头经济" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%95%E5%A4%B4%E7%BB%8F%E6%B5%8E.png",汕头经济 https://stream1.freetv.fun/shan-tou-jing-ji-6.ctv #EXTINF:-1 group-title="☘️广东频道" tvg-name="茂名综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%8C%82%E5%90%8D%E7%BB%BC%E5%90%88.png",茂名综合 -http://baota.guangyuan.site:8188/rtp/239.77.0.206:5146 -#EXTINF:-1 group-title="☘️广东频道" tvg-name="茂名综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%8C%82%E5%90%8D%E7%BB%BC%E5%90%88.png",茂名综合 http://rustdesk.szsun.xyz:8088/rtp/239.77.0.206:5146 #EXTINF:-1 group-title="☘️广东频道" tvg-name="茂名公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%8C%82%E5%90%8D%E5%85%AC%E5%85%B1.png",茂名公共 -http://baota.guangyuan.site:8188/rtp/239.77.0.207:5146 -#EXTINF:-1 group-title="☘️广东频道" tvg-name="茂名公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%8C%82%E5%90%8D%E5%85%AC%E5%85%B1.png",茂名公共 http://rustdesk.szsun.xyz:8088/rtp/239.77.0.207:5146 #EXTINF:-1 group-title="☘️浙江频道" tvg-name="浙江钱江" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%99%E6%B1%9F%E9%92%B1%E6%B1%9F.png",浙江钱江 https://ali-m-l.cztv.com/channels/lantian/channel002/1080p.m3u8 @@ -2726,14 +2722,10 @@ https://l.cztvcloud.com/channels/lantian/SXlongyou1/720p.m3u8 #EXTINF:-1 group-title="☘️浙江频道" tvg-name="龙游新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BE%99%E6%B8%B8%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",龙游新闻综合 http://l.cztvcloud.com/channels/lantian/SXlongyou1/720p.m3u8 #EXTINF:-1 group-title="☘️浙江频道" tvg-name="龙泉新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BE%99%E6%B3%89%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",龙泉新闻综合 -http://l.cztvcloud.com/channels/lantian/SXlongquan1/720p.m3u8?zzhed, -#EXTINF:-1 group-title="☘️浙江频道" tvg-name="龙泉新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BE%99%E6%B3%89%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",龙泉新闻综合 http://l.cztvcloud.com/channels/lantian/SXlongquan1/720p.m3u8 #EXTINF:-1 group-title="☘️浙江频道" tvg-name="龙泉新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BE%99%E6%B3%89%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",龙泉新闻综合 http://l.cztvcloud.com/channels/lantian/SXlongquan1/720p.m3u8?zzhed&quot; #EXTINF:-1 group-title="☘️浙江频道" tvg-name="青田电视台" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%92%E7%94%B0%E7%94%B5%E8%A7%86%E5%8F%B0.png",青田电视台 -http://l.cztvcloud.com/channels/lantian/SXqingtian1/720p.m3u8?zzhed -#EXTINF:-1 group-title="☘️浙江频道" tvg-name="青田电视台" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%92%E7%94%B0%E7%94%B5%E8%A7%86%E5%8F%B0.png",青田电视台 http://l.cztvcloud.com/channels/lantian/SXqingtian1/720p.m3u8 #EXTINF:-1 group-title="☘️浙江频道" tvg-name="遂昌综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%81%82%E6%98%8C%E7%BB%BC%E5%90%88.png",遂昌综合 http://l.cztvcloud.com/channels/lantian/SXsuichang1/720p.m3u8?zzhed @@ -2814,8 +2806,6 @@ https://stream1.freetv.fun/shao-xing-gong-gong-8.m3u8 #EXTINF:-1 group-title="☘️浙江频道" tvg-name="洞头综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B4%9E%E5%A4%B4%E7%BB%BC%E5%90%88.png",洞头综合 http://l.cztvcloud.com/channels/lantian/SXdongtou1/720p.m3u8 #EXTINF:-1 group-title="☘️浙江频道" tvg-name="永嘉新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B0%B8%E5%98%89%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",永嘉新闻综合 -http://l.cztvcloud.com/channels/lantian/SXyongjia1/720p.m3u8?zzhed, -#EXTINF:-1 group-title="☘️浙江频道" tvg-name="永嘉新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B0%B8%E5%98%89%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",永嘉新闻综合 http://l.cztvcloud.com/channels/lantian/SXyongjia1/720p.m3u8 #EXTINF:-1 group-title="☘️浙江频道" tvg-name="永嘉新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B0%B8%E5%98%89%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",永嘉新闻综合 https://stream1.freetv.fun/yong-jia-xin-wen-zong-he-3.ctv @@ -2838,6 +2828,8 @@ http://l.cztvcloud.com/channels/lantian/SXwuyi1/720p.m3u8 #EXTINF:-1 group-title="☘️浙江频道" tvg-name="武义新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%AD%A6%E4%B9%89%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",武义新闻综合 http://l.cztvcloud.com/channels/lantian/SXwuyi1/720p.m3u8?zzhed #EXTINF:-1 group-title="☘️浙江频道" tvg-name="松阳综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%9D%BE%E9%98%B3%E7%BB%BC%E5%90%88.png",松阳综合 +http://l.cztvcloud.com/channels/lantian/SXsongyang1/720p.m3u8?zzhed;http://l.cztvcloud.com/channels/lantian/SXsongyang1/720p.m3u8zzhed +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="松阳综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%9D%BE%E9%98%B3%E7%BB%BC%E5%90%88.png",松阳综合 http://l.cztvcloud.com/channels/lantian/SXsongyang1/720p.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] #EXTINF:-1 group-title="☘️浙江频道" tvg-name="松阳综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%9D%BE%E9%98%B3%E7%BB%BC%E5%90%88.png",松阳综合 http://l.cztvcloud.com/channels/lantian/SXsongyang1/720p.m3u8 @@ -2878,8 +2870,6 @@ http://l.cztvcloud.com/channels/lantian/SXkaihua1/720p.m3u8 #EXTINF:-1 group-title="☘️浙江频道" tvg-name="开化国家公园" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BC%80%E5%8C%96%E5%9B%BD%E5%AE%B6%E5%85%AC%E5%9B%AD.png",开化国家公园 http://l.cztvcloud.com/channels/lantian/SXkaihua2/720p.m3u8 #EXTINF:-1 group-title="☘️浙江频道" tvg-name="庆元综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BA%86%E5%85%83%E7%BB%BC%E5%90%88.png",庆元综合 -http://l.cztvcloud.com/channels/lantian/SXqingyuan1/720p.m3u8?zzhed[浙江]洞头综合频道 -#EXTINF:-1 group-title="☘️浙江频道" tvg-name="庆元综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BA%86%E5%85%83%E7%BB%BC%E5%90%88.png",庆元综合 http://l.cztvcloud.com/channels/lantian/SXqingyuan1/720p.m3u8 #EXTINF:-1 group-title="☘️浙江频道" tvg-name="庆元综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BA%86%E5%85%83%E7%BB%BC%E5%90%88.png",庆元综合 http://l.cztvcloud.com/channels/lantian/SXqingyuan1/720p.m3u8?zzhed @@ -2922,14 +2912,12 @@ http://l.cztvcloud.com/channels/lantian/SXlanxi1/720p.m3u8 #EXTINF:-1 group-title="☘️浙江频道" tvg-name="兰溪新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%85%B0%E6%BA%AA%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",兰溪新闻综合 http://l.cztvcloud.com/channels/lantian/SXlanxi1/720p.m3u8?zzhed #EXTINF:-1 group-title="☘️浙江频道" tvg-name="余杭综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BD%99%E6%9D%AD%E7%BB%BC%E5%90%88.png",余杭综合 +http://l.cztvcloud.com/channels/lantian/SXyuhang1/720p.m3u8?cWlkPSZzPTg3OWMwYmMyZDMzYTFhZGY3NDQxMjgyYTg1MmUzNTY0JmVzPTE3MDY2Nzc4NzMmdXVpZD0yMjdiY2MzNGNiNGY0MThlYjRiY2IxYzcwNmZjODNkMS02NzQ3NDY2NyZ2PTImYXM9MCZjZG5leF9pZD10eF9waG9uZV9saXZl +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="余杭综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BD%99%E6%9D%AD%E7%BB%BC%E5%90%88.png",余杭综合 http://l.cztvcloud.com/channels/lantian/SXyuhang1/720p.m3u8 #EXTINF:-1 group-title="☘️浙江频道" tvg-name="余杭未来E" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BD%99%E6%9D%AD%E6%9C%AA%E6%9D%A5E.png",余杭未来E -http://l.cztvcloud.com/channels/lantian/SXyuhang3/720p.m3u8?zzhed -#EXTINF:-1 group-title="☘️浙江频道" tvg-name="余杭未来E" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BD%99%E6%9D%AD%E6%9C%AA%E6%9D%A5E.png",余杭未来E http://l.cztvcloud.com/channels/lantian/SXyuhang3/720p.m3u8 #EXTINF:-1 group-title="☘️浙江频道" tvg-name="余姚综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BD%99%E5%A7%9A%E7%BB%BC%E5%90%88.png",余姚综合 -http://l.cztvcloud.com/channels/lantian/SXyuyao1/720p.m3u8?zzhed -#EXTINF:-1 group-title="☘️浙江频道" tvg-name="余姚综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BD%99%E5%A7%9A%E7%BB%BC%E5%90%88.png",余姚综合 http://l.cztvcloud.com/channels/lantian/SXyuyao1/720p.m3u8 #EXTINF:-1 group-title="☘️浙江频道" tvg-name="余姚综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BD%99%E5%A7%9A%E7%BB%BC%E5%90%88.png",余姚综合 https://l.cztvcloud.com/channels/lantian/SXyuyao1/720p.m3u8 @@ -2938,8 +2926,6 @@ http://l.cztvcloud.com/channels/lantian/SXyuyao1/720p.m3u8?cWlkPSZzPTg3OWMwYmMyZ #EXTINF:-1 group-title="☘️浙江频道" tvg-name="余姚综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BD%99%E5%A7%9A%E7%BB%BC%E5%90%88.png",余姚综合 http://l.cztvcloud.com/channels/lantian/SXyuyao1/720p.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] #EXTINF:-1 group-title="☘️浙江频道" tvg-name="余姚新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BD%99%E5%A7%9A%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",余姚新闻综合 -http://l.cztvcloud.com/channels/lantian/SXyuyao1/720p.m3u8?cWlkPSZzPTg3OWMwYmMyZDMzYTFhZGY3NDQxMjgyYTg1MmUzNTY0JmVzPTE3MDY2Nzc4NzMmdXVpZD0yMjdiY2MzNGNiNGY0MThlYjRiY2IxYzcwNmZjODNkMS02NzQ3NDY2NyZ2PTImYXM9MCZjZG5leF9pZD10eF9waG9uZV9saXZl -#EXTINF:-1 group-title="☘️浙江频道" tvg-name="余姚新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BD%99%E5%A7%9A%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",余姚新闻综合 https://l.cztvcloud.com/channels/lantian/SXyuyao1/720p.m3u8 #EXTINF:-1 group-title="☘️浙江频道" tvg-name="余姚新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BD%99%E5%A7%9A%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",余姚新闻综合 http://l.cztvcloud.com/channels/lantian/SXyuyao1/720p.m3u8?zzhed @@ -2966,8 +2952,6 @@ http://l.cztvcloud.com/channels/lantian/SXshangyu1/720p.m3u8?zzhed #EXTINF:-1 group-title="☘️浙江频道" tvg-name="上虞新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E8%99%9E%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",上虞新闻综合 http://l.cztvcloud.com/channels/lantian/SXshangyu1/720p.m3u8 #EXTINF:-1 group-title="☘️浙江频道" tvg-name="上虞新商都" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E8%99%9E%E6%96%B0%E5%95%86%E9%83%BD.png",上虞新商都 -http://l.cztvcloud.com/channels/lantian/SXshangyu3/720p.m3u8?zzhed -#EXTINF:-1 group-title="☘️浙江频道" tvg-name="上虞新商都" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E8%99%9E%E6%96%B0%E5%95%86%E9%83%BD.png",上虞新商都 http://l.cztvcloud.com/channels/lantian/SXshangyu3/720p.m3u8?zzhed\r\n #EXTINF:-1 group-title="☘️浙江频道" tvg-name="上虞新商都" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E8%99%9E%E6%96%B0%E5%95%86%E9%83%BD.png",上虞新商都 https://stream1.freetv.fun/shang-yu-xin-shang-du-1.m3u8 @@ -2984,10 +2968,10 @@ https://stream1.freetv.fun/shang-yu-xin-shang-du-2.m3u8 #EXTINF:-1 group-title="☘️浙江频道" tvg-name="上虞新商都" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E8%99%9E%E6%96%B0%E5%95%86%E9%83%BD.png",上虞新商都 https://stream1.freetv.fun/shang-yu-xin-shang-du-4.m3u8 #EXTINF:-1 group-title="☘️浙江频道" tvg-name="上虞文化影院" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E8%99%9E%E6%96%87%E5%8C%96%E5%BD%B1%E9%99%A2.png",上虞文化影院 -http://l.cztvcloud.com/channels/lantian/SXshangyu2/720p.m3u8?zzhed -#EXTINF:-1 group-title="☘️浙江频道" tvg-name="上虞文化影院" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E8%99%9E%E6%96%87%E5%8C%96%E5%BD%B1%E9%99%A2.png",上虞文化影院 http://l.cztvcloud.com/channels/lantian/SXshangyu2/720p.m3u8?zzhed;http://l.cztvcloud.com/channels/lantian/SXshangyu2/720p.m3u8zzhed #EXTINF:-1 group-title="☘️浙江频道" tvg-name="上虞文化影院" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E8%99%9E%E6%96%87%E5%8C%96%E5%BD%B1%E9%99%A2.png",上虞文化影院 +http://l.cztvcloud.com/channels/lantian/SXshangyu2/720p.m3u8?zzhed +#EXTINF:-1 group-title="☘️浙江频道" tvg-name="上虞文化影院" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E8%99%9E%E6%96%87%E5%8C%96%E5%BD%B1%E9%99%A2.png",上虞文化影院 https://stream1.freetv.fun/shang-yu-wen-hua-ying-yuan-3.ctv #EXTINF:-1 group-title="☘️浙江频道" tvg-name="上虞文化影院" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%8A%E8%99%9E%E6%96%87%E5%8C%96%E5%BD%B1%E9%99%A2.png",上虞文化影院 https://stream1.freetv.fun/shang-yu-wen-hua-ying-yuan-4.ctv @@ -3038,10 +3022,10 @@ http://nas.suntao.online:35455/bptv/10000100000000050000000003870780.m3u8 #EXTINF:-1 group-title="☘️北京频道" tvg-name="北京新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E6%96%B0%E9%97%BB.png",北京新闻 http://yc.myds.me:35455/bptv/10000100000000050000000003870780.m3u8 #EXTINF:-1 group-title="☘️北京频道" tvg-name="北京生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E7%94%9F%E6%B4%BB.png",北京生活 -http://111.193.239.245:9999/rtp/239.3.1.117:8000 -#EXTINF:-1 group-title="☘️北京频道" tvg-name="北京生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E7%94%9F%E6%B4%BB.png",北京生活 https://wstvcpudali.v.myalicdn.com/wstvcpud/udrmbtv7_1/index.m3u8?adapt=0&BR=audio #EXTINF:-1 group-title="☘️北京频道" tvg-name="北京生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E7%94%9F%E6%B4%BB.png",北京生活 +http://111.193.239.245:9999/rtp/239.3.1.117:8000 +#EXTINF:-1 group-title="☘️北京频道" tvg-name="北京生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E7%94%9F%E6%B4%BB.png",北京生活 http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226514/1.m3u8 #EXTINF:-1 group-title="☘️北京频道" tvg-name="北京生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E7%94%9F%E6%B4%BB.png",北京生活 http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226561/1.m3u8 @@ -3060,10 +3044,10 @@ https://migu1.188766.xyz/?migutoken=2a838e272a0ca0393b5b8d6e69fc36bb&id=%E5% #EXTINF:-1 group-title="☘️北京频道" tvg-name="北京科教" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E7%A7%91%E6%95%99.png",北京科教 http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225729/index.m3u8 #EXTINF:-1 group-title="☘️北京频道" tvg-name="北京财经" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E8%B4%A2%E7%BB%8F.png",北京财经 -http://111.193.239.245:9999/rtp/239.3.1.116:8000 -#EXTINF:-1 group-title="☘️北京频道" tvg-name="北京财经" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E8%B4%A2%E7%BB%8F.png",北京财经 https://wstvcpudali.v.myalicdn.com/wstvcpud/udrmbtv5_1/index.m3u8?adapt=0&BR=audio #EXTINF:-1 group-title="☘️北京频道" tvg-name="北京财经" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E8%B4%A2%E7%BB%8F.png",北京财经 +http://111.193.239.245:9999/rtp/239.3.1.116:8000 +#EXTINF:-1 group-title="☘️北京频道" tvg-name="北京财经" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E8%B4%A2%E7%BB%8F.png",北京财经 http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226516/1.m3u8 #EXTINF:-1 group-title="☘️北京频道" tvg-name="北京财经" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E4%BA%AC%E8%B4%A2%E7%BB%8F.png",北京财经 http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226560/1.m3u8 @@ -3218,12 +3202,12 @@ http://miqlin.cyou:8888/udp/233.18.204.65:5140 #EXTINF:-1 group-title="☘️上海频道" tvg-name="东方财经" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%96%B9%E8%B4%A2%E7%BB%8F.png",东方财经 http://iptv.cdn.ha.chinamobile.com/PLTV/88888888/224/3221226327/index.m3u8?icpid=88888888&servicetype=1 #EXTINF:-1 group-title="☘️上海频道" tvg-name="动漫秀场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8A%A8%E6%BC%AB%E7%A7%80%E5%9C%BA.png",动漫秀场 -http://180.165.28.24:4022/rtp/239.45.3.134:5140 -#EXTINF:-1 group-title="☘️上海频道" tvg-name="动漫秀场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8A%A8%E6%BC%AB%E7%A7%80%E5%9C%BA.png",动漫秀场 http://116.237.148.215:8881/rtp/239.45.3.134:5140 #EXTINF:-1 group-title="☘️上海频道" tvg-name="动漫秀场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8A%A8%E6%BC%AB%E7%A7%80%E5%9C%BA.png",动漫秀场 http://180.165.29.204:4022/rtp/239.45.3.134:5140 #EXTINF:-1 group-title="☘️上海频道" tvg-name="动漫秀场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8A%A8%E6%BC%AB%E7%A7%80%E5%9C%BA.png",动漫秀场 +http://218.1.137.125:4022/rtp/239.45.3.134:5140 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="动漫秀场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8A%A8%E6%BC%AB%E7%A7%80%E5%9C%BA.png",动漫秀场 http://php.jdshipin.com/itv6.php?cid=bestzb&id=5000000011000031113 #EXTINF:-1 group-title="☘️上海频道" tvg-name="动漫秀场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8A%A8%E6%BC%AB%E7%A7%80%E5%9C%BA.png",动漫秀场 http://[2409:8087:74d9:21::6]/000000001000PLTV/88888888/224/3221226197/index.m3u8 @@ -3240,6 +3224,8 @@ https://stream1.freetv.fun/ipv6-dong-man-xiu-chang-11.m3u8 #EXTINF:-1 group-title="☘️上海频道" tvg-name="哈哈炫动" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%93%88%E5%93%88%E7%82%AB%E5%8A%A8.png",哈哈炫动 http://116.237.148.215:8881/rtp/239.45.1.55:5140 #EXTINF:-1 group-title="☘️上海频道" tvg-name="哈哈炫动" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%93%88%E5%93%88%E7%82%AB%E5%8A%A8.png",哈哈炫动 +http://218.1.137.125:4022/rtp/239.45.1.55:5140 +#EXTINF:-1 group-title="☘️上海频道" tvg-name="哈哈炫动" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%93%88%E5%93%88%E7%82%AB%E5%8A%A8.png",哈哈炫动 http://180.165.29.204:4022/rtp/239.45.1.55:5140 #EXTINF:-1 group-title="☘️上海频道" tvg-name="哈哈炫动" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%93%88%E5%93%88%E7%82%AB%E5%8A%A8.png",哈哈炫动 http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010117 @@ -3255,8 +3241,6 @@ https://stream1.freetv.fun/ha-ha-xuan-dong-31.m3u8 https://live.lalifeier.eu.org/kankanews/hhxd.m3u8?t=1746307365&key=611cf4efea7a3dd2fe1b6a28541bed06 #EXTINF:-1 group-title="☘️上海频道" tvg-name="哈哈炫动" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%93%88%E5%93%88%E7%82%AB%E5%8A%A8.png",哈哈炫动 https://stream1.freetv.fun/ha-ha-xuan-dong-25.m3u8 -#EXTINF:-1 group-title="☘️上海频道" tvg-name="哈哈炫动" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%93%88%E5%93%88%E7%82%AB%E5%8A%A8.png",哈哈炫动 -https://stream1.freetv.fun/ha-ha-xuan-dong-8.m3u8 #EXTINF:-1 group-title="☘️上海频道" tvg-name="新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",新闻综合 http://p2.vzan.com/slowlive/596867413819827251/live.m3u8 #EXTINF:-1 group-title="☘️上海频道" tvg-name="新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",新闻综合 @@ -3425,8 +3409,6 @@ https://live.nbs.cn/channels/njtv/xxpd/m3u8:500k/live.m3u8 http://[2409:8087:2001:20:2800:0:df6e:eb10]/wh7f454c46tw3029680014_-204362700/ott.mobaibox.com/PLTV/3/224/3221227730/index.m3u8 #EXTINF:-1 group-title="☘️江苏频道" tvg-name="南京信息" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E4%BA%AC%E4%BF%A1%E6%81%AF.png",南京信息 http://[2409:8087:2001:20:2800:0:df6e:eb10]:80/wh7f454c46tw471420022_-144346351/ott.mobaibox.com/PLTV/3/224/3221227730/index.m3u8?icpid=3&RTS=1674380586&from=40&popid=40&hms_devid=2110&prioritypopid=40&vqe=3 -#EXTINF:-1 group-title="☘️江苏频道" tvg-name="南京信息" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E4%BA%AC%E4%BF%A1%E6%81%AF.png",南京信息 -http://live.nbs.cn/channels/njtv/xxpd/500k.m3u8?zjiangsd #EXTINF:-1 group-title="☘️江苏频道" tvg-name="南京十八" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E4%BA%AC%E5%8D%81%E5%85%AB.png",南京十八 http://z.b.bkpcp.top/m.php?id=njsb #EXTINF:-1 group-title="☘️江苏频道" tvg-name="南京十八" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E4%BA%AC%E5%8D%81%E5%85%AB.png",南京十八 @@ -3449,8 +3431,6 @@ https://live.nbs.cn/channels/njtv/ylpd/m3u8:500k/live.m3u8 http://[2409:8087:2001:20:2800:0:df6e:eb10]/wh7f454c46tw3055198838_-954191684/ott.mobaibox.com/PLTV/3/224/3221227722/index.m3u8 #EXTINF:-1 group-title="☘️江苏频道" tvg-name="南京娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E4%BA%AC%E5%A8%B1%E4%B9%90.png",南京娱乐 http://[2409:8087:2001:20:2800:0:df6e:eb10]:80/wh7f454c46tw1756933853_327829486/ott.mobaibox.com/PLTV/3/224/3221227722/index.m3u8?icpid=3&RTS=1674386167&from=40&popid=40&hms_devid=2110&prioritypopid=40&vqe=3 -#EXTINF:-1 group-title="☘️江苏频道" tvg-name="南京娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E4%BA%AC%E5%A8%B1%E4%B9%90.png",南京娱乐 -http://live.nbs.cn/channels/njtv/ylpd/500k.m3u8?zjiangsd #EXTINF:-1 group-title="☘️江苏频道" tvg-name="南京少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E4%BA%AC%E5%B0%91%E5%84%BF.png",南京少儿 https://live.nbs.cn/channels/njtv/sepd/nbs23.m3u8 #EXTINF:-1 group-title="☘️江苏频道" tvg-name="南京少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E4%BA%AC%E5%B0%91%E5%84%BF.png",南京少儿 @@ -3467,8 +3447,6 @@ http://live.nbs.cn/channels/njtv/sepd/500k.m3u8#http://live.nbs.cn/channels/njtv http://live.nbs.cn/channels/njtv/sepd/500k.m3u8 #EXTINF:-1 group-title="☘️江苏频道" tvg-name="南京少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E4%BA%AC%E5%B0%91%E5%84%BF.png",南京少儿 http://live.nbs.cn/channels/njtv/sepd/m3u8:500k/live.m3u8#http://live.nbs.cn/channels/njtv/sepd/500k.m3u8?zjiangsd -#EXTINF:-1 group-title="☘️江苏频道" tvg-name="南京少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E4%BA%AC%E5%B0%91%E5%84%BF.png",南京少儿 -http://live.nbs.cn/channels/njtv/sepd/nbs23.m3u8 #EXTINF:-1 group-title="☘️江苏频道" tvg-name="南京教科" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E4%BA%AC%E6%95%99%E7%A7%91.png",南京教科 http://live.nbs.cn/channels/njtv/jkpd/nbs06.m3u8 #EXTINF:-1 group-title="☘️江苏频道" tvg-name="南京教科" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E4%BA%AC%E6%95%99%E7%A7%91.png",南京教科 @@ -3527,8 +3505,6 @@ http://stream.thmz.com/wxtv2/sd/live.m3u8?_upt=978cd8731706199708 http://stream.thmz.com/wxtv2/sd/live.m3u8?_upt=acffe97a1704940314 #EXTINF:-1 group-title="☘️江苏频道" tvg-name="无锡娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%97%A0%E9%94%A1%E5%A8%B1%E4%B9%90.png",无锡娱乐 http://stream.thmz.com/wxtv2/playlist.m3u8 -#EXTINF:-1 group-title="☘️江苏频道" tvg-name="无锡娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%97%A0%E9%94%A1%E5%A8%B1%E4%B9%90.png",无锡娱乐 -http://stream.thmz.com/wxtv2/sd/live.m3u8?zjiangsd#http://stream.thmz.com/wxtv2/playlist.m3u8?_upt=5ff4061f1706166872#http://stream.thmz.com/wxtv2/playlist.m3u8#http://stream.thmz.com/wxtv2/sd/live.m3u8?_upt=acffe97a1704940314 #EXTINF:-1 group-title="☘️江苏频道" tvg-name="无锡新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%97%A0%E9%94%A1%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",无锡新闻综合 http://m.m3u8.wifiwx.com/live/wifiwx-239.m3u8?zjiangsd #EXTINF:-1 group-title="☘️江苏频道" tvg-name="无锡新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%97%A0%E9%94%A1%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",无锡新闻综合 @@ -3549,16 +3525,12 @@ http://stream.thmz.com/wxtv4/sd/live.m3u8 http://stream.thmz.com/wxtv4/sd/live.m3u8?_upt=978cd8731706199708 #EXTINF:-1 group-title="☘️江苏频道" tvg-name="无锡生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%97%A0%E9%94%A1%E7%94%9F%E6%B4%BB.png",无锡生活 http://stream.thmz.com/wxtv4/playlist.m3u8 -#EXTINF:-1 group-title="☘️江苏频道" tvg-name="无锡生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%97%A0%E9%94%A1%E7%94%9F%E6%B4%BB.png",无锡生活 -http://stream.thmz.com/wxtv4/playlist.m3u8?_upt=8c51357c1707362770 #EXTINF:-1 group-title="☘️江苏频道" tvg-name="无锡经济" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%97%A0%E9%94%A1%E7%BB%8F%E6%B5%8E.png",无锡经济 https://stream.thmz.com/wxtv5/playlist.m3u8 #EXTINF:-1 group-title="☘️江苏频道" tvg-name="无锡经济" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%97%A0%E9%94%A1%E7%BB%8F%E6%B5%8E.png",无锡经济 http://stream.thmz.com/wxtv5/sd/live.m3u8 #EXTINF:-1 group-title="☘️江苏频道" tvg-name="无锡经济" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%97%A0%E9%94%A1%E7%BB%8F%E6%B5%8E.png",无锡经济 http://stream.thmz.com/wxtv5/playlist.m3u8 -#EXTINF:-1 group-title="☘️江苏频道" tvg-name="无锡经济" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%97%A0%E9%94%A1%E7%BB%8F%E6%B5%8E.png",无锡经济 -http://stream.thmz.com/wxtv5/sd/live.m3u8?zjiangsd#http://stream.thmz.com/wxtv5/playlist.m3u8?_upt=10155d141706166867#http://stream.thmz.com/wxtv5/playlist.m3u8#http://stream.thmz.com/wxtv5/sd/live.m3u8?_upt=cfacd5221704890772 #EXTINF:-1 group-title="☘️江苏频道" tvg-name="无锡都市资讯" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%97%A0%E9%94%A1%E9%83%BD%E5%B8%82%E8%B5%84%E8%AE%AF.png",无锡都市资讯 http://stream.thmz.com/wxtv3/playlist.m3u8?_upt=1758133b1706166861 #EXTINF:-1 group-title="☘️江苏频道" tvg-name="无锡都市资讯" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%97%A0%E9%94%A1%E9%83%BD%E5%B8%82%E8%B5%84%E8%AE%AF.png",无锡都市资讯 @@ -3655,8 +3627,6 @@ http://live1.habctv.com/ggpdsl/sd/live.m3u8?zjiangsd#http://live1.habctv.com/ggp http://live1.habctv.com/ggpdsl/sd/live.m3u8?zjiangsd#http://live1.habctv.com/ggpdsl/sd/live.m3u8 #EXTINF:-1 group-title="☘️江苏频道" tvg-name="淮安影院娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%AE%E5%AE%89%E5%BD%B1%E9%99%A2%E5%A8%B1%E4%B9%90.png",淮安影院娱乐 http://live1.habctv.com/ysylsl/sd/live.m3u8 -#EXTINF:-1 group-title="☘️江苏频道" tvg-name="淮安影院娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%AE%E5%AE%89%E5%BD%B1%E9%99%A2%E5%A8%B1%E4%B9%90.png",淮安影院娱乐 -http://live1.habctv.com/ysylsl/sd/live.m3u8?zjiangsd #EXTINF:-1 group-title="☘️江苏频道" tvg-name="淮安新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%AE%E5%AE%89%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",淮安新闻综合 http://z.b.bkpcp.top/m.php?id=haxwzh #EXTINF:-1 group-title="☘️江苏频道" tvg-name="淮安新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B7%AE%E5%AE%89%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",淮安新闻综合 @@ -3686,11 +3656,9 @@ http://live.lyg1.com/zhpd/sd/live.m3u8 #EXTINF:-1 group-title="☘️江苏频道" tvg-name="镇江二套社会民生" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%95%87%E6%B1%9F%E4%BA%8C%E5%A5%97%E7%A4%BE%E4%BC%9A%E6%B0%91%E7%94%9F.png",镇江二套社会民生 http://zjtv-wshls.homecdn.com/live/2aa16.m3u8 #EXTINF:-1 group-title="☘️江苏频道" tvg-name="镇江新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%95%87%E6%B1%9F%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",镇江新闻综合 -http://zjtv-wshls.homecdn.com/live/2aa50.m3u8 -#EXTINF:-1 group-title="☘️江苏频道" tvg-name="镇江新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%95%87%E6%B1%9F%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",镇江新闻综合 http://cm-wshls.homecdn.com/live/2aa50.m3u8 #EXTINF:-1 group-title="☘️江苏频道" tvg-name="镇江新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%95%87%E6%B1%9F%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",镇江新闻综合 -http://zjtv-wshls.homecdn.com/live/2aa50.m3u8?wsSession=a263bdc5a26cd01b57a80359-170493712215358&amp;wsIPSercert=f56bd6194d219a5172dbed60eca6e9b0 +http://zjtv-wshls.homecdn.com/live/2aa50.m3u8 #EXTINF:-1 group-title="☘️江苏频道" tvg-name="靖江新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%96%E6%B1%9F%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",靖江新闻综合 http://ls.qingting.fm/live/23797.m3u8 #EXTINF:-1 group-title="☘️江苏频道" tvg-name="靖江新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%96%E6%B1%9F%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",靖江新闻综合 @@ -3737,8 +3705,6 @@ https://stream1.freetv.fun/hu-nan-du-shi-1.m3u8 https://stream1.freetv.fun/hu-nan-du-shi-3.m3u8 #EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E9%83%BD%E5%B8%82.png",湖南都市 http://pili-live-snapshot.tv.hntvcloud.com/mg-tv/channel-6.m3u8 -#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E9%83%BD%E5%B8%82.png",湖南都市 -http://php.jdshipin.com:8880/TVOD/iptv.php?id=hnds #EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南经视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E7%BB%8F%E8%A7%86.png",湖南经视 https://stream1.freetv.fun/hu-nan-jing-shi-10.ctv #EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南经视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E7%BB%8F%E8%A7%86.png",湖南经视 @@ -3805,8 +3771,6 @@ http://p2.vzan.com/527645544/149039617847513156/live.m3u8 http://php.jdshipin.com:8880/iptv.php #EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南爱晚" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E7%88%B1%E6%99%9A.png",湖南爱晚 http://pili-live-snapshot.tv.hntvcloud.com/mg-tv/channel-9.m3u8 -#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南爱晚" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E7%88%B1%E6%99%9A.png",湖南爱晚 -http://php.jdshipin.com:8880/TVOD/iptv.php?id=hngg #EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E6%95%99%E8%82%B2.png",湖南教育 https://stream1.freetv.fun/hu-nan-jiao-yu-6.ctv #EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E6%95%99%E8%82%B2.png",湖南教育 @@ -3853,8 +3817,6 @@ https://stream1.freetv.fun/hu-nan-guo-ji-3.m3u8 http://php.jdshipin.com:8880/iptv.php #EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南国际" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%9B%BD%E9%99%85.png",湖南国际 http://pili-live-snapshot.tv.hntvcloud.com/mg-tv/channel-4.m3u8 -#EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南国际" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%9B%BD%E9%99%85.png",湖南国际 -http://php.jdshipin.com:8880/TVOD/iptv.php?id=hngj #EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%85%AC%E5%85%B1.png",湖南公共 https://stream1.freetv.fun/hu-nan-gong-gong-5.ctv #EXTINF:-1 group-title="☘️湖南频道" tvg-name="湖南公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B9%96%E5%8D%97%E5%85%AC%E5%85%B1.png",湖南公共 @@ -4083,8 +4045,6 @@ https://stream1.freetv.fun/jing-men-xin-wen-zong-he-5.m3u8 https://stream1.freetv.fun/jing-men-xin-wen-zong-he-4.m3u8 #EXTINF:-1 group-title="☘️湖北频道" tvg-name="荆门新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%8D%86%E9%97%A8%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",荆门新闻综合 http://stream.jmtv.com.cn/xwzh/sd/live.m3u8 -#EXTINF:-1 group-title="☘️湖北频道" tvg-name="荆门新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%8D%86%E9%97%A8%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",荆门新闻综合 -http://stream.jmtv.com.cn/xwzh/sd/live.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] #EXTINF:-1 group-title="☘️广西频道" tvg-name="北海经济科教" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8C%97%E6%B5%B7%E7%BB%8F%E6%B5%8E%E7%A7%91%E6%95%99.png",北海经济科教 https://play-a2.quklive.com:443/live/1727311690820146.m3u8 #EXTINF:-1 group-title="☘️广西频道" tvg-name="南宁公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E5%AE%81%E5%85%AC%E5%85%B1.png",南宁公共 @@ -4102,8 +4062,6 @@ https://stream1.freetv.fun/nan-zhu-gong-gong-7.m3u8 #EXTINF:-1 group-title="☘️广西频道" tvg-name="南宁公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E5%AE%81%E5%85%AC%E5%85%B1.png",南宁公共 https://stream1.freetv.fun/nan-zhu-gong-gong-9.m3u8 #EXTINF:-1 group-title="☘️广西频道" tvg-name="南宁新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E5%AE%81%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",南宁新闻综合 -http://live.xmcdn.com/live/305/64.m3u8?aac -#EXTINF:-1 group-title="☘️广西频道" tvg-name="南宁新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E5%AE%81%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",南宁新闻综合 http://688b7cbf9b7a8d911a085372b6c70ab5.livehwc3.cn/hls.nntv.cn/nnlive/XWZH_24.m3u8?sub_m3u8=true&edge_slice=true&user_session_id=d1391be1fc200f8e4700c5d82b44edae #EXTINF:-1 group-title="☘️广西频道" tvg-name="南宁新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E5%AE%81%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",南宁新闻综合 https://stream1.freetv.fun/nan-zhu-xin-wen-zong-he-1.m3u8 @@ -4135,8 +4093,6 @@ https://hlscdn.liangtv.cn/live/0234c48e0bc24fe1b41b9999a253e581/1075ee38e04f4906 http://hlscdn.liangtv.cn/live/0234c48e0bc24fe1b41b9999a253e581/1075ee38e04f490690f6a36a16e09c79.m3u8 #EXTINF:-1 group-title="☘️广西频道" tvg-name="广西国际" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E8%A5%BF%E5%9B%BD%E9%99%85.png",广西国际 https://mobilelive.gxtv.cn/live/nn_live1009/playlist.m3u8 -#EXTINF:-1 group-title="☘️广西频道" tvg-name="广西国际" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B9%BF%E8%A5%BF%E5%9B%BD%E9%99%85.png",广西国际 -http://hlscdn.liangtv.cn/live/0234c48e0bc24fe1b41b9999a253e581/1075ee38e04f490690f6a36a16e09c79.m3u8?fbl= #EXTINF:-1 group-title="☘️广西频道" tvg-name="南宁影视娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8D%97%E5%AE%81%E5%BD%B1%E8%A7%86%E5%A8%B1%E4%B9%90.png",南宁影视娱乐 http://688b7cbf9b7a8d911a085372b6c70ab5.livehwc3.cn/hls.nntv.cn/nnlive/YSYL_244.m3u8?sub_m3u8=true&edge_slice=true&user_session_id=e7eb508555e76e08cc1b198d04f41fb5 #EXTINF:-1 group-title="☘️天津频道" tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%A4%A9%E6%B4%A5%E5%8D%AB%E8%A7%86.png",天津卫视 @@ -4181,8 +4137,6 @@ rtmp://luzhi.xuyongrongmei.com:1935/live/xyxw?zsicd http://luzhi.xuyongrongmei.com:1935/live/_definst_/xyxw/playlist.m3u8 #EXTINF:-1 group-title="☘️四川频道" tvg-name="叙永综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8F%99%E6%B0%B8%E7%BB%BC%E5%90%88.png",叙永综合 http://luzhi.xuyongrongmei.com:1935/live/_definst_/xyxw/playlist.m3u8?zsicd -#EXTINF:-1 group-title="☘️四川频道" tvg-name="叙永综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8F%99%E6%B0%B8%E7%BB%BC%E5%90%88.png",叙永综合 -http://luzhi.xuyongrongmei.com:1935/live/_definst_/xyxw/playlist.m3u8?zsicd#rtmp://luzhi.xuyongrongmei.com:1935/live/xyxw?zsicd #EXTINF:-1 group-title="☘️四川频道" tvg-name="名山综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%8D%E5%B1%B1%E7%BB%BC%E5%90%88.png",名山综合 https://m3u8channel-bx.yunxya.com/nmip-media/channellive/channel104666/playlist.m3u8 #EXTINF:-1 group-title="☘️四川频道" tvg-name="名山综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%8D%E5%B1%B1%E7%BB%BC%E5%90%88.png",名山综合 @@ -4229,12 +4183,8 @@ http://live.spccmc.com:90/live/spxwzh.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1% http://live.spccmc.com:90/live/spxwzh.m3u8 #EXTINF:-1 group-title="☘️四川频道" tvg-name="松潘新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%9D%BE%E6%BD%98%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",松潘新闻综合 http://live.spccmc.com:90/live/spxwzh.m3u8?zsicd -#EXTINF:-1 group-title="☘️四川频道" tvg-name="松潘新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%9D%BE%E6%BD%98%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",松潘新闻综合 -http://live.spccmc.com:90/live/spxwzh.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] #EXTINF:-1 group-title="☘️四川频道" tvg-name="汉源综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%89%E6%BA%90%E7%BB%BC%E5%90%88.png",汉源综合 http://live.hyxrmt.com:85/live/xwpd.m3u8 -#EXTINF:-1 group-title="☘️四川频道" tvg-name="汉源综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%89%E6%BA%90%E7%BB%BC%E5%90%88.png",汉源综合 -http://live.hyxrmt.com:85/live/xwpd.m3u8?zsicd #EXTINF:-1 group-title="☘️四川频道" tvg-name="汶川新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%B6%E5%B7%9D%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",汶川新闻综合 rtmp://live.iwcmt.cn:1936/live/zhxw #EXTINF:-1 group-title="☘️四川频道" tvg-name="汶川新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B1%B6%E5%B7%9D%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",汶川新闻综合 @@ -4243,8 +4193,6 @@ http://live.iwcmt.cn:90/live/zhxw.m3u8 http://live.iwcmt.cn:90/live/zhxw.m3u8?zsicd #EXTINF:-1 group-title="☘️四川频道" tvg-name="沐川综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%90%E5%B7%9D%E7%BB%BC%E5%90%88.png",沐川综合 http://file.ysxtv.cn/cms/videos/nmip-media/channellive/channel4/playlist.m3u8?zsicd -#EXTINF:-1 group-title="☘️四川频道" tvg-name="沐川综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B2%90%E5%B7%9D%E7%BB%BC%E5%90%88.png",沐川综合 -http://file.ysxtv.cn/cms/videos/nmip-media/channellive/channel4/playlist.m3u8?zsicd#rtmp://tv.mcrm.org.cn:1935/channellive/tv01 #EXTINF:-1 group-title="☘️四川频道" tvg-name="泸县新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B3%B8%E5%8E%BF%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",泸县新闻综合 http://lxfile.lxxcb.cn/nmip-media/channellive/channel103799/playlist.m3u8 #EXTINF:-1 group-title="☘️四川频道" tvg-name="泸县新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B3%B8%E5%8E%BF%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",泸县新闻综合 @@ -4309,8 +4257,6 @@ https://live.zzyxxw.com:2443/live/xwzh.m3u8 http://live.zzyxxw.com:85/live/xwzh.m3u8 #EXTINF:-1 group-title="☘️福建频道" tvg-name="云霄综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E9%9C%84%E7%BB%BC%E5%90%88.png",云霄综合 http://live.zzyxxw.com:85/live/xwzh.m3u8?fujian -#EXTINF:-1 group-title="☘️福建频道" tvg-name="云霄综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BA%91%E9%9C%84%E7%BB%BC%E5%90%88.png",云霄综合 -http://live.zzyxxw.com:85/live/xwzh.m3u8?fujian, #EXTINF:-1 group-title="☘️福建频道" tvg-name="厦门卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8E%A6%E9%97%A8%E5%8D%AB%E8%A7%86.png",厦门卫视 http://dsj.motem.top:8880/bptv/10000100000000050000000003887454.m3u8 #EXTINF:-1 group-title="☘️福建频道" tvg-name="厦门卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%8E%A6%E9%97%A8%E5%8D%AB%E8%A7%86.png",厦门卫视 @@ -4341,8 +4287,6 @@ https://stream1.freetv.fun/zhang-zhou-xin-wen-zong-he-3.m3u8 http://live.zohi.tv/video/s10001-fztv-4/index.m3u8 #EXTINF:-1 group-title="☘️福建频道" tvg-name="福州生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%A6%8F%E5%B7%9E%E7%94%9F%E6%B4%BB.png",福州生活 http://live.zohi.tv/video/s10001-fztv-3/index.m3u8 -#EXTINF:-1 group-title="☘️福建频道" tvg-name="福州生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%A6%8F%E5%B7%9E%E7%94%9F%E6%B4%BB.png",福州生活 -http://live.zohi.tv:80/video/s10001-fztv-3/index.m3u8 #EXTINF:-1 group-title="☘️福建频道" tvg-name="福州综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%A6%8F%E5%B7%9E%E7%BB%BC%E5%90%88.png",福州综合 http://live.zohi.tv/video/s10001-fztv-1/index.m3u8 #EXTINF:-1 group-title="☘️福建频道" tvg-name="福建新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%A6%8F%E5%BB%BA%E6%96%B0%E9%97%BB.png",福建新闻 @@ -4455,8 +4399,6 @@ http://tvpull.dxhmt.cn:9081/tv/10781-1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1 http://tvpull.dxhmt.cn:9081/tv/10422-1.m3u8# #EXTINF:-1 group-title="☘️河南频道" tvg-name="唐河一套" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%94%90%E6%B2%B3%E4%B8%80%E5%A5%97.png",唐河一套 http://tvpull.dxhmt.cn:9081/tv/11328-1.m3u8 -#EXTINF:-1 group-title="☘️河南频道" tvg-name="唐河一套" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%94%90%E6%B2%B3%E4%B8%80%E5%A5%97.png",唐河一套 -http://tvpull.dxhmt.cn:9081/tv/11328-1.m3u8?zhend#http://tvpull.dxhmt.cn:9081/tv/11328-1.m3u8 #EXTINF:-1 group-title="☘️河南频道" tvg-name="固始综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%9B%BA%E5%A7%8B%E7%BB%BC%E5%90%88.png",固始综合 http://tvpull.dxhmt.cn:9081/tv/11525-1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] #EXTINF:-1 group-title="☘️河南频道" tvg-name="宝丰综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%9D%E4%B8%B0%E7%BB%BC%E5%90%88.png",宝丰综合 @@ -4489,8 +4431,6 @@ http://tvpull.dxhmt.cn:9081/tv/10185-1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1 http://tvpull.dxhmt.cn:9081/tv/11081-1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] #EXTINF:-1 group-title="☘️河南频道" tvg-name="西华综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%A5%BF%E5%8D%8E%E7%BB%BC%E5%90%88.png",西华综合 http://tvpull.dxhmt.cn:9081/tv/11622-1.m3u8 -#EXTINF:-1 group-title="☘️河南频道" tvg-name="西华综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%A5%BF%E5%8D%8E%E7%BB%BC%E5%90%88.png",西华综合 -http://tvpull.dxhmt.cn:9081/tv/11622-1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] #EXTINF:-1 group-title="☘️河南频道" tvg-name="郏县综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%83%8F%E5%8E%BF%E7%BB%BC%E5%90%88.png",郏县综合 http://tvpull.dxhmt.cn:9081/tv/10425-1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] #EXTINF:-1 group-title="☘️河南频道" tvg-name="郸城新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%83%B8%E5%9F%8E%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",郸城新闻综合 @@ -4507,8 +4447,6 @@ http://iptv.cdn.ha.chinamobile.com/PLTV/88888888/224/3221226673/index.m3u8 http://tvpull.dxhmt.cn:9081/tv/10182-1.m3u8 #EXTINF:-1 group-title="☘️河南频道" tvg-name="荥阳综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%8D%A5%E9%98%B3%E7%BB%BC%E5%90%88.png",荥阳综合 http://tvpull.dxhmt.cn:9081/tv/10182-1.m3u8?zhend -#EXTINF:-1 group-title="☘️河南频道" tvg-name="荥阳综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%8D%A5%E9%98%B3%E7%BB%BC%E5%90%88.png",荥阳综合 -http://tvpull.dxhmt.cn:9081/tv/10182-1.m3u8?wsSecret=df15530a0abec41b14bca00fc96270d1&wsTime=1654956569 #EXTINF:-1 group-title="☘️河南频道" tvg-name="禹州公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%A6%B9%E5%B7%9E%E5%85%AC%E5%85%B1.png",禹州公共 http://tvpull.dxhmt.cn:9081/tv/11081-2.m3u8 #EXTINF:-1 group-title="☘️河南频道" tvg-name="灵宝新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%81%B5%E5%AE%9D%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",灵宝新闻综合 @@ -4517,8 +4455,6 @@ http://tvpull.dxhmt.cn:9081/tv/11282-1.m3u8?zhend http://tvpull.dxhmt.cn:9081/tv/10526-1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] #EXTINF:-1 group-title="☘️河南频道" tvg-name="济源电视一套" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%8E%E6%BA%90%E7%94%B5%E8%A7%86%E4%B8%80%E5%A5%97.png",济源电视一套 http://tvpull.dxhmt.cn:9081/tv/19001-1.m3u8 -#EXTINF:-1 group-title="☘️河南频道" tvg-name="济源电视一套" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%8E%E6%BA%90%E7%94%B5%E8%A7%86%E4%B8%80%E5%A5%97.png",济源电视一套 -http://tvpull.dxhmt.cn:9081/tv/19001-1.m3u8?zhend #EXTINF:-1 group-title="☘️河南频道" tvg-name="洛阳综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B4%9B%E9%98%B3%E7%BB%BC%E5%90%88.png",洛阳综合 https://wshlslive.migucloud.com/live/6AL7GTQX_C0/playlist.m3u8 #EXTINF:-1 group-title="☘️河南频道" tvg-name="洛阳科教" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B4%9B%E9%98%B3%E7%A7%91%E6%95%99.png",洛阳科教 @@ -4575,30 +4511,26 @@ http://iptv.cdn.ha.chinamobile.com/PLTV/88888888/224/3221227057/index.m3u8 http://tvpull.dxhmt.cn:9081/tv/11481-1.m3u8 #EXTINF:-1 group-title="☘️河南频道" tvg-name="方城一套" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B9%E5%9F%8E%E4%B8%80%E5%A5%97.png",方城一套 http://tvpull.dxhmt.cn:9081/tv/11322-1.m3u8 -#EXTINF:-1 group-title="☘️河南频道" tvg-name="方城一套" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B9%E5%9F%8E%E4%B8%80%E5%A5%97.png",方城一套 -http://tvpull.dxhmt.cn:9081/tv/11322-1.m3u8?zhend #EXTINF:-1 group-title="☘️河南频道" tvg-name="新野综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E9%87%8E%E7%BB%BC%E5%90%88.png",新野综合 http://tvpull.dxhmt.cn:9081/tv/11329-1.m3u8?zhend #EXTINF:-1 group-title="☘️河南频道" tvg-name="新安新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E5%AE%89%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",新安新闻综合 http://tvpull.dxhmt.cn:9081/tv/10323-1.m3u8 #EXTINF:-1 group-title="☘️河南频道" tvg-name="新安新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E5%AE%89%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",新安新闻综合 http://tvpull.dxhmt.cn:9081/tv/10323-1.m3u8?zhend -#EXTINF:-1 group-title="☘️河南频道" tvg-name="新安新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%96%B0%E5%AE%89%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",新安新闻综合 -http://tvpull.dxhmt.cn:9081/tv/10323-1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] #EXTINF:-1 group-title="☘️河南频道" tvg-name="开封新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BC%80%E5%B0%81%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",开封新闻综合 http://iptv.cdn.ha.chinamobile.com/PLTV/88888888/224/3221226689/index.m3u8 #EXTINF:-1 group-title="☘️河南频道" tvg-name="开封新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BC%80%E5%B0%81%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",开封新闻综合 https://stream1.freetv.fun/kai-feng-xin-wen-zong-he-2.m3u8 #EXTINF:-1 group-title="☘️河南频道" tvg-name="开封新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BC%80%E5%B0%81%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",开封新闻综合 http://tvpull.dxhmt.cn:9081/tv/10200-2.m3u8 +#EXTINF:-1 group-title="☘️河南频道" tvg-name="开封新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BC%80%E5%B0%81%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",开封新闻综合 +http://tvpull.dxhmt.cn:9081/tv/10200-2.m3u8?zhend #EXTINF:-1 group-title="☘️河南频道" tvg-name="开封文化旅游" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BC%80%E5%B0%81%E6%96%87%E5%8C%96%E6%97%85%E6%B8%B8.png",开封文化旅游 http://iptv.cdn.ha.chinamobile.com/PLTV/88888888/224/3221226515/index.m3u8 #EXTINF:-1 group-title="☘️河南频道" tvg-name="开封文化旅游" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BC%80%E5%B0%81%E6%96%87%E5%8C%96%E6%97%85%E6%B8%B8.png",开封文化旅游 http://tvpull.dxhmt.cn:9081/tv/10200-3.m3u8 #EXTINF:-1 group-title="☘️河南频道" tvg-name="开封文化旅游" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BC%80%E5%B0%81%E6%96%87%E5%8C%96%E6%97%85%E6%B8%B8.png",开封文化旅游 http://tvpull.dxhmt.cn:9081/tv/10200-3.m3u8?zhend -#EXTINF:-1 group-title="☘️河南频道" tvg-name="开封文化旅游" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BC%80%E5%B0%81%E6%96%87%E5%8C%96%E6%97%85%E6%B8%B8.png",开封文化旅游 -http://tvpull.dxhmt.cn:9081/tv/10200-3.m3u8?zhend, #EXTINF:-1 group-title="☘️河南频道" tvg-name="嵩县综合新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B5%A9%E5%8E%BF%E7%BB%BC%E5%90%88%E6%96%B0%E9%97%BB.png",嵩县综合新闻 http://tvpull.dxhmt.cn:9081/tv/10325-1.m3u8?zhendhttp://wshls.live.migucloud.com/live/MZCYG799_C0/playlist.m3u8?zhend #EXTINF:-1 group-title="☘️河南频道" tvg-name="嵩县综合新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B5%A9%E5%8E%BF%E7%BB%BC%E5%90%88%E6%96%B0%E9%97%BB.png",嵩县综合新闻 @@ -4607,8 +4539,6 @@ http://wshls.live.migucloud.com/live/MZCYG799_C0/playlist.m3u8 http://wshls.live.migucloud.com/live/MZCYG799_C0/playlist.m3u8?zhend #EXTINF:-1 group-title="☘️河南频道" tvg-name="宜阳综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%9C%E9%98%B3%E7%BB%BC%E5%90%88.png",宜阳综合 http://tvpull.dxhmt.cn:9081/tv/10327-1.m3u8 -#EXTINF:-1 group-title="☘️河南频道" tvg-name="宜阳综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%9C%E9%98%B3%E7%BB%BC%E5%90%88.png",宜阳综合 -http://tvpull.dxhmt.cn:9081/tv/10327-1.m3u8?wsSecret=df15530a0abec41b14bca00fc96270d1&wsTime=1654956569 #EXTINF:-1 group-title="☘️河南频道" tvg-name="周口新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%91%A8%E5%8F%A3%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",周口新闻综合 https://stream1.freetv.fun/zhou-kou-xin-wen-zong-he-1.m3u8 #EXTINF:-1 group-title="☘️河南频道" tvg-name="周口新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%91%A8%E5%8F%A3%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",周口新闻综合 @@ -4621,8 +4551,6 @@ http://tvpull.dxhmt.cn:9081/tv/11325-1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1 http://tvpull.dxhmt.cn:9081/tv/10381-1.m3u8?wsSecret=df15530a0abec41b14bca00fc96270d1&wsTime=1654956569 #EXTINF:-1 group-title="☘️河北频道" tvg-name="鹿泉一套" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%B9%BF%E6%B3%89%E4%B8%80%E5%A5%97.png",鹿泉一套 https://jwcdnqx.hebyun.com.cn/zb/luquanyi/1500k/tzwj_video.m3u8 -#EXTINF:-1 group-title="☘️河北频道" tvg-name="鹿泉一套" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%B9%BF%E6%B3%89%E4%B8%80%E5%A5%97.png",鹿泉一套 -https://jwcdnqx.hebyun.com.cn/live/luquanyi/1500k/tzwj_video.m3u8 #EXTINF:-1 group-title="☘️河北频道" tvg-name="邯郸科技教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%82%AF%E9%83%B8%E7%A7%91%E6%8A%80%E6%95%99%E8%82%B2.png",邯郸科技教育 http://live.hd.hdbs.cn/video/s10001-2021hdkjjy/index.m3u8?zhebd #EXTINF:-1 group-title="☘️河北频道" tvg-name="邯郸科技教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%82%AF%E9%83%B8%E7%A7%91%E6%8A%80%E6%95%99%E8%82%B2.png",邯郸科技教育 @@ -4649,8 +4577,6 @@ https://stream1.freetv.fun/xing-tai-zong-he-8.ctv https://stream1.freetv.fun/xing-tai-zong-he-8.m3u8 #EXTINF:-1 group-title="☘️河北频道" tvg-name="邢台综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%82%A2%E5%8F%B0%E7%BB%BC%E5%90%88.png",邢台综合 https://stream1.freetv.fun/xing-tai-zong-he-9.m3u8 -#EXTINF:-1 group-title="☘️河北频道" tvg-name="邢台综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%82%A2%E5%8F%B0%E7%BB%BC%E5%90%88.png",邢台综合 -https://jwplay.hebyun.com.cn/live/xttv/1500k/tzwj_video.m3u8?zhebd#https://jwplay.hebyun.com.cn/live/xttv/1500k/tzwj_video.m3u8 #EXTINF:-1 group-title="☘️河北频道" tvg-name="衡水公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%A1%A1%E6%B0%B4%E5%85%AC%E5%85%B1.png",衡水公共 http://ls.qingting.fm/live/2810.m3u8 #EXTINF:-1 group-title="☘️河北频道" tvg-name="石家庄都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%9F%B3%E5%AE%B6%E5%BA%84%E9%83%BD%E5%B8%82.png",石家庄都市 @@ -4902,8 +4828,6 @@ http://satellitepull.cnr.cn/live/wxsdtyxxgb/playlist.m3u8 #EXTINF:-1 group-title="☘️山东频道" tvg-name="山东体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E4%BD%93%E8%82%B2.png",山东体育 https://satellitepull.cnr.cn/live/wxsdtyxxgb/playlist.m3u8 #EXTINF:-1 group-title="☘️山东频道" tvg-name="山东体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E4%BD%93%E8%82%B2.png",山东体育 -http://live.xmcdn.com/live/805/64.m3u8 -#EXTINF:-1 group-title="☘️山东频道" tvg-name="山东体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E4%BD%93%E8%82%B2.png",山东体育 https://stream1.freetv.fun/shan-dong-ti-yu-8.m3u8 #EXTINF:-1 group-title="☘️山东频道" tvg-name="山东体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E4%BD%93%E8%82%B2.png",山东体育 https://stream1.freetv.fun/shan-dong-ti-yu-18.m3u8 @@ -4917,6 +4841,8 @@ https://stream1.freetv.fun/shan-dong-ti-yu-23.m3u8 https://stream1.freetv.fun/shan-dong-ti-yu-15.m3u8 #EXTINF:-1 group-title="☘️山东频道" tvg-name="山东体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E4%BD%93%E8%82%B2.png",山东体育 http://livealone302.iqilu.com/iqilu/typd.m3u8 +#EXTINF:-1 group-title="☘️山东频道" tvg-name="山东体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E4%BD%93%E8%82%B2.png",山东体育 +https://stream1.freetv.fun/shan-dong-ti-yu-7.m3u8 #EXTINF:-1 group-title="☘️山东频道" tvg-name="山东综艺" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%B1%B1%E4%B8%9C%E7%BB%BC%E8%89%BA.png",山东综艺 http://livealone302.iqilu.com/iqilu/zypd.m3u8 #EXTINF:-1 group-title="☘️山东频道" tvg-name="济南综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%B5%8E%E5%8D%97%E7%BB%BC%E5%90%88.png",济南综合 @@ -5145,8 +5071,6 @@ https://live.lalifeier.eu.org/ahtv/ahzyty.m3u8?t=1746739480&key=d9527b9d7ce3 https://live.lalifeier.eu.org/ahtv/ahzyty.m3u8?t=1746775525&key=fab8cb8fa94cd29ea294c635fb944f88 #EXTINF:-1 group-title="☘️安徽频道" tvg-name="黄山新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%84%E5%B1%B1%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",黄山新闻综合 http://hslive.hsnewsnet.com/lsdream/hve9Wjs/1000/live.m3u8 -#EXTINF:-1 group-title="☘️安徽频道" tvg-name="黄山新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%84%E5%B1%B1%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",黄山新闻综合 -http://hslive.hsnewsnet.com/lsdream/hve9Wjs/1000/live.m3u8?zanhd #EXTINF:-1 group-title="☘️安徽频道" tvg-name="黄山公共生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%84%E5%B1%B1%E5%85%AC%E5%85%B1%E7%94%9F%E6%B4%BB.png",黄山公共生活 http://hslive.hsnewsnet.com/lsdream/iY92ady/1000/live.m3u8?zanhd #EXTINF:-1 group-title="☘️安徽频道" tvg-name="铜陵新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%93%9C%E9%99%B5%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",铜陵新闻综合 @@ -5157,24 +5081,18 @@ http://live.cztv.cc:85/live/sjpd.m3u8 http://live.cztv.cc:85/live/sjpd.m3u8 #EXTINF:-1 group-title="☘️安徽频道" tvg-name="滁州科教" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%BB%81%E5%B7%9E%E7%A7%91%E6%95%99.png",滁州科教 http://live.cztv.cc:85/live/sjpd.m3u8?zanhd -#EXTINF:-1 group-title="☘️安徽频道" tvg-name="滁州科教" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%BB%81%E5%B7%9E%E7%A7%91%E6%95%99.png",滁州科教 -http://live.cztv.cc:85/live/sjpd.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] #EXTINF:-1 group-title="☘️安徽频道" tvg-name="滁州新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%BB%81%E5%B7%9E%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",滁州新闻综合 http://live.cztv.cc:85/live/xwpd.m3u8 #EXTINF:-1 group-title="☘️安徽频道" tvg-name="滁州新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%BB%81%E5%B7%9E%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",滁州新闻综合 http://live.cztv.cc:85/live/xwpd.m3u8?zanhd #EXTINF:-1 group-title="☘️安徽频道" tvg-name="滁州新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%BB%81%E5%B7%9E%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",滁州新闻综合 http://live.cztv.cc:85/live/xwpd.m3u8#http://live.cztv.cc:85/live/xwpd.m3u8?zanhd -#EXTINF:-1 group-title="☘️安徽频道" tvg-name="滁州新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%BB%81%E5%B7%9E%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",滁州新闻综合 -http://live.cztv.cc:85/live/xwpd.m3u8?zanhd#http://live.cztv.cc:85/live/xwpd.m3u8 #EXTINF:-1 group-title="☘️安徽频道" tvg-name="滁州市广播电视台 新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%BB%81%E5%B7%9E%E5%B8%82%E5%B9%BF%E6%92%AD%E7%94%B5%E8%A7%86%E5%8F%B0+%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",滁州市广播电视台 新闻综合 http://live.cztv.cc:85/live/xwpd.m3u8 #EXTINF:-1 group-title="☘️安徽频道" tvg-name="滁州公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%BB%81%E5%B7%9E%E5%85%AC%E5%85%B1.png",滁州公共 http://live.cztv.cc:85/live/ggpd.m3u8 #EXTINF:-1 group-title="☘️安徽频道" tvg-name="滁州公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%BB%81%E5%B7%9E%E5%85%AC%E5%85%B1.png",滁州公共 http://live.cztv.cc:85/live/ggpd.m3u8?zanhd -#EXTINF:-1 group-title="☘️安徽频道" tvg-name="滁州公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E6%BB%81%E5%B7%9E%E5%85%AC%E5%85%B1.png",滁州公共 -http://live.cztv.cc:85/live/ggpd.m3u8?zanhd#http://live.cztv.cc:85/live/ggpd.m3u8 #EXTINF:-1 group-title="☘️安徽频道" tvg-name="宿州科教" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%BF%E5%B7%9E%E7%A7%91%E6%95%99.png",宿州科教 rtmp://live.ahsz.tv/video/s10001-kxjy #EXTINF:-1 group-title="☘️安徽频道" tvg-name="宿州新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%AE%BF%E5%B7%9E%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",宿州新闻综合 @@ -5200,8 +5118,6 @@ http://play-a2.quklive.com/live/1667883943560053.m3u8 #EXTINF:-1 group-title="☘️宁夏频道" tvg-name="银川文体" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%93%B6%E5%B7%9D%E6%96%87%E4%BD%93.png",银川文体 http://play-a2.quklive.com/live/1667884025738071.m3u8 #EXTINF:-1 group-title="☘️吉林频道" tvg-name="延边卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BB%B6%E8%BE%B9%E5%8D%AB%E8%A7%86.png",延边卫视 -http://l.cztvcloud.com/channels/lantian/SXxinchang2/720p.m3u8# -#EXTINF:-1 group-title="☘️吉林频道" tvg-name="延边卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BB%B6%E8%BE%B9%E5%8D%AB%E8%A7%86.png",延边卫视 http://l.cztvcloud.com/channels/lantian/SXxinchang2/720p.m3u8 #EXTINF:-1 group-title="☘️吉林频道" tvg-name="延边卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BB%B6%E8%BE%B9%E5%8D%AB%E8%A7%86.png",延边卫视 http://[2409:8087:1e03:21::2]:6060/cms001/ch00000090990000001470/index.m3u8 @@ -5219,6 +5135,8 @@ http://[2409:8087:1a0b:df::4020]:80/ottrrs.hl.chinamobile.com/TVOD/88888888/224/ http://otttv.bj.chinamobile.com/PLTV/88888888/224/3221227045/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7Eq0D3NdTUN7FuRzr8eJsbQA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND #EXTINF:-1 group-title="☘️吉林频道" tvg-name="延边卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BB%B6%E8%BE%B9%E5%8D%AB%E8%A7%86.png",延边卫视 http://tvbox6.com/tv/bfgd.php?id=117 +#EXTINF:-1 group-title="☘️吉林频道" tvg-name="延边卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BB%B6%E8%BE%B9%E5%8D%AB%E8%A7%86.png",延边卫视 +http://ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226516/index.m3u8 #EXTINF:-1 group-title="☘️吉林频道" tvg-name="吉林都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E9%83%BD%E5%B8%82.png",吉林都市 https://live.lalifeier.eu.org/jlntv/jlds.m3u8?t=1745796321&key=ba85da6410cdc8b830d46c3182ad7775 #EXTINF:-1 group-title="☘️吉林频道" tvg-name="吉林都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%90%89%E6%9E%97%E9%83%BD%E5%B8%82.png",吉林都市 @@ -5397,8 +5315,6 @@ rtmp://liveout.xntv.tv/a65jur/96iln2 https://liveout.xntv.tv/a65jur/90p2i1.m3u8?zqinghd#https://liveout.xntv.tv/a65jur/90p2i1.m3u8#http://dtrmlive.qhdtrm.cn/xnds/sd/live.m3u8 #EXTINF:-1 group-title="☘️青海频道" tvg-name="西宁新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%A5%BF%E5%AE%81%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",西宁新闻综合 https://liveout.xntv.tv/a65jur/90p2i1.m3u8?zqinghd -#EXTINF:-1 group-title="☘️青海频道" tvg-name="西宁新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%A5%BF%E5%AE%81%E6%96%B0%E9%97%BB%E7%BB%BC%E5%90%88.png",西宁新闻综合 -https://liveout.xntv.tv/a65jur/96iln2.m3u8#@http://cm-wshls.homecdn.com/live/5a296.dlv#@http://dtrmlive.qhdtrm.cn/xnds/sd/live.m3u8#@http://cm-wshls.homecdn.com/live/5a296.m3u8#rtmp://liveout.xntv.tv/a65jur/96iln2 #EXTINF:-1 group-title="☘️青海频道" tvg-name="西宁生活服务" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%A5%BF%E5%AE%81%E7%94%9F%E6%B4%BB%E6%9C%8D%E5%8A%A1.png",西宁生活服务 https://liveout.xntv.tv/a65jur/90p2i1.m3u8 #EXTINF:-1 group-title="☘️青海频道" tvg-name="西宁生活服务" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%A5%BF%E5%AE%81%E7%94%9F%E6%B4%BB%E6%9C%8D%E5%8A%A1.png",西宁生活服务 @@ -5409,8 +5325,6 @@ https://stream1.freetv.fun/xi-zhu-sheng-huo-fu-wu-1.m3u8 https://stream1.freetv.fun/xi-zhu-sheng-huo-fu-wu-2.m3u8 #EXTINF:-1 group-title="☘️青海频道" tvg-name="西宁生活服务" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%A5%BF%E5%AE%81%E7%94%9F%E6%B4%BB%E6%9C%8D%E5%8A%A1.png",西宁生活服务 https://stream1.freetv.fun/xi-zhu-sheng-huo-fu-wu-3.m3u8 -#EXTINF:-1 group-title="☘️青海频道" tvg-name="西宁生活服务" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E8%A5%BF%E5%AE%81%E7%94%9F%E6%B4%BB%E6%9C%8D%E5%8A%A1.png",西宁生活服务 -https://liveout.xntv.tv/a65jur/90p2i1.m3u8?zqinghd#https://liveout.xntv.tv/a65jur/90p2i1.m3u8#http://dtrmlive.qhdtrm.cn/xnds/sd/live.m3u8 #EXTINF:-1 group-title="☘️青海频道" tvg-name="青海综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%92%E6%B5%B7%E7%BB%BC%E5%90%88.png",青海综合 http://lmt.scqstv.com/live1/live1.m3u8 #EXTINF:-1 group-title="☘️黑龙江频道" tvg-name="黑龙江文体" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E9%BE%99%E6%B1%9F%E6%96%87%E4%BD%93.png",黑龙江文体 @@ -5546,10 +5460,10 @@ http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/322 #EXTINF:-1 group-title="🎬电影频道" tvg-name="CHC家庭影院" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC%E5%AE%B6%E5%BA%AD%E5%BD%B1%E9%99%A2.png",CHC家庭影院 http://117.12.149.38:4022/rtp/225.1.1.213:5002 #EXTINF:-1 group-title="🎬电影频道" tvg-name="CHC家庭影院" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC%E5%AE%B6%E5%BA%AD%E5%BD%B1%E9%99%A2.png",CHC家庭影院 -http://60.26.181.220:4022/rtp/225.1.1.213:5002 -#EXTINF:-1 group-title="🎬电影频道" tvg-name="CHC家庭影院" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC%E5%AE%B6%E5%BA%AD%E5%BD%B1%E9%99%A2.png",CHC家庭影院 http://111.162.205.201:8686/rtp/225.1.1.213:5002 #EXTINF:-1 group-title="🎬电影频道" tvg-name="CHC家庭影院" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC%E5%AE%B6%E5%BA%AD%E5%BD%B1%E9%99%A2.png",CHC家庭影院 +http://60.26.181.220:4022/rtp/225.1.1.213:5002 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="CHC家庭影院" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC%E5%AE%B6%E5%BA%AD%E5%BD%B1%E9%99%A2.png",CHC家庭影院 http://gat.bkpcp.top/ymg.php?id=jtyy #EXTINF:-1 group-title="🎬电影频道" tvg-name="CHC家庭影院" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC%E5%AE%B6%E5%BA%AD%E5%BD%B1%E9%99%A2.png",CHC家庭影院 http://goo.bkpcp.top/mg/jtyy @@ -5564,10 +5478,6 @@ https://www.freetv.top/migu/644368373.m3u8?migutoken=b9d9d0ba0208e949cf0736455b8 #EXTINF:-1 group-title="🎬电影频道" tvg-name="CHC家庭影院" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC%E5%AE%B6%E5%BA%AD%E5%BD%B1%E9%99%A2.png",CHC家庭影院 https://stream1.freetv.fun/chcjia-ting-ying-yuan-1.ctv #EXTINF:-1 group-title="🎬电影频道" tvg-name="CHC动作电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC%E5%8A%A8%E4%BD%9C%E7%94%B5%E5%BD%B1.png",CHC动作电影 -http://117.12.149.38:4022/rtp/225.1.1.215:5002 -#EXTINF:-1 group-title="🎬电影频道" tvg-name="CHC动作电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC%E5%8A%A8%E4%BD%9C%E7%94%B5%E5%BD%B1.png",CHC动作电影 -http://171.35.84.178:8688/udp/239.252.219.85:5140 -#EXTINF:-1 group-title="🎬电影频道" tvg-name="CHC动作电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC%E5%8A%A8%E4%BD%9C%E7%94%B5%E5%BD%B1.png",CHC动作电影 http://60.26.181.220:4022/rtp/225.1.1.215:5002 #EXTINF:-1 group-title="🎬电影频道" tvg-name="CHC动作电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC%E5%8A%A8%E4%BD%9C%E7%94%B5%E5%BD%B1.png",CHC动作电影 http://z.b.bkpcp.top/m.php @@ -5583,6 +5493,10 @@ http://[2409:8087:1a01:df::4021]:80/TVOD/88888888/224/3221225555/main.m3u8 http://[2409:8087:4c0a:22:1::11]:6410/170000001115/UmaiCHAN6380763222d00/index.m3u8?m3u8_level=2 #EXTINF:-1 group-title="🎬电影频道" tvg-name="CHC动作电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC%E5%8A%A8%E4%BD%9C%E7%94%B5%E5%BD%B1.png",CHC动作电影 http://[2409:8087:3c02:0021:0000:0001:0000:100a]:6410/shandong_cabletv.live.zte.com////CHANNEL00002030/index.m3u8?IASHttpSessionId= +#EXTINF:-1 group-title="🎬电影频道" tvg-name="CHC动作电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC%E5%8A%A8%E4%BD%9C%E7%94%B5%E5%BD%B1.png",CHC动作电影 +http://data.3g.yy.com/live/hls/1382735573/1382735573 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="CHC动作电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC%E5%8A%A8%E4%BD%9C%E7%94%B5%E5%BD%B1.png",CHC动作电影 +https://www.freetv.top/migu/644368714.m3u8?migutoken=2e48d18419793654f347e8ca29e0028ce9f3eaaa7a108b006304178b8f790f34908f8a09bbb8f4b8b8abcf36e2341f1043dde8719cf4927fcd0dcde4667f8b91e68e820314791d9b70452862c9 #EXTINF:-1 group-title="🎬电影频道" tvg-name="CHC高清电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC%E9%AB%98%E6%B8%85%E7%94%B5%E5%BD%B1.png",CHC高清电影 http://[2409:8087:7001:20:2::3]:80/dbiptv.sn.chinamobile.com/PLTV/88888888/224/3221226463/index.m3u8 #EXTINF:-1 group-title="🎬电影频道" tvg-name="CHC高清电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC%E9%AB%98%E6%B8%85%E7%94%B5%E5%BD%B1.png",CHC高清电影 @@ -5648,17 +5562,17 @@ http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225769/2/index. #EXTINF:-1 group-title="🎬电影频道" tvg-name="靖天映画" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%96%E5%A4%A9%E6%98%A0%E7%94%BB.png",靖天映画 https://cdn.iptv8k.top/dl/jrys.php?id=320&amp;amp;time=20240926215313&amp;amp;ip=111.229.253.40 #EXTINF:-1 group-title="🎬电影频道" tvg-name="靖天映画" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%96%E5%A4%A9%E6%98%A0%E7%94%BB.png",靖天映画 -https://cdn.iptv8k.top/dl/jrys.php?id=320&amp;amp;amp;time=20240926215313&amp;amp;amp;ip=111.229.253.40 -#EXTINF:-1 group-title="🎬电影频道" tvg-name="靖天映画" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%96%E5%A4%A9%E6%98%A0%E7%94%BB.png",靖天映画 https://cdn.iptv8k.top/dl/jrys.php?id=320&time=20240926215313&ip=111.229.253.40 #EXTINF:-1 group-title="🎬电影频道" tvg-name="靖天映画" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%96%E5%A4%A9%E6%98%A0%E7%94%BB.png",靖天映画 +https://cdn.iptv8k.top/dl/jrys.php?id=320&amp;amp;amp;time=20240926215313&amp;amp;amp;ip=111.229.253.40 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="靖天映画" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%96%E5%A4%A9%E6%98%A0%E7%94%BB.png",靖天映画 https://tv.iill.top/litv/4gtv-4gtv055 #EXTINF:-1 group-title="🎬电影频道" tvg-name="靖天戏剧" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%96%E5%A4%A9%E6%88%8F%E5%89%A7.png",靖天戏剧 +https://cdn.iptv8k.top/dl/jrys.php?id=318&time=20240926215313&ip=111.229.253.40 +#EXTINF:-1 group-title="🎬电影频道" tvg-name="靖天戏剧" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%96%E5%A4%A9%E6%88%8F%E5%89%A7.png",靖天戏剧 https://cdn.iptv8k.top/dl/jrys.php?id=318&amp;amp;time=20240926215313&amp;amp;ip=111.229.253.40 #EXTINF:-1 group-title="🎬电影频道" tvg-name="靖天戏剧" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%96%E5%A4%A9%E6%88%8F%E5%89%A7.png",靖天戏剧 -https://cdn.iptv8k.top/dl/jrys.php?id=318&amp;amp;amp;time=20240926215313&amp;amp;amp;ip=111.229.253.40 -#EXTINF:-1 group-title="🎬电影频道" tvg-name="靖天戏剧" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%96%E5%A4%A9%E6%88%8F%E5%89%A7.png",靖天戏剧 -https://cdn.iptv8k.top/dl/jrys.php?id=318&time=20240926215313&ip=111.229.253.40 +https://cdn.iptv8k.top/dl/jrys.php?id=318&amp;time=20240926215313&amp;ip=111.229.253.40 #EXTINF:-1 group-title="🎬电影频道" tvg-name="靖天戏剧" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%96%E5%A4%A9%E6%88%8F%E5%89%A7.png",靖天戏剧 http://serv00.bkpcp.top/litv3.php?id=4gtv-4gtv058 #EXTINF:-1 group-title="🎬电影频道" tvg-name="靖天戏剧" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9D%96%E5%A4%A9%E6%88%8F%E5%89%A7.png",靖天戏剧 @@ -5742,11 +5656,9 @@ https://smart.pendy.dpdns.org/Smart.php #EXTINF:-1 group-title="🎬电影频道" tvg-name="东森洋片" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%A3%AE%E6%B4%8B%E7%89%87.png",东森洋片 https://cdn.iptv8k.top/dl/jrys.php?id=232&time=20240926215313&ip=111.229.253.40 #EXTINF:-1 group-title="🎬电影频道" tvg-name="东森超视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%A3%AE%E8%B6%85%E8%A7%86.png",东森超视 -https://cdn.iptv8k.top/dl/jrys.php?id=217&time=20240926215313&ip=111.229.253.40 -#EXTINF:-1 group-title="🎬电影频道" tvg-name="东森超视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%A3%AE%E8%B6%85%E8%A7%86.png",东森超视 https://cdn.iptv8k.top/dl/jrys.php?id=216&time=20240926215313&ip=111.229.253.40 #EXTINF:-1 group-title="🎬电影频道" tvg-name="东森超视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%A3%AE%E8%B6%85%E8%A7%86.png",东森超视 -https://cdn.iptv8k.top/dl/jrys.php?id=216&time=20240926215313&ip=111.229.253.40#rtmp://f13h.mine.nu/sat/tv331#rtmp://f13h.mine.nu/sat/tv331 +https://cdn.iptv8k.top/dl/jrys.php?id=217&time=20240926215313&ip=111.229.253.40 #EXTINF:-1 group-title="🎬电影频道" tvg-name="东森超视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%A3%AE%E8%B6%85%E8%A7%86.png",东森超视 http://38.64.72.148:80/hls/modn/list/2013/chunklist1.m3u8 #EXTINF:-1 group-title="🎬电影频道" tvg-name="东森超视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%A3%AE%E8%B6%85%E8%A7%86.png",东森超视 @@ -5761,6 +5673,8 @@ https://stream1.freetv.fun/dong-sen-chao-shi-9.m3u8 https://stream1.freetv.fun/dong-sen-chao-shi-8.ctv #EXTINF:-1 group-title="🎬电影频道" tvg-name="东森超视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%A3%AE%E8%B6%85%E8%A7%86.png",东森超视 https://stream1.freetv.fun/dong-sen-chao-shi-2.ctv +#EXTINF:-1 group-title="🎬电影频道" tvg-name="东森超视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%B8%9C%E6%A3%AE%E8%B6%85%E8%A7%86.png",东森超视 +https://stream1.freetv.fun/dong-sen-chao-shi-6.ctv #EXTINF:-1 group-title="🏀体育频道" tvg-name="CCTV-5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5.png",CCTV-5 http://php.jdshipin.com/TVOD/hljyd.php?id=3221226019 #EXTINF:-1 group-title="🏀体育频道" tvg-name="CCTV-5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV-5.png",CCTV-5 @@ -5824,12 +5738,12 @@ https://stream1.freetv.fun/yan-dong-ti-yu-11.ctv #EXTINF:-1 group-title="🏀体育频道" tvg-name="纬来体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BA%AC%E6%9D%A5%E4%BD%93%E8%82%B2.png",纬来体育 https://cdn.iptv8k.top/dl/jrys.php?id=291&time=20240926215313&ip=111.229.253.40 #EXTINF:-1 group-title="🏀体育频道" tvg-name="纬来体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BA%AC%E6%9D%A5%E4%BD%93%E8%82%B2.png",纬来体育 -https://cdn.iptv8k.top/dl/jrys.php?id=292&amp;amp;time=20240926215313&amp;amp;ip=111.229.253.40 -#EXTINF:-1 group-title="🏀体育频道" tvg-name="纬来体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BA%AC%E6%9D%A5%E4%BD%93%E8%82%B2.png",纬来体育 https://cdn.iptv8k.top/dl/jrys.php?id=292&amp;amp;amp;time=20240926215313&amp;amp;amp;ip=111.229.253.40 #EXTINF:-1 group-title="🏀体育频道" tvg-name="纬来体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BA%AC%E6%9D%A5%E4%BD%93%E8%82%B2.png",纬来体育 https://cdn.iptv8k.top/dl/jrys.php?id=292&time=20240926215313&ip=111.229.253.40 #EXTINF:-1 group-title="🏀体育频道" tvg-name="纬来体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BA%AC%E6%9D%A5%E4%BD%93%E8%82%B2.png",纬来体育 +https://cdn.iptv8k.top/dl/jrys.php?id=292&amp;amp;time=20240926215313&amp;amp;ip=111.229.253.40 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="纬来体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BA%AC%E6%9D%A5%E4%BD%93%E8%82%B2.png",纬来体育 https://stream1.freetv.fun/wei-lai-ti-yu-9.ctv #EXTINF:-1 group-title="🏀体育频道" tvg-name="纬来体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E7%BA%AC%E6%9D%A5%E4%BD%93%E8%82%B2.png",纬来体育 https://epg.pw/stream/8855a9936e37e608a0ec8a014cce1673dee9c5d68d560da376cc92e5edef2b25.m3u8 @@ -6108,10 +6022,10 @@ http://[2409:8087:1:20:20::2c]/otttv.bj.chinamobile.com/PLTV/88888888/224/322122 #EXTINF:-1 group-title="🏀体育频道" tvg-name="快乐垂钓" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E5%BF%AB%E4%B9%90%E5%9E%82%E9%92%93.png",快乐垂钓 http://www.1328099.xyz:9001/rtp/239.77.0.145:5146 #EXTINF:-1 group-title="🏀体育频道" tvg-name="JJ斗地主" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/JJ%E6%96%97%E5%9C%B0%E4%B8%BB.png",JJ斗地主 -http://tc-tct.douyucdn2.cn/dyliveflv1a/488743rAHScWyyII_2000.flv?wsAuth=fd695c444eeee99cc6122ed396c805ba&token=cpn-androidmpro-0-488743-df8b1830ef2e6ce156759645768df95bf77749da61fcc901&logo=0&expire=0&did=d010b07dcb997ada9934081c873542f0&origin=tct&vhost=play2 -#EXTINF:-1 group-title="🏀体育频道" tvg-name="JJ斗地主" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/JJ%E6%96%97%E5%9C%B0%E4%B8%BB.png",JJ斗地主 http://zzy789.xyz/douyu1.php?id=488743 #EXTINF:-1 group-title="🏀体育频道" tvg-name="JJ斗地主" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/JJ%E6%96%97%E5%9C%B0%E4%B8%BB.png",JJ斗地主 +http://tc-tct.douyucdn2.cn/dyliveflv1a/488743rAHScWyyII_2000.flv?wsAuth=fd695c444eeee99cc6122ed396c805ba&token=cpn-androidmpro-0-488743-df8b1830ef2e6ce156759645768df95bf77749da61fcc901&logo=0&expire=0&did=d010b07dcb997ada9934081c873542f0&origin=tct&vhost=play2 +#EXTINF:-1 group-title="🏀体育频道" tvg-name="JJ斗地主" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/JJ%E6%96%97%E5%9C%B0%E4%B8%BB.png",JJ斗地主 http://huanqiuzhibo.cn/manifest/douyu.php?id=488743 #EXTINF:-1 group-title="🏀体育频道" tvg-name="JJ斗地主" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/JJ%E6%96%97%E5%9C%B0%E4%B8%BB.png",JJ斗地主 http://www.52sw.top:678/play/huya.php?id=14079954 @@ -6204,10 +6118,6 @@ http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221 #EXTINF:-1 group-title="🪁动画频道" tvg-name="优漫卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E4%BC%98%E6%BC%AB%E5%8D%A1%E9%80%9A.png",优漫卡通 https://stream1.freetv.fun/4073fb5ec1ec48f010e1db882aeb63ddc7104c56c5c729c4d08e932d585591a8.m3u8 #EXTINF:-1 group-title="🪁动画频道" tvg-name="金鹰卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%91%E9%B9%B0%E5%8D%A1%E9%80%9A.png",金鹰卡通 -http://116.237.148.215:8881/rtp/239.45.0.38:5140 -#EXTINF:-1 group-title="🪁动画频道" tvg-name="金鹰卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%91%E9%B9%B0%E5%8D%A1%E9%80%9A.png",金鹰卡通 -http://221.13.233.107:9901/tsfile/live/1017_1.m3u8?key=txiptv&playlive=1&authid=0 -#EXTINF:-1 group-title="🪁动画频道" tvg-name="金鹰卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%91%E9%B9%B0%E5%8D%A1%E9%80%9A.png",金鹰卡通 http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/2/224/3221225653/2.m3u8 #EXTINF:-1 group-title="🪁动画频道" tvg-name="金鹰卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%91%E9%B9%B0%E5%8D%A1%E9%80%9A.png",金鹰卡通 https://stream1.freetv.fun/jin-ying-qia-tong-38.m3u8 @@ -6223,6 +6133,10 @@ https://stream1.freetv.fun/aec603fdb1ae19a081a7ca50498e3c9429447092a2208a2d383ae https://stream1.freetv.fun/321f73ad28440de1629cd54e028c9355b2cb709eb8b30b90e4d0f3d5b41b0c4e.m3u8 #EXTINF:-1 group-title="🪁动画频道" tvg-name="金鹰卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%91%E9%B9%B0%E5%8D%A1%E9%80%9A.png",金鹰卡通 https://stream1.freetv.fun/jin-ying-qia-tong-19.m3u8 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="金鹰卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%91%E9%B9%B0%E5%8D%A1%E9%80%9A.png",金鹰卡通 +https://stream1.freetv.fun/1b907bbf4760e673ec9ab89e2327cd1d9e5df04ca6ef35a6fb07f5b6757f4791.m3u8 +#EXTINF:-1 group-title="🪁动画频道" tvg-name="金鹰卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%87%91%E9%B9%B0%E5%8D%A1%E9%80%9A.png",金鹰卡通 +https://stream1.freetv.fun/jin-ying-qia-tong-29.m3u8 #EXTINF:-1 group-title="🪁动画频道" tvg-name="黑莓动画" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E8%8E%93%E5%8A%A8%E7%94%BB.png",黑莓动画 http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010002 #EXTINF:-1 group-title="🪁动画频道" tvg-name="黑莓动画" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%BB%91%E8%8E%93%E5%8A%A8%E7%94%BB.png",黑莓动画 @@ -6346,8 +6260,6 @@ https://satellitepull.cnr.cn/live/wx32nmgyygb/playlist.m3u8 #EXTINF:-1 group-title="🎵音乐频道" tvg-name="音乐之声" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9F%B3%E4%B9%90%E4%B9%8B%E5%A3%B0.png",音乐之声 http://a.live.hnradio.com/yypd/radio120k_yypd.m3u8?auth_key=1588751172-0-0-d97b858279c1c86650172b9913ea4af2 #EXTINF:-1 group-title="🎵音乐频道" tvg-name="音乐之声" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9F%B3%E4%B9%90%E4%B9%8B%E5%A3%B0.png",音乐之声 -http://live.xmcdn.com/live/1205/64.m3u8 -#EXTINF:-1 group-title="🎵音乐频道" tvg-name="音乐之声" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/%E9%9F%B3%E4%B9%90%E4%B9%8B%E5%A3%B0.png",音乐之声 https://radio.0472.org/?id=641 -#EXTINF:-1 group-title="🕘️更新时间" tvg-name="2025-07-10 06:28:18" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/2025-07-10+06%3A28%3A18.png",2025-07-10 06:28:18 -http://101.74.30.190:9901/tsfile/live/0001_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 group-title="🕘️更新时间" tvg-name="2025-07-11 18:20:41" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/2025-07-11+18%3A20%3A41.png",2025-07-11 18:20:41 +http://ali-m-l.cztv.com/channels/lantian/channel15/1080p.m3u8 diff --git a/欧歌/spider.jar b/欧歌/spider.jar index 35d2dfd..7c3cb68 100644 Binary files a/欧歌/spider.jar and b/欧歌/spider.jar differ diff --git a/欧歌/txt/2.txt b/欧歌/txt/2.txt index 36f4aa3..338c4e7 100644 --- a/欧歌/txt/2.txt +++ b/欧歌/txt/2.txt @@ -1 +1 @@ -http://160.202.244.9:9788/ \ No newline at end of file +http://160.202.244.9:2489 \ No newline at end of file diff --git a/欧歌/txt/89.txt b/欧歌/txt/89.txt index 2a0f83e..fd0a371 100644 --- a/欧歌/txt/89.txt +++ b/欧歌/txt/89.txt @@ -1 +1 @@ -https://mac.555618.xyz \ No newline at end of file +http://app.555618.xyz:1766 \ No newline at end of file diff --git a/欧歌/txt/xfdd.txt b/欧歌/txt/xfdd.txt index 503d3b8..695b3d5 100644 --- a/欧歌/txt/xfdd.txt +++ b/欧歌/txt/xfdd.txt @@ -1 +1 @@ -http://110.42.7.59:9428 \ No newline at end of file +http://110.42.7.59:9066 \ No newline at end of file diff --git a/潇洒/.版本.png b/潇洒/.版本.png deleted file mode 100644 index adb6de7..0000000 Binary files a/潇洒/.版本.png and /dev/null differ diff --git a/潇洒/JS/Anime1.js b/潇洒/JS/Anime1.js index c0e6fb0..67e4a6e 100644 --- a/潇洒/JS/Anime1.js +++ b/潇洒/JS/Anime1.js @@ -1,169 +1 @@ -// 注意事项:此源仅支持 影视TV 及 爱佬版tvbox最新版 -// 注意事项:此源仅支持 影视TV 及 爱佬版tvbox最新版 -// 注意事项:此源仅支持 影视TV 及 爱佬版tvbox最新版 -// 3个set-Cookie - -var rule = { - title:'Anime1动畫', - host:'https://anime1.me', - url: '/fyclass', - detailUrl:'/?cat=fyid', - searchUrl: '/page/fypage?s=**', - searchable:2, - quickSearch:0, - headers:{'User-Agent': 'PC_UA'}, - timeout:5000, - class_name:'連載中&2025&2024&2023&2022&2021&2020&2019&2018&更早', - class_url:'連載中&2025&2024&2023&2022&2021&2020&2019&2018&2017', - play_parse:true, - lazy:`js: - var apiurl = 'https://v.anime1.me/api'; - var html = request(apiurl, { - headers: { - 'Referer': HOST, - }, - body: 'd=' + input, - method: 'POST', - withHeaders: true - }); - let json = JSON.parse(html); - print(json); - log(Object.keys(json)); - let setCk = Object.keys(json).filter(it => it.toLowerCase() === "set-cookie"); - let cookie = setCk ? json[setCk] : ""; - // 3个set-Cookie - if (Array.isArray(cookie)) { - cookie = cookie.join(';'); - } - cookie = cookie.split(';').filter(function(it) { - return ['e', 'p', 'h'].includes(it.split('=')[0]) - }).join(';'); - log(cookie); - var purl = JSON.parse(json.body).s[0].src; - if (purl.startsWith('/')) { - purl = 'https:' + purl - } - input = { - jx: 0, - url: purl, - parse: 0, - header: JSON.stringify({ - 'referer': HOST, - 'Cookie': cookie, - 'user-agent': PC_UA - }), - } - `, - limit:6, - 推荐: `js: - var d = []; - function stripHtmlTag(src) { - return src.replace(/<\\/?[^>]+(>|$)/g, '').replace(/&.{1,5};/g, '').replace(/\\s{2,}/g, ' '); - } - var timestamp = new Date().getTime(); - var json = request('https://d1zquzjgwo9yb.cloudfront.net/?_=' + timestamp); - var list = JSON.parse(json); - let playKeys = Object.values(list).filter(function(x) { - return x[2].includes('連載中'); - }); - playKeys.forEach(function(it) { - d.push({ - title: stripHtmlTag(it[1]), - img: 'https://sta.anicdn.com/playerImg/8.jpg', - desc: it[2], - url: it[0], - }); - }); - setResult(d); - `, - 一级: `js: - var d = []; - function stripHtmlTag(src) { - return src.replace(/<\\/?[^>]+(>|$)/g, '').replace(/&.{1,5};/g, '').replace(/\\s{2,}/g, ' '); - } - var timestamp = new Date().getTime(); - var json = request('https://d1zquzjgwo9yb.cloudfront.net/?_=' + timestamp); - var list = JSON.parse(json); - let playKeys = Object.values(list).filter(function(x) { - if (MY_CATE === '連載中') return x[2].includes(MY_CATE); - else if (MY_CATE === '2017') return x[3] <= MY_CATE; - else return x[3] == MY_CATE; - }); - playKeys.forEach(function(it) { - d.push({ - title: stripHtmlTag(it[1]), - img: 'https://sta.anicdn.com/playerImg/8.jpg', - desc: it[2], - url: it[0], - }); - }); - setResult(d); - `, - 二级: `js: - pdfh = jsp.pdfh; pdfa = jsp.pdfa; pd = jsp.pd; - var html = request(input); - var timestamp = new Date().getTime(); - var json = request('https://d1zquzjgwo9yb.cloudfront.net/?_=' + timestamp); - var list = JSON.parse(json); - var vid = input.split('=')[1]; - let playKeys = Object.values(list).find(function(x) { - return x[0] === parseInt(vid); - }); - VOD = { - vod_pic: 'https://sta.anicdn.com/playerImg/8.jpg', - vod_id: playKeys[0], - vod_name: playKeys[1], - vod_content: playKeys[2], - vod_year: playKeys[3], - type_name: playKeys[4], - vod_actor: playKeys[5], - }; - var pageurl = pd(html, '.cat-links&&a&&href'); - var pagenum = 1; - let vod_tab_list = []; - let vlist = []; - for (let p = 1; p < parseInt(pagenum) + 1; p++) { - let phtml = request(pageurl + '/page/' + pagenum); - let new_vod_list = []; - let vodList = []; - vodList = pdfa(phtml, '.site-main&&article'); - for (let i = 0; i < vodList.length; i++) { - let it = vodList[i]; - let ptitle = pdfh(it, '.entry-title&&Text').replace(/\\[(.*)\\]/, '$1'); - let purl = pd(it, '.video-js&&data-apireq'); - new_vod_list.push(ptitle + '$' + purl); - } - vlist = vlist.concat(new_vod_list); - try { - pagenum = pd(phtml, '.nav-previous&&a&&href').split('/page/')[1]; - } catch(e) {} - } - let vlist2 = vlist.reverse().join("#"); - vod_tab_list.push(vlist2); - VOD.vod_play_from = '在线播放'; - VOD.vod_play_url = vod_tab_list.join("$$$"); - `, - 搜索: `js: - var d = []; - function stripHtmlTag(src) { - return src.replace(/<\\/?[^>]+(>|$)/g, '').replace(/&.{1,5};/g, '').replace(/\\s{2,}/g, ' '); - } - var timestamp = new Date().getTime(); - var json = request('https://d1zquzjgwo9yb.cloudfront.net/?_=' + timestamp); - var list = JSON.parse(json); - var wd = input.split('=')[1]; - let playKeys = Object.values(list).filter(function(x) { - return x[1].includes(wd); - }); - log(playKeys); - playKeys.forEach(function(it) { - d.push({ - title: stripHtmlTag(it[1]), - img: 'https://sta.anicdn.com/playerImg/8.jpg', - desc: it[2], - url: it[0], - }); - }); - setResult(d); - `, -} \ No newline at end of file +Ly8g5rOo5oSP5LqL6aG5OuatpOa6kOS7heaUr+aMgSDlvbHop4ZUViDlj4og54ix5L2s54mIdHZib3jmnIDmlrDniYgKLy8g5rOo5oSP5LqL6aG5OuatpOa6kOS7heaUr+aMgSDlvbHop4ZUViDlj4og54ix5L2s54mIdHZib3jmnIDmlrDniYgKLy8g5rOo5oSP5LqL6aG5OuatpOa6kOS7heaUr+aMgSDlvbHop4ZUViDlj4og54ix5L2s54mIdHZib3jmnIDmlrDniYgKLy8gM+S4qnNldC1Db29raWUKCnZhciBydWxlID0gewoJdGl0bGU6J0FuaW1lMeWKqOeVqycsCglob3N0OidodHRwczovL2FuaW1lMS5tZScsCgl1cmw6ICcvZnljbGFzcycsCglkZXRhaWxVcmw6Jy8/Y2F0PWZ5aWQnLAoJc2VhcmNoVXJsOiAnL3BhZ2UvZnlwYWdlP3M9KionLAoJc2VhcmNoYWJsZToyLAoJcXVpY2tTZWFyY2g6MCwKCWhlYWRlcnM6eydVc2VyLUFnZW50JzogJ1BDX1VBJ30sCgl0aW1lb3V0OjUwMDAsCiAgICBjbGFzc19uYW1lOifpgKPovInkuK0mMjAyNSYyMDI0JjIwMjMmMjAyMiYyMDIxJjIwMjAmMjAxOSYyMDE4JuabtOaXqScsCiAgICBjbGFzc191cmw6J+mAo+i8ieS4rSYyMDI1JjIwMjQmMjAyMyYyMDIyJjIwMjEmMjAyMCYyMDE5JjIwMTgmMjAxNycsCglwbGF5X3BhcnNlOnRydWUsCglsYXp5OmBqczoKCQl2YXIgYXBpdXJsID0gJ2h0dHBzOi8vdi5hbmltZTEubWUvYXBpJzsKCQl2YXIgaHRtbCA9IHJlcXVlc3QoYXBpdXJsLCB7CgkJCWhlYWRlcnM6IHsKCQkJCSdSZWZlcmVyJzogSE9TVCwKCQkJfSwKCQkJYm9keTogJ2Q9JyArIGlucHV0LAoJCQltZXRob2Q6ICdQT1NUJywKCQkJd2l0aEhlYWRlcnM6IHRydWUKCQl9KTsKCQlsZXQganNvbiA9IEpTT04ucGFyc2UoaHRtbCk7CgkJcHJpbnQoanNvbik7CgkJbG9nKE9iamVjdC5rZXlzKGpzb24pKTsKCQlsZXQgc2V0Q2sgPSBPYmplY3Qua2V5cyhqc29uKS5maWx0ZXIoaXQgPT4gaXQudG9Mb3dlckNhc2UoKSA9PT0gInNldC1jb29raWUiKTsKCQlsZXQgY29va2llID0gc2V0Q2sgPyBqc29uW3NldENrXSA6ICIiOwoJCS8vIDPkuKpzZXQtQ29va2llCgkJaWYgKEFycmF5LmlzQXJyYXkoY29va2llKSkgewoJCQljb29raWUgPSBjb29raWUuam9pbignOycpOwoJCX0KCQljb29raWUgPSBjb29raWUuc3BsaXQoJzsnKS5maWx0ZXIoZnVuY3Rpb24oaXQpIHsKCQkJcmV0dXJuIFsnZScsICdwJywgJ2gnXS5pbmNsdWRlcyhpdC5zcGxpdCgnPScpWzBdKQoJCX0pLmpvaW4oJzsnKTsKCQlsb2coY29va2llKTsKCQl2YXIgcHVybCA9IEpTT04ucGFyc2UoanNvbi5ib2R5KS5zWzBdLnNyYzsKCQlpZiAocHVybC5zdGFydHNXaXRoKCcvJykpIHsKCQkJcHVybCA9ICdodHRwczonICsgcHVybAoJCX0KCQlpbnB1dCA9IHsKCQkJang6IDAsCgkJCXVybDogcHVybCwKCQkJcGFyc2U6IDAsCgkJCWhlYWRlcjogSlNPTi5zdHJpbmdpZnkoewoJCQkJJ3JlZmVyZXInOiBIT1NULAoJCQkJJ0Nvb2tpZSc6IGNvb2tpZSwKCQkJCSd1c2VyLWFnZW50JzogUENfVUEKCQkJfSksCgkJfQoJYCwKCWxpbWl0OjYsCgnmjqjojZA6IGBqczoKCQl2YXIgZCA9IFtdOwoJCWZ1bmN0aW9uIHN0cmlwSHRtbFRhZyhzcmMpIHsKCQkJcmV0dXJuIHNyYy5yZXBsYWNlKC88XFwvP1tePl0rKD58JCkvZywgJycpLnJlcGxhY2UoLyYuezEsNX07L2csICcnKS5yZXBsYWNlKC9cXHN7Mix9L2csICcgJyk7CgkJfQoJCXZhciB0aW1lc3RhbXAgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTsKCQl2YXIganNvbiA9IHJlcXVlc3QoJ2h0dHBzOi8vZDF6cXV6amd3bzl5Yi5jbG91ZGZyb250Lm5ldC8/Xz0nICsgdGltZXN0YW1wKTsKCQl2YXIgbGlzdCA9IEpTT04ucGFyc2UoanNvbik7CgkJbGV0IHBsYXlLZXlzID0gT2JqZWN0LnZhbHVlcyhsaXN0KS5maWx0ZXIoZnVuY3Rpb24oeCkgewoJCQlyZXR1cm4geFsyXS5pbmNsdWRlcygn6YCj6LyJ5LitJyk7CgkJfSk7CgkJcGxheUtleXMuZm9yRWFjaChmdW5jdGlvbihpdCkgewoJCQlkLnB1c2goewoJCQkJdGl0bGU6IHN0cmlwSHRtbFRhZyhpdFsxXSksCgkJCQlpbWc6ICdodHRwczovL3N0YS5hbmljZG4uY29tL3BsYXllckltZy84LmpwZycsCgkJCQlkZXNjOiBpdFsyXSwKCQkJCXVybDogaXRbMF0sCgkJCX0pOwoJCX0pOwoJCXNldFJlc3VsdChkKTsKCWAsCgnkuIDnuqc6IGBqczoKCQl2YXIgZCA9IFtdOwoJCWZ1bmN0aW9uIHN0cmlwSHRtbFRhZyhzcmMpIHsKCQkJcmV0dXJuIHNyYy5yZXBsYWNlKC88XFwvP1tePl0rKD58JCkvZywgJycpLnJlcGxhY2UoLyYuezEsNX07L2csICcnKS5yZXBsYWNlKC9cXHN7Mix9L2csICcgJyk7CgkJfQoJCXZhciB0aW1lc3RhbXAgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTsKCQl2YXIganNvbiA9IHJlcXVlc3QoJ2h0dHBzOi8vZDF6cXV6amd3bzl5Yi5jbG91ZGZyb250Lm5ldC8/Xz0nICsgdGltZXN0YW1wKTsKCQl2YXIgbGlzdCA9IEpTT04ucGFyc2UoanNvbik7CgkJbGV0IHBsYXlLZXlzID0gT2JqZWN0LnZhbHVlcyhsaXN0KS5maWx0ZXIoZnVuY3Rpb24oeCkgewoJCQlpZiAoTVlfQ0FURSA9PT0gJ+mAo+i8ieS4rScpIHJldHVybiB4WzJdLmluY2x1ZGVzKE1ZX0NBVEUpOwoJCQllbHNlIGlmIChNWV9DQVRFID09PSAnMjAxNycpIHJldHVybiB4WzNdIDw9IE1ZX0NBVEU7CgkJCWVsc2UgcmV0dXJuIHhbM10gPT0gTVlfQ0FURTsKCQl9KTsKCQlwbGF5S2V5cy5mb3JFYWNoKGZ1bmN0aW9uKGl0KSB7CgkJCWQucHVzaCh7CgkJCQl0aXRsZTogc3RyaXBIdG1sVGFnKGl0WzFdKSwKCQkJCWltZzogJ2h0dHBzOi8vc3RhLmFuaWNkbi5jb20vcGxheWVySW1nLzguanBnJywKCQkJCWRlc2M6IGl0WzJdLAoJCQkJdXJsOiBpdFswXSwKCQkJfSk7CgkJfSk7CgkJc2V0UmVzdWx0KGQpOwoJYCwKCeS6jOe6pzogYGpzOgoJCXBkZmggPSBqc3AucGRmaDsgcGRmYSA9IGpzcC5wZGZhOyBwZCA9IGpzcC5wZDsKCQl2YXIgaHRtbCA9IHJlcXVlc3QoaW5wdXQpOwoJCXZhciB0aW1lc3RhbXAgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTsKCQl2YXIganNvbiA9IHJlcXVlc3QoJ2h0dHBzOi8vZDF6cXV6amd3bzl5Yi5jbG91ZGZyb250Lm5ldC8/Xz0nICsgdGltZXN0YW1wKTsKCQl2YXIgbGlzdCA9IEpTT04ucGFyc2UoanNvbik7CgkJdmFyIHZpZCA9IGlucHV0LnNwbGl0KCc9JylbMV07CgkJbGV0IHBsYXlLZXlzID0gT2JqZWN0LnZhbHVlcyhsaXN0KS5maW5kKGZ1bmN0aW9uKHgpIHsKCQkJcmV0dXJuIHhbMF0gPT09IHBhcnNlSW50KHZpZCk7CgkJfSk7CgkJVk9EID0gewoJCQl2b2RfcGljOiAnaHR0cHM6Ly9zdGEuYW5pY2RuLmNvbS9wbGF5ZXJJbWcvOC5qcGcnLAoJCQl2b2RfaWQ6IHBsYXlLZXlzWzBdLAoJCQl2b2RfbmFtZTogcGxheUtleXNbMV0sCgkJCXZvZF9jb250ZW50OiBwbGF5S2V5c1syXSwKCQkJdm9kX3llYXI6IHBsYXlLZXlzWzNdLAoJCQl0eXBlX25hbWU6IHBsYXlLZXlzWzRdLAoJCQl2b2RfYWN0b3I6IHBsYXlLZXlzWzVdLAoJCX07CgkJdmFyIHBhZ2V1cmwgPSBwZChodG1sLCAnLmNhdC1saW5rcyYmYSYmaHJlZicpOwoJCXZhciBwYWdlbnVtID0gMTsKCQlsZXQgdm9kX3RhYl9saXN0ID0gW107CgkJbGV0IHZsaXN0ID0gW107CgkJZm9yIChsZXQgcCA9IDE7IHAgPCBwYXJzZUludChwYWdlbnVtKSArIDE7IHArKykgewoJCQlsZXQgcGh0bWwgPSByZXF1ZXN0KHBhZ2V1cmwgKyAnL3BhZ2UvJyArIHBhZ2VudW0pOwoJCQlsZXQgbmV3X3ZvZF9saXN0ID0gW107CgkJCWxldCB2b2RMaXN0ID0gW107CgkJCXZvZExpc3QgPSBwZGZhKHBodG1sLCAnLnNpdGUtbWFpbiYmYXJ0aWNsZScpOwoJCQlmb3IgKGxldCBpID0gMDsgaSA8IHZvZExpc3QubGVuZ3RoOyBpKyspIHsKCQkJCWxldCBpdCA9IHZvZExpc3RbaV07CgkJCQlsZXQgcHRpdGxlID0gcGRmaChpdCwgJy5lbnRyeS10aXRsZSYmVGV4dCcpLnJlcGxhY2UoL1xcWyguKilcXF0vLCAnJDEnKTsKCQkJCWxldCBwdXJsID0gcGQoaXQsICcudmlkZW8tanMmJmRhdGEtYXBpcmVxJyk7CgkJCQluZXdfdm9kX2xpc3QucHVzaChwdGl0bGUgKyAnJCcgKyBwdXJsKTsKCQkJfQoJCQl2bGlzdCA9IHZsaXN0LmNvbmNhdChuZXdfdm9kX2xpc3QpOwoJCQl0cnkgewoJCQkJcGFnZW51bSA9IHBkKHBodG1sLCAnLm5hdi1wcmV2aW91cyYmYSYmaHJlZicpLnNwbGl0KCcvcGFnZS8nKVsxXTsKCQkJfSBjYXRjaChlKSB7fQoJCX0KCQlsZXQgdmxpc3QyID0gdmxpc3QucmV2ZXJzZSgpLmpvaW4oIiMiKTsKCQl2b2RfdGFiX2xpc3QucHVzaCh2bGlzdDIpOwoJCVZPRC52b2RfcGxheV9mcm9tID0gJ+mBk+mVv+WcqOe6vyc7CgkJVk9ELnZvZF9wbGF5X3VybCA9IHZvZF90YWJfbGlzdC5qb2luKCIkJCQiKTsKCWAsCgnmkJzntKI6IGBqczoKCQl2YXIgZCA9IFtdOwoJCWZ1bmN0aW9uIHN0cmlwSHRtbFRhZyhzcmMpIHsKCQkJcmV0dXJuIHNyYy5yZXBsYWNlKC88XFwvP1tePl0rKD58JCkvZywgJycpLnJlcGxhY2UoLyYuezEsNX07L2csICcnKS5yZXBsYWNlKC9cXHN7Mix9L2csICcgJyk7CgkJfQoJCXZhciB0aW1lc3RhbXAgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTsKCQl2YXIganNvbiA9IHJlcXVlc3QoJ2h0dHBzOi8vZDF6cXV6amd3bzl5Yi5jbG91ZGZyb250Lm5ldC8/Xz0nICsgdGltZXN0YW1wKTsKCQl2YXIgbGlzdCA9IEpTT04ucGFyc2UoanNvbik7CgkJdmFyIHdkID0gaW5wdXQuc3BsaXQoJz0nKVsxXTsKCQlsZXQgcGxheUtleXMgPSBPYmplY3QudmFsdWVzKGxpc3QpLmZpbHRlcihmdW5jdGlvbih4KSB7CgkJCXJldHVybiB4WzFdLmluY2x1ZGVzKHdkKTsKCQl9KTsKCQlsb2cocGxheUtleXMpOwoJCXBsYXlLZXlzLmZvckVhY2goZnVuY3Rpb24oaXQpIHsKCQkJZC5wdXNoKHsKCQkJCXRpdGxlOiBzdHJpcEh0bWxUYWcoaXRbMV0pLAoJCQkJaW1nOiAnaHR0cHM6Ly9zdGEuYW5pY2RuLmNvbS9wbGF5ZXJJbWcvOC5qcGcnLAoJCQkJZGVzYzogaXRbMl0sCgkJCQl1cmw6IGl0WzBdLAoJCQl9KTsKCQl9KTsKCQlzZXRSZXN1bHQoZCk7CglgLAp9 \ No newline at end of file diff --git a/潇洒/XBPQ/修罗影视.json b/潇洒/XBPQ/修罗影视.json deleted file mode 100644 index b94ea54..0000000 --- a/潇洒/XBPQ/修罗影视.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "数组": "card card-sm card-link&&", - "图片": "src=\"&&\"", - "标题": "mb-0 card-title text-truncate\">&&<", - "副标题": "start-0 text-red-fg\">&&", - "链接": "href=\"&&\"", - "简介": "剧情简介:&&\"", - "线路标题": "磁力+>&&<", - "播放数组": "download-list&&", - "播放列表": "", - "播放标题": "text-muted\">&&[不包含:网盘下载]", - "跳转播放链接": "href=\"&&\"", - "分类url": "https://v.xlys.ltd.ua/s/all/{catePg}?type={cateId};;d0", - "分类": "电影$0#电视剧$1" -} \ No newline at end of file diff --git a/潇洒/XBPQ/农民影视.json b/潇洒/XBPQ/农民影视.json deleted file mode 100644 index 205677c..0000000 --- a/潇洒/XBPQ/农民影视.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "请求头": "手机", - "编码": "UTF-8", - "简介": "简        介:&&

", - "线路数组": "javascript:;\">&&", - "数组": "
  • &&
  • ", - "图片": "data-echo=\"&&\"", - "分类url": "https://vip.wwgz.cn:5200/vod-list-id-{cateId}-pg-{catePg}-order--by-time-class-0-year-{year}-letter--area-{area}-lang-.html", - "分类": "电影$1#电视剧$2#动漫$4#综艺$3#短剧$26" -} \ No newline at end of file diff --git a/潇洒/XBPQ/短剧网.json b/潇洒/XBPQ/短剧网.json deleted file mode 100644 index 1d5f5a7..0000000 --- a/潇洒/XBPQ/短剧网.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "分类": "短剧$duanju#电影$dianying#电视剧$dianshiju#动漫$dongman#综艺$zongyi", - "分类url": "https://www.duanjuwang.cc/vodtype/{cateId}/page/{catePg}.html" -} \ No newline at end of file diff --git a/潇洒/XYQHiker/短剧屋.json b/潇洒/XYQHiker/短剧屋.json deleted file mode 100644 index 0a1bf24..0000000 --- a/潇洒/XYQHiker/短剧屋.json +++ /dev/null @@ -1,81 +0,0 @@ -{ - "规则名": "短剧屋", - "规则作者": "", - "请求头参数": "手机", - "网页编码格式": "UTF-8", - "图片是否需要代理": "0", - "是否开启获取首页数据": "1", - "首页推荐链接": "http://www.metaysw.com", - "首页列表数组规则": "body&&.vod-vodlist", - "首页片单列表数组规则": "li", - "首页片单是否Jsoup写法": "1", - "分类起始页码": "1", - "分类链接": "http://www.metaysw.com/type/{cateId}-{catePg}.html", - "分类名称": "短剧", - "分类名称替换词": "lianxuju", - "筛选数据": {}, - //"筛选数据": "ext", - //{cateId} - "筛选子分类名称": "", - "筛选子分类替换词": "", - //{class} - "筛选类型名称": "", - "筛选类型替换词": "*", - //{area} - "筛选地区名称": "", - "筛选地区替换词": "*", - //{year} - "筛选年份名称": "", - "筛选年份替换词": "*", - //{lang} - "筛选语言名称": "", - "筛选语言替换词": "*", - //{by} - "筛选排序名称": "时间&人气&评分", - "筛选排序替换词": "time&hits&score", - "分类截取模式": "1", - "分类列表数组规则": ".vod-vodlist&&li", - "分类片单是否Jsoup写法": "1", - "分类片单标题": ".vod-vodlist__title&&Text", - "分类片单链接": "a&&href", - "分类片单图片": ".lazyload&&data-original", - "分类片单副标题": ".pic-text&&Text", - "分类片单链接加前缀": "http://www.metaysw.com", - "分类片单链接加后缀": "", - "搜索请求头参数": "User-Agent$手机", - "搜索链接": "http://www.metaysw.com/search/page/{SearchPg}/wd/{wd}.html", - "POST请求数据": "", - "搜索截取模式": "1", - "搜索列表数组规则": ".vod-vodlist&&li", - "搜索片单是否Jsoup写法": "1", - "搜索片单图片": ".lazyload&&data-original", - "搜索片单标题": ".vod-vodlist__title&&Text", - "搜索片单链接": "a&&href", - "搜索片单副标题": ".pic-text&&Text", - "搜索片单链接加前缀": "http://www.metaysw.com", - "搜索片单链接加后缀": "", - "链接是否直接播放": "0", - "直接播放链接加前缀": "https://live.52sf.ga/huya/", - "直接播放链接加后缀": "#isVideo=true#", - "直接播放直链视频请求头": "authority$ku.peizq.online#Referer$https://play.peizq.online", - "详情是否Jsoup写法": "1", - "类型详情": "", - "年代详情": "", - "地区详情": "", - "演员详情": ".vod-content__detail&&p,2&&Text!主演:", - "简介详情": "", - "线路列表数组规则": ".dropdown-menu&&li", - "线路标题": "a&&Text", - "播放列表数组规则": "body&&.vod-content__playlist", - "选集列表数组规则": "li", - "选集标题链接是否Jsoup写法": "1", - "选集标题": "a&&Text", - "选集链接": "a&&href", - "是否反转选集序列": "0", - "选集链接加前缀": "http://www.metaysw.com", - "选集链接加后缀": "", - "分析MacPlayer": "0", - "是否开启手动嗅探": "0", - "手动嗅探视频链接关键词": ".mp4#.m3u8#.flv#video/tos", - "手动嗅探视频链接过滤词": ".html#=http" -} \ No newline at end of file diff --git a/潇洒/api.json b/潇洒/api.json index dc8ae20..48ccd9d 100644 --- a/潇洒/api.json +++ b/潇洒/api.json @@ -72,6 +72,14 @@ "url": "http://v.lkuys.cn" } }, + { + "key": "移动", + "name": "移动|APP", + "type": 3, + "api": "csp_YD", + "searchable": 1, + "quickSearch": 1 + }, { "key": "行动", "name": "行动|APP", @@ -104,12 +112,11 @@ "api": "csp_AppGet2", "ext": { "url": "", - "site": "https://cdn-tupic-duofun-neimenggu.56uxi.com/2.txt", + "site": "./txt/2.txt", "dataKey": "qwertyuiopqwertt", "dataIv": "qwertyuiopqwertt", "deviceId": "", - "version": "109", - "ua": "okhttp/3.10.0" + "version": "109" } }, { @@ -135,7 +142,7 @@ "api": "csp_AppGet", "ext": { "url": "", - "site": "https://vip.123pan.cn/1848451100/zl/xfdd.txt", + "site": "./txt/xfdd.txt", "dataKey": "xasdasdqwertyuio", "dataIv": "xasdasdqwertyuio", "deviceId": "", @@ -150,7 +157,7 @@ "api": "csp_AppGet", "ext": { "url": "", - "site": "https://bind.315999.xyz/89.txt", + "site": "./txt/89.txt", "dataKey": "#getapp@TMD@2025", "dataIv": "#getapp@TMD@2025", "deviceId": "", @@ -179,7 +186,7 @@ "api": "csp_AppGet2", "ext": { "url": "", - "site": "https://lanyinghz.oss-cn-hangzhou.aliyuncs.com/lanyingxmy.txt", + "site": "./txt/lanyingxmy.txt", "dataKey": "ca94b06ca359d80e", "dataIv": "ca94b06ca359d80e", "deviceId": "", @@ -228,21 +235,6 @@ "version": "120" } }, - { - "key": "鲸鱼", - "name": "鲸鱼|APP", - "type": 3, - "quickSearch": 1, - "api": "csp_AppGet2", - "ext": { - "url": "", - "site": "https://jingyu4k-1312635929.cos.ap-nanjing.myqcloud.com/1.json", - "dataKey": "AAdgrdghjfgswerA", - "dataIv": "AAdgrdghjfgswerA", - "deviceId": "", - "version": "" - } - }, { "key": "鲶鱼", "name": "鲶鱼|APP", @@ -319,7 +311,7 @@ "api": "csp_AppGet", "ext": { "url": "", - "site": "http://59.153.167.137:7788/1.json", + "site": "./json/1.json", "dataKey": "4d83b87c4c5ea111", "dataIv": "4d83b87c4c5ea111", "deviceId": "", @@ -487,7 +479,7 @@ "quickSearch": 1, "api": "csp_AppGet", "ext": { - "url": "https://new.tkbot.fun", + "url": "http://v.tkbot.fun", "dataKey": "d032c12876bc6848", "dataIv": "d032c12876bc6848", "deviceId": "", @@ -618,7 +610,7 @@ "ratio": 1.433 }, "ext": { - "json": "./json/哔哩视频.json", + "json": "./json/BLSP.json", "cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt" } }, @@ -626,29 +618,29 @@ "key": "腾讯视频", "name": "腾讯|视频", "type": 3, - "api": "./js/drpy2.min.js", - "ext": "./js/腾讯视频.js" + "api": "./api/drpy2.min.js", + "ext": "./js/TXSP.js" }, { "key": "优酷视频", "name": "优酷|视频", "type": 3, - "api": "./js/drpy2.min.js", - "ext": "./js/优酷视频.js" + "api": "./api/drpy2.min.js", + "ext": "./js/YKSP.js" }, { "key": "芒果视频", "name": "芒果|视频", "type": 3, - "api": "./js/drpy2.min.js", - "ext": "./js/芒果视频.js" + "api": "./api/drpy2.min.js", + "ext": "./js/MGSP.js" }, { "key": "爱奇艺", - "name": "爱奇异|视频", + "name": "爱奇艺|视频", "type": 3, - "api": "./js/drpy2.min.js", - "ext": "./js/爱奇艺.js" + "api": "./api/drpy2.min.js", + "ext": "./js/AQY.js" }, { "key": "三六零", @@ -657,15 +649,15 @@ "api": "csp_SP360" }, { - "key": "聚合", - "name": "聚合|4K弹幕", + "key": "小斑快映", + "name": "小斑快映|4K弹幕", "type": 3, "api": "csp_PanWebShare", "searchable": 1, "quickSearch": 1, "filterable": 1, "changeable": 1, - "ext": "./json/jh.json" + "ext": "./json/xbky.json" }, { "key": "玩偶哥哥", @@ -875,8 +867,8 @@ "key": "双星", "name": "双星|4K弹幕", "type": 3, - "api": "./js/cloud.min.js", - "ext": "./js/双星.js", + "api": "./api/cloud.min.js", + "ext": "./js/SX.js", "style": { "type": "list" } @@ -885,8 +877,8 @@ "key": "懒盘", "name": "懒盘|4K弹幕", "type": 3, - "api": "./js/cloud.min.js", - "ext": "./js/懒盘.js", + "api": "./api/cloud.min.js", + "ext": "./js/LP.js", "style": { "type": "list" } @@ -895,8 +887,8 @@ "key": "百酷", "name": "百酷|4K弹幕", "type": 3, - "api": "./js/cloud.min.js", - "ext": "./js/百酷.js", + "api": "./api/cloud.min.js", + "ext": "./js/BK.js", "style": { "type": "list" } @@ -905,8 +897,8 @@ "key": "校长", "name": "校长|4K弹幕", "type": 3, - "api": "./js/cloud.min.js", - "ext": "./js/校长.js", + "api": "./api/cloud.min.js", + "ext": "./js/XZ.js", "style": { "type": "list" } @@ -915,8 +907,8 @@ "key": "天堂", "name": "天堂|4K弹幕", "type": 3, - "api": "./js/cloud.min.js", - "ext": "./js/天堂.js", + "api": "./api/cloud.min.js", + "ext": "./js/TT.js", "style": { "type": "list" } @@ -925,8 +917,8 @@ "key": "人人电影网", "name": "人人|4K弹幕", "type": 3, - "api": "./js/cloud.min.js", - "ext": "./js/人人电影网.js", + "api": "./api/cloud.min.js", + "ext": "./js/RRDYW.js", "style": { "type": "list" } @@ -935,19 +927,8 @@ "key": "爱搜", "name": "爱搜|4K弹幕", "type": 3, - "api": "./js/cloud.min.js", - "ext": "./js/爱搜.js", - "style": { - "type": "list" - } - }, - { - "key": "移动", - "name": "移动|4K", - "type": 3, - "api": "csp_YD", - "searchable": 1, - "quickSearch": 1, + "api": "./api/cloud.min.js", + "ext": "./js/AS.js", "style": { "type": "list" } @@ -974,8 +955,8 @@ "key": "米搜", "name": "米搜|搜索", "type": 3, - "api": "./js/cloud.min.js", - "ext": "./js/米搜.js", + "api": "./api/cloud.min.js", + "ext": "./js/MS.js", "style": { "type": "list" } @@ -984,8 +965,8 @@ "key": "人人分享站", "name": "人人|搜索", "type": 3, - "api": "./js/cloud.min.js", - "ext": "./js/人人分享站.js", + "api": "./api/cloud.min.js", + "ext": "./js/RR.js", "style": { "type": "list" } @@ -994,8 +975,8 @@ "key": "全盘", "name": "全盘|搜索", "type": 3, - "api": "./js/cloud.min.js", - "ext": "./js/全盘.js", + "api": "./api/cloud.min.js", + "ext": "./js/QP.js", "style": { "type": "list" } @@ -1004,8 +985,8 @@ "key": "夸克盘搜", "name": "盘搜|搜索", "type": 3, - "api": "./js/cloud.min.js", - "ext": "./js/夸克盘搜.js", + "api": "./api/cloud.min.js", + "ext": "./js/KKPS.js", "style": { "type": "list" } @@ -1023,7 +1004,7 @@ "key": "河马短剧", "name": "河马|短剧", "type": 3, - "api": "./py/河马短剧.py", + "api": "./api/HMDJ.py", "searchable": 1, "changeable": 1, "quickSearch": 1, @@ -1034,7 +1015,7 @@ "key": "偷乐短剧", "name": "偷乐|短剧", "type": 3, - "api": "./py/偷乐短剧.py", + "api": "./api/TLDJ.py", "searchable": 1, "changeable": 1, "quickSearch": 1, @@ -1045,8 +1026,8 @@ "key": "短剧网", "name": "短剧网|短剧", "type": 3, - "api": "csp_HBPQ", - "ext": "./XBPQ/短剧网.json" + "api": "csp_XBPQ", + "ext": "./json/DJWang.json" }, { "key": "短剧屋", @@ -1056,7 +1037,7 @@ "searchable": 1, "quickSearch": 1, "filterable": 1, - "ext": "./XYQHiker/短剧屋.json" + "ext": "./json/DJWu.json" }, { "key": "起点", @@ -1072,7 +1053,7 @@ "key": "金牌影视", "name": "金牌|影视", "type": 3, - "api": "./py/金牌影视.py", + "api": "./api/JPYS.py", "searchable": 1, "quickSearch": 1, "filterable": 1, @@ -1085,7 +1066,7 @@ "key": "猎手影视", "name": "猎手|影视", "type": 3, - "api": "./py/猎手影视.py", + "api": "./api/LSYS.py", "searchable": 1, "changeable": 1, "quickSearch": 1, @@ -1207,8 +1188,8 @@ "key": "采集之王", "name": "采集|合集", "type": 3, - "api": "./js/drpy2.min.js", - "ext": "./js/采集之王.js?type=url¶ms=../json/采集静态.json$1$1" + "api": "./api/drpy2.min.js", + "ext": "./js/CJZW.js?type=url¶ms=./json/CJJT.json$1$1" }, { "key": "爱看机器人", @@ -1223,57 +1204,57 @@ "key": "海纳影视", "name": "海纳|影视", "type": 3, - "api": "csp_HBPQ", - "ext": "./XBPQ/海纳影视.json" + "api": "csp_XBPQ", + "ext": "./json/HNYS.json" }, { "key": "面包影视", "name": "面包|影视", "type": 3, - "api": "csp_HBPQ", - "ext": "./XBPQ/面包影视.json" + "api": "csp_XBPQ", + "ext": "./json/MBYS.json" }, { "key": "永乐影视", "name": "永乐|影视", "type": 3, - "api": "csp_HBPQ", - "ext": "./XBPQ/永乐影视.json" + "api": "csp_XBPQ", + "ext": "./json/YLYS.json" }, { "key": "雪糕影视", "name": "雪糕|影视", "type": 3, - "api": "csp_HBPQ", - "ext": "./XBPQ/雪糕影视.json" + "api": "csp_XBPQ", + "ext": "./json/XGYS.json" }, { "key": "骚火影视", "name": "骚火|影视", "type": 3, - "api": "csp_HBPQ", - "ext": "./XBPQ/骚火影视.json" + "api": "csp_XBPQ", + "ext": "./json/SHYS.json" }, { "key": "七点影视", "name": "七点|影视", "type": 3, - "api": "csp_HBPQ", - "ext": "./XBPQ/七点影视.json" + "api": "csp_XBPQ", + "ext": "./json/QDYS.json" }, { "key": "三九影视", "name": "三九|影视", "type": 3, - "api": "csp_HBPQ", - "ext": "./XBPQ/三九影视.json" + "api": "csp_XBPQ", + "ext": "./json/SJYS.json" }, { "key": "三四影视", "name": "三四|影视", "type": 3, - "api": "csp_HBPQ", - "ext": "./XBPQ/三四影视.json" + "api": "csp_XBPQ", + "ext": "./json/SSYS.json" }, { "key": "农民影视", @@ -1283,7 +1264,7 @@ "searchable": 1, "quickSearch": 1, "filterable": 1, - "ext": "./XYQHiker/农民影视.json" + "ext": "./json/NMYS.json" }, { "key": "盒子影视", @@ -1293,24 +1274,24 @@ "searchable": 1, "quickSearch": 1, "filterable": 1, - "ext": "./XYQHiker/盒子影视.json" + "ext": "./json/HZYS.json" }, { "key": "电影牛", - "name": "影牛|影视", + "name": "电影牛|影视", "type": 3, "api": "csp_XYQHiker", "searchable": 1, "quickSearch": 1, "filterable": 1, - "ext": "./XYQHiker/电影牛.json" + "ext": "./json/DYN.json" }, { "key": "剧圈圈", - "name": "剧圈|影视", + "name": "剧圈圈|影视", "type": 3, - "api": "./js/drpy2.min.js", - "ext": "./js/剧圈圈.js" + "api": "./api/drpy2.min.js", + "ext": "./js/JQQ.js" }, { "key": "1905", @@ -1342,31 +1323,31 @@ "key": "哆啦新番社", "name": "哆啦|新番社", "type": 3, - "api": "csp_HBPQ", + "api": "csp_XBPQ", "style": { "type": "list" }, - "ext": "./XBPQ/哆啦新番社.json" + "ext": "./json/DLXFS.json" }, { "key": "56动漫", "name": "56|动漫", "type": 3, - "api": "./js/drpy2.min.js", - "ext": "./js/56动漫.js" + "api": "./api/drpy2.min.js", + "ext": "./js/56DM.js" }, { "key": "NT动漫", "name": "NT|动漫", "type": 3, - "api": "./js/drpy2.min.js", - "ext": "./js/NT动漫.js" + "api": "./api/drpy2.min.js", + "ext": "./js/NTDM.js" }, { "key": "Anime1", - "name": "A1|动漫", + "name": "Anime1|动漫", "type": 3, - "api": "./js/drpy2.min.js", + "api": "./api/drpy2.min.js", "ext": "./js/Anime1.js" }, { @@ -1390,8 +1371,7 @@ "quickSearch": 1, "api": "csp_AppGet", "ext": { - "url": "", - "site": "https://xfapp-1305390065.cos.ap-guangzhou.myqcloud.com/getapp.txt", + "url": "https://pzoap.moedot.net", "dataKey": "1yZ2Spn9krnzVKoC", "dataIv": "1yZ2Spn9krnzVKoC", "deviceId": "", @@ -1486,101 +1466,102 @@ "key": "樱花动漫", "name": "樱花|动漫", "type": 3, - "api": "csp_HBPQ", - "ext": "./XBPQ/樱花动漫.json" + "api": "csp_XBPQ", + "ext": "./json/YHDM.json" }, { "key": "巴士动漫", "name": "巴士|动漫", "type": 3, "api": "csp_XYQHiker", - "ext": "./XYQHiker/巴士动漫.json" + "ext": "./json/bsdm.json" }, { "key": "好看动漫", "name": "好看|动漫", "type": 3, - "api": "./js/drpy2.min.js", - "ext": "./js/好看动漫.js" + "api": "./api/drpy2.min.js", + "ext": "./js/HKDM.js" }, { "key": "奇米动漫", "name": "奇米|动漫", "type": 3, - "api": "./js/drpy2.min.js", - "ext": "./js/奇米动漫.js" + "api": "./api/drpy2.min.js", + "ext": "./js/QMDM.js" + }, + { + "key": "怡萱动漫", + "name": "怡萱|动漫", + "type": 3, + "api": "./api/drpy2.min.js", + "ext": "./js/YXDM.js" }, { "key": "花子动漫", "name": "花子|动漫", "type": 3, - "api": "./js/drpy2.min.js", - "ext": "./js/花子动漫.js" - }, - { - "key": "樱花动漫", - "name": "樱花|动漫", - "type": 3, - "api": "./js/drpy2.min.js", - "ext": "./js/樱花动漫.js" + "api": "./api/drpy2.min.js", + "ext": "./js/HZDM.js" }, { "key": "动画片", "name": "动画片|动漫", "type": 3, - "api": "./js/drpy2.min.js", - "ext": "./js/动画片大全.js" + "api": "./api/drpy2.min.js", + "ext": "./js/DHPDQ.js" }, { "key": "路漫漫", "name": "路漫漫|动漫", "type": 3, - "api": "./js/drpy2.min.js", - "ext": "./js/路漫漫.js" + "api": "./api/drpy2.min.js", + "ext": "./js/LMM.js" }, { "key": "动漫岛", "name": "动漫岛|动漫", "type": 3, - "api": "./js/drpy2.min.js", - "ext": "./js/动漫岛.js" + "api": "./api/drpy2.min.js", + "ext": "./js/DMD.js" }, { "key": "去看吧", "name": "去看吧|动漫", "type": 3, - "api": "./js/drpy2.min.js", - "ext": "./js/去看吧.js" + "api": "./api/drpy2.min.js", + "ext": "./js/QKB.js" }, { "key": "爱弹幕", "name": "爱弹幕|动漫", "type": 3, - "api": "./js/drpy2.min.js", - "ext": "./js/爱弹幕.js" + "api": "./api/drpy2.min.js", + "ext": "./js/ADM.js" }, { "key": "异世界", "name": "异世界|动漫", "type": 3, - "api": "./js/drpy2.min.js", - "ext": "./js/异世界.js" + "api": "./api/drpy2.min.js", + "ext": "./js/YSJ.js" }, { "key": "荐片", "name": "荐片|磁力", "api": "csp_Jianpian", - "type": 3 + "type": 3, + "playerType": 1 }, { "key": "修罗影视", "name": "修罗|磁力", "type": 3, - "api": "csp_HBPQ", + "api": "csp_XBPQ", "searchable": 1, "quickSearch": 1, "filterable": 1, - "ext": "./XBPQ/修罗影视.json" + "ext": "./json/XLYS.json" }, { "key": "七味", @@ -1646,18 +1627,18 @@ "searchable": 1, "quickSearch": 1, "filterable": 1, - "ext": "./XYQHiker/电影港.json" + "ext": "./json/DYG.json" }, { "key": "狐狸君", "name": "狐狸君|磁力", "type": 3, - "api": "csp_HBPQ", + "api": "csp_XBPQ", "changeable": 1, "searchable": 1, "quickSearch": 1, "filterable": 1, - "ext": "./XBPQ/狐狸君.json" + "ext": "./json/HLJ.json" }, { "key": "BT天堂", @@ -1667,7 +1648,7 @@ "searchable": 1, "quickSearch": 1, "filterable": 1, - "ext": "./XYQHiker/BT天堂.json" + "ext": "./json/BTTT.json" }, { "key": "Mp4电影", @@ -1755,8 +1736,8 @@ "key": "短剧合集", "name": "短剧|合集", "type": 3, - "api": "./js/cloud.min.js", - "ext": "./js/短剧合集.js", + "api": "./api/cloud.min.js", + "ext": "./js/DJHJ.js", "style": { "type": "list" } @@ -1765,8 +1746,8 @@ "key": "短剧大全", "name": "短剧|大全", "type": 3, - "api": "./js/cloud.min.js", - "ext": "./js/短剧大全.js", + "api": "./api/cloud.min.js", + "ext": "./js/DJDQ.js", "style": { "type": "list" } @@ -1788,7 +1769,7 @@ "key": "网络直播", "name": "网络|直播", "type": 3, - "api": "./py/网络直播.py" + "api": "./api/WLZB.py" }, { "key": "88看球", @@ -1814,12 +1795,12 @@ "ratio": 1.433 }, "ext": { - "json": "./json/哔哩合集.json", + "json": "./json/BLHJ.json", "cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt" } }, { - "key": "哔哩哔哩演唱会", + "key": "哔哩哔哩戏曲", "name": "哔哩|音乐", "type": 3, "api": "csp_Bili", @@ -1828,7 +1809,7 @@ "filterable": 0, "ext": { "cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt", - "json": "./json/哔哩哔哩演唱会.json" + "json": "./json/BLYCH.json" }, "style": { "type": "rect", @@ -1845,7 +1826,7 @@ "filterable": 0, "ext": { "cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt", - "json": "./json/哔哩哔哩听书.json" + "json": "./json/BLTS.json" }, "style": { "type": "rect", @@ -1862,7 +1843,7 @@ "filterable": 0, "ext": { "cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt", - "json": "./json/哔哩哔哩相声.json" + "json": "./json/BLXS.json" }, "style": { "type": "rect", @@ -1879,7 +1860,7 @@ "filterable": 0, "ext": { "cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt", - "json": "./json/哔哩哔哩小品.json" + "json": "./json/BLXP.json" }, "style": { "type": "rect", @@ -1896,75 +1877,7 @@ "filterable": 0, "ext": { "cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt", - "json": "./json/哔哩哔哩戏曲.json" - }, - "style": { - "type": "rect", - "ratio": 1.597 - } - }, - { - "key": "少儿教育", - "name": "少儿|教育", - "type": 3, - "api": "csp_Bili", - "searchable": 0, - "quickSearch": 0, - "filterable": 1, - "ext": { - "json": "./json/少儿教育.json", - "cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt" - }, - "style": { - "type": "rect", - "ratio": 1.597 - } - }, - { - "key": "小学课堂", - "name": "小学|课堂", - "type": 3, - "api": "csp_Bili", - "searchable": 0, - "quickSearch": 0, - "filterable": 1, - "ext": { - "json": "./json/小学课堂.json", - "cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt" - }, - "style": { - "type": "rect", - "ratio": 1.597 - } - }, - { - "key": "初中课堂", - "name": "初中|课堂", - "type": 3, - "api": "csp_Bili", - "searchable": 0, - "quickSearch": 0, - "filterable": 1, - "ext": { - "json": "./json/初中课堂.json", - "cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt" - }, - "style": { - "type": "rect", - "ratio": 1.597 - } - }, - { - "key": "高中教育", - "name": "高中|课堂", - "type": 3, - "api": "csp_Bili", - "searchable": 0, - "quickSearch": 0, - "filterable": 1, - "ext": { - "json": "./json/高中课堂.json", - "cookie": "http://127.0.0.1:9978/file/TVBox/bili_cookie.txt" + "json": "./json/BLXQ.json" }, "style": { "type": "rect", @@ -1989,23 +1902,13 @@ "key": "养生堂", "name": "养生|知识", "type": 3, - "api": "csp_HBPQ", - "ext": "./XBPQ/养生堂.json", + "api": "csp_XBPQ", + "ext": "./json/YST.json", "style": { "type": "rect", "ratio": 1.597 } }, - { - "key": "版本信息", - "name": "版本|信息", - "type": 3, - "api": "csp_Market", - "searchable": 0, - "changeable": 0, - "indexs": 0, - "ext": "https://9877.kstore.space/Market/single.json" - }, { "key": "push_agent", "name": "手机|推送", @@ -2243,78 +2146,64 @@ { "name": "AI直播", "type": 0, - "url": "https://github.3x25.com/https://raw.githubusercontent.com/PizazzGY/TV/master/output/user_result.txt", - "epg": "http://cdn.1678520.xyz/epg/?ch={name}&date={date}", - "playerType": 1, - "timeout": 10 + "url": "./lives/AI直播.txt", + "epg": "http://cdn.1678520.xyz/epg/?ch={name}&date={date}" }, { "name": "Guovin", "type": 0, - "url": "https://gitee.com/mytv-android/iptv-api/raw/master/output/result.m3u", - "epg": "http://cdn.1678520.xyz/epg/?ch={name}&date={date}", - "timeout": 10 + "url": "./lives/Guovin.txt", + "epg": "http://cdn.1678520.xyz/epg/?ch={name}&date={date}" }, { "name": "虎牙一起看", "type": 3, "api": "csp_Feiyang", - "url": "https://yun.urldwz.com/f/BE9PSL/huyayqk.m3u", - "timeout": 10, + "url": "./lives/虎牙一起看.txt", "ua": "okhttp/3.15" }, { "name": "斗鱼一起看", "type": 3, "api": "csp_Feiyang", - "url": "https://yun.urldwz.com/f/NR9qiA/douyuyqk.m3u", - "timeout": 10, + "url": "./lives/斗鱼一起看.txt", "ua": "okhttp/3.15" }, { "name": "YY轮播", "type": 3, "api": "csp_Feiyang", - "url": "https://yun.urldwz.com/f/dlkycZ/yylunbo.m3u", - "timeout": 10, + "url": "./lives/YY轮播.txt", "ua": "okhttp/3.15" }, { "name": "B站直播", "type": 3, "api": "csp_Feiyang", - "url": "https://yun.urldwz.com/f/9XBkHK/bilibili.m3u", - "timeout": 10, + "url": "./lives/B站直播.txt", "ua": "okhttp/3.15" }, { "name": "电视Live", "type": 0, - "url": "https://tv.iill.top/m3u/Gather", - "playerType": 2, - "timeout": 10 + "url": "./lives/电视Live.txt" }, { "name": "网络Live", "type": 0, - "url": "https://tv.iill.top/m3u/Live", - "playerType": 2, - "timeout": 10 + "url": "./lives/网络Live.txt" }, { "name": "范明明", "type": 0, - "url": "https://live.fanmingming.cn/tv/m3u/ipv6.m3u", - "timeout": 10 + "url": "./lives/范明明.txt" }, { "name": "APTV", "type": 0, - "url": "https://github.3x25.com/https://github.com/Kimentanm/aptv/raw/master/m3u/iptv.m3u", + "url": "./lives/APTV.txt", "epg": "http://epg.51zmt.top:8000/api/diyp/?ch={name}&date={date}", - "logo": "https://epg.iill.top/logo/{name}.png", - "ua": "okhttp/3.15,AptvPlayer/1.4.0", - "timeout": 10 + "ua": "okhttp/3.15,AptvPlayer/1.4.0" } ], "hosts": [ diff --git a/潇洒/py/河马短剧.py b/潇洒/api/HMDJ.py similarity index 100% rename from 潇洒/py/河马短剧.py rename to 潇洒/api/HMDJ.py diff --git a/潇洒/py/金牌影视.py b/潇洒/api/JPYS.py similarity index 100% rename from 潇洒/py/金牌影视.py rename to 潇洒/api/JPYS.py diff --git a/潇洒/py/猎手影视.py b/潇洒/api/LSYS.py similarity index 100% rename from 潇洒/py/猎手影视.py rename to 潇洒/api/LSYS.py diff --git a/潇洒/py/偷乐短剧.py b/潇洒/api/TLDJ.py similarity index 100% rename from 潇洒/py/偷乐短剧.py rename to 潇洒/api/TLDJ.py diff --git a/潇洒/py/网络直播.py b/潇洒/api/WLZB.py similarity index 100% rename from 潇洒/py/网络直播.py rename to 潇洒/api/WLZB.py diff --git a/潇洒/js/cloud.min.js b/潇洒/api/cloud.min.js similarity index 100% rename from 潇洒/js/cloud.min.js rename to 潇洒/api/cloud.min.js diff --git a/潇洒/js/drpy2.min.js b/潇洒/api/drpy2.min.js similarity index 100% rename from 潇洒/js/drpy2.min.js rename to 潇洒/api/drpy2.min.js diff --git a/潇洒/js/jinja.js b/潇洒/api/jinja.js similarity index 100% rename from 潇洒/js/jinja.js rename to 潇洒/api/jinja.js diff --git a/潇洒/api/jsencrypt.js b/潇洒/api/jsencrypt.js new file mode 100644 index 0000000..8deca5f --- /dev/null +++ b/潇洒/api/jsencrypt.js @@ -0,0 +1,360 @@ +/* + * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development"). + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(function webpackUniversalModuleDefinition(root, factory) { + if (typeof exports === 'object' && typeof module === 'object') { + // CommonJS + module.exports = exports = factory(); + } else if (typeof define === 'function' && define.amd) { + // AMD + define([], factory); + } else { + // Global (browser) + globalThis.JSEncrypt = factory(); + } +})(this, () => { + return /******/ (() => { // webpackBootstrap + /******/ + var __webpack_modules__ = ({ + + /***/ + "./lib/JSEncrypt.js": + /*!**************************!*\ + !*** ./lib/JSEncrypt.js ***! + \**************************/ + /***/ + ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + + "use strict"; + eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"JSEncrypt\": () => (/* binding */ JSEncrypt)\n/* harmony export */ });\n/* harmony import */ var _lib_jsbn_base64__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lib/jsbn/base64 */ \"./lib/lib/jsbn/base64.js\");\n/* harmony import */ var _JSEncryptRSAKey__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./JSEncryptRSAKey */ \"./lib/JSEncryptRSAKey.js\");\n/* provided dependency */ var process = __webpack_require__(/*! process/browser */ \"./node_modules/process/browser.js\");\nvar _a;\n\n\nvar version = typeof process !== 'undefined'\n ? (_a = process.env) === null || _a === void 0 ? void 0 : \"3.3.2\"\n : undefined;\n/**\n *\n * @param {Object} [options = {}] - An object to customize JSEncrypt behaviour\n * possible parameters are:\n * - default_key_size {number} default: 1024 the key size in bit\n * - default_public_exponent {string} default: '010001' the hexadecimal representation of the public exponent\n * - log {boolean} default: false whether log warn/error or not\n * @constructor\n */\nvar JSEncrypt = /** @class */ (function () {\n function JSEncrypt(options) {\n if (options === void 0) { options = {}; }\n options = options || {};\n this.default_key_size = options.default_key_size\n ? parseInt(options.default_key_size, 10)\n : 1024;\n this.default_public_exponent = options.default_public_exponent || \"010001\"; // 65537 default openssl public exponent for rsa key type\n this.log = options.log || false;\n // The private and public key.\n this.key = null;\n }\n /**\n * Method to set the rsa key parameter (one method is enough to set both the public\n * and the private key, since the private key contains the public key paramenters)\n * Log a warning if logs are enabled\n * @param {Object|string} key the pem encoded string or an object (with or without header/footer)\n * @public\n */\n JSEncrypt.prototype.setKey = function (key) {\n if (this.log && this.key) {\n console.warn(\"A key was already set, overriding existing.\");\n }\n this.key = new _JSEncryptRSAKey__WEBPACK_IMPORTED_MODULE_1__.JSEncryptRSAKey(key);\n };\n /**\n * Proxy method for setKey, for api compatibility\n * @see setKey\n * @public\n */\n JSEncrypt.prototype.setPrivateKey = function (privkey) {\n // Create the key.\n this.setKey(privkey);\n };\n /**\n * Proxy method for setKey, for api compatibility\n * @see setKey\n * @public\n */\n JSEncrypt.prototype.setPublicKey = function (pubkey) {\n // Sets the public key.\n this.setKey(pubkey);\n };\n /**\n * Proxy method for RSAKey object's decrypt, decrypt the string using the private\n * components of the rsa key object. Note that if the object was not set will be created\n * on the fly (by the getKey method) using the parameters passed in the JSEncrypt constructor\n * @param {string} str base64 encoded crypted string to decrypt\n * @return {string} the decrypted string\n * @public\n */\n JSEncrypt.prototype.decrypt = function (str) {\n // Return the decrypted string.\n try {\n return this.getKey().decrypt((0,_lib_jsbn_base64__WEBPACK_IMPORTED_MODULE_0__.b64tohex)(str));\n }\n catch (ex) {\n return false;\n }\n };\n /**\n * Proxy method for RSAKey object's encrypt, encrypt the string using the public\n * components of the rsa key object. Note that if the object was not set will be created\n * on the fly (by the getKey method) using the parameters passed in the JSEncrypt constructor\n * @param {string} str the string to encrypt\n * @return {string} the encrypted string encoded in base64\n * @public\n */\n JSEncrypt.prototype.encrypt = function (str) {\n // Return the encrypted string.\n try {\n return (0,_lib_jsbn_base64__WEBPACK_IMPORTED_MODULE_0__.hex2b64)(this.getKey().encrypt(str));\n }\n catch (ex) {\n return false;\n }\n };\n /**\n * Proxy method for RSAKey object's sign.\n * @param {string} str the string to sign\n * @param {function} digestMethod hash method\n * @param {string} digestName the name of the hash algorithm\n * @return {string} the signature encoded in base64\n * @public\n */\n JSEncrypt.prototype.sign = function (str, digestMethod, digestName) {\n // return the RSA signature of 'str' in 'hex' format.\n try {\n return (0,_lib_jsbn_base64__WEBPACK_IMPORTED_MODULE_0__.hex2b64)(this.getKey().sign(str, digestMethod, digestName));\n }\n catch (ex) {\n return false;\n }\n };\n /**\n * Proxy method for RSAKey object's verify.\n * @param {string} str the string to verify\n * @param {string} signature the signature encoded in base64 to compare the string to\n * @param {function} digestMethod hash method\n * @return {boolean} whether the data and signature match\n * @public\n */\n JSEncrypt.prototype.verify = function (str, signature, digestMethod) {\n // Return the decrypted 'digest' of the signature.\n try {\n return this.getKey().verify(str, (0,_lib_jsbn_base64__WEBPACK_IMPORTED_MODULE_0__.b64tohex)(signature), digestMethod);\n }\n catch (ex) {\n return false;\n }\n };\n /**\n * Getter for the current JSEncryptRSAKey object. If it doesn't exists a new object\n * will be created and returned\n * @param {callback} [cb] the callback to be called if we want the key to be generated\n * in an async fashion\n * @returns {JSEncryptRSAKey} the JSEncryptRSAKey object\n * @public\n */\n JSEncrypt.prototype.getKey = function (cb) {\n // Only create new if it does not exist.\n if (!this.key) {\n // Get a new private key.\n this.key = new _JSEncryptRSAKey__WEBPACK_IMPORTED_MODULE_1__.JSEncryptRSAKey();\n if (cb && {}.toString.call(cb) === \"[object Function]\") {\n this.key.generateAsync(this.default_key_size, this.default_public_exponent, cb);\n return;\n }\n // Generate the key.\n this.key.generate(this.default_key_size, this.default_public_exponent);\n }\n return this.key;\n };\n /**\n * Returns the pem encoded representation of the private key\n * If the key doesn't exists a new key will be created\n * @returns {string} pem encoded representation of the private key WITH header and footer\n * @public\n */\n JSEncrypt.prototype.getPrivateKey = function () {\n // Return the private representation of this key.\n return this.getKey().getPrivateKey();\n };\n /**\n * Returns the pem encoded representation of the private key\n * If the key doesn't exists a new key will be created\n * @returns {string} pem encoded representation of the private key WITHOUT header and footer\n * @public\n */\n JSEncrypt.prototype.getPrivateKeyB64 = function () {\n // Return the private representation of this key.\n return this.getKey().getPrivateBaseKeyB64();\n };\n /**\n * Returns the pem encoded representation of the public key\n * If the key doesn't exists a new key will be created\n * @returns {string} pem encoded representation of the public key WITH header and footer\n * @public\n */\n JSEncrypt.prototype.getPublicKey = function () {\n // Return the private representation of this key.\n return this.getKey().getPublicKey();\n };\n /**\n * Returns the pem encoded representation of the public key\n * If the key doesn't exists a new key will be created\n * @returns {string} pem encoded representation of the public key WITHOUT header and footer\n * @public\n */\n JSEncrypt.prototype.getPublicKeyB64 = function () {\n // Return the private representation of this key.\n return this.getKey().getPublicBaseKeyB64();\n };\nvar b64map=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";var b64pad=\"=\";var base64DecodeChars=new Array(-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-1,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,-1,-1,-1,-1,-1);function btoa(str){var out,i,len;var c1,c2,c3;len=str.length;i=0;out=\"\";while(i>2);out+=b64map.charAt((c1&3)<<4);out+=\"==\";break}c2=str.charCodeAt(i++);if(i==len){out+=b64map.charAt(c1>>2);out+=b64map.charAt((c1&3)<<4|(c2&240)>>4);out+=b64map.charAt((c2&15)<<2);out+=\"=\";break}c3=str.charCodeAt(i++);out+=b64map.charAt(c1>>2);out+=b64map.charAt((c1&3)<<4|(c2&240)>>4);out+=b64map.charAt((c2&15)<<2|(c3&192)>>6);out+=b64map.charAt(c3&63)}return out}function atob(str){var c1,c2,c3,c4;var i,len,out;len=str.length;i=0;out=\"\";while(i>4);do{c3=str.charCodeAt(i++)&255;if(c3==61)return out;c3=base64DecodeChars[c3]}while(i>2);do{c4=str.charCodeAt(i++)&255;if(c4==61)return out;c4=base64DecodeChars[c4]}while(i>6)+b64map.charAt(c&63)}if(i+1==h.length){c=parseInt(h.substring(i,i+1),16);ret+=b64map.charAt(c<<2)}else if(i+2==h.length){c=parseInt(h.substring(i,i+2),16);ret+=b64map.charAt(c>>2)+b64map.charAt((c&3)<<4)}while((ret.length&3)>0)ret+=b64pad;return ret}function hexToBytes(hex){for(var bytes=[],c=0;c>>4).toString(16));hex.push((bytes[i]&15).toString(16))}return hex.join(\"\")}function b64tohex(str){for(var i=0,bin=atob(str.replace(/[ \\r\\n]+$/,\"\")),hex=[];i>3};JSEncrypt.prototype.decryptUnicodeLong=function(string){var k=this.getKey();var maxLength=(k.n.bitLength()+7>>3)*2;try{var hexString=b64tohex(string);var decryptedString=\"\";var rexStr=\".{1,\"+maxLength+\"}\";var rex=new RegExp(rexStr,\"g\");var subStrArray=hexString.match(rex);if(subStrArray){subStrArray.forEach(function(entry){decryptedString+=k.decrypt(entry)});return decryptedString}}catch(ex){console.log(\"加密错误:\"+ex.message);return false}};JSEncrypt.prototype.encryptUnicodeLong=function(string){var k=this.getKey();var maxLength=(k.n.bitLength()+7>>3)-11;try{var subStr=\"\",encryptedString=\"\";var subStart=0,subEnd=0;var bitLen=0,tmpPoint=0;for(var i=0,len=string.length;imaxLength){subStr=string.substring(subStart,subEnd);encryptedString+=k.encrypt(subStr);subStart=subEnd;bitLen=bitLen-tmpPoint}else{subEnd=i;tmpPoint=bitLen}}subStr=string.substring(subStart,len);encryptedString+=k.encrypt(subStr);return hex2b64(encryptedString)}catch(ex){console.log(\"解密错误:\"+ex.message);return false}}; JSEncrypt.version = version;\n return JSEncrypt;\n}());\n\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/JSEncrypt.js?"); + + /***/ + }), + + /***/ + "./lib/JSEncryptRSAKey.js": + /*!********************************!*\ + !*** ./lib/JSEncryptRSAKey.js ***! + \********************************/ + /***/ + ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + + "use strict"; + eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"JSEncryptRSAKey\": () => (/* binding */ JSEncryptRSAKey)\n/* harmony export */ });\n/* harmony import */ var _lib_jsbn_base64__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lib/jsbn/base64 */ \"./lib/lib/jsbn/base64.js\");\n/* harmony import */ var _lib_asn1js_hex__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lib/asn1js/hex */ \"./lib/lib/asn1js/hex.js\");\n/* harmony import */ var _lib_asn1js_base64__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./lib/asn1js/base64 */ \"./lib/lib/asn1js/base64.js\");\n/* harmony import */ var _lib_asn1js_asn1__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./lib/asn1js/asn1 */ \"./lib/lib/asn1js/asn1.js\");\n/* harmony import */ var _lib_jsbn_rsa__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./lib/jsbn/rsa */ \"./lib/lib/jsbn/rsa.js\");\n/* harmony import */ var _lib_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./lib/jsbn/jsbn */ \"./lib/lib/jsbn/jsbn.js\");\n/* harmony import */ var _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./lib/jsrsasign/asn1-1.0 */ \"./lib/lib/jsrsasign/asn1-1.0.js\");\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\n\n\n\n\n\n\n/**\n * Create a new JSEncryptRSAKey that extends Tom Wu's RSA key object.\n * This object is just a decorator for parsing the key parameter\n * @param {string|Object} key - The key in string format, or an object containing\n * the parameters needed to build a RSAKey object.\n * @constructor\n */\nvar JSEncryptRSAKey = /** @class */ (function (_super) {\n __extends(JSEncryptRSAKey, _super);\n function JSEncryptRSAKey(key) {\n var _this = _super.call(this) || this;\n // Call the super constructor.\n // RSAKey.call(this);\n // If a key key was provided.\n if (key) {\n // If this is a string...\n if (typeof key === \"string\") {\n _this.parseKey(key);\n }\n else if (JSEncryptRSAKey.hasPrivateKeyProperty(key) ||\n JSEncryptRSAKey.hasPublicKeyProperty(key)) {\n // Set the values for the key.\n _this.parsePropertiesFrom(key);\n }\n }\n return _this;\n }\n /**\n * Method to parse a pem encoded string containing both a public or private key.\n * The method will translate the pem encoded string in a der encoded string and\n * will parse private key and public key parameters. This method accepts public key\n * in the rsaencryption pkcs #1 format (oid: 1.2.840.113549.1.1.1).\n *\n * @todo Check how many rsa formats use the same format of pkcs #1.\n *\n * The format is defined as:\n * PublicKeyInfo ::= SEQUENCE {\n * algorithm AlgorithmIdentifier,\n * PublicKey BIT STRING\n * }\n * Where AlgorithmIdentifier is:\n * AlgorithmIdentifier ::= SEQUENCE {\n * algorithm OBJECT IDENTIFIER, the OID of the enc algorithm\n * parameters ANY DEFINED BY algorithm OPTIONAL (NULL for PKCS #1)\n * }\n * and PublicKey is a SEQUENCE encapsulated in a BIT STRING\n * RSAPublicKey ::= SEQUENCE {\n * modulus INTEGER, -- n\n * publicExponent INTEGER -- e\n * }\n * it's possible to examine the structure of the keys obtained from openssl using\n * an asn.1 dumper as the one used here to parse the components: http://lapo.it/asn1js/\n * @argument {string} pem the pem encoded string, can include the BEGIN/END header/footer\n * @private\n */\n JSEncryptRSAKey.prototype.parseKey = function (pem) {\n try {\n var modulus = 0;\n var public_exponent = 0;\n var reHex = /^\\s*(?:[0-9A-Fa-f][0-9A-Fa-f]\\s*)+$/;\n var der = reHex.test(pem) ? _lib_asn1js_hex__WEBPACK_IMPORTED_MODULE_1__.Hex.decode(pem) : _lib_asn1js_base64__WEBPACK_IMPORTED_MODULE_2__.Base64.unarmor(pem);\n var asn1 = _lib_asn1js_asn1__WEBPACK_IMPORTED_MODULE_3__.ASN1.decode(der);\n // Fixes a bug with OpenSSL 1.0+ private keys\n if (asn1.sub.length === 3) {\n asn1 = asn1.sub[2].sub[0];\n }\n if (asn1.sub.length === 9) {\n // Parse the private key.\n modulus = asn1.sub[1].getHexStringValue(); // bigint\n this.n = (0,_lib_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_5__.parseBigInt)(modulus, 16);\n public_exponent = asn1.sub[2].getHexStringValue(); // int\n this.e = parseInt(public_exponent, 16);\n var private_exponent = asn1.sub[3].getHexStringValue(); // bigint\n this.d = (0,_lib_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_5__.parseBigInt)(private_exponent, 16);\n var prime1 = asn1.sub[4].getHexStringValue(); // bigint\n this.p = (0,_lib_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_5__.parseBigInt)(prime1, 16);\n var prime2 = asn1.sub[5].getHexStringValue(); // bigint\n this.q = (0,_lib_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_5__.parseBigInt)(prime2, 16);\n var exponent1 = asn1.sub[6].getHexStringValue(); // bigint\n this.dmp1 = (0,_lib_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_5__.parseBigInt)(exponent1, 16);\n var exponent2 = asn1.sub[7].getHexStringValue(); // bigint\n this.dmq1 = (0,_lib_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_5__.parseBigInt)(exponent2, 16);\n var coefficient = asn1.sub[8].getHexStringValue(); // bigint\n this.coeff = (0,_lib_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_5__.parseBigInt)(coefficient, 16);\n }\n else if (asn1.sub.length === 2) {\n if (asn1.sub[0].sub) {\n // Parse ASN.1 SubjectPublicKeyInfo type as defined by X.509\n var bit_string = asn1.sub[1];\n var sequence = bit_string.sub[0];\n modulus = sequence.sub[0].getHexStringValue();\n this.n = (0,_lib_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_5__.parseBigInt)(modulus, 16);\n public_exponent = sequence.sub[1].getHexStringValue();\n this.e = parseInt(public_exponent, 16);\n }\n else {\n // Parse ASN.1 RSAPublicKey type as defined by PKCS #1\n modulus = asn1.sub[0].getHexStringValue();\n this.n = (0,_lib_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_5__.parseBigInt)(modulus, 16);\n public_exponent = asn1.sub[1].getHexStringValue();\n this.e = parseInt(public_exponent, 16);\n }\n }\n else {\n return false;\n }\n return true;\n }\n catch (ex) {\n return false;\n }\n };\n /**\n * Translate rsa parameters in a hex encoded string representing the rsa key.\n *\n * The translation follow the ASN.1 notation :\n * RSAPrivateKey ::= SEQUENCE {\n * version Version,\n * modulus INTEGER, -- n\n * publicExponent INTEGER, -- e\n * privateExponent INTEGER, -- d\n * prime1 INTEGER, -- p\n * prime2 INTEGER, -- q\n * exponent1 INTEGER, -- d mod (p1)\n * exponent2 INTEGER, -- d mod (q-1)\n * coefficient INTEGER, -- (inverse of q) mod p\n * }\n * @returns {string} DER Encoded String representing the rsa private key\n * @private\n */\n JSEncryptRSAKey.prototype.getPrivateBaseKey = function () {\n var options = {\n array: [\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ int: 0 }),\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ bigint: this.n }),\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ int: this.e }),\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ bigint: this.d }),\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ bigint: this.p }),\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ bigint: this.q }),\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ bigint: this.dmp1 }),\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ bigint: this.dmq1 }),\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ bigint: this.coeff }),\n ],\n };\n var seq = new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERSequence(options);\n return seq.getEncodedHex();\n };\n /**\n * base64 (pem) encoded version of the DER encoded representation\n * @returns {string} pem encoded representation without header and footer\n * @public\n */\n JSEncryptRSAKey.prototype.getPrivateBaseKeyB64 = function () {\n return (0,_lib_jsbn_base64__WEBPACK_IMPORTED_MODULE_0__.hex2b64)(this.getPrivateBaseKey());\n };\n /**\n * Translate rsa parameters in a hex encoded string representing the rsa public key.\n * The representation follow the ASN.1 notation :\n * PublicKeyInfo ::= SEQUENCE {\n * algorithm AlgorithmIdentifier,\n * PublicKey BIT STRING\n * }\n * Where AlgorithmIdentifier is:\n * AlgorithmIdentifier ::= SEQUENCE {\n * algorithm OBJECT IDENTIFIER, the OID of the enc algorithm\n * parameters ANY DEFINED BY algorithm OPTIONAL (NULL for PKCS #1)\n * }\n * and PublicKey is a SEQUENCE encapsulated in a BIT STRING\n * RSAPublicKey ::= SEQUENCE {\n * modulus INTEGER, -- n\n * publicExponent INTEGER -- e\n * }\n * @returns {string} DER Encoded String representing the rsa public key\n * @private\n */\n JSEncryptRSAKey.prototype.getPublicBaseKey = function () {\n var first_sequence = new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERSequence({\n array: [\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERObjectIdentifier({ oid: \"1.2.840.113549.1.1.1\" }),\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERNull(),\n ],\n });\n var second_sequence = new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERSequence({\n array: [\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ bigint: this.n }),\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ int: this.e }),\n ],\n });\n var bit_string = new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERBitString({\n hex: \"00\" + second_sequence.getEncodedHex(),\n });\n var seq = new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERSequence({\n array: [first_sequence, bit_string],\n });\n return seq.getEncodedHex();\n };\n /**\n * base64 (pem) encoded version of the DER encoded representation\n * @returns {string} pem encoded representation without header and footer\n * @public\n */\n JSEncryptRSAKey.prototype.getPublicBaseKeyB64 = function () {\n return (0,_lib_jsbn_base64__WEBPACK_IMPORTED_MODULE_0__.hex2b64)(this.getPublicBaseKey());\n };\n /**\n * wrap the string in block of width chars. The default value for rsa keys is 64\n * characters.\n * @param {string} str the pem encoded string without header and footer\n * @param {Number} [width=64] - the length the string has to be wrapped at\n * @returns {string}\n * @private\n */\n JSEncryptRSAKey.wordwrap = function (str, width) {\n width = width || 64;\n if (!str) {\n return str;\n }\n var regex = \"(.{1,\" + width + \"})( +|$\\n?)|(.{1,\" + width + \"})\";\n return str.match(RegExp(regex, \"g\")).join(\"\\n\");\n };\n /**\n * Retrieve the pem encoded private key\n * @returns {string} the pem encoded private key with header/footer\n * @public\n */\n JSEncryptRSAKey.prototype.getPrivateKey = function () {\n var key = \"-----BEGIN RSA PRIVATE KEY-----\\n\";\n key += JSEncryptRSAKey.wordwrap(this.getPrivateBaseKeyB64()) + \"\\n\";\n key += \"-----END RSA PRIVATE KEY-----\";\n return key;\n };\n /**\n * Retrieve the pem encoded public key\n * @returns {string} the pem encoded public key with header/footer\n * @public\n */\n JSEncryptRSAKey.prototype.getPublicKey = function () {\n var key = \"-----BEGIN PUBLIC KEY-----\\n\";\n key += JSEncryptRSAKey.wordwrap(this.getPublicBaseKeyB64()) + \"\\n\";\n key += \"-----END PUBLIC KEY-----\";\n return key;\n };\n /**\n * Check if the object contains the necessary parameters to populate the rsa modulus\n * and public exponent parameters.\n * @param {Object} [obj={}] - An object that may contain the two public key\n * parameters\n * @returns {boolean} true if the object contains both the modulus and the public exponent\n * properties (n and e)\n * @todo check for types of n and e. N should be a parseable bigInt object, E should\n * be a parseable integer number\n * @private\n */\n JSEncryptRSAKey.hasPublicKeyProperty = function (obj) {\n obj = obj || {};\n return obj.hasOwnProperty(\"n\") && obj.hasOwnProperty(\"e\");\n };\n /**\n * Check if the object contains ALL the parameters of an RSA key.\n * @param {Object} [obj={}] - An object that may contain nine rsa key\n * parameters\n * @returns {boolean} true if the object contains all the parameters needed\n * @todo check for types of the parameters all the parameters but the public exponent\n * should be parseable bigint objects, the public exponent should be a parseable integer number\n * @private\n */\n JSEncryptRSAKey.hasPrivateKeyProperty = function (obj) {\n obj = obj || {};\n return (obj.hasOwnProperty(\"n\") &&\n obj.hasOwnProperty(\"e\") &&\n obj.hasOwnProperty(\"d\") &&\n obj.hasOwnProperty(\"p\") &&\n obj.hasOwnProperty(\"q\") &&\n obj.hasOwnProperty(\"dmp1\") &&\n obj.hasOwnProperty(\"dmq1\") &&\n obj.hasOwnProperty(\"coeff\"));\n };\n /**\n * Parse the properties of obj in the current rsa object. Obj should AT LEAST\n * include the modulus and public exponent (n, e) parameters.\n * @param {Object} obj - the object containing rsa parameters\n * @private\n */\n JSEncryptRSAKey.prototype.parsePropertiesFrom = function (obj) {\n this.n = obj.n;\n this.e = obj.e;\n if (obj.hasOwnProperty(\"d\")) {\n this.d = obj.d;\n this.p = obj.p;\n this.q = obj.q;\n this.dmp1 = obj.dmp1;\n this.dmq1 = obj.dmq1;\n this.coeff = obj.coeff;\n }\n };\n return JSEncryptRSAKey;\n}(_lib_jsbn_rsa__WEBPACK_IMPORTED_MODULE_4__.RSAKey));\n\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/JSEncryptRSAKey.js?"); + + /***/ + }), + + /***/ + "./lib/index.js": + /*!**********************!*\ + !*** ./lib/index.js ***! + \**********************/ + /***/ + ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + + "use strict"; + eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"JSEncrypt\": () => (/* reexport safe */ _JSEncrypt__WEBPACK_IMPORTED_MODULE_0__.JSEncrypt),\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _JSEncrypt__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./JSEncrypt */ \"./lib/JSEncrypt.js\");\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_JSEncrypt__WEBPACK_IMPORTED_MODULE_0__.JSEncrypt);\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/index.js?"); + + /***/ + }), + + /***/ + "./lib/lib/asn1js/asn1.js": + /*!********************************!*\ + !*** ./lib/lib/asn1js/asn1.js ***! + \********************************/ + /***/ + ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + + "use strict"; + eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"ASN1\": () => (/* binding */ ASN1),\n/* harmony export */ \"ASN1Tag\": () => (/* binding */ ASN1Tag),\n/* harmony export */ \"Stream\": () => (/* binding */ Stream)\n/* harmony export */ });\n/* harmony import */ var _int10__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./int10 */ \"./lib/lib/asn1js/int10.js\");\n// ASN.1 JavaScript decoder\n// Copyright (c) 2008-2014 Lapo Luchini \n// Permission to use, copy, modify, and/or distribute this software for any\n// purpose with or without fee is hereby granted, provided that the above\n// copyright notice and this permission notice appear in all copies.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n/*jshint browser: true, strict: true, immed: true, latedef: true, undef: true, regexdash: false */\n/*global oids */\n\nvar ellipsis = \"\\u2026\";\nvar reTimeS = /^(\\d\\d)(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])([01]\\d|2[0-3])(?:([0-5]\\d)(?:([0-5]\\d)(?:[.,](\\d{1,3}))?)?)?(Z|[-+](?:[0]\\d|1[0-2])([0-5]\\d)?)?$/;\nvar reTimeL = /^(\\d\\d\\d\\d)(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])([01]\\d|2[0-3])(?:([0-5]\\d)(?:([0-5]\\d)(?:[.,](\\d{1,3}))?)?)?(Z|[-+](?:[0]\\d|1[0-2])([0-5]\\d)?)?$/;\nfunction stringCut(str, len) {\n if (str.length > len) {\n str = str.substring(0, len) + ellipsis;\n }\n return str;\n}\nvar Stream = /** @class */ (function () {\n function Stream(enc, pos) {\n this.hexDigits = \"0123456789ABCDEF\";\n if (enc instanceof Stream) {\n this.enc = enc.enc;\n this.pos = enc.pos;\n }\n else {\n // enc should be an array or a binary string\n this.enc = enc;\n this.pos = pos;\n }\n }\n Stream.prototype.get = function (pos) {\n if (pos === undefined) {\n pos = this.pos++;\n }\n if (pos >= this.enc.length) {\n throw new Error(\"Requesting byte offset \".concat(pos, \" on a stream of length \").concat(this.enc.length));\n }\n return (\"string\" === typeof this.enc) ? this.enc.charCodeAt(pos) : this.enc[pos];\n };\n Stream.prototype.hexByte = function (b) {\n return this.hexDigits.charAt((b >> 4) & 0xF) + this.hexDigits.charAt(b & 0xF);\n };\n Stream.prototype.hexDump = function (start, end, raw) {\n var s = \"\";\n for (var i = start; i < end; ++i) {\n s += this.hexByte(this.get(i));\n if (raw !== true) {\n switch (i & 0xF) {\n case 0x7:\n s += \" \";\n break;\n case 0xF:\n s += \"\\n\";\n break;\n default:\n s += \" \";\n }\n }\n }\n return s;\n };\n Stream.prototype.isASCII = function (start, end) {\n for (var i = start; i < end; ++i) {\n var c = this.get(i);\n if (c < 32 || c > 176) {\n return false;\n }\n }\n return true;\n };\n Stream.prototype.parseStringISO = function (start, end) {\n var s = \"\";\n for (var i = start; i < end; ++i) {\n s += String.fromCharCode(this.get(i));\n }\n return s;\n };\n Stream.prototype.parseStringUTF = function (start, end) {\n var s = \"\";\n for (var i = start; i < end;) {\n var c = this.get(i++);\n if (c < 128) {\n s += String.fromCharCode(c);\n }\n else if ((c > 191) && (c < 224)) {\n s += String.fromCharCode(((c & 0x1F) << 6) | (this.get(i++) & 0x3F));\n }\n else {\n s += String.fromCharCode(((c & 0x0F) << 12) | ((this.get(i++) & 0x3F) << 6) | (this.get(i++) & 0x3F));\n }\n }\n return s;\n };\n Stream.prototype.parseStringBMP = function (start, end) {\n var str = \"\";\n var hi;\n var lo;\n for (var i = start; i < end;) {\n hi = this.get(i++);\n lo = this.get(i++);\n str += String.fromCharCode((hi << 8) | lo);\n }\n return str;\n };\n Stream.prototype.parseTime = function (start, end, shortYear) {\n var s = this.parseStringISO(start, end);\n var m = (shortYear ? reTimeS : reTimeL).exec(s);\n if (!m) {\n return \"Unrecognized time: \" + s;\n }\n if (shortYear) {\n // to avoid querying the timer, use the fixed range [1970, 2069]\n // it will conform with ITU X.400 [-10, +40] sliding window until 2030\n m[1] = +m[1];\n m[1] += (+m[1] < 70) ? 2000 : 1900;\n }\n s = m[1] + \"-\" + m[2] + \"-\" + m[3] + \" \" + m[4];\n if (m[5]) {\n s += \":\" + m[5];\n if (m[6]) {\n s += \":\" + m[6];\n if (m[7]) {\n s += \".\" + m[7];\n }\n }\n }\n if (m[8]) {\n s += \" UTC\";\n if (m[8] != \"Z\") {\n s += m[8];\n if (m[9]) {\n s += \":\" + m[9];\n }\n }\n }\n return s;\n };\n Stream.prototype.parseInteger = function (start, end) {\n var v = this.get(start);\n var neg = (v > 127);\n var pad = neg ? 255 : 0;\n var len;\n var s = \"\";\n // skip unuseful bits (not allowed in DER)\n while (v == pad && ++start < end) {\n v = this.get(start);\n }\n len = end - start;\n if (len === 0) {\n return neg ? -1 : 0;\n }\n // show bit length of huge integers\n if (len > 4) {\n s = v;\n len <<= 3;\n while (((+s ^ pad) & 0x80) == 0) {\n s = +s << 1;\n --len;\n }\n s = \"(\" + len + \" bit)\\n\";\n }\n // decode the integer\n if (neg) {\n v = v - 256;\n }\n var n = new _int10__WEBPACK_IMPORTED_MODULE_0__.Int10(v);\n for (var i = start + 1; i < end; ++i) {\n n.mulAdd(256, this.get(i));\n }\n return s + n.toString();\n };\n Stream.prototype.parseBitString = function (start, end, maxLength) {\n var unusedBit = this.get(start);\n var lenBit = ((end - start - 1) << 3) - unusedBit;\n var intro = \"(\" + lenBit + \" bit)\\n\";\n var s = \"\";\n for (var i = start + 1; i < end; ++i) {\n var b = this.get(i);\n var skip = (i == end - 1) ? unusedBit : 0;\n for (var j = 7; j >= skip; --j) {\n s += (b >> j) & 1 ? \"1\" : \"0\";\n }\n if (s.length > maxLength) {\n return intro + stringCut(s, maxLength);\n }\n }\n return intro + s;\n };\n Stream.prototype.parseOctetString = function (start, end, maxLength) {\n if (this.isASCII(start, end)) {\n return stringCut(this.parseStringISO(start, end), maxLength);\n }\n var len = end - start;\n var s = \"(\" + len + \" byte)\\n\";\n maxLength /= 2; // we work in bytes\n if (len > maxLength) {\n end = start + maxLength;\n }\n for (var i = start; i < end; ++i) {\n s += this.hexByte(this.get(i));\n }\n if (len > maxLength) {\n s += ellipsis;\n }\n return s;\n };\n Stream.prototype.parseOID = function (start, end, maxLength) {\n var s = \"\";\n var n = new _int10__WEBPACK_IMPORTED_MODULE_0__.Int10();\n var bits = 0;\n for (var i = start; i < end; ++i) {\n var v = this.get(i);\n n.mulAdd(128, v & 0x7F);\n bits += 7;\n if (!(v & 0x80)) { // finished\n if (s === \"\") {\n n = n.simplify();\n if (n instanceof _int10__WEBPACK_IMPORTED_MODULE_0__.Int10) {\n n.sub(80);\n s = \"2.\" + n.toString();\n }\n else {\n var m = n < 80 ? n < 40 ? 0 : 1 : 2;\n s = m + \".\" + (n - m * 40);\n }\n }\n else {\n s += \".\" + n.toString();\n }\n if (s.length > maxLength) {\n return stringCut(s, maxLength);\n }\n n = new _int10__WEBPACK_IMPORTED_MODULE_0__.Int10();\n bits = 0;\n }\n }\n if (bits > 0) {\n s += \".incomplete\";\n }\n return s;\n };\n return Stream;\n}());\n\nvar ASN1 = /** @class */ (function () {\n function ASN1(stream, header, length, tag, sub) {\n if (!(tag instanceof ASN1Tag)) {\n throw new Error(\"Invalid tag value.\");\n }\n this.stream = stream;\n this.header = header;\n this.length = length;\n this.tag = tag;\n this.sub = sub;\n }\n ASN1.prototype.typeName = function () {\n switch (this.tag.tagClass) {\n case 0: // universal\n switch (this.tag.tagNumber) {\n case 0x00:\n return \"EOC\";\n case 0x01:\n return \"BOOLEAN\";\n case 0x02:\n return \"INTEGER\";\n case 0x03:\n return \"BIT_STRING\";\n case 0x04:\n return \"OCTET_STRING\";\n case 0x05:\n return \"NULL\";\n case 0x06:\n return \"OBJECT_IDENTIFIER\";\n case 0x07:\n return \"ObjectDescriptor\";\n case 0x08:\n return \"EXTERNAL\";\n case 0x09:\n return \"REAL\";\n case 0x0A:\n return \"ENUMERATED\";\n case 0x0B:\n return \"EMBEDDED_PDV\";\n case 0x0C:\n return \"UTF8String\";\n case 0x10:\n return \"SEQUENCE\";\n case 0x11:\n return \"SET\";\n case 0x12:\n return \"NumericString\";\n case 0x13:\n return \"PrintableString\"; // ASCII subset\n case 0x14:\n return \"TeletexString\"; // aka T61String\n case 0x15:\n return \"VideotexString\";\n case 0x16:\n return \"IA5String\"; // ASCII\n case 0x17:\n return \"UTCTime\";\n case 0x18:\n return \"GeneralizedTime\";\n case 0x19:\n return \"GraphicString\";\n case 0x1A:\n return \"VisibleString\"; // ASCII subset\n case 0x1B:\n return \"GeneralString\";\n case 0x1C:\n return \"UniversalString\";\n case 0x1E:\n return \"BMPString\";\n }\n return \"Universal_\" + this.tag.tagNumber.toString();\n case 1:\n return \"Application_\" + this.tag.tagNumber.toString();\n case 2:\n return \"[\" + this.tag.tagNumber.toString() + \"]\"; // Context\n case 3:\n return \"Private_\" + this.tag.tagNumber.toString();\n }\n };\n ASN1.prototype.content = function (maxLength) {\n if (this.tag === undefined) {\n return null;\n }\n if (maxLength === undefined) {\n maxLength = Infinity;\n }\n var content = this.posContent();\n var len = Math.abs(this.length);\n if (!this.tag.isUniversal()) {\n if (this.sub !== null) {\n return \"(\" + this.sub.length + \" elem)\";\n }\n return this.stream.parseOctetString(content, content + len, maxLength);\n }\n switch (this.tag.tagNumber) {\n case 0x01: // BOOLEAN\n return (this.stream.get(content) === 0) ? \"false\" : \"true\";\n case 0x02: // INTEGER\n return this.stream.parseInteger(content, content + len);\n case 0x03: // BIT_STRING\n return this.sub ? \"(\" + this.sub.length + \" elem)\" :\n this.stream.parseBitString(content, content + len, maxLength);\n case 0x04: // OCTET_STRING\n return this.sub ? \"(\" + this.sub.length + \" elem)\" :\n this.stream.parseOctetString(content, content + len, maxLength);\n // case 0x05: // NULL\n case 0x06: // OBJECT_IDENTIFIER\n return this.stream.parseOID(content, content + len, maxLength);\n // case 0x07: // ObjectDescriptor\n // case 0x08: // EXTERNAL\n // case 0x09: // REAL\n // case 0x0A: // ENUMERATED\n // case 0x0B: // EMBEDDED_PDV\n case 0x10: // SEQUENCE\n case 0x11: // SET\n if (this.sub !== null) {\n return \"(\" + this.sub.length + \" elem)\";\n }\n else {\n return \"(no elem)\";\n }\n case 0x0C: // UTF8String\n return stringCut(this.stream.parseStringUTF(content, content + len), maxLength);\n case 0x12: // NumericString\n case 0x13: // PrintableString\n case 0x14: // TeletexString\n case 0x15: // VideotexString\n case 0x16: // IA5String\n // case 0x19: // GraphicString\n case 0x1A: // VisibleString\n // case 0x1B: // GeneralString\n // case 0x1C: // UniversalString\n return stringCut(this.stream.parseStringISO(content, content + len), maxLength);\n case 0x1E: // BMPString\n return stringCut(this.stream.parseStringBMP(content, content + len), maxLength);\n case 0x17: // UTCTime\n case 0x18: // GeneralizedTime\n return this.stream.parseTime(content, content + len, (this.tag.tagNumber == 0x17));\n }\n return null;\n };\n ASN1.prototype.toString = function () {\n return this.typeName() + \"@\" + this.stream.pos + \"[header:\" + this.header + \",length:\" + this.length + \",sub:\" + ((this.sub === null) ? \"null\" : this.sub.length) + \"]\";\n };\n ASN1.prototype.toPrettyString = function (indent) {\n if (indent === undefined) {\n indent = \"\";\n }\n var s = indent + this.typeName() + \" @\" + this.stream.pos;\n if (this.length >= 0) {\n s += \"+\";\n }\n s += this.length;\n if (this.tag.tagConstructed) {\n s += \" (constructed)\";\n }\n else if ((this.tag.isUniversal() && ((this.tag.tagNumber == 0x03) || (this.tag.tagNumber == 0x04))) && (this.sub !== null)) {\n s += \" (encapsulates)\";\n }\n s += \"\\n\";\n if (this.sub !== null) {\n indent += \" \";\n for (var i = 0, max = this.sub.length; i < max; ++i) {\n s += this.sub[i].toPrettyString(indent);\n }\n }\n return s;\n };\n ASN1.prototype.posStart = function () {\n return this.stream.pos;\n };\n ASN1.prototype.posContent = function () {\n return this.stream.pos + this.header;\n };\n ASN1.prototype.posEnd = function () {\n return this.stream.pos + this.header + Math.abs(this.length);\n };\n ASN1.prototype.toHexString = function () {\n return this.stream.hexDump(this.posStart(), this.posEnd(), true);\n };\n ASN1.decodeLength = function (stream) {\n var buf = stream.get();\n var len = buf & 0x7F;\n if (len == buf) {\n return len;\n }\n // no reason to use Int10, as it would be a huge buffer anyways\n if (len > 6) {\n throw new Error(\"Length over 48 bits not supported at position \" + (stream.pos - 1));\n }\n if (len === 0) {\n return null;\n } // undefined\n buf = 0;\n for (var i = 0; i < len; ++i) {\n buf = (buf * 256) + stream.get();\n }\n return buf;\n };\n /**\n * Retrieve the hexadecimal value (as a string) of the current ASN.1 element\n * @returns {string}\n * @public\n */\n ASN1.prototype.getHexStringValue = function () {\n var hexString = this.toHexString();\n var offset = this.header * 2;\n var length = this.length * 2;\n return hexString.substr(offset, length);\n };\n ASN1.decode = function (str) {\n var stream;\n if (!(str instanceof Stream)) {\n stream = new Stream(str, 0);\n }\n else {\n stream = str;\n }\n var streamStart = new Stream(stream);\n var tag = new ASN1Tag(stream);\n var len = ASN1.decodeLength(stream);\n var start = stream.pos;\n var header = start - streamStart.pos;\n var sub = null;\n var getSub = function () {\n var ret = [];\n if (len !== null) {\n // definite length\n var end = start + len;\n while (stream.pos < end) {\n ret[ret.length] = ASN1.decode(stream);\n }\n if (stream.pos != end) {\n throw new Error(\"Content size is not correct for container starting at offset \" + start);\n }\n }\n else {\n // undefined length\n try {\n for (;;) {\n var s = ASN1.decode(stream);\n if (s.tag.isEOC()) {\n break;\n }\n ret[ret.length] = s;\n }\n len = start - stream.pos; // undefined lengths are represented as negative values\n }\n catch (e) {\n throw new Error(\"Exception while decoding undefined length content: \" + e);\n }\n }\n return ret;\n };\n if (tag.tagConstructed) {\n // must have valid content\n sub = getSub();\n }\n else if (tag.isUniversal() && ((tag.tagNumber == 0x03) || (tag.tagNumber == 0x04))) {\n // sometimes BitString and OctetString are used to encapsulate ASN.1\n try {\n if (tag.tagNumber == 0x03) {\n if (stream.get() != 0) {\n throw new Error(\"BIT STRINGs with unused bits cannot encapsulate.\");\n }\n }\n sub = getSub();\n for (var i = 0; i < sub.length; ++i) {\n if (sub[i].tag.isEOC()) {\n throw new Error(\"EOC is not supposed to be actual content.\");\n }\n }\n }\n catch (e) {\n // but silently ignore when they don't\n sub = null;\n }\n }\n if (sub === null) {\n if (len === null) {\n throw new Error(\"We can't skip over an invalid tag with undefined length at offset \" + start);\n }\n stream.pos = start + Math.abs(len);\n }\n return new ASN1(streamStart, header, len, tag, sub);\n };\n return ASN1;\n}());\n\nvar ASN1Tag = /** @class */ (function () {\n function ASN1Tag(stream) {\n var buf = stream.get();\n this.tagClass = buf >> 6;\n this.tagConstructed = ((buf & 0x20) !== 0);\n this.tagNumber = buf & 0x1F;\n if (this.tagNumber == 0x1F) { // long tag\n var n = new _int10__WEBPACK_IMPORTED_MODULE_0__.Int10();\n do {\n buf = stream.get();\n n.mulAdd(128, buf & 0x7F);\n } while (buf & 0x80);\n this.tagNumber = n.simplify();\n }\n }\n ASN1Tag.prototype.isUniversal = function () {\n return this.tagClass === 0x00;\n };\n ASN1Tag.prototype.isEOC = function () {\n return this.tagClass === 0x00 && this.tagNumber === 0x00;\n };\n return ASN1Tag;\n}());\n\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/asn1js/asn1.js?"); + + /***/ + }), + + /***/ + "./lib/lib/asn1js/base64.js": + /*!**********************************!*\ + !*** ./lib/lib/asn1js/base64.js ***! + \**********************************/ + /***/ + ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + + "use strict"; + eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Base64\": () => (/* binding */ Base64)\n/* harmony export */ });\n// Base64 JavaScript decoder\n// Copyright (c) 2008-2013 Lapo Luchini \n// Permission to use, copy, modify, and/or distribute this software for any\n// purpose with or without fee is hereby granted, provided that the above\n// copyright notice and this permission notice appear in all copies.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n/*jshint browser: true, strict: true, immed: true, latedef: true, undef: true, regexdash: false */\nvar decoder;\nvar Base64 = {\n decode: function (a) {\n var i;\n if (decoder === undefined) {\n var b64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n var ignore = \"= \\f\\n\\r\\t\\u00A0\\u2028\\u2029\";\n decoder = Object.create(null);\n for (i = 0; i < 64; ++i) {\n decoder[b64.charAt(i)] = i;\n }\n decoder['-'] = 62; //+\n decoder['_'] = 63; //-\n for (i = 0; i < ignore.length; ++i) {\n decoder[ignore.charAt(i)] = -1;\n }\n }\n var out = [];\n var bits = 0;\n var char_count = 0;\n for (i = 0; i < a.length; ++i) {\n var c = a.charAt(i);\n if (c == \"=\") {\n break;\n }\n c = decoder[c];\n if (c == -1) {\n continue;\n }\n if (c === undefined) {\n throw new Error(\"Illegal character at offset \" + i);\n }\n bits |= c;\n if (++char_count >= 4) {\n out[out.length] = (bits >> 16);\n out[out.length] = (bits >> 8) & 0xFF;\n out[out.length] = bits & 0xFF;\n bits = 0;\n char_count = 0;\n }\n else {\n bits <<= 6;\n }\n }\n switch (char_count) {\n case 1:\n throw new Error(\"Base64 encoding incomplete: at least 2 bits missing\");\n case 2:\n out[out.length] = (bits >> 10);\n break;\n case 3:\n out[out.length] = (bits >> 16);\n out[out.length] = (bits >> 8) & 0xFF;\n break;\n }\n return out;\n },\n re: /-----BEGIN [^-]+-----([A-Za-z0-9+\\/=\\s]+)-----END [^-]+-----|begin-base64[^\\n]+\\n([A-Za-z0-9+\\/=\\s]+)====/,\n unarmor: function (a) {\n var m = Base64.re.exec(a);\n if (m) {\n if (m[1]) {\n a = m[1];\n }\n else if (m[2]) {\n a = m[2];\n }\n else {\n throw new Error(\"RegExp out of sync\");\n }\n }\n return Base64.decode(a);\n }\n};\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/asn1js/base64.js?"); + + /***/ + }), + + /***/ + "./lib/lib/asn1js/hex.js": + /*!*******************************!*\ + !*** ./lib/lib/asn1js/hex.js ***! + \*******************************/ + /***/ + ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + + "use strict"; + eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Hex\": () => (/* binding */ Hex)\n/* harmony export */ });\n// Hex JavaScript decoder\n// Copyright (c) 2008-2013 Lapo Luchini \n// Permission to use, copy, modify, and/or distribute this software for any\n// purpose with or without fee is hereby granted, provided that the above\n// copyright notice and this permission notice appear in all copies.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n/*jshint browser: true, strict: true, immed: true, latedef: true, undef: true, regexdash: false */\nvar decoder;\nvar Hex = {\n decode: function (a) {\n var i;\n if (decoder === undefined) {\n var hex = \"0123456789ABCDEF\";\n var ignore = \" \\f\\n\\r\\t\\u00A0\\u2028\\u2029\";\n decoder = {};\n for (i = 0; i < 16; ++i) {\n decoder[hex.charAt(i)] = i;\n }\n hex = hex.toLowerCase();\n for (i = 10; i < 16; ++i) {\n decoder[hex.charAt(i)] = i;\n }\n for (i = 0; i < ignore.length; ++i) {\n decoder[ignore.charAt(i)] = -1;\n }\n }\n var out = [];\n var bits = 0;\n var char_count = 0;\n for (i = 0; i < a.length; ++i) {\n var c = a.charAt(i);\n if (c == \"=\") {\n break;\n }\n c = decoder[c];\n if (c == -1) {\n continue;\n }\n if (c === undefined) {\n throw new Error(\"Illegal character at offset \" + i);\n }\n bits |= c;\n if (++char_count >= 2) {\n out[out.length] = bits;\n bits = 0;\n char_count = 0;\n }\n else {\n bits <<= 4;\n }\n }\n if (char_count) {\n throw new Error(\"Hex encoding incomplete: 4 bits missing\");\n }\n return out;\n }\n};\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/asn1js/hex.js?"); + + /***/ + }), + + /***/ + "./lib/lib/asn1js/int10.js": + /*!*********************************!*\ + !*** ./lib/lib/asn1js/int10.js ***! + \*********************************/ + /***/ + ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + + "use strict"; + eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Int10\": () => (/* binding */ Int10)\n/* harmony export */ });\n// Big integer base-10 printing library\n// Copyright (c) 2014 Lapo Luchini \n// Permission to use, copy, modify, and/or distribute this software for any\n// purpose with or without fee is hereby granted, provided that the above\n// copyright notice and this permission notice appear in all copies.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n/*jshint browser: true, strict: true, immed: true, latedef: true, undef: true, regexdash: false */\nvar max = 10000000000000; // biggest integer that can still fit 2^53 when multiplied by 256\nvar Int10 = /** @class */ (function () {\n function Int10(value) {\n this.buf = [+value || 0];\n }\n Int10.prototype.mulAdd = function (m, c) {\n // assert(m <= 256)\n var b = this.buf;\n var l = b.length;\n var i;\n var t;\n for (i = 0; i < l; ++i) {\n t = b[i] * m + c;\n if (t < max) {\n c = 0;\n }\n else {\n c = 0 | (t / max);\n t -= c * max;\n }\n b[i] = t;\n }\n if (c > 0) {\n b[i] = c;\n }\n };\n Int10.prototype.sub = function (c) {\n // assert(m <= 256)\n var b = this.buf;\n var l = b.length;\n var i;\n var t;\n for (i = 0; i < l; ++i) {\n t = b[i] - c;\n if (t < 0) {\n t += max;\n c = 1;\n }\n else {\n c = 0;\n }\n b[i] = t;\n }\n while (b[b.length - 1] === 0) {\n b.pop();\n }\n };\n Int10.prototype.toString = function (base) {\n if ((base || 10) != 10) {\n throw new Error(\"only base 10 is supported\");\n }\n var b = this.buf;\n var s = b[b.length - 1].toString();\n for (var i = b.length - 2; i >= 0; --i) {\n s += (max + b[i]).toString().substring(1);\n }\n return s;\n };\n Int10.prototype.valueOf = function () {\n var b = this.buf;\n var v = 0;\n for (var i = b.length - 1; i >= 0; --i) {\n v = v * max + b[i];\n }\n return v;\n };\n Int10.prototype.simplify = function () {\n var b = this.buf;\n return (b.length == 1) ? b[0] : this;\n };\n return Int10;\n}());\n\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/asn1js/int10.js?"); + + /***/ + }), + + /***/ + "./lib/lib/jsbn/base64.js": + /*!********************************!*\ + !*** ./lib/lib/jsbn/base64.js ***! + \********************************/ + /***/ + ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + + "use strict"; + eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"b64toBA\": () => (/* binding */ b64toBA),\n/* harmony export */ \"b64tohex\": () => (/* binding */ b64tohex),\n/* harmony export */ \"hex2b64\": () => (/* binding */ hex2b64)\n/* harmony export */ });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./lib/lib/jsbn/util.js\");\n\nvar b64map = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nvar b64pad = \"=\";\nfunction hex2b64(h) {\n var i;\n var c;\n var ret = \"\";\n for (i = 0; i + 3 <= h.length; i += 3) {\n c = parseInt(h.substring(i, i + 3), 16);\n ret += b64map.charAt(c >> 6) + b64map.charAt(c & 63);\n }\n if (i + 1 == h.length) {\n c = parseInt(h.substring(i, i + 1), 16);\n ret += b64map.charAt(c << 2);\n }\n else if (i + 2 == h.length) {\n c = parseInt(h.substring(i, i + 2), 16);\n ret += b64map.charAt(c >> 2) + b64map.charAt((c & 3) << 4);\n }\n while ((ret.length & 3) > 0) {\n ret += b64pad;\n }\n return ret;\n}\n// convert a base64 string to hex\nfunction b64tohex(s) {\n var ret = \"\";\n var i;\n var k = 0; // b64 state, 0-3\n var slop = 0;\n for (i = 0; i < s.length; ++i) {\n if (s.charAt(i) == b64pad) {\n break;\n }\n var v = b64map.indexOf(s.charAt(i));\n if (v < 0) {\n continue;\n }\n if (k == 0) {\n ret += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)(v >> 2);\n slop = v & 3;\n k = 1;\n }\n else if (k == 1) {\n ret += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)((slop << 2) | (v >> 4));\n slop = v & 0xf;\n k = 2;\n }\n else if (k == 2) {\n ret += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)(slop);\n ret += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)(v >> 2);\n slop = v & 3;\n k = 3;\n }\n else {\n ret += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)((slop << 2) | (v >> 4));\n ret += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)(v & 0xf);\n k = 0;\n }\n }\n if (k == 1) {\n ret += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)(slop << 2);\n }\n return ret;\n}\n// convert a base64 string to a byte/number array\nfunction b64toBA(s) {\n // piggyback on b64tohex for now, optimize later\n var h = b64tohex(s);\n var i;\n var a = [];\n for (i = 0; 2 * i < h.length; ++i) {\n a[i] = parseInt(h.substring(2 * i, 2 * i + 2), 16);\n }\n return a;\n}\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/jsbn/base64.js?"); + + /***/ + }), + + /***/ + "./lib/lib/jsbn/jsbn.js": + /*!******************************!*\ + !*** ./lib/lib/jsbn/jsbn.js ***! + \******************************/ + /***/ + ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + + "use strict"; + eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"BigInteger\": () => (/* binding */ BigInteger),\n/* harmony export */ \"intAt\": () => (/* binding */ intAt),\n/* harmony export */ \"nbi\": () => (/* binding */ nbi),\n/* harmony export */ \"nbits\": () => (/* binding */ nbits),\n/* harmony export */ \"nbv\": () => (/* binding */ nbv),\n/* harmony export */ \"parseBigInt\": () => (/* binding */ parseBigInt)\n/* harmony export */ });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./lib/lib/jsbn/util.js\");\n// Copyright (c) 2005 Tom Wu\n// All Rights Reserved.\n// See \"LICENSE\" for details.\n// Basic JavaScript BN library - subset useful for RSA encryption.\n\n// Bits per digit\nvar dbits;\n// JavaScript engine analysis\nvar canary = 0xdeadbeefcafe;\nvar j_lm = ((canary & 0xffffff) == 0xefcafe);\n//#region\nvar lowprimes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997];\nvar lplim = (1 << 26) / lowprimes[lowprimes.length - 1];\n//#endregion\n// (public) Constructor\nvar BigInteger = /** @class */ (function () {\n function BigInteger(a, b, c) {\n if (a != null) {\n if (\"number\" == typeof a) {\n this.fromNumber(a, b, c);\n }\n else if (b == null && \"string\" != typeof a) {\n this.fromString(a, 256);\n }\n else {\n this.fromString(a, b);\n }\n }\n }\n //#region PUBLIC\n // BigInteger.prototype.toString = bnToString;\n // (public) return string representation in given radix\n BigInteger.prototype.toString = function (b) {\n if (this.s < 0) {\n return \"-\" + this.negate().toString(b);\n }\n var k;\n if (b == 16) {\n k = 4;\n }\n else if (b == 8) {\n k = 3;\n }\n else if (b == 2) {\n k = 1;\n }\n else if (b == 32) {\n k = 5;\n }\n else if (b == 4) {\n k = 2;\n }\n else {\n return this.toRadix(b);\n }\n var km = (1 << k) - 1;\n var d;\n var m = false;\n var r = \"\";\n var i = this.t;\n var p = this.DB - (i * this.DB) % k;\n if (i-- > 0) {\n if (p < this.DB && (d = this[i] >> p) > 0) {\n m = true;\n r = (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)(d);\n }\n while (i >= 0) {\n if (p < k) {\n d = (this[i] & ((1 << p) - 1)) << (k - p);\n d |= this[--i] >> (p += this.DB - k);\n }\n else {\n d = (this[i] >> (p -= k)) & km;\n if (p <= 0) {\n p += this.DB;\n --i;\n }\n }\n if (d > 0) {\n m = true;\n }\n if (m) {\n r += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)(d);\n }\n }\n }\n return m ? r : \"0\";\n };\n // BigInteger.prototype.negate = bnNegate;\n // (public) -this\n BigInteger.prototype.negate = function () {\n var r = nbi();\n BigInteger.ZERO.subTo(this, r);\n return r;\n };\n // BigInteger.prototype.abs = bnAbs;\n // (public) |this|\n BigInteger.prototype.abs = function () {\n return (this.s < 0) ? this.negate() : this;\n };\n // BigInteger.prototype.compareTo = bnCompareTo;\n // (public) return + if this > a, - if this < a, 0 if equal\n BigInteger.prototype.compareTo = function (a) {\n var r = this.s - a.s;\n if (r != 0) {\n return r;\n }\n var i = this.t;\n r = i - a.t;\n if (r != 0) {\n return (this.s < 0) ? -r : r;\n }\n while (--i >= 0) {\n if ((r = this[i] - a[i]) != 0) {\n return r;\n }\n }\n return 0;\n };\n // BigInteger.prototype.bitLength = bnBitLength;\n // (public) return the number of bits in \"this\"\n BigInteger.prototype.bitLength = function () {\n if (this.t <= 0) {\n return 0;\n }\n return this.DB * (this.t - 1) + nbits(this[this.t - 1] ^ (this.s & this.DM));\n };\n // BigInteger.prototype.mod = bnMod;\n // (public) this mod a\n BigInteger.prototype.mod = function (a) {\n var r = nbi();\n this.abs().divRemTo(a, null, r);\n if (this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) {\n a.subTo(r, r);\n }\n return r;\n };\n // BigInteger.prototype.modPowInt = bnModPowInt;\n // (public) this^e % m, 0 <= e < 2^32\n BigInteger.prototype.modPowInt = function (e, m) {\n var z;\n if (e < 256 || m.isEven()) {\n z = new Classic(m);\n }\n else {\n z = new Montgomery(m);\n }\n return this.exp(e, z);\n };\n // BigInteger.prototype.clone = bnClone;\n // (public)\n BigInteger.prototype.clone = function () {\n var r = nbi();\n this.copyTo(r);\n return r;\n };\n // BigInteger.prototype.intValue = bnIntValue;\n // (public) return value as integer\n BigInteger.prototype.intValue = function () {\n if (this.s < 0) {\n if (this.t == 1) {\n return this[0] - this.DV;\n }\n else if (this.t == 0) {\n return -1;\n }\n }\n else if (this.t == 1) {\n return this[0];\n }\n else if (this.t == 0) {\n return 0;\n }\n // assumes 16 < DB < 32\n return ((this[1] & ((1 << (32 - this.DB)) - 1)) << this.DB) | this[0];\n };\n // BigInteger.prototype.byteValue = bnByteValue;\n // (public) return value as byte\n BigInteger.prototype.byteValue = function () {\n return (this.t == 0) ? this.s : (this[0] << 24) >> 24;\n };\n // BigInteger.prototype.shortValue = bnShortValue;\n // (public) return value as short (assumes DB>=16)\n BigInteger.prototype.shortValue = function () {\n return (this.t == 0) ? this.s : (this[0] << 16) >> 16;\n };\n // BigInteger.prototype.signum = bnSigNum;\n // (public) 0 if this == 0, 1 if this > 0\n BigInteger.prototype.signum = function () {\n if (this.s < 0) {\n return -1;\n }\n else if (this.t <= 0 || (this.t == 1 && this[0] <= 0)) {\n return 0;\n }\n else {\n return 1;\n }\n };\n // BigInteger.prototype.toByteArray = bnToByteArray;\n // (public) convert to bigendian byte array\n BigInteger.prototype.toByteArray = function () {\n var i = this.t;\n var r = [];\n r[0] = this.s;\n var p = this.DB - (i * this.DB) % 8;\n var d;\n var k = 0;\n if (i-- > 0) {\n if (p < this.DB && (d = this[i] >> p) != (this.s & this.DM) >> p) {\n r[k++] = d | (this.s << (this.DB - p));\n }\n while (i >= 0) {\n if (p < 8) {\n d = (this[i] & ((1 << p) - 1)) << (8 - p);\n d |= this[--i] >> (p += this.DB - 8);\n }\n else {\n d = (this[i] >> (p -= 8)) & 0xff;\n if (p <= 0) {\n p += this.DB;\n --i;\n }\n }\n if ((d & 0x80) != 0) {\n d |= -256;\n }\n if (k == 0 && (this.s & 0x80) != (d & 0x80)) {\n ++k;\n }\n if (k > 0 || d != this.s) {\n r[k++] = d;\n }\n }\n }\n return r;\n };\n // BigInteger.prototype.equals = bnEquals;\n BigInteger.prototype.equals = function (a) {\n return (this.compareTo(a) == 0);\n };\n // BigInteger.prototype.min = bnMin;\n BigInteger.prototype.min = function (a) {\n return (this.compareTo(a) < 0) ? this : a;\n };\n // BigInteger.prototype.max = bnMax;\n BigInteger.prototype.max = function (a) {\n return (this.compareTo(a) > 0) ? this : a;\n };\n // BigInteger.prototype.and = bnAnd;\n BigInteger.prototype.and = function (a) {\n var r = nbi();\n this.bitwiseTo(a, _util__WEBPACK_IMPORTED_MODULE_0__.op_and, r);\n return r;\n };\n // BigInteger.prototype.or = bnOr;\n BigInteger.prototype.or = function (a) {\n var r = nbi();\n this.bitwiseTo(a, _util__WEBPACK_IMPORTED_MODULE_0__.op_or, r);\n return r;\n };\n // BigInteger.prototype.xor = bnXor;\n BigInteger.prototype.xor = function (a) {\n var r = nbi();\n this.bitwiseTo(a, _util__WEBPACK_IMPORTED_MODULE_0__.op_xor, r);\n return r;\n };\n // BigInteger.prototype.andNot = bnAndNot;\n BigInteger.prototype.andNot = function (a) {\n var r = nbi();\n this.bitwiseTo(a, _util__WEBPACK_IMPORTED_MODULE_0__.op_andnot, r);\n return r;\n };\n // BigInteger.prototype.not = bnNot;\n // (public) ~this\n BigInteger.prototype.not = function () {\n var r = nbi();\n for (var i = 0; i < this.t; ++i) {\n r[i] = this.DM & ~this[i];\n }\n r.t = this.t;\n r.s = ~this.s;\n return r;\n };\n // BigInteger.prototype.shiftLeft = bnShiftLeft;\n // (public) this << n\n BigInteger.prototype.shiftLeft = function (n) {\n var r = nbi();\n if (n < 0) {\n this.rShiftTo(-n, r);\n }\n else {\n this.lShiftTo(n, r);\n }\n return r;\n };\n // BigInteger.prototype.shiftRight = bnShiftRight;\n // (public) this >> n\n BigInteger.prototype.shiftRight = function (n) {\n var r = nbi();\n if (n < 0) {\n this.lShiftTo(-n, r);\n }\n else {\n this.rShiftTo(n, r);\n }\n return r;\n };\n // BigInteger.prototype.getLowestSetBit = bnGetLowestSetBit;\n // (public) returns index of lowest 1-bit (or -1 if none)\n BigInteger.prototype.getLowestSetBit = function () {\n for (var i = 0; i < this.t; ++i) {\n if (this[i] != 0) {\n return i * this.DB + (0,_util__WEBPACK_IMPORTED_MODULE_0__.lbit)(this[i]);\n }\n }\n if (this.s < 0) {\n return this.t * this.DB;\n }\n return -1;\n };\n // BigInteger.prototype.bitCount = bnBitCount;\n // (public) return number of set bits\n BigInteger.prototype.bitCount = function () {\n var r = 0;\n var x = this.s & this.DM;\n for (var i = 0; i < this.t; ++i) {\n r += (0,_util__WEBPACK_IMPORTED_MODULE_0__.cbit)(this[i] ^ x);\n }\n return r;\n };\n // BigInteger.prototype.testBit = bnTestBit;\n // (public) true iff nth bit is set\n BigInteger.prototype.testBit = function (n) {\n var j = Math.floor(n / this.DB);\n if (j >= this.t) {\n return (this.s != 0);\n }\n return ((this[j] & (1 << (n % this.DB))) != 0);\n };\n // BigInteger.prototype.setBit = bnSetBit;\n // (public) this | (1< 1) {\n var g2 = nbi();\n z.sqrTo(g[1], g2);\n while (n <= km) {\n g[n] = nbi();\n z.mulTo(g2, g[n - 2], g[n]);\n n += 2;\n }\n }\n var j = e.t - 1;\n var w;\n var is1 = true;\n var r2 = nbi();\n var t;\n i = nbits(e[j]) - 1;\n while (j >= 0) {\n if (i >= k1) {\n w = (e[j] >> (i - k1)) & km;\n }\n else {\n w = (e[j] & ((1 << (i + 1)) - 1)) << (k1 - i);\n if (j > 0) {\n w |= e[j - 1] >> (this.DB + i - k1);\n }\n }\n n = k;\n while ((w & 1) == 0) {\n w >>= 1;\n --n;\n }\n if ((i -= n) < 0) {\n i += this.DB;\n --j;\n }\n if (is1) { // ret == 1, don't bother squaring or multiplying it\n g[w].copyTo(r);\n is1 = false;\n }\n else {\n while (n > 1) {\n z.sqrTo(r, r2);\n z.sqrTo(r2, r);\n n -= 2;\n }\n if (n > 0) {\n z.sqrTo(r, r2);\n }\n else {\n t = r;\n r = r2;\n r2 = t;\n }\n z.mulTo(r2, g[w], r);\n }\n while (j >= 0 && (e[j] & (1 << i)) == 0) {\n z.sqrTo(r, r2);\n t = r;\n r = r2;\n r2 = t;\n if (--i < 0) {\n i = this.DB - 1;\n --j;\n }\n }\n }\n return z.revert(r);\n };\n // BigInteger.prototype.modInverse = bnModInverse;\n // (public) 1/this % m (HAC 14.61)\n BigInteger.prototype.modInverse = function (m) {\n var ac = m.isEven();\n if ((this.isEven() && ac) || m.signum() == 0) {\n return BigInteger.ZERO;\n }\n var u = m.clone();\n var v = this.clone();\n var a = nbv(1);\n var b = nbv(0);\n var c = nbv(0);\n var d = nbv(1);\n while (u.signum() != 0) {\n while (u.isEven()) {\n u.rShiftTo(1, u);\n if (ac) {\n if (!a.isEven() || !b.isEven()) {\n a.addTo(this, a);\n b.subTo(m, b);\n }\n a.rShiftTo(1, a);\n }\n else if (!b.isEven()) {\n b.subTo(m, b);\n }\n b.rShiftTo(1, b);\n }\n while (v.isEven()) {\n v.rShiftTo(1, v);\n if (ac) {\n if (!c.isEven() || !d.isEven()) {\n c.addTo(this, c);\n d.subTo(m, d);\n }\n c.rShiftTo(1, c);\n }\n else if (!d.isEven()) {\n d.subTo(m, d);\n }\n d.rShiftTo(1, d);\n }\n if (u.compareTo(v) >= 0) {\n u.subTo(v, u);\n if (ac) {\n a.subTo(c, a);\n }\n b.subTo(d, b);\n }\n else {\n v.subTo(u, v);\n if (ac) {\n c.subTo(a, c);\n }\n d.subTo(b, d);\n }\n }\n if (v.compareTo(BigInteger.ONE) != 0) {\n return BigInteger.ZERO;\n }\n if (d.compareTo(m) >= 0) {\n return d.subtract(m);\n }\n if (d.signum() < 0) {\n d.addTo(m, d);\n }\n else {\n return d;\n }\n if (d.signum() < 0) {\n return d.add(m);\n }\n else {\n return d;\n }\n };\n // BigInteger.prototype.pow = bnPow;\n // (public) this^e\n BigInteger.prototype.pow = function (e) {\n return this.exp(e, new NullExp());\n };\n // BigInteger.prototype.gcd = bnGCD;\n // (public) gcd(this,a) (HAC 14.54)\n BigInteger.prototype.gcd = function (a) {\n var x = (this.s < 0) ? this.negate() : this.clone();\n var y = (a.s < 0) ? a.negate() : a.clone();\n if (x.compareTo(y) < 0) {\n var t = x;\n x = y;\n y = t;\n }\n var i = x.getLowestSetBit();\n var g = y.getLowestSetBit();\n if (g < 0) {\n return x;\n }\n if (i < g) {\n g = i;\n }\n if (g > 0) {\n x.rShiftTo(g, x);\n y.rShiftTo(g, y);\n }\n while (x.signum() > 0) {\n if ((i = x.getLowestSetBit()) > 0) {\n x.rShiftTo(i, x);\n }\n if ((i = y.getLowestSetBit()) > 0) {\n y.rShiftTo(i, y);\n }\n if (x.compareTo(y) >= 0) {\n x.subTo(y, x);\n x.rShiftTo(1, x);\n }\n else {\n y.subTo(x, y);\n y.rShiftTo(1, y);\n }\n }\n if (g > 0) {\n y.lShiftTo(g, y);\n }\n return y;\n };\n // BigInteger.prototype.isProbablePrime = bnIsProbablePrime;\n // (public) test primality with certainty >= 1-.5^t\n BigInteger.prototype.isProbablePrime = function (t) {\n var i;\n var x = this.abs();\n if (x.t == 1 && x[0] <= lowprimes[lowprimes.length - 1]) {\n for (i = 0; i < lowprimes.length; ++i) {\n if (x[0] == lowprimes[i]) {\n return true;\n }\n }\n return false;\n }\n if (x.isEven()) {\n return false;\n }\n i = 1;\n while (i < lowprimes.length) {\n var m = lowprimes[i];\n var j = i + 1;\n while (j < lowprimes.length && m < lplim) {\n m *= lowprimes[j++];\n }\n m = x.modInt(m);\n while (i < j) {\n if (m % lowprimes[i++] == 0) {\n return false;\n }\n }\n }\n return x.millerRabin(t);\n };\n //#endregion PUBLIC\n //#region PROTECTED\n // BigInteger.prototype.copyTo = bnpCopyTo;\n // (protected) copy this to r\n BigInteger.prototype.copyTo = function (r) {\n for (var i = this.t - 1; i >= 0; --i) {\n r[i] = this[i];\n }\n r.t = this.t;\n r.s = this.s;\n };\n // BigInteger.prototype.fromInt = bnpFromInt;\n // (protected) set from integer value x, -DV <= x < DV\n BigInteger.prototype.fromInt = function (x) {\n this.t = 1;\n this.s = (x < 0) ? -1 : 0;\n if (x > 0) {\n this[0] = x;\n }\n else if (x < -1) {\n this[0] = x + this.DV;\n }\n else {\n this.t = 0;\n }\n };\n // BigInteger.prototype.fromString = bnpFromString;\n // (protected) set from string and radix\n BigInteger.prototype.fromString = function (s, b) {\n var k;\n if (b == 16) {\n k = 4;\n }\n else if (b == 8) {\n k = 3;\n }\n else if (b == 256) {\n k = 8;\n /* byte array */\n }\n else if (b == 2) {\n k = 1;\n }\n else if (b == 32) {\n k = 5;\n }\n else if (b == 4) {\n k = 2;\n }\n else {\n this.fromRadix(s, b);\n return;\n }\n this.t = 0;\n this.s = 0;\n var i = s.length;\n var mi = false;\n var sh = 0;\n while (--i >= 0) {\n var x = (k == 8) ? (+s[i]) & 0xff : intAt(s, i);\n if (x < 0) {\n if (s.charAt(i) == \"-\") {\n mi = true;\n }\n continue;\n }\n mi = false;\n if (sh == 0) {\n this[this.t++] = x;\n }\n else if (sh + k > this.DB) {\n this[this.t - 1] |= (x & ((1 << (this.DB - sh)) - 1)) << sh;\n this[this.t++] = (x >> (this.DB - sh));\n }\n else {\n this[this.t - 1] |= x << sh;\n }\n sh += k;\n if (sh >= this.DB) {\n sh -= this.DB;\n }\n }\n if (k == 8 && ((+s[0]) & 0x80) != 0) {\n this.s = -1;\n if (sh > 0) {\n this[this.t - 1] |= ((1 << (this.DB - sh)) - 1) << sh;\n }\n }\n this.clamp();\n if (mi) {\n BigInteger.ZERO.subTo(this, this);\n }\n };\n // BigInteger.prototype.clamp = bnpClamp;\n // (protected) clamp off excess high words\n BigInteger.prototype.clamp = function () {\n var c = this.s & this.DM;\n while (this.t > 0 && this[this.t - 1] == c) {\n --this.t;\n }\n };\n // BigInteger.prototype.dlShiftTo = bnpDLShiftTo;\n // (protected) r = this << n*DB\n BigInteger.prototype.dlShiftTo = function (n, r) {\n var i;\n for (i = this.t - 1; i >= 0; --i) {\n r[i + n] = this[i];\n }\n for (i = n - 1; i >= 0; --i) {\n r[i] = 0;\n }\n r.t = this.t + n;\n r.s = this.s;\n };\n // BigInteger.prototype.drShiftTo = bnpDRShiftTo;\n // (protected) r = this >> n*DB\n BigInteger.prototype.drShiftTo = function (n, r) {\n for (var i = n; i < this.t; ++i) {\n r[i - n] = this[i];\n }\n r.t = Math.max(this.t - n, 0);\n r.s = this.s;\n };\n // BigInteger.prototype.lShiftTo = bnpLShiftTo;\n // (protected) r = this << n\n BigInteger.prototype.lShiftTo = function (n, r) {\n var bs = n % this.DB;\n var cbs = this.DB - bs;\n var bm = (1 << cbs) - 1;\n var ds = Math.floor(n / this.DB);\n var c = (this.s << bs) & this.DM;\n for (var i = this.t - 1; i >= 0; --i) {\n r[i + ds + 1] = (this[i] >> cbs) | c;\n c = (this[i] & bm) << bs;\n }\n for (var i = ds - 1; i >= 0; --i) {\n r[i] = 0;\n }\n r[ds] = c;\n r.t = this.t + ds + 1;\n r.s = this.s;\n r.clamp();\n };\n // BigInteger.prototype.rShiftTo = bnpRShiftTo;\n // (protected) r = this >> n\n BigInteger.prototype.rShiftTo = function (n, r) {\n r.s = this.s;\n var ds = Math.floor(n / this.DB);\n if (ds >= this.t) {\n r.t = 0;\n return;\n }\n var bs = n % this.DB;\n var cbs = this.DB - bs;\n var bm = (1 << bs) - 1;\n r[0] = this[ds] >> bs;\n for (var i = ds + 1; i < this.t; ++i) {\n r[i - ds - 1] |= (this[i] & bm) << cbs;\n r[i - ds] = this[i] >> bs;\n }\n if (bs > 0) {\n r[this.t - ds - 1] |= (this.s & bm) << cbs;\n }\n r.t = this.t - ds;\n r.clamp();\n };\n // BigInteger.prototype.subTo = bnpSubTo;\n // (protected) r = this - a\n BigInteger.prototype.subTo = function (a, r) {\n var i = 0;\n var c = 0;\n var m = Math.min(a.t, this.t);\n while (i < m) {\n c += this[i] - a[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n if (a.t < this.t) {\n c -= a.s;\n while (i < this.t) {\n c += this[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n c += this.s;\n }\n else {\n c += this.s;\n while (i < a.t) {\n c -= a[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n c -= a.s;\n }\n r.s = (c < 0) ? -1 : 0;\n if (c < -1) {\n r[i++] = this.DV + c;\n }\n else if (c > 0) {\n r[i++] = c;\n }\n r.t = i;\n r.clamp();\n };\n // BigInteger.prototype.multiplyTo = bnpMultiplyTo;\n // (protected) r = this * a, r != this,a (HAC 14.12)\n // \"this\" should be the larger one if appropriate.\n BigInteger.prototype.multiplyTo = function (a, r) {\n var x = this.abs();\n var y = a.abs();\n var i = x.t;\n r.t = i + y.t;\n while (--i >= 0) {\n r[i] = 0;\n }\n for (i = 0; i < y.t; ++i) {\n r[i + x.t] = x.am(0, y[i], r, i, 0, x.t);\n }\n r.s = 0;\n r.clamp();\n if (this.s != a.s) {\n BigInteger.ZERO.subTo(r, r);\n }\n };\n // BigInteger.prototype.squareTo = bnpSquareTo;\n // (protected) r = this^2, r != this (HAC 14.16)\n BigInteger.prototype.squareTo = function (r) {\n var x = this.abs();\n var i = r.t = 2 * x.t;\n while (--i >= 0) {\n r[i] = 0;\n }\n for (i = 0; i < x.t - 1; ++i) {\n var c = x.am(i, x[i], r, 2 * i, 0, 1);\n if ((r[i + x.t] += x.am(i + 1, 2 * x[i], r, 2 * i + 1, c, x.t - i - 1)) >= x.DV) {\n r[i + x.t] -= x.DV;\n r[i + x.t + 1] = 1;\n }\n }\n if (r.t > 0) {\n r[r.t - 1] += x.am(i, x[i], r, 2 * i, 0, 1);\n }\n r.s = 0;\n r.clamp();\n };\n // BigInteger.prototype.divRemTo = bnpDivRemTo;\n // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)\n // r != q, this != m. q or r may be null.\n BigInteger.prototype.divRemTo = function (m, q, r) {\n var pm = m.abs();\n if (pm.t <= 0) {\n return;\n }\n var pt = this.abs();\n if (pt.t < pm.t) {\n if (q != null) {\n q.fromInt(0);\n }\n if (r != null) {\n this.copyTo(r);\n }\n return;\n }\n if (r == null) {\n r = nbi();\n }\n var y = nbi();\n var ts = this.s;\n var ms = m.s;\n var nsh = this.DB - nbits(pm[pm.t - 1]); // normalize modulus\n if (nsh > 0) {\n pm.lShiftTo(nsh, y);\n pt.lShiftTo(nsh, r);\n }\n else {\n pm.copyTo(y);\n pt.copyTo(r);\n }\n var ys = y.t;\n var y0 = y[ys - 1];\n if (y0 == 0) {\n return;\n }\n var yt = y0 * (1 << this.F1) + ((ys > 1) ? y[ys - 2] >> this.F2 : 0);\n var d1 = this.FV / yt;\n var d2 = (1 << this.F1) / yt;\n var e = 1 << this.F2;\n var i = r.t;\n var j = i - ys;\n var t = (q == null) ? nbi() : q;\n y.dlShiftTo(j, t);\n if (r.compareTo(t) >= 0) {\n r[r.t++] = 1;\n r.subTo(t, r);\n }\n BigInteger.ONE.dlShiftTo(ys, t);\n t.subTo(y, y); // \"negative\" y so we can replace sub with am later\n while (y.t < ys) {\n y[y.t++] = 0;\n }\n while (--j >= 0) {\n // Estimate quotient digit\n var qd = (r[--i] == y0) ? this.DM : Math.floor(r[i] * d1 + (r[i - 1] + e) * d2);\n if ((r[i] += y.am(0, qd, r, j, 0, ys)) < qd) { // Try it out\n y.dlShiftTo(j, t);\n r.subTo(t, r);\n while (r[i] < --qd) {\n r.subTo(t, r);\n }\n }\n }\n if (q != null) {\n r.drShiftTo(ys, q);\n if (ts != ms) {\n BigInteger.ZERO.subTo(q, q);\n }\n }\n r.t = ys;\n r.clamp();\n if (nsh > 0) {\n r.rShiftTo(nsh, r);\n } // Denormalize remainder\n if (ts < 0) {\n BigInteger.ZERO.subTo(r, r);\n }\n };\n // BigInteger.prototype.invDigit = bnpInvDigit;\n // (protected) return \"-1/this % 2^DB\"; useful for Mont. reduction\n // justification:\n // xy == 1 (mod m)\n // xy = 1+km\n // xy(2-xy) = (1+km)(1-km)\n // x[y(2-xy)] = 1-k^2m^2\n // x[y(2-xy)] == 1 (mod m^2)\n // if y is 1/x mod m, then y(2-xy) is 1/x mod m^2\n // should reduce x and y(2-xy) by m^2 at each step to keep size bounded.\n // JS multiply \"overflows\" differently from C/C++, so care is needed here.\n BigInteger.prototype.invDigit = function () {\n if (this.t < 1) {\n return 0;\n }\n var x = this[0];\n if ((x & 1) == 0) {\n return 0;\n }\n var y = x & 3; // y == 1/x mod 2^2\n y = (y * (2 - (x & 0xf) * y)) & 0xf; // y == 1/x mod 2^4\n y = (y * (2 - (x & 0xff) * y)) & 0xff; // y == 1/x mod 2^8\n y = (y * (2 - (((x & 0xffff) * y) & 0xffff))) & 0xffff; // y == 1/x mod 2^16\n // last step - calculate inverse mod DV directly;\n // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints\n y = (y * (2 - x * y % this.DV)) % this.DV; // y == 1/x mod 2^dbits\n // we really want the negative inverse, and -DV < y < DV\n return (y > 0) ? this.DV - y : -y;\n };\n // BigInteger.prototype.isEven = bnpIsEven;\n // (protected) true iff this is even\n BigInteger.prototype.isEven = function () {\n return ((this.t > 0) ? (this[0] & 1) : this.s) == 0;\n };\n // BigInteger.prototype.exp = bnpExp;\n // (protected) this^e, e < 2^32, doing sqr and mul with \"r\" (HAC 14.79)\n BigInteger.prototype.exp = function (e, z) {\n if (e > 0xffffffff || e < 1) {\n return BigInteger.ONE;\n }\n var r = nbi();\n var r2 = nbi();\n var g = z.convert(this);\n var i = nbits(e) - 1;\n g.copyTo(r);\n while (--i >= 0) {\n z.sqrTo(r, r2);\n if ((e & (1 << i)) > 0) {\n z.mulTo(r2, g, r);\n }\n else {\n var t = r;\n r = r2;\n r2 = t;\n }\n }\n return z.revert(r);\n };\n // BigInteger.prototype.chunkSize = bnpChunkSize;\n // (protected) return x s.t. r^x < DV\n BigInteger.prototype.chunkSize = function (r) {\n return Math.floor(Math.LN2 * this.DB / Math.log(r));\n };\n // BigInteger.prototype.toRadix = bnpToRadix;\n // (protected) convert to radix string\n BigInteger.prototype.toRadix = function (b) {\n if (b == null) {\n b = 10;\n }\n if (this.signum() == 0 || b < 2 || b > 36) {\n return \"0\";\n }\n var cs = this.chunkSize(b);\n var a = Math.pow(b, cs);\n var d = nbv(a);\n var y = nbi();\n var z = nbi();\n var r = \"\";\n this.divRemTo(d, y, z);\n while (y.signum() > 0) {\n r = (a + z.intValue()).toString(b).substr(1) + r;\n y.divRemTo(d, y, z);\n }\n return z.intValue().toString(b) + r;\n };\n // BigInteger.prototype.fromRadix = bnpFromRadix;\n // (protected) convert from radix string\n BigInteger.prototype.fromRadix = function (s, b) {\n this.fromInt(0);\n if (b == null) {\n b = 10;\n }\n var cs = this.chunkSize(b);\n var d = Math.pow(b, cs);\n var mi = false;\n var j = 0;\n var w = 0;\n for (var i = 0; i < s.length; ++i) {\n var x = intAt(s, i);\n if (x < 0) {\n if (s.charAt(i) == \"-\" && this.signum() == 0) {\n mi = true;\n }\n continue;\n }\n w = b * w + x;\n if (++j >= cs) {\n this.dMultiply(d);\n this.dAddOffset(w, 0);\n j = 0;\n w = 0;\n }\n }\n if (j > 0) {\n this.dMultiply(Math.pow(b, j));\n this.dAddOffset(w, 0);\n }\n if (mi) {\n BigInteger.ZERO.subTo(this, this);\n }\n };\n // BigInteger.prototype.fromNumber = bnpFromNumber;\n // (protected) alternate constructor\n BigInteger.prototype.fromNumber = function (a, b, c) {\n if (\"number\" == typeof b) {\n // new BigInteger(int,int,RNG)\n if (a < 2) {\n this.fromInt(1);\n }\n else {\n this.fromNumber(a, c);\n if (!this.testBit(a - 1)) {\n // force MSB set\n this.bitwiseTo(BigInteger.ONE.shiftLeft(a - 1), _util__WEBPACK_IMPORTED_MODULE_0__.op_or, this);\n }\n if (this.isEven()) {\n this.dAddOffset(1, 0);\n } // force odd\n while (!this.isProbablePrime(b)) {\n this.dAddOffset(2, 0);\n if (this.bitLength() > a) {\n this.subTo(BigInteger.ONE.shiftLeft(a - 1), this);\n }\n }\n }\n }\n else {\n // new BigInteger(int,RNG)\n var x = [];\n var t = a & 7;\n x.length = (a >> 3) + 1;\n b.nextBytes(x);\n if (t > 0) {\n x[0] &= ((1 << t) - 1);\n }\n else {\n x[0] = 0;\n }\n this.fromString(x, 256);\n }\n };\n // BigInteger.prototype.bitwiseTo = bnpBitwiseTo;\n // (protected) r = this op a (bitwise)\n BigInteger.prototype.bitwiseTo = function (a, op, r) {\n var i;\n var f;\n var m = Math.min(a.t, this.t);\n for (i = 0; i < m; ++i) {\n r[i] = op(this[i], a[i]);\n }\n if (a.t < this.t) {\n f = a.s & this.DM;\n for (i = m; i < this.t; ++i) {\n r[i] = op(this[i], f);\n }\n r.t = this.t;\n }\n else {\n f = this.s & this.DM;\n for (i = m; i < a.t; ++i) {\n r[i] = op(f, a[i]);\n }\n r.t = a.t;\n }\n r.s = op(this.s, a.s);\n r.clamp();\n };\n // BigInteger.prototype.changeBit = bnpChangeBit;\n // (protected) this op (1<>= this.DB;\n }\n if (a.t < this.t) {\n c += a.s;\n while (i < this.t) {\n c += this[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n c += this.s;\n }\n else {\n c += this.s;\n while (i < a.t) {\n c += a[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n c += a.s;\n }\n r.s = (c < 0) ? -1 : 0;\n if (c > 0) {\n r[i++] = c;\n }\n else if (c < -1) {\n r[i++] = this.DV + c;\n }\n r.t = i;\n r.clamp();\n };\n // BigInteger.prototype.dMultiply = bnpDMultiply;\n // (protected) this *= n, this >= 0, 1 < n < DV\n BigInteger.prototype.dMultiply = function (n) {\n this[this.t] = this.am(0, n - 1, this, 0, 0, this.t);\n ++this.t;\n this.clamp();\n };\n // BigInteger.prototype.dAddOffset = bnpDAddOffset;\n // (protected) this += n << w words, this >= 0\n BigInteger.prototype.dAddOffset = function (n, w) {\n if (n == 0) {\n return;\n }\n while (this.t <= w) {\n this[this.t++] = 0;\n }\n this[w] += n;\n while (this[w] >= this.DV) {\n this[w] -= this.DV;\n if (++w >= this.t) {\n this[this.t++] = 0;\n }\n ++this[w];\n }\n };\n // BigInteger.prototype.multiplyLowerTo = bnpMultiplyLowerTo;\n // (protected) r = lower n words of \"this * a\", a.t <= n\n // \"this\" should be the larger one if appropriate.\n BigInteger.prototype.multiplyLowerTo = function (a, n, r) {\n var i = Math.min(this.t + a.t, n);\n r.s = 0; // assumes a,this >= 0\n r.t = i;\n while (i > 0) {\n r[--i] = 0;\n }\n for (var j = r.t - this.t; i < j; ++i) {\n r[i + this.t] = this.am(0, a[i], r, i, 0, this.t);\n }\n for (var j = Math.min(a.t, n); i < j; ++i) {\n this.am(0, a[i], r, i, 0, n - i);\n }\n r.clamp();\n };\n // BigInteger.prototype.multiplyUpperTo = bnpMultiplyUpperTo;\n // (protected) r = \"this * a\" without lower n words, n > 0\n // \"this\" should be the larger one if appropriate.\n BigInteger.prototype.multiplyUpperTo = function (a, n, r) {\n --n;\n var i = r.t = this.t + a.t - n;\n r.s = 0; // assumes a,this >= 0\n while (--i >= 0) {\n r[i] = 0;\n }\n for (i = Math.max(n - this.t, 0); i < a.t; ++i) {\n r[this.t + i - n] = this.am(n - i, a[i], r, 0, 0, this.t + i - n);\n }\n r.clamp();\n r.drShiftTo(1, r);\n };\n // BigInteger.prototype.modInt = bnpModInt;\n // (protected) this % n, n < 2^26\n BigInteger.prototype.modInt = function (n) {\n if (n <= 0) {\n return 0;\n }\n var d = this.DV % n;\n var r = (this.s < 0) ? n - 1 : 0;\n if (this.t > 0) {\n if (d == 0) {\n r = this[0] % n;\n }\n else {\n for (var i = this.t - 1; i >= 0; --i) {\n r = (d * r + this[i]) % n;\n }\n }\n }\n return r;\n };\n // BigInteger.prototype.millerRabin = bnpMillerRabin;\n // (protected) true if probably prime (HAC 4.24, Miller-Rabin)\n BigInteger.prototype.millerRabin = function (t) {\n var n1 = this.subtract(BigInteger.ONE);\n var k = n1.getLowestSetBit();\n if (k <= 0) {\n return false;\n }\n var r = n1.shiftRight(k);\n t = (t + 1) >> 1;\n if (t > lowprimes.length) {\n t = lowprimes.length;\n }\n var a = nbi();\n for (var i = 0; i < t; ++i) {\n // Pick bases at random, instead of starting at 2\n a.fromInt(lowprimes[Math.floor(Math.random() * lowprimes.length)]);\n var y = a.modPow(r, this);\n if (y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) {\n var j = 1;\n while (j++ < k && y.compareTo(n1) != 0) {\n y = y.modPowInt(2, this);\n if (y.compareTo(BigInteger.ONE) == 0) {\n return false;\n }\n }\n if (y.compareTo(n1) != 0) {\n return false;\n }\n }\n }\n return true;\n };\n // BigInteger.prototype.square = bnSquare;\n // (public) this^2\n BigInteger.prototype.square = function () {\n var r = nbi();\n this.squareTo(r);\n return r;\n };\n //#region ASYNC\n // Public API method\n BigInteger.prototype.gcda = function (a, callback) {\n var x = (this.s < 0) ? this.negate() : this.clone();\n var y = (a.s < 0) ? a.negate() : a.clone();\n if (x.compareTo(y) < 0) {\n var t = x;\n x = y;\n y = t;\n }\n var i = x.getLowestSetBit();\n var g = y.getLowestSetBit();\n if (g < 0) {\n callback(x);\n return;\n }\n if (i < g) {\n g = i;\n }\n if (g > 0) {\n x.rShiftTo(g, x);\n y.rShiftTo(g, y);\n }\n // Workhorse of the algorithm, gets called 200 - 800 times per 512 bit keygen.\n var gcda1 = function () {\n if ((i = x.getLowestSetBit()) > 0) {\n x.rShiftTo(i, x);\n }\n if ((i = y.getLowestSetBit()) > 0) {\n y.rShiftTo(i, y);\n }\n if (x.compareTo(y) >= 0) {\n x.subTo(y, x);\n x.rShiftTo(1, x);\n }\n else {\n y.subTo(x, y);\n y.rShiftTo(1, y);\n }\n if (!(x.signum() > 0)) {\n if (g > 0) {\n y.lShiftTo(g, y);\n }\n setTimeout(function () { callback(y); }, 0); // escape\n }\n else {\n setTimeout(gcda1, 0);\n }\n };\n setTimeout(gcda1, 10);\n };\n // (protected) alternate constructor\n BigInteger.prototype.fromNumberAsync = function (a, b, c, callback) {\n if (\"number\" == typeof b) {\n if (a < 2) {\n this.fromInt(1);\n }\n else {\n this.fromNumber(a, c);\n if (!this.testBit(a - 1)) {\n this.bitwiseTo(BigInteger.ONE.shiftLeft(a - 1), _util__WEBPACK_IMPORTED_MODULE_0__.op_or, this);\n }\n if (this.isEven()) {\n this.dAddOffset(1, 0);\n }\n var bnp_1 = this;\n var bnpfn1_1 = function () {\n bnp_1.dAddOffset(2, 0);\n if (bnp_1.bitLength() > a) {\n bnp_1.subTo(BigInteger.ONE.shiftLeft(a - 1), bnp_1);\n }\n if (bnp_1.isProbablePrime(b)) {\n setTimeout(function () { callback(); }, 0); // escape\n }\n else {\n setTimeout(bnpfn1_1, 0);\n }\n };\n setTimeout(bnpfn1_1, 0);\n }\n }\n else {\n var x = [];\n var t = a & 7;\n x.length = (a >> 3) + 1;\n b.nextBytes(x);\n if (t > 0) {\n x[0] &= ((1 << t) - 1);\n }\n else {\n x[0] = 0;\n }\n this.fromString(x, 256);\n }\n };\n return BigInteger;\n}());\n\n//#region REDUCERS\n//#region NullExp\nvar NullExp = /** @class */ (function () {\n function NullExp() {\n }\n // NullExp.prototype.convert = nNop;\n NullExp.prototype.convert = function (x) {\n return x;\n };\n // NullExp.prototype.revert = nNop;\n NullExp.prototype.revert = function (x) {\n return x;\n };\n // NullExp.prototype.mulTo = nMulTo;\n NullExp.prototype.mulTo = function (x, y, r) {\n x.multiplyTo(y, r);\n };\n // NullExp.prototype.sqrTo = nSqrTo;\n NullExp.prototype.sqrTo = function (x, r) {\n x.squareTo(r);\n };\n return NullExp;\n}());\n// Modular reduction using \"classic\" algorithm\nvar Classic = /** @class */ (function () {\n function Classic(m) {\n this.m = m;\n }\n // Classic.prototype.convert = cConvert;\n Classic.prototype.convert = function (x) {\n if (x.s < 0 || x.compareTo(this.m) >= 0) {\n return x.mod(this.m);\n }\n else {\n return x;\n }\n };\n // Classic.prototype.revert = cRevert;\n Classic.prototype.revert = function (x) {\n return x;\n };\n // Classic.prototype.reduce = cReduce;\n Classic.prototype.reduce = function (x) {\n x.divRemTo(this.m, null, x);\n };\n // Classic.prototype.mulTo = cMulTo;\n Classic.prototype.mulTo = function (x, y, r) {\n x.multiplyTo(y, r);\n this.reduce(r);\n };\n // Classic.prototype.sqrTo = cSqrTo;\n Classic.prototype.sqrTo = function (x, r) {\n x.squareTo(r);\n this.reduce(r);\n };\n return Classic;\n}());\n//#endregion\n//#region Montgomery\n// Montgomery reduction\nvar Montgomery = /** @class */ (function () {\n function Montgomery(m) {\n this.m = m;\n this.mp = m.invDigit();\n this.mpl = this.mp & 0x7fff;\n this.mph = this.mp >> 15;\n this.um = (1 << (m.DB - 15)) - 1;\n this.mt2 = 2 * m.t;\n }\n // Montgomery.prototype.convert = montConvert;\n // xR mod m\n Montgomery.prototype.convert = function (x) {\n var r = nbi();\n x.abs().dlShiftTo(this.m.t, r);\n r.divRemTo(this.m, null, r);\n if (x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) {\n this.m.subTo(r, r);\n }\n return r;\n };\n // Montgomery.prototype.revert = montRevert;\n // x/R mod m\n Montgomery.prototype.revert = function (x) {\n var r = nbi();\n x.copyTo(r);\n this.reduce(r);\n return r;\n };\n // Montgomery.prototype.reduce = montReduce;\n // x = x/R mod m (HAC 14.32)\n Montgomery.prototype.reduce = function (x) {\n while (x.t <= this.mt2) {\n // pad x so am has enough room later\n x[x.t++] = 0;\n }\n for (var i = 0; i < this.m.t; ++i) {\n // faster way of calculating u0 = x[i]*mp mod DV\n var j = x[i] & 0x7fff;\n var u0 = (j * this.mpl + (((j * this.mph + (x[i] >> 15) * this.mpl) & this.um) << 15)) & x.DM;\n // use am to combine the multiply-shift-add into one call\n j = i + this.m.t;\n x[j] += this.m.am(0, u0, x, i, 0, this.m.t);\n // propagate carry\n while (x[j] >= x.DV) {\n x[j] -= x.DV;\n x[++j]++;\n }\n }\n x.clamp();\n x.drShiftTo(this.m.t, x);\n if (x.compareTo(this.m) >= 0) {\n x.subTo(this.m, x);\n }\n };\n // Montgomery.prototype.mulTo = montMulTo;\n // r = \"xy/R mod m\"; x,y != r\n Montgomery.prototype.mulTo = function (x, y, r) {\n x.multiplyTo(y, r);\n this.reduce(r);\n };\n // Montgomery.prototype.sqrTo = montSqrTo;\n // r = \"x^2/R mod m\"; x != r\n Montgomery.prototype.sqrTo = function (x, r) {\n x.squareTo(r);\n this.reduce(r);\n };\n return Montgomery;\n}());\n//#endregion Montgomery\n//#region Barrett\n// Barrett modular reduction\nvar Barrett = /** @class */ (function () {\n function Barrett(m) {\n this.m = m;\n // setup Barrett\n this.r2 = nbi();\n this.q3 = nbi();\n BigInteger.ONE.dlShiftTo(2 * m.t, this.r2);\n this.mu = this.r2.divide(m);\n }\n // Barrett.prototype.convert = barrettConvert;\n Barrett.prototype.convert = function (x) {\n if (x.s < 0 || x.t > 2 * this.m.t) {\n return x.mod(this.m);\n }\n else if (x.compareTo(this.m) < 0) {\n return x;\n }\n else {\n var r = nbi();\n x.copyTo(r);\n this.reduce(r);\n return r;\n }\n };\n // Barrett.prototype.revert = barrettRevert;\n Barrett.prototype.revert = function (x) {\n return x;\n };\n // Barrett.prototype.reduce = barrettReduce;\n // x = x mod m (HAC 14.42)\n Barrett.prototype.reduce = function (x) {\n x.drShiftTo(this.m.t - 1, this.r2);\n if (x.t > this.m.t + 1) {\n x.t = this.m.t + 1;\n x.clamp();\n }\n this.mu.multiplyUpperTo(this.r2, this.m.t + 1, this.q3);\n this.m.multiplyLowerTo(this.q3, this.m.t + 1, this.r2);\n while (x.compareTo(this.r2) < 0) {\n x.dAddOffset(1, this.m.t + 1);\n }\n x.subTo(this.r2, x);\n while (x.compareTo(this.m) >= 0) {\n x.subTo(this.m, x);\n }\n };\n // Barrett.prototype.mulTo = barrettMulTo;\n // r = x*y mod m; x,y != r\n Barrett.prototype.mulTo = function (x, y, r) {\n x.multiplyTo(y, r);\n this.reduce(r);\n };\n // Barrett.prototype.sqrTo = barrettSqrTo;\n // r = x^2 mod m; x != r\n Barrett.prototype.sqrTo = function (x, r) {\n x.squareTo(r);\n this.reduce(r);\n };\n return Barrett;\n}());\n//#endregion\n//#endregion REDUCERS\n// return new, unset BigInteger\nfunction nbi() { return new BigInteger(null); }\nfunction parseBigInt(str, r) {\n return new BigInteger(str, r);\n}\n// am: Compute w_j += (x*this_i), propagate carries,\n// c is initial carry, returns final carry.\n// c < 3*dvalue, x < 2*dvalue, this_i < dvalue\n// We need to select the fastest one that works in this environment.\nvar inBrowser = typeof navigator !== \"undefined\";\nif (inBrowser && j_lm && (navigator.appName == \"Microsoft Internet Explorer\")) {\n // am2 avoids a big mult-and-extract completely.\n // Max digit bits should be <= 30 because we do bitwise ops\n // on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)\n BigInteger.prototype.am = function am2(i, x, w, j, c, n) {\n var xl = x & 0x7fff;\n var xh = x >> 15;\n while (--n >= 0) {\n var l = this[i] & 0x7fff;\n var h = this[i++] >> 15;\n var m = xh * l + h * xl;\n l = xl * l + ((m & 0x7fff) << 15) + w[j] + (c & 0x3fffffff);\n c = (l >>> 30) + (m >>> 15) + xh * h + (c >>> 30);\n w[j++] = l & 0x3fffffff;\n }\n return c;\n };\n dbits = 30;\n}\nelse if (inBrowser && j_lm && (navigator.appName != \"Netscape\")) {\n // am1: use a single mult and divide to get the high bits,\n // max digit bits should be 26 because\n // max internal value = 2*dvalue^2-2*dvalue (< 2^53)\n BigInteger.prototype.am = function am1(i, x, w, j, c, n) {\n while (--n >= 0) {\n var v = x * this[i++] + w[j] + c;\n c = Math.floor(v / 0x4000000);\n w[j++] = v & 0x3ffffff;\n }\n return c;\n };\n dbits = 26;\n}\nelse { // Mozilla/Netscape seems to prefer am3\n // Alternately, set max digit bits to 28 since some\n // browsers slow down when dealing with 32-bit numbers.\n BigInteger.prototype.am = function am3(i, x, w, j, c, n) {\n var xl = x & 0x3fff;\n var xh = x >> 14;\n while (--n >= 0) {\n var l = this[i] & 0x3fff;\n var h = this[i++] >> 14;\n var m = xh * l + h * xl;\n l = xl * l + ((m & 0x3fff) << 14) + w[j] + c;\n c = (l >> 28) + (m >> 14) + xh * h;\n w[j++] = l & 0xfffffff;\n }\n return c;\n };\n dbits = 28;\n}\nBigInteger.prototype.DB = dbits;\nBigInteger.prototype.DM = ((1 << dbits) - 1);\nBigInteger.prototype.DV = (1 << dbits);\nvar BI_FP = 52;\nBigInteger.prototype.FV = Math.pow(2, BI_FP);\nBigInteger.prototype.F1 = BI_FP - dbits;\nBigInteger.prototype.F2 = 2 * dbits - BI_FP;\n// Digit conversions\nvar BI_RC = [];\nvar rr;\nvar vv;\nrr = \"0\".charCodeAt(0);\nfor (vv = 0; vv <= 9; ++vv) {\n BI_RC[rr++] = vv;\n}\nrr = \"a\".charCodeAt(0);\nfor (vv = 10; vv < 36; ++vv) {\n BI_RC[rr++] = vv;\n}\nrr = \"A\".charCodeAt(0);\nfor (vv = 10; vv < 36; ++vv) {\n BI_RC[rr++] = vv;\n}\nfunction intAt(s, i) {\n var c = BI_RC[s.charCodeAt(i)];\n return (c == null) ? -1 : c;\n}\n// return bigint initialized to value\nfunction nbv(i) {\n var r = nbi();\n r.fromInt(i);\n return r;\n}\n// returns bit length of the integer x\nfunction nbits(x) {\n var r = 1;\n var t;\n if ((t = x >>> 16) != 0) {\n x = t;\n r += 16;\n }\n if ((t = x >> 8) != 0) {\n x = t;\n r += 8;\n }\n if ((t = x >> 4) != 0) {\n x = t;\n r += 4;\n }\n if ((t = x >> 2) != 0) {\n x = t;\n r += 2;\n }\n if ((t = x >> 1) != 0) {\n x = t;\n r += 1;\n }\n return r;\n}\n// \"constants\"\nBigInteger.ZERO = nbv(0);\nBigInteger.ONE = nbv(1);\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/jsbn/jsbn.js?"); + + /***/ + }), + + /***/ + "./lib/lib/jsbn/prng4.js": + /*!*******************************!*\ + !*** ./lib/lib/jsbn/prng4.js ***! + \*******************************/ + /***/ + ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + + "use strict"; + eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Arcfour\": () => (/* binding */ Arcfour),\n/* harmony export */ \"prng_newstate\": () => (/* binding */ prng_newstate),\n/* harmony export */ \"rng_psize\": () => (/* binding */ rng_psize)\n/* harmony export */ });\n// prng4.js - uses Arcfour as a PRNG\nvar Arcfour = /** @class */ (function () {\n function Arcfour() {\n this.i = 0;\n this.j = 0;\n this.S = [];\n }\n // Arcfour.prototype.init = ARC4init;\n // Initialize arcfour context from key, an array of ints, each from [0..255]\n Arcfour.prototype.init = function (key) {\n var i;\n var j;\n var t;\n for (i = 0; i < 256; ++i) {\n this.S[i] = i;\n }\n j = 0;\n for (i = 0; i < 256; ++i) {\n j = (j + this.S[i] + key[i % key.length]) & 255;\n t = this.S[i];\n this.S[i] = this.S[j];\n this.S[j] = t;\n }\n this.i = 0;\n this.j = 0;\n };\n // Arcfour.prototype.next = ARC4next;\n Arcfour.prototype.next = function () {\n var t;\n this.i = (this.i + 1) & 255;\n this.j = (this.j + this.S[this.i]) & 255;\n t = this.S[this.i];\n this.S[this.i] = this.S[this.j];\n this.S[this.j] = t;\n return this.S[(t + this.S[this.i]) & 255];\n };\n return Arcfour;\n}());\n\n// Plug in your RNG constructor here\nfunction prng_newstate() {\n return new Arcfour();\n}\n// Pool size must be a multiple of 4 and greater than 32.\n// An array of bytes the size of the pool will be passed to init()\nvar rng_psize = 256;\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/jsbn/prng4.js?"); + + /***/ + }), + + /***/ + "./lib/lib/jsbn/rng.js": + /*!*****************************!*\ + !*** ./lib/lib/jsbn/rng.js ***! + \*****************************/ + /***/ + ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + + "use strict"; + eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"SecureRandom\": () => (/* binding */ SecureRandom)\n/* harmony export */ });\n/* harmony import */ var _prng4__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./prng4 */ \"./lib/lib/jsbn/prng4.js\");\n// Random number generator - requires a PRNG backend, e.g. prng4.js\n\nvar rng_state;\nvar rng_pool = null;\nvar rng_pptr;\n// Initialize the pool with junk if needed.\nif (rng_pool == null) {\n rng_pool = [];\n rng_pptr = 0;\n var t = void 0;\n if (typeof window !== 'undefined' && window.crypto && window.crypto.getRandomValues) {\n // Extract entropy (2048 bits) from RNG if available\n var z = new Uint32Array(256);\n window.crypto.getRandomValues(z);\n for (t = 0; t < z.length; ++t) {\n rng_pool[rng_pptr++] = z[t] & 255;\n }\n }\n // Use mouse events for entropy, if we do not have enough entropy by the time\n // we need it, entropy will be generated by Math.random.\n var count = 0;\n var onMouseMoveListener_1 = function (ev) {\n count = count || 0;\n if (count >= 256 || rng_pptr >= _prng4__WEBPACK_IMPORTED_MODULE_0__.rng_psize) {\n if (window.removeEventListener) {\n window.removeEventListener(\"mousemove\", onMouseMoveListener_1, false);\n }\n else if (window.detachEvent) {\n window.detachEvent(\"onmousemove\", onMouseMoveListener_1);\n }\n return;\n }\n try {\n var mouseCoordinates = ev.x + ev.y;\n rng_pool[rng_pptr++] = mouseCoordinates & 255;\n count += 1;\n }\n catch (e) {\n // Sometimes Firefox will deny permission to access event properties for some reason. Ignore.\n }\n };\n if (typeof window !== 'undefined') {\n if (window.addEventListener) {\n window.addEventListener(\"mousemove\", onMouseMoveListener_1, false);\n }\n else if (window.attachEvent) {\n window.attachEvent(\"onmousemove\", onMouseMoveListener_1);\n }\n }\n}\nfunction rng_get_byte() {\n if (rng_state == null) {\n rng_state = (0,_prng4__WEBPACK_IMPORTED_MODULE_0__.prng_newstate)();\n // At this point, we may not have collected enough entropy. If not, fall back to Math.random\n while (rng_pptr < _prng4__WEBPACK_IMPORTED_MODULE_0__.rng_psize) {\n var random = Math.floor(65536 * Math.random());\n rng_pool[rng_pptr++] = random & 255;\n }\n rng_state.init(rng_pool);\n for (rng_pptr = 0; rng_pptr < rng_pool.length; ++rng_pptr) {\n rng_pool[rng_pptr] = 0;\n }\n rng_pptr = 0;\n }\n // TODO: allow reseeding after first request\n return rng_state.next();\n}\nvar SecureRandom = /** @class */ (function () {\n function SecureRandom() {\n }\n SecureRandom.prototype.nextBytes = function (ba) {\n for (var i = 0; i < ba.length; ++i) {\n ba[i] = rng_get_byte();\n }\n };\n return SecureRandom;\n}());\n\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/jsbn/rng.js?"); + + /***/ + }), + + /***/ + "./lib/lib/jsbn/rsa.js": + /*!*****************************!*\ + !*** ./lib/lib/jsbn/rsa.js ***! + \*****************************/ + /***/ + ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + + "use strict"; + eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"RSAKey\": () => (/* binding */ RSAKey)\n/* harmony export */ });\n/* harmony import */ var _jsbn__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./jsbn */ \"./lib/lib/jsbn/jsbn.js\");\n/* harmony import */ var _rng__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rng */ \"./lib/lib/jsbn/rng.js\");\n// Depends on jsbn.js and rng.js\n// Version 1.1: support utf-8 encoding in pkcs1pad2\n// convert a (hex) string to a bignum object\n\n\n// function linebrk(s,n) {\n// var ret = \"\";\n// var i = 0;\n// while(i + n < s.length) {\n// ret += s.substring(i,i+n) + \"\\n\";\n// i += n;\n// }\n// return ret + s.substring(i,s.length);\n// }\n// function byte2Hex(b) {\n// if(b < 0x10)\n// return \"0\" + b.toString(16);\n// else\n// return b.toString(16);\n// }\nfunction pkcs1pad1(s, n) {\n if (n < s.length + 22) {\n console.error(\"Message too long for RSA\");\n return null;\n }\n var len = n - s.length - 6;\n var filler = \"\";\n for (var f = 0; f < len; f += 2) {\n filler += \"ff\";\n }\n var m = \"0001\" + filler + \"00\" + s;\n return (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(m, 16);\n}\n// PKCS#1 (type 2, random) pad input string s to n bytes, and return a bigint\nfunction pkcs1pad2(s, n) {\n if (n < s.length + 11) { // TODO: fix for utf-8\n console.error(\"Message too long for RSA\");\n return null;\n }\n var ba = [];\n var i = s.length - 1;\n while (i >= 0 && n > 0) {\n var c = s.charCodeAt(i--);\n if (c < 128) { // encode using utf-8\n ba[--n] = c;\n }\n else if ((c > 127) && (c < 2048)) {\n ba[--n] = (c & 63) | 128;\n ba[--n] = (c >> 6) | 192;\n }\n else {\n ba[--n] = (c & 63) | 128;\n ba[--n] = ((c >> 6) & 63) | 128;\n ba[--n] = (c >> 12) | 224;\n }\n }\n ba[--n] = 0;\n var rng = new _rng__WEBPACK_IMPORTED_MODULE_1__.SecureRandom();\n var x = [];\n while (n > 2) { // random non-zero pad\n x[0] = 0;\n while (x[0] == 0) {\n rng.nextBytes(x);\n }\n ba[--n] = x[0];\n }\n ba[--n] = 2;\n ba[--n] = 0;\n return new _jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(ba);\n}\n// \"empty\" RSA key constructor\nvar RSAKey = /** @class */ (function () {\n function RSAKey() {\n this.n = null;\n this.e = 0;\n this.d = null;\n this.p = null;\n this.q = null;\n this.dmp1 = null;\n this.dmq1 = null;\n this.coeff = null;\n }\n //#region PROTECTED\n // protected\n // RSAKey.prototype.doPublic = RSADoPublic;\n // Perform raw public operation on \"x\": return x^e (mod n)\n RSAKey.prototype.doPublic = function (x) {\n return x.modPowInt(this.e, this.n);\n };\n // RSAKey.prototype.doPrivate = RSADoPrivate;\n // Perform raw private operation on \"x\": return x^d (mod n)\n RSAKey.prototype.doPrivate = function (x) {\n if (this.p == null || this.q == null) {\n return x.modPow(this.d, this.n);\n }\n // TODO: re-calculate any missing CRT params\n var xp = x.mod(this.p).modPow(this.dmp1, this.p);\n var xq = x.mod(this.q).modPow(this.dmq1, this.q);\n while (xp.compareTo(xq) < 0) {\n xp = xp.add(this.p);\n }\n return xp.subtract(xq).multiply(this.coeff).mod(this.p).multiply(this.q).add(xq);\n };\n //#endregion PROTECTED\n //#region PUBLIC\n // RSAKey.prototype.setPublic = RSASetPublic;\n // Set the public key fields N and e from hex strings\n RSAKey.prototype.setPublic = function (N, E) {\n if (N != null && E != null && N.length > 0 && E.length > 0) {\n this.n = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(N, 16);\n this.e = parseInt(E, 16);\n }\n else {\n console.error(\"Invalid RSA public key\");\n }\n };\n // RSAKey.prototype.encrypt = RSAEncrypt;\n // Return the PKCS#1 RSA encryption of \"text\" as an even-length hex string\n RSAKey.prototype.encrypt = function (text) {\n var maxLength = (this.n.bitLength() + 7) >> 3;\n var m = pkcs1pad2(text, maxLength);\n if (m == null) {\n return null;\n }\n var c = this.doPublic(m);\n if (c == null) {\n return null;\n }\n var h = c.toString(16);\n var length = h.length;\n // fix zero before result\n for (var i = 0; i < maxLength * 2 - length; i++) {\n h = \"0\" + h;\n }\n return h;\n };\n // RSAKey.prototype.setPrivate = RSASetPrivate;\n // Set the private key fields N, e, and d from hex strings\n RSAKey.prototype.setPrivate = function (N, E, D) {\n if (N != null && E != null && N.length > 0 && E.length > 0) {\n this.n = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(N, 16);\n this.e = parseInt(E, 16);\n this.d = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(D, 16);\n }\n else {\n console.error(\"Invalid RSA private key\");\n }\n };\n // RSAKey.prototype.setPrivateEx = RSASetPrivateEx;\n // Set the private key fields N, e, d and CRT params from hex strings\n RSAKey.prototype.setPrivateEx = function (N, E, D, P, Q, DP, DQ, C) {\n if (N != null && E != null && N.length > 0 && E.length > 0) {\n this.n = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(N, 16);\n this.e = parseInt(E, 16);\n this.d = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(D, 16);\n this.p = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(P, 16);\n this.q = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(Q, 16);\n this.dmp1 = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(DP, 16);\n this.dmq1 = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(DQ, 16);\n this.coeff = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(C, 16);\n }\n else {\n console.error(\"Invalid RSA private key\");\n }\n };\n // RSAKey.prototype.generate = RSAGenerate;\n // Generate a new random private key B bits long, using public expt E\n RSAKey.prototype.generate = function (B, E) {\n var rng = new _rng__WEBPACK_IMPORTED_MODULE_1__.SecureRandom();\n var qs = B >> 1;\n this.e = parseInt(E, 16);\n var ee = new _jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(E, 16);\n for (;;) {\n for (;;) {\n this.p = new _jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(B - qs, 1, rng);\n if (this.p.subtract(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE).gcd(ee).compareTo(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE) == 0 && this.p.isProbablePrime(10)) {\n break;\n }\n }\n for (;;) {\n this.q = new _jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(qs, 1, rng);\n if (this.q.subtract(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE).gcd(ee).compareTo(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE) == 0 && this.q.isProbablePrime(10)) {\n break;\n }\n }\n if (this.p.compareTo(this.q) <= 0) {\n var t = this.p;\n this.p = this.q;\n this.q = t;\n }\n var p1 = this.p.subtract(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE);\n var q1 = this.q.subtract(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE);\n var phi = p1.multiply(q1);\n if (phi.gcd(ee).compareTo(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE) == 0) {\n this.n = this.p.multiply(this.q);\n this.d = ee.modInverse(phi);\n this.dmp1 = this.d.mod(p1);\n this.dmq1 = this.d.mod(q1);\n this.coeff = this.q.modInverse(this.p);\n break;\n }\n }\n };\n // RSAKey.prototype.decrypt = RSADecrypt;\n // Return the PKCS#1 RSA decryption of \"ctext\".\n // \"ctext\" is an even-length hex string and the output is a plain string.\n RSAKey.prototype.decrypt = function (ctext) {\n var c = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(ctext, 16);\n var m = this.doPrivate(c);\n if (m == null) {\n return null;\n }\n return pkcs1unpad2(m, (this.n.bitLength() + 7) >> 3);\n };\n // Generate a new random private key B bits long, using public expt E\n RSAKey.prototype.generateAsync = function (B, E, callback) {\n var rng = new _rng__WEBPACK_IMPORTED_MODULE_1__.SecureRandom();\n var qs = B >> 1;\n this.e = parseInt(E, 16);\n var ee = new _jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(E, 16);\n var rsa = this;\n // These functions have non-descript names because they were originally for(;;) loops.\n // I don't know about cryptography to give them better names than loop1-4.\n var loop1 = function () {\n var loop4 = function () {\n if (rsa.p.compareTo(rsa.q) <= 0) {\n var t = rsa.p;\n rsa.p = rsa.q;\n rsa.q = t;\n }\n var p1 = rsa.p.subtract(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE);\n var q1 = rsa.q.subtract(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE);\n var phi = p1.multiply(q1);\n if (phi.gcd(ee).compareTo(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE) == 0) {\n rsa.n = rsa.p.multiply(rsa.q);\n rsa.d = ee.modInverse(phi);\n rsa.dmp1 = rsa.d.mod(p1);\n rsa.dmq1 = rsa.d.mod(q1);\n rsa.coeff = rsa.q.modInverse(rsa.p);\n setTimeout(function () { callback(); }, 0); // escape\n }\n else {\n setTimeout(loop1, 0);\n }\n };\n var loop3 = function () {\n rsa.q = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.nbi)();\n rsa.q.fromNumberAsync(qs, 1, rng, function () {\n rsa.q.subtract(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE).gcda(ee, function (r) {\n if (r.compareTo(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE) == 0 && rsa.q.isProbablePrime(10)) {\n setTimeout(loop4, 0);\n }\n else {\n setTimeout(loop3, 0);\n }\n });\n });\n };\n var loop2 = function () {\n rsa.p = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.nbi)();\n rsa.p.fromNumberAsync(B - qs, 1, rng, function () {\n rsa.p.subtract(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE).gcda(ee, function (r) {\n if (r.compareTo(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE) == 0 && rsa.p.isProbablePrime(10)) {\n setTimeout(loop3, 0);\n }\n else {\n setTimeout(loop2, 0);\n }\n });\n });\n };\n setTimeout(loop2, 0);\n };\n setTimeout(loop1, 0);\n };\n RSAKey.prototype.sign = function (text, digestMethod, digestName) {\n var header = getDigestHeader(digestName);\n var digest = header + digestMethod(text).toString();\n var m = pkcs1pad1(digest, this.n.bitLength() / 4);\n if (m == null) {\n return null;\n }\n var c = this.doPrivate(m);\n if (c == null) {\n return null;\n }\n var h = c.toString(16);\n if ((h.length & 1) == 0) {\n return h;\n }\n else {\n return \"0\" + h;\n }\n };\n RSAKey.prototype.verify = function (text, signature, digestMethod) {\n var c = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(signature, 16);\n var m = this.doPublic(c);\n if (m == null) {\n return null;\n }\n var unpadded = m.toString(16).replace(/^1f+00/, \"\");\n var digest = removeDigestHeader(unpadded);\n return digest == digestMethod(text).toString();\n };\n return RSAKey;\n}());\n\n// Undo PKCS#1 (type 2, random) padding and, if valid, return the plaintext\nfunction pkcs1unpad2(d, n) {\n var b = d.toByteArray();\n var i = 0;\n while (i < b.length && b[i] == 0) {\n ++i;\n }\n if (b.length - i != n - 1 || b[i] != 2) {\n return null;\n }\n ++i;\n while (b[i] != 0) {\n if (++i >= b.length) {\n return null;\n }\n }\n var ret = \"\";\n while (++i < b.length) {\n var c = b[i] & 255;\n if (c < 128) { // utf-8 decode\n ret += String.fromCharCode(c);\n }\n else if ((c > 191) && (c < 224)) {\n ret += String.fromCharCode(((c & 31) << 6) | (b[i + 1] & 63));\n ++i;\n }\n else {\n ret += String.fromCharCode(((c & 15) << 12) | ((b[i + 1] & 63) << 6) | (b[i + 2] & 63));\n i += 2;\n }\n }\n return ret;\n}\n// https://tools.ietf.org/html/rfc3447#page-43\nvar DIGEST_HEADERS = {\n md2: \"3020300c06082a864886f70d020205000410\",\n md5: \"3020300c06082a864886f70d020505000410\",\n sha1: \"3021300906052b0e03021a05000414\",\n sha224: \"302d300d06096086480165030402040500041c\",\n sha256: \"3031300d060960864801650304020105000420\",\n sha384: \"3041300d060960864801650304020205000430\",\n sha512: \"3051300d060960864801650304020305000440\",\n ripemd160: \"3021300906052b2403020105000414\"\n};\nfunction getDigestHeader(name) {\n return DIGEST_HEADERS[name] || \"\";\n}\nfunction removeDigestHeader(str) {\n for (var name_1 in DIGEST_HEADERS) {\n if (DIGEST_HEADERS.hasOwnProperty(name_1)) {\n var header = DIGEST_HEADERS[name_1];\n var len = header.length;\n if (str.substr(0, len) == header) {\n return str.substr(len);\n }\n }\n }\n return str;\n}\n// Return the PKCS#1 RSA encryption of \"text\" as a Base64-encoded string\n// function RSAEncryptB64(text) {\n// var h = this.encrypt(text);\n// if(h) return hex2b64(h); else return null;\n// }\n// public\n// RSAKey.prototype.encrypt_b64 = RSAEncryptB64;\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/jsbn/rsa.js?"); + + /***/ + }), + + /***/ + "./lib/lib/jsbn/util.js": + /*!******************************!*\ + !*** ./lib/lib/jsbn/util.js ***! + \******************************/ + /***/ + ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + + "use strict"; + eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"cbit\": () => (/* binding */ cbit),\n/* harmony export */ \"int2char\": () => (/* binding */ int2char),\n/* harmony export */ \"lbit\": () => (/* binding */ lbit),\n/* harmony export */ \"op_and\": () => (/* binding */ op_and),\n/* harmony export */ \"op_andnot\": () => (/* binding */ op_andnot),\n/* harmony export */ \"op_or\": () => (/* binding */ op_or),\n/* harmony export */ \"op_xor\": () => (/* binding */ op_xor)\n/* harmony export */ });\nvar BI_RM = \"0123456789abcdefghijklmnopqrstuvwxyz\";\nfunction int2char(n) {\n return BI_RM.charAt(n);\n}\n//#region BIT_OPERATIONS\n// (public) this & a\nfunction op_and(x, y) {\n return x & y;\n}\n// (public) this | a\nfunction op_or(x, y) {\n return x | y;\n}\n// (public) this ^ a\nfunction op_xor(x, y) {\n return x ^ y;\n}\n// (public) this & ~a\nfunction op_andnot(x, y) {\n return x & ~y;\n}\n// return index of lowest 1-bit in x, x < 2^31\nfunction lbit(x) {\n if (x == 0) {\n return -1;\n }\n var r = 0;\n if ((x & 0xffff) == 0) {\n x >>= 16;\n r += 16;\n }\n if ((x & 0xff) == 0) {\n x >>= 8;\n r += 8;\n }\n if ((x & 0xf) == 0) {\n x >>= 4;\n r += 4;\n }\n if ((x & 3) == 0) {\n x >>= 2;\n r += 2;\n }\n if ((x & 1) == 0) {\n ++r;\n }\n return r;\n}\n// return number of 1 bits in x\nfunction cbit(x) {\n var r = 0;\n while (x != 0) {\n x &= x - 1;\n ++r;\n }\n return r;\n}\n//#endregion BIT_OPERATIONS\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/jsbn/util.js?"); + + /***/ + }), + + /***/ + "./lib/lib/jsrsasign/asn1-1.0.js": + /*!***************************************!*\ + !*** ./lib/lib/jsrsasign/asn1-1.0.js ***! + \***************************************/ + /***/ + ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + + "use strict"; + eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"KJUR\": () => (/* binding */ KJUR)\n/* harmony export */ });\n/* harmony import */ var _jsbn_jsbn__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsbn/jsbn */ \"./lib/lib/jsbn/jsbn.js\");\n/* harmony import */ var _yahoo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./yahoo */ \"./lib/lib/jsrsasign/yahoo.js\");\n/* asn1-1.0.13.js (c) 2013-2017 Kenji Urushima | kjur.github.com/jsrsasign/license\n */\n/*\n * asn1.js - ASN.1 DER encoder classes\n *\n * Copyright (c) 2013-2017 Kenji Urushima (kenji.urushima@gmail.com)\n *\n * This software is licensed under the terms of the MIT License.\n * https://kjur.github.io/jsrsasign/license\n *\n * The above copyright and license notice shall be\n * included in all copies or substantial portions of the Software.\n */\n\n\n/**\n * @fileOverview\n * @name asn1-1.0.js\n * @author Kenji Urushima kenji.urushima@gmail.com\n * @version asn1 1.0.13 (2017-Jun-02)\n * @since jsrsasign 2.1\n * @license MIT License\n */\n/**\n * kjur's class library name space\n *

    \n * This name space provides following name spaces:\n *

      \n *
    • {@link KJUR.asn1} - ASN.1 primitive hexadecimal encoder
    • \n *
    • {@link KJUR.asn1.x509} - ASN.1 structure for X.509 certificate and CRL
    • \n *
    • {@link KJUR.crypto} - Java Cryptographic Extension(JCE) style MessageDigest/Signature\n * class and utilities
    • \n *
    \n *

    \n * NOTE: Please ignore method summary and document of this namespace. This caused by a bug of jsdoc2.\n * @name KJUR\n * @namespace kjur's class library name space\n */\nvar KJUR = {};\n/**\n * kjur's ASN.1 class library name space\n *

    \n * This is ITU-T X.690 ASN.1 DER encoder class library and\n * class structure and methods is very similar to\n * org.bouncycastle.asn1 package of\n * well known BouncyCaslte Cryptography Library.\n *

    PROVIDING ASN.1 PRIMITIVES

    \n * Here are ASN.1 DER primitive classes.\n *
      \n *
    • 0x01 {@link KJUR.asn1.DERBoolean}
    • \n *
    • 0x02 {@link KJUR.asn1.DERInteger}
    • \n *
    • 0x03 {@link KJUR.asn1.DERBitString}
    • \n *
    • 0x04 {@link KJUR.asn1.DEROctetString}
    • \n *
    • 0x05 {@link KJUR.asn1.DERNull}
    • \n *
    • 0x06 {@link KJUR.asn1.DERObjectIdentifier}
    • \n *
    • 0x0a {@link KJUR.asn1.DEREnumerated}
    • \n *
    • 0x0c {@link KJUR.asn1.DERUTF8String}
    • \n *
    • 0x12 {@link KJUR.asn1.DERNumericString}
    • \n *
    • 0x13 {@link KJUR.asn1.DERPrintableString}
    • \n *
    • 0x14 {@link KJUR.asn1.DERTeletexString}
    • \n *
    • 0x16 {@link KJUR.asn1.DERIA5String}
    • \n *
    • 0x17 {@link KJUR.asn1.DERUTCTime}
    • \n *
    • 0x18 {@link KJUR.asn1.DERGeneralizedTime}
    • \n *
    • 0x30 {@link KJUR.asn1.DERSequence}
    • \n *
    • 0x31 {@link KJUR.asn1.DERSet}
    • \n *
    \n *

    OTHER ASN.1 CLASSES

    \n *
      \n *
    • {@link KJUR.asn1.ASN1Object}
    • \n *
    • {@link KJUR.asn1.DERAbstractString}
    • \n *
    • {@link KJUR.asn1.DERAbstractTime}
    • \n *
    • {@link KJUR.asn1.DERAbstractStructured}
    • \n *
    • {@link KJUR.asn1.DERTaggedObject}
    • \n *
    \n *

    SUB NAME SPACES

    \n *
      \n *
    • {@link KJUR.asn1.cades} - CAdES long term signature format
    • \n *
    • {@link KJUR.asn1.cms} - Cryptographic Message Syntax
    • \n *
    • {@link KJUR.asn1.csr} - Certificate Signing Request (CSR/PKCS#10)
    • \n *
    • {@link KJUR.asn1.tsp} - RFC 3161 Timestamping Protocol Format
    • \n *
    • {@link KJUR.asn1.x509} - RFC 5280 X.509 certificate and CRL
    • \n *
    \n *

    \n * NOTE: Please ignore method summary and document of this namespace.\n * This caused by a bug of jsdoc2.\n * @name KJUR.asn1\n * @namespace\n */\nif (typeof KJUR.asn1 == \"undefined\" || !KJUR.asn1)\n KJUR.asn1 = {};\n/**\n * ASN1 utilities class\n * @name KJUR.asn1.ASN1Util\n * @class ASN1 utilities class\n * @since asn1 1.0.2\n */\nKJUR.asn1.ASN1Util = new function () {\n this.integerToByteHex = function (i) {\n var h = i.toString(16);\n if ((h.length % 2) == 1)\n h = '0' + h;\n return h;\n };\n this.bigIntToMinTwosComplementsHex = function (bigIntegerValue) {\n var h = bigIntegerValue.toString(16);\n if (h.substr(0, 1) != '-') {\n if (h.length % 2 == 1) {\n h = '0' + h;\n }\n else {\n if (!h.match(/^[0-7]/)) {\n h = '00' + h;\n }\n }\n }\n else {\n var hPos = h.substr(1);\n var xorLen = hPos.length;\n if (xorLen % 2 == 1) {\n xorLen += 1;\n }\n else {\n if (!h.match(/^[0-7]/)) {\n xorLen += 2;\n }\n }\n var hMask = '';\n for (var i = 0; i < xorLen; i++) {\n hMask += 'f';\n }\n var biMask = new _jsbn_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(hMask, 16);\n var biNeg = biMask.xor(bigIntegerValue).add(_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE);\n h = biNeg.toString(16).replace(/^-/, '');\n }\n return h;\n };\n /**\n * get PEM string from hexadecimal data and header string\n * @name getPEMStringFromHex\n * @memberOf KJUR.asn1.ASN1Util\n * @function\n * @param {String} dataHex hexadecimal string of PEM body\n * @param {String} pemHeader PEM header string (ex. 'RSA PRIVATE KEY')\n * @return {String} PEM formatted string of input data\n * @description\n * This method converts a hexadecimal string to a PEM string with\n * a specified header. Its line break will be CRLF(\"\\r\\n\").\n * @example\n * var pem = KJUR.asn1.ASN1Util.getPEMStringFromHex('616161', 'RSA PRIVATE KEY');\n * // value of pem will be:\n * -----BEGIN PRIVATE KEY-----\n * YWFh\n * -----END PRIVATE KEY-----\n */\n this.getPEMStringFromHex = function (dataHex, pemHeader) {\n return hextopem(dataHex, pemHeader);\n };\n /**\n * generate ASN1Object specifed by JSON parameters\n * @name newObject\n * @memberOf KJUR.asn1.ASN1Util\n * @function\n * @param {Array} param JSON parameter to generate ASN1Object\n * @return {KJUR.asn1.ASN1Object} generated object\n * @since asn1 1.0.3\n * @description\n * generate any ASN1Object specified by JSON param\n * including ASN.1 primitive or structured.\n * Generally 'param' can be described as follows:\n *
    \n * {TYPE-OF-ASNOBJ: ASN1OBJ-PARAMETER}\n *
    \n * 'TYPE-OF-ASN1OBJ' can be one of following symbols:\n *
      \n *
    • 'bool' - DERBoolean
    • \n *
    • 'int' - DERInteger
    • \n *
    • 'bitstr' - DERBitString
    • \n *
    • 'octstr' - DEROctetString
    • \n *
    • 'null' - DERNull
    • \n *
    • 'oid' - DERObjectIdentifier
    • \n *
    • 'enum' - DEREnumerated
    • \n *
    • 'utf8str' - DERUTF8String
    • \n *
    • 'numstr' - DERNumericString
    • \n *
    • 'prnstr' - DERPrintableString
    • \n *
    • 'telstr' - DERTeletexString
    • \n *
    • 'ia5str' - DERIA5String
    • \n *
    • 'utctime' - DERUTCTime
    • \n *
    • 'gentime' - DERGeneralizedTime
    • \n *
    • 'seq' - DERSequence
    • \n *
    • 'set' - DERSet
    • \n *
    • 'tag' - DERTaggedObject
    • \n *
    \n * @example\n * newObject({'prnstr': 'aaa'});\n * newObject({'seq': [{'int': 3}, {'prnstr': 'aaa'}]})\n * // ASN.1 Tagged Object\n * newObject({'tag': {'tag': 'a1',\n * 'explicit': true,\n * 'obj': {'seq': [{'int': 3}, {'prnstr': 'aaa'}]}}});\n * // more simple representation of ASN.1 Tagged Object\n * newObject({'tag': ['a1',\n * true,\n * {'seq': [\n * {'int': 3},\n * {'prnstr': 'aaa'}]}\n * ]});\n */\n this.newObject = function (param) {\n var _KJUR = KJUR, _KJUR_asn1 = _KJUR.asn1, _DERBoolean = _KJUR_asn1.DERBoolean, _DERInteger = _KJUR_asn1.DERInteger, _DERBitString = _KJUR_asn1.DERBitString, _DEROctetString = _KJUR_asn1.DEROctetString, _DERNull = _KJUR_asn1.DERNull, _DERObjectIdentifier = _KJUR_asn1.DERObjectIdentifier, _DEREnumerated = _KJUR_asn1.DEREnumerated, _DERUTF8String = _KJUR_asn1.DERUTF8String, _DERNumericString = _KJUR_asn1.DERNumericString, _DERPrintableString = _KJUR_asn1.DERPrintableString, _DERTeletexString = _KJUR_asn1.DERTeletexString, _DERIA5String = _KJUR_asn1.DERIA5String, _DERUTCTime = _KJUR_asn1.DERUTCTime, _DERGeneralizedTime = _KJUR_asn1.DERGeneralizedTime, _DERSequence = _KJUR_asn1.DERSequence, _DERSet = _KJUR_asn1.DERSet, _DERTaggedObject = _KJUR_asn1.DERTaggedObject, _newObject = _KJUR_asn1.ASN1Util.newObject;\n var keys = Object.keys(param);\n if (keys.length != 1)\n throw \"key of param shall be only one.\";\n var key = keys[0];\n if (\":bool:int:bitstr:octstr:null:oid:enum:utf8str:numstr:prnstr:telstr:ia5str:utctime:gentime:seq:set:tag:\".indexOf(\":\" + key + \":\") == -1)\n throw \"undefined key: \" + key;\n if (key == \"bool\")\n return new _DERBoolean(param[key]);\n if (key == \"int\")\n return new _DERInteger(param[key]);\n if (key == \"bitstr\")\n return new _DERBitString(param[key]);\n if (key == \"octstr\")\n return new _DEROctetString(param[key]);\n if (key == \"null\")\n return new _DERNull(param[key]);\n if (key == \"oid\")\n return new _DERObjectIdentifier(param[key]);\n if (key == \"enum\")\n return new _DEREnumerated(param[key]);\n if (key == \"utf8str\")\n return new _DERUTF8String(param[key]);\n if (key == \"numstr\")\n return new _DERNumericString(param[key]);\n if (key == \"prnstr\")\n return new _DERPrintableString(param[key]);\n if (key == \"telstr\")\n return new _DERTeletexString(param[key]);\n if (key == \"ia5str\")\n return new _DERIA5String(param[key]);\n if (key == \"utctime\")\n return new _DERUTCTime(param[key]);\n if (key == \"gentime\")\n return new _DERGeneralizedTime(param[key]);\n if (key == \"seq\") {\n var paramList = param[key];\n var a = [];\n for (var i = 0; i < paramList.length; i++) {\n var asn1Obj = _newObject(paramList[i]);\n a.push(asn1Obj);\n }\n return new _DERSequence({ 'array': a });\n }\n if (key == \"set\") {\n var paramList = param[key];\n var a = [];\n for (var i = 0; i < paramList.length; i++) {\n var asn1Obj = _newObject(paramList[i]);\n a.push(asn1Obj);\n }\n return new _DERSet({ 'array': a });\n }\n if (key == \"tag\") {\n var tagParam = param[key];\n if (Object.prototype.toString.call(tagParam) === '[object Array]' &&\n tagParam.length == 3) {\n var obj = _newObject(tagParam[2]);\n return new _DERTaggedObject({ tag: tagParam[0],\n explicit: tagParam[1],\n obj: obj });\n }\n else {\n var newParam = {};\n if (tagParam.explicit !== undefined)\n newParam.explicit = tagParam.explicit;\n if (tagParam.tag !== undefined)\n newParam.tag = tagParam.tag;\n if (tagParam.obj === undefined)\n throw \"obj shall be specified for 'tag'.\";\n newParam.obj = _newObject(tagParam.obj);\n return new _DERTaggedObject(newParam);\n }\n }\n };\n /**\n * get encoded hexadecimal string of ASN1Object specifed by JSON parameters\n * @name jsonToASN1HEX\n * @memberOf KJUR.asn1.ASN1Util\n * @function\n * @param {Array} param JSON parameter to generate ASN1Object\n * @return hexadecimal string of ASN1Object\n * @since asn1 1.0.4\n * @description\n * As for ASN.1 object representation of JSON object,\n * please see {@link newObject}.\n * @example\n * jsonToASN1HEX({'prnstr': 'aaa'});\n */\n this.jsonToASN1HEX = function (param) {\n var asn1Obj = this.newObject(param);\n return asn1Obj.getEncodedHex();\n };\n};\n/**\n * get dot noted oid number string from hexadecimal value of OID\n * @name oidHexToInt\n * @memberOf KJUR.asn1.ASN1Util\n * @function\n * @param {String} hex hexadecimal value of object identifier\n * @return {String} dot noted string of object identifier\n * @since jsrsasign 4.8.3 asn1 1.0.7\n * @description\n * This static method converts from hexadecimal string representation of\n * ASN.1 value of object identifier to oid number string.\n * @example\n * KJUR.asn1.ASN1Util.oidHexToInt('550406') → \"2.5.4.6\"\n */\nKJUR.asn1.ASN1Util.oidHexToInt = function (hex) {\n var s = \"\";\n var i01 = parseInt(hex.substr(0, 2), 16);\n var i0 = Math.floor(i01 / 40);\n var i1 = i01 % 40;\n var s = i0 + \".\" + i1;\n var binbuf = \"\";\n for (var i = 2; i < hex.length; i += 2) {\n var value = parseInt(hex.substr(i, 2), 16);\n var bin = (\"00000000\" + value.toString(2)).slice(-8);\n binbuf = binbuf + bin.substr(1, 7);\n if (bin.substr(0, 1) == \"0\") {\n var bi = new _jsbn_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(binbuf, 2);\n s = s + \".\" + bi.toString(10);\n binbuf = \"\";\n }\n }\n ;\n return s;\n};\n/**\n * get hexadecimal value of object identifier from dot noted oid value\n * @name oidIntToHex\n * @memberOf KJUR.asn1.ASN1Util\n * @function\n * @param {String} oidString dot noted string of object identifier\n * @return {String} hexadecimal value of object identifier\n * @since jsrsasign 4.8.3 asn1 1.0.7\n * @description\n * This static method converts from object identifier value string.\n * to hexadecimal string representation of it.\n * @example\n * KJUR.asn1.ASN1Util.oidIntToHex(\"2.5.4.6\") → \"550406\"\n */\nKJUR.asn1.ASN1Util.oidIntToHex = function (oidString) {\n var itox = function (i) {\n var h = i.toString(16);\n if (h.length == 1)\n h = '0' + h;\n return h;\n };\n var roidtox = function (roid) {\n var h = '';\n var bi = new _jsbn_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(roid, 10);\n var b = bi.toString(2);\n var padLen = 7 - b.length % 7;\n if (padLen == 7)\n padLen = 0;\n var bPad = '';\n for (var i = 0; i < padLen; i++)\n bPad += '0';\n b = bPad + b;\n for (var i = 0; i < b.length - 1; i += 7) {\n var b8 = b.substr(i, 7);\n if (i != b.length - 7)\n b8 = '1' + b8;\n h += itox(parseInt(b8, 2));\n }\n return h;\n };\n if (!oidString.match(/^[0-9.]+$/)) {\n throw \"malformed oid string: \" + oidString;\n }\n var h = '';\n var a = oidString.split('.');\n var i0 = parseInt(a[0]) * 40 + parseInt(a[1]);\n h += itox(i0);\n a.splice(0, 2);\n for (var i = 0; i < a.length; i++) {\n h += roidtox(a[i]);\n }\n return h;\n};\n// ********************************************************************\n// Abstract ASN.1 Classes\n// ********************************************************************\n// ********************************************************************\n/**\n * base class for ASN.1 DER encoder object\n * @name KJUR.asn1.ASN1Object\n * @class base class for ASN.1 DER encoder object\n * @property {Boolean} isModified flag whether internal data was changed\n * @property {String} hTLV hexadecimal string of ASN.1 TLV\n * @property {String} hT hexadecimal string of ASN.1 TLV tag(T)\n * @property {String} hL hexadecimal string of ASN.1 TLV length(L)\n * @property {String} hV hexadecimal string of ASN.1 TLV value(V)\n * @description\n */\nKJUR.asn1.ASN1Object = function () {\n var isModified = true;\n var hTLV = null;\n var hT = '00';\n var hL = '00';\n var hV = '';\n /**\n * get hexadecimal ASN.1 TLV length(L) bytes from TLV value(V)\n * @name getLengthHexFromValue\n * @memberOf KJUR.asn1.ASN1Object#\n * @function\n * @return {String} hexadecimal string of ASN.1 TLV length(L)\n */\n this.getLengthHexFromValue = function () {\n if (typeof this.hV == \"undefined\" || this.hV == null) {\n throw \"this.hV is null or undefined.\";\n }\n if (this.hV.length % 2 == 1) {\n throw \"value hex must be even length: n=\" + hV.length + \",v=\" + this.hV;\n }\n var n = this.hV.length / 2;\n var hN = n.toString(16);\n if (hN.length % 2 == 1) {\n hN = \"0\" + hN;\n }\n if (n < 128) {\n return hN;\n }\n else {\n var hNlen = hN.length / 2;\n if (hNlen > 15) {\n throw \"ASN.1 length too long to represent by 8x: n = \" + n.toString(16);\n }\n var head = 128 + hNlen;\n return head.toString(16) + hN;\n }\n };\n /**\n * get hexadecimal string of ASN.1 TLV bytes\n * @name getEncodedHex\n * @memberOf KJUR.asn1.ASN1Object#\n * @function\n * @return {String} hexadecimal string of ASN.1 TLV\n */\n this.getEncodedHex = function () {\n if (this.hTLV == null || this.isModified) {\n this.hV = this.getFreshValueHex();\n this.hL = this.getLengthHexFromValue();\n this.hTLV = this.hT + this.hL + this.hV;\n this.isModified = false;\n //alert(\"first time: \" + this.hTLV);\n }\n return this.hTLV;\n };\n /**\n * get hexadecimal string of ASN.1 TLV value(V) bytes\n * @name getValueHex\n * @memberOf KJUR.asn1.ASN1Object#\n * @function\n * @return {String} hexadecimal string of ASN.1 TLV value(V) bytes\n */\n this.getValueHex = function () {\n this.getEncodedHex();\n return this.hV;\n };\n this.getFreshValueHex = function () {\n return '';\n };\n};\n// == BEGIN DERAbstractString ================================================\n/**\n * base class for ASN.1 DER string classes\n * @name KJUR.asn1.DERAbstractString\n * @class base class for ASN.1 DER string classes\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @property {String} s internal string of value\n * @extends KJUR.asn1.ASN1Object\n * @description\n *
    \n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n *
      \n *
    • str - specify initial ASN.1 value(V) by a string
    • \n *
    • hex - specify initial ASN.1 value(V) by a hexadecimal string
    • \n *
    \n * NOTE: 'params' can be omitted.\n */\nKJUR.asn1.DERAbstractString = function (params) {\n KJUR.asn1.DERAbstractString.superclass.constructor.call(this);\n var s = null;\n var hV = null;\n /**\n * get string value of this string object\n * @name getString\n * @memberOf KJUR.asn1.DERAbstractString#\n * @function\n * @return {String} string value of this string object\n */\n this.getString = function () {\n return this.s;\n };\n /**\n * set value by a string\n * @name setString\n * @memberOf KJUR.asn1.DERAbstractString#\n * @function\n * @param {String} newS value by a string to set\n */\n this.setString = function (newS) {\n this.hTLV = null;\n this.isModified = true;\n this.s = newS;\n this.hV = stohex(this.s);\n };\n /**\n * set value by a hexadecimal string\n * @name setStringHex\n * @memberOf KJUR.asn1.DERAbstractString#\n * @function\n * @param {String} newHexString value by a hexadecimal string to set\n */\n this.setStringHex = function (newHexString) {\n this.hTLV = null;\n this.isModified = true;\n this.s = null;\n this.hV = newHexString;\n };\n this.getFreshValueHex = function () {\n return this.hV;\n };\n if (typeof params != \"undefined\") {\n if (typeof params == \"string\") {\n this.setString(params);\n }\n else if (typeof params['str'] != \"undefined\") {\n this.setString(params['str']);\n }\n else if (typeof params['hex'] != \"undefined\") {\n this.setStringHex(params['hex']);\n }\n }\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERAbstractString, KJUR.asn1.ASN1Object);\n// == END DERAbstractString ================================================\n// == BEGIN DERAbstractTime ==================================================\n/**\n * base class for ASN.1 DER Generalized/UTCTime class\n * @name KJUR.asn1.DERAbstractTime\n * @class base class for ASN.1 DER Generalized/UTCTime class\n * @param {Array} params associative array of parameters (ex. {'str': '130430235959Z'})\n * @extends KJUR.asn1.ASN1Object\n * @description\n * @see KJUR.asn1.ASN1Object - superclass\n */\nKJUR.asn1.DERAbstractTime = function (params) {\n KJUR.asn1.DERAbstractTime.superclass.constructor.call(this);\n var s = null;\n var date = null;\n // --- PRIVATE METHODS --------------------\n this.localDateToUTC = function (d) {\n utc = d.getTime() + (d.getTimezoneOffset() * 60000);\n var utcDate = new Date(utc);\n return utcDate;\n };\n /*\n * format date string by Data object\n * @name formatDate\n * @memberOf KJUR.asn1.AbstractTime;\n * @param {Date} dateObject\n * @param {string} type 'utc' or 'gen'\n * @param {boolean} withMillis flag for with millisections or not\n * @description\n * 'withMillis' flag is supported from asn1 1.0.6.\n */\n this.formatDate = function (dateObject, type, withMillis) {\n var pad = this.zeroPadding;\n var d = this.localDateToUTC(dateObject);\n var year = String(d.getFullYear());\n if (type == 'utc')\n year = year.substr(2, 2);\n var month = pad(String(d.getMonth() + 1), 2);\n var day = pad(String(d.getDate()), 2);\n var hour = pad(String(d.getHours()), 2);\n var min = pad(String(d.getMinutes()), 2);\n var sec = pad(String(d.getSeconds()), 2);\n var s = year + month + day + hour + min + sec;\n if (withMillis === true) {\n var millis = d.getMilliseconds();\n if (millis != 0) {\n var sMillis = pad(String(millis), 3);\n sMillis = sMillis.replace(/[0]+$/, \"\");\n s = s + \".\" + sMillis;\n }\n }\n return s + \"Z\";\n };\n this.zeroPadding = function (s, len) {\n if (s.length >= len)\n return s;\n return new Array(len - s.length + 1).join('0') + s;\n };\n // --- PUBLIC METHODS --------------------\n /**\n * get string value of this string object\n * @name getString\n * @memberOf KJUR.asn1.DERAbstractTime#\n * @function\n * @return {String} string value of this time object\n */\n this.getString = function () {\n return this.s;\n };\n /**\n * set value by a string\n * @name setString\n * @memberOf KJUR.asn1.DERAbstractTime#\n * @function\n * @param {String} newS value by a string to set such like \"130430235959Z\"\n */\n this.setString = function (newS) {\n this.hTLV = null;\n this.isModified = true;\n this.s = newS;\n this.hV = stohex(newS);\n };\n /**\n * set value by a Date object\n * @name setByDateValue\n * @memberOf KJUR.asn1.DERAbstractTime#\n * @function\n * @param {Integer} year year of date (ex. 2013)\n * @param {Integer} month month of date between 1 and 12 (ex. 12)\n * @param {Integer} day day of month\n * @param {Integer} hour hours of date\n * @param {Integer} min minutes of date\n * @param {Integer} sec seconds of date\n */\n this.setByDateValue = function (year, month, day, hour, min, sec) {\n var dateObject = new Date(Date.UTC(year, month - 1, day, hour, min, sec, 0));\n this.setByDate(dateObject);\n };\n this.getFreshValueHex = function () {\n return this.hV;\n };\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERAbstractTime, KJUR.asn1.ASN1Object);\n// == END DERAbstractTime ==================================================\n// == BEGIN DERAbstractStructured ============================================\n/**\n * base class for ASN.1 DER structured class\n * @name KJUR.asn1.DERAbstractStructured\n * @class base class for ASN.1 DER structured class\n * @property {Array} asn1Array internal array of ASN1Object\n * @extends KJUR.asn1.ASN1Object\n * @description\n * @see KJUR.asn1.ASN1Object - superclass\n */\nKJUR.asn1.DERAbstractStructured = function (params) {\n KJUR.asn1.DERAbstractString.superclass.constructor.call(this);\n var asn1Array = null;\n /**\n * set value by array of ASN1Object\n * @name setByASN1ObjectArray\n * @memberOf KJUR.asn1.DERAbstractStructured#\n * @function\n * @param {array} asn1ObjectArray array of ASN1Object to set\n */\n this.setByASN1ObjectArray = function (asn1ObjectArray) {\n this.hTLV = null;\n this.isModified = true;\n this.asn1Array = asn1ObjectArray;\n };\n /**\n * append an ASN1Object to internal array\n * @name appendASN1Object\n * @memberOf KJUR.asn1.DERAbstractStructured#\n * @function\n * @param {ASN1Object} asn1Object to add\n */\n this.appendASN1Object = function (asn1Object) {\n this.hTLV = null;\n this.isModified = true;\n this.asn1Array.push(asn1Object);\n };\n this.asn1Array = new Array();\n if (typeof params != \"undefined\") {\n if (typeof params['array'] != \"undefined\") {\n this.asn1Array = params['array'];\n }\n }\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERAbstractStructured, KJUR.asn1.ASN1Object);\n// ********************************************************************\n// ASN.1 Object Classes\n// ********************************************************************\n// ********************************************************************\n/**\n * class for ASN.1 DER Boolean\n * @name KJUR.asn1.DERBoolean\n * @class class for ASN.1 DER Boolean\n * @extends KJUR.asn1.ASN1Object\n * @description\n * @see KJUR.asn1.ASN1Object - superclass\n */\nKJUR.asn1.DERBoolean = function () {\n KJUR.asn1.DERBoolean.superclass.constructor.call(this);\n this.hT = \"01\";\n this.hTLV = \"0101ff\";\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERBoolean, KJUR.asn1.ASN1Object);\n// ********************************************************************\n/**\n * class for ASN.1 DER Integer\n * @name KJUR.asn1.DERInteger\n * @class class for ASN.1 DER Integer\n * @extends KJUR.asn1.ASN1Object\n * @description\n *
    \n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n *
      \n *
    • int - specify initial ASN.1 value(V) by integer value
    • \n *
    • bigint - specify initial ASN.1 value(V) by BigInteger object
    • \n *
    • hex - specify initial ASN.1 value(V) by a hexadecimal string
    • \n *
    \n * NOTE: 'params' can be omitted.\n */\nKJUR.asn1.DERInteger = function (params) {\n KJUR.asn1.DERInteger.superclass.constructor.call(this);\n this.hT = \"02\";\n /**\n * set value by Tom Wu's BigInteger object\n * @name setByBigInteger\n * @memberOf KJUR.asn1.DERInteger#\n * @function\n * @param {BigInteger} bigIntegerValue to set\n */\n this.setByBigInteger = function (bigIntegerValue) {\n this.hTLV = null;\n this.isModified = true;\n this.hV = KJUR.asn1.ASN1Util.bigIntToMinTwosComplementsHex(bigIntegerValue);\n };\n /**\n * set value by integer value\n * @name setByInteger\n * @memberOf KJUR.asn1.DERInteger\n * @function\n * @param {Integer} integer value to set\n */\n this.setByInteger = function (intValue) {\n var bi = new _jsbn_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(String(intValue), 10);\n this.setByBigInteger(bi);\n };\n /**\n * set value by integer value\n * @name setValueHex\n * @memberOf KJUR.asn1.DERInteger#\n * @function\n * @param {String} hexadecimal string of integer value\n * @description\n *
    \n * NOTE: Value shall be represented by minimum octet length of\n * two's complement representation.\n * @example\n * new KJUR.asn1.DERInteger(123);\n * new KJUR.asn1.DERInteger({'int': 123});\n * new KJUR.asn1.DERInteger({'hex': '1fad'});\n */\n this.setValueHex = function (newHexString) {\n this.hV = newHexString;\n };\n this.getFreshValueHex = function () {\n return this.hV;\n };\n if (typeof params != \"undefined\") {\n if (typeof params['bigint'] != \"undefined\") {\n this.setByBigInteger(params['bigint']);\n }\n else if (typeof params['int'] != \"undefined\") {\n this.setByInteger(params['int']);\n }\n else if (typeof params == \"number\") {\n this.setByInteger(params);\n }\n else if (typeof params['hex'] != \"undefined\") {\n this.setValueHex(params['hex']);\n }\n }\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERInteger, KJUR.asn1.ASN1Object);\n// ********************************************************************\n/**\n * class for ASN.1 DER encoded BitString primitive\n * @name KJUR.asn1.DERBitString\n * @class class for ASN.1 DER encoded BitString primitive\n * @extends KJUR.asn1.ASN1Object\n * @description\n *
    \n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n *
      \n *
    • bin - specify binary string (ex. '10111')
    • \n *
    • array - specify array of boolean (ex. [true,false,true,true])
    • \n *
    • hex - specify hexadecimal string of ASN.1 value(V) including unused bits
    • \n *
    • obj - specify {@link KJUR.asn1.ASN1Util.newObject}\n * argument for \"BitString encapsulates\" structure.
    • \n *
    \n * NOTE1: 'params' can be omitted.
    \n * NOTE2: 'obj' parameter have been supported since\n * asn1 1.0.11, jsrsasign 6.1.1 (2016-Sep-25).
    \n * @example\n * // default constructor\n * o = new KJUR.asn1.DERBitString();\n * // initialize with binary string\n * o = new KJUR.asn1.DERBitString({bin: \"1011\"});\n * // initialize with boolean array\n * o = new KJUR.asn1.DERBitString({array: [true,false,true,true]});\n * // initialize with hexadecimal string (04 is unused bits)\n * o = new KJUR.asn1.DEROctetString({hex: \"04bac0\"});\n * // initialize with ASN1Util.newObject argument for encapsulated\n * o = new KJUR.asn1.DERBitString({obj: {seq: [{int: 3}, {prnstr: 'aaa'}]}});\n * // above generates a ASN.1 data like this:\n * // BIT STRING, encapsulates {\n * // SEQUENCE {\n * // INTEGER 3\n * // PrintableString 'aaa'\n * // }\n * // }\n */\nKJUR.asn1.DERBitString = function (params) {\n if (params !== undefined && typeof params.obj !== \"undefined\") {\n var o = KJUR.asn1.ASN1Util.newObject(params.obj);\n params.hex = \"00\" + o.getEncodedHex();\n }\n KJUR.asn1.DERBitString.superclass.constructor.call(this);\n this.hT = \"03\";\n /**\n * set ASN.1 value(V) by a hexadecimal string including unused bits\n * @name setHexValueIncludingUnusedBits\n * @memberOf KJUR.asn1.DERBitString#\n * @function\n * @param {String} newHexStringIncludingUnusedBits\n */\n this.setHexValueIncludingUnusedBits = function (newHexStringIncludingUnusedBits) {\n this.hTLV = null;\n this.isModified = true;\n this.hV = newHexStringIncludingUnusedBits;\n };\n /**\n * set ASN.1 value(V) by unused bit and hexadecimal string of value\n * @name setUnusedBitsAndHexValue\n * @memberOf KJUR.asn1.DERBitString#\n * @function\n * @param {Integer} unusedBits\n * @param {String} hValue\n */\n this.setUnusedBitsAndHexValue = function (unusedBits, hValue) {\n if (unusedBits < 0 || 7 < unusedBits) {\n throw \"unused bits shall be from 0 to 7: u = \" + unusedBits;\n }\n var hUnusedBits = \"0\" + unusedBits;\n this.hTLV = null;\n this.isModified = true;\n this.hV = hUnusedBits + hValue;\n };\n /**\n * set ASN.1 DER BitString by binary string
    \n * @name setByBinaryString\n * @memberOf KJUR.asn1.DERBitString#\n * @function\n * @param {String} binaryString binary value string (i.e. '10111')\n * @description\n * Its unused bits will be calculated automatically by length of\n * 'binaryValue'.
    \n * NOTE: Trailing zeros '0' will be ignored.\n * @example\n * o = new KJUR.asn1.DERBitString();\n * o.setByBooleanArray(\"01011\");\n */\n this.setByBinaryString = function (binaryString) {\n binaryString = binaryString.replace(/0+$/, '');\n var unusedBits = 8 - binaryString.length % 8;\n if (unusedBits == 8)\n unusedBits = 0;\n for (var i = 0; i <= unusedBits; i++) {\n binaryString += '0';\n }\n var h = '';\n for (var i = 0; i < binaryString.length - 1; i += 8) {\n var b = binaryString.substr(i, 8);\n var x = parseInt(b, 2).toString(16);\n if (x.length == 1)\n x = '0' + x;\n h += x;\n }\n this.hTLV = null;\n this.isModified = true;\n this.hV = '0' + unusedBits + h;\n };\n /**\n * set ASN.1 TLV value(V) by an array of boolean
    \n * @name setByBooleanArray\n * @memberOf KJUR.asn1.DERBitString#\n * @function\n * @param {array} booleanArray array of boolean (ex. [true, false, true])\n * @description\n * NOTE: Trailing falses will be ignored in the ASN.1 DER Object.\n * @example\n * o = new KJUR.asn1.DERBitString();\n * o.setByBooleanArray([false, true, false, true, true]);\n */\n this.setByBooleanArray = function (booleanArray) {\n var s = '';\n for (var i = 0; i < booleanArray.length; i++) {\n if (booleanArray[i] == true) {\n s += '1';\n }\n else {\n s += '0';\n }\n }\n this.setByBinaryString(s);\n };\n /**\n * generate an array of falses with specified length
    \n * @name newFalseArray\n * @memberOf KJUR.asn1.DERBitString\n * @function\n * @param {Integer} nLength length of array to generate\n * @return {array} array of boolean falses\n * @description\n * This static method may be useful to initialize boolean array.\n * @example\n * o = new KJUR.asn1.DERBitString();\n * o.newFalseArray(3) → [false, false, false]\n */\n this.newFalseArray = function (nLength) {\n var a = new Array(nLength);\n for (var i = 0; i < nLength; i++) {\n a[i] = false;\n }\n return a;\n };\n this.getFreshValueHex = function () {\n return this.hV;\n };\n if (typeof params != \"undefined\") {\n if (typeof params == \"string\" && params.toLowerCase().match(/^[0-9a-f]+$/)) {\n this.setHexValueIncludingUnusedBits(params);\n }\n else if (typeof params['hex'] != \"undefined\") {\n this.setHexValueIncludingUnusedBits(params['hex']);\n }\n else if (typeof params['bin'] != \"undefined\") {\n this.setByBinaryString(params['bin']);\n }\n else if (typeof params['array'] != \"undefined\") {\n this.setByBooleanArray(params['array']);\n }\n }\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERBitString, KJUR.asn1.ASN1Object);\n// ********************************************************************\n/**\n * class for ASN.1 DER OctetString
    \n * @name KJUR.asn1.DEROctetString\n * @class class for ASN.1 DER OctetString\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @extends KJUR.asn1.DERAbstractString\n * @description\n * This class provides ASN.1 OctetString simple type.
    \n * Supported \"params\" attributes are:\n *
      \n *
    • str - to set a string as a value
    • \n *
    • hex - to set a hexadecimal string as a value
    • \n *
    • obj - to set a encapsulated ASN.1 value by JSON object\n * which is defined in {@link KJUR.asn1.ASN1Util.newObject}
    • \n *
    \n * NOTE: A parameter 'obj' have been supported\n * for \"OCTET STRING, encapsulates\" structure.\n * since asn1 1.0.11, jsrsasign 6.1.1 (2016-Sep-25).\n * @see KJUR.asn1.DERAbstractString - superclass\n * @example\n * // default constructor\n * o = new KJUR.asn1.DEROctetString();\n * // initialize with string\n * o = new KJUR.asn1.DEROctetString({str: \"aaa\"});\n * // initialize with hexadecimal string\n * o = new KJUR.asn1.DEROctetString({hex: \"616161\"});\n * // initialize with ASN1Util.newObject argument\n * o = new KJUR.asn1.DEROctetString({obj: {seq: [{int: 3}, {prnstr: 'aaa'}]}});\n * // above generates a ASN.1 data like this:\n * // OCTET STRING, encapsulates {\n * // SEQUENCE {\n * // INTEGER 3\n * // PrintableString 'aaa'\n * // }\n * // }\n */\nKJUR.asn1.DEROctetString = function (params) {\n if (params !== undefined && typeof params.obj !== \"undefined\") {\n var o = KJUR.asn1.ASN1Util.newObject(params.obj);\n params.hex = o.getEncodedHex();\n }\n KJUR.asn1.DEROctetString.superclass.constructor.call(this, params);\n this.hT = \"04\";\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DEROctetString, KJUR.asn1.DERAbstractString);\n// ********************************************************************\n/**\n * class for ASN.1 DER Null\n * @name KJUR.asn1.DERNull\n * @class class for ASN.1 DER Null\n * @extends KJUR.asn1.ASN1Object\n * @description\n * @see KJUR.asn1.ASN1Object - superclass\n */\nKJUR.asn1.DERNull = function () {\n KJUR.asn1.DERNull.superclass.constructor.call(this);\n this.hT = \"05\";\n this.hTLV = \"0500\";\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERNull, KJUR.asn1.ASN1Object);\n// ********************************************************************\n/**\n * class for ASN.1 DER ObjectIdentifier\n * @name KJUR.asn1.DERObjectIdentifier\n * @class class for ASN.1 DER ObjectIdentifier\n * @param {Array} params associative array of parameters (ex. {'oid': '2.5.4.5'})\n * @extends KJUR.asn1.ASN1Object\n * @description\n *
    \n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n *
      \n *
    • oid - specify initial ASN.1 value(V) by a oid string (ex. 2.5.4.13)
    • \n *
    • hex - specify initial ASN.1 value(V) by a hexadecimal string
    • \n *
    \n * NOTE: 'params' can be omitted.\n */\nKJUR.asn1.DERObjectIdentifier = function (params) {\n var itox = function (i) {\n var h = i.toString(16);\n if (h.length == 1)\n h = '0' + h;\n return h;\n };\n var roidtox = function (roid) {\n var h = '';\n var bi = new _jsbn_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(roid, 10);\n var b = bi.toString(2);\n var padLen = 7 - b.length % 7;\n if (padLen == 7)\n padLen = 0;\n var bPad = '';\n for (var i = 0; i < padLen; i++)\n bPad += '0';\n b = bPad + b;\n for (var i = 0; i < b.length - 1; i += 7) {\n var b8 = b.substr(i, 7);\n if (i != b.length - 7)\n b8 = '1' + b8;\n h += itox(parseInt(b8, 2));\n }\n return h;\n };\n KJUR.asn1.DERObjectIdentifier.superclass.constructor.call(this);\n this.hT = \"06\";\n /**\n * set value by a hexadecimal string\n * @name setValueHex\n * @memberOf KJUR.asn1.DERObjectIdentifier#\n * @function\n * @param {String} newHexString hexadecimal value of OID bytes\n */\n this.setValueHex = function (newHexString) {\n this.hTLV = null;\n this.isModified = true;\n this.s = null;\n this.hV = newHexString;\n };\n /**\n * set value by a OID string
    \n * @name setValueOidString\n * @memberOf KJUR.asn1.DERObjectIdentifier#\n * @function\n * @param {String} oidString OID string (ex. 2.5.4.13)\n * @example\n * o = new KJUR.asn1.DERObjectIdentifier();\n * o.setValueOidString(\"2.5.4.13\");\n */\n this.setValueOidString = function (oidString) {\n if (!oidString.match(/^[0-9.]+$/)) {\n throw \"malformed oid string: \" + oidString;\n }\n var h = '';\n var a = oidString.split('.');\n var i0 = parseInt(a[0]) * 40 + parseInt(a[1]);\n h += itox(i0);\n a.splice(0, 2);\n for (var i = 0; i < a.length; i++) {\n h += roidtox(a[i]);\n }\n this.hTLV = null;\n this.isModified = true;\n this.s = null;\n this.hV = h;\n };\n /**\n * set value by a OID name\n * @name setValueName\n * @memberOf KJUR.asn1.DERObjectIdentifier#\n * @function\n * @param {String} oidName OID name (ex. 'serverAuth')\n * @since 1.0.1\n * @description\n * OID name shall be defined in 'KJUR.asn1.x509.OID.name2oidList'.\n * Otherwise raise error.\n * @example\n * o = new KJUR.asn1.DERObjectIdentifier();\n * o.setValueName(\"serverAuth\");\n */\n this.setValueName = function (oidName) {\n var oid = KJUR.asn1.x509.OID.name2oid(oidName);\n if (oid !== '') {\n this.setValueOidString(oid);\n }\n else {\n throw \"DERObjectIdentifier oidName undefined: \" + oidName;\n }\n };\n this.getFreshValueHex = function () {\n return this.hV;\n };\n if (params !== undefined) {\n if (typeof params === \"string\") {\n if (params.match(/^[0-2].[0-9.]+$/)) {\n this.setValueOidString(params);\n }\n else {\n this.setValueName(params);\n }\n }\n else if (params.oid !== undefined) {\n this.setValueOidString(params.oid);\n }\n else if (params.hex !== undefined) {\n this.setValueHex(params.hex);\n }\n else if (params.name !== undefined) {\n this.setValueName(params.name);\n }\n }\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERObjectIdentifier, KJUR.asn1.ASN1Object);\n// ********************************************************************\n/**\n * class for ASN.1 DER Enumerated\n * @name KJUR.asn1.DEREnumerated\n * @class class for ASN.1 DER Enumerated\n * @extends KJUR.asn1.ASN1Object\n * @description\n *
    \n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n *
      \n *
    • int - specify initial ASN.1 value(V) by integer value
    • \n *
    • hex - specify initial ASN.1 value(V) by a hexadecimal string
    • \n *
    \n * NOTE: 'params' can be omitted.\n * @example\n * new KJUR.asn1.DEREnumerated(123);\n * new KJUR.asn1.DEREnumerated({int: 123});\n * new KJUR.asn1.DEREnumerated({hex: '1fad'});\n */\nKJUR.asn1.DEREnumerated = function (params) {\n KJUR.asn1.DEREnumerated.superclass.constructor.call(this);\n this.hT = \"0a\";\n /**\n * set value by Tom Wu's BigInteger object\n * @name setByBigInteger\n * @memberOf KJUR.asn1.DEREnumerated#\n * @function\n * @param {BigInteger} bigIntegerValue to set\n */\n this.setByBigInteger = function (bigIntegerValue) {\n this.hTLV = null;\n this.isModified = true;\n this.hV = KJUR.asn1.ASN1Util.bigIntToMinTwosComplementsHex(bigIntegerValue);\n };\n /**\n * set value by integer value\n * @name setByInteger\n * @memberOf KJUR.asn1.DEREnumerated#\n * @function\n * @param {Integer} integer value to set\n */\n this.setByInteger = function (intValue) {\n var bi = new _jsbn_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(String(intValue), 10);\n this.setByBigInteger(bi);\n };\n /**\n * set value by integer value\n * @name setValueHex\n * @memberOf KJUR.asn1.DEREnumerated#\n * @function\n * @param {String} hexadecimal string of integer value\n * @description\n *
    \n * NOTE: Value shall be represented by minimum octet length of\n * two's complement representation.\n */\n this.setValueHex = function (newHexString) {\n this.hV = newHexString;\n };\n this.getFreshValueHex = function () {\n return this.hV;\n };\n if (typeof params != \"undefined\") {\n if (typeof params['int'] != \"undefined\") {\n this.setByInteger(params['int']);\n }\n else if (typeof params == \"number\") {\n this.setByInteger(params);\n }\n else if (typeof params['hex'] != \"undefined\") {\n this.setValueHex(params['hex']);\n }\n }\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DEREnumerated, KJUR.asn1.ASN1Object);\n// ********************************************************************\n/**\n * class for ASN.1 DER UTF8String\n * @name KJUR.asn1.DERUTF8String\n * @class class for ASN.1 DER UTF8String\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @extends KJUR.asn1.DERAbstractString\n * @description\n * @see KJUR.asn1.DERAbstractString - superclass\n */\nKJUR.asn1.DERUTF8String = function (params) {\n KJUR.asn1.DERUTF8String.superclass.constructor.call(this, params);\n this.hT = \"0c\";\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERUTF8String, KJUR.asn1.DERAbstractString);\n// ********************************************************************\n/**\n * class for ASN.1 DER NumericString\n * @name KJUR.asn1.DERNumericString\n * @class class for ASN.1 DER NumericString\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @extends KJUR.asn1.DERAbstractString\n * @description\n * @see KJUR.asn1.DERAbstractString - superclass\n */\nKJUR.asn1.DERNumericString = function (params) {\n KJUR.asn1.DERNumericString.superclass.constructor.call(this, params);\n this.hT = \"12\";\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERNumericString, KJUR.asn1.DERAbstractString);\n// ********************************************************************\n/**\n * class for ASN.1 DER PrintableString\n * @name KJUR.asn1.DERPrintableString\n * @class class for ASN.1 DER PrintableString\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @extends KJUR.asn1.DERAbstractString\n * @description\n * @see KJUR.asn1.DERAbstractString - superclass\n */\nKJUR.asn1.DERPrintableString = function (params) {\n KJUR.asn1.DERPrintableString.superclass.constructor.call(this, params);\n this.hT = \"13\";\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERPrintableString, KJUR.asn1.DERAbstractString);\n// ********************************************************************\n/**\n * class for ASN.1 DER TeletexString\n * @name KJUR.asn1.DERTeletexString\n * @class class for ASN.1 DER TeletexString\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @extends KJUR.asn1.DERAbstractString\n * @description\n * @see KJUR.asn1.DERAbstractString - superclass\n */\nKJUR.asn1.DERTeletexString = function (params) {\n KJUR.asn1.DERTeletexString.superclass.constructor.call(this, params);\n this.hT = \"14\";\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERTeletexString, KJUR.asn1.DERAbstractString);\n// ********************************************************************\n/**\n * class for ASN.1 DER IA5String\n * @name KJUR.asn1.DERIA5String\n * @class class for ASN.1 DER IA5String\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @extends KJUR.asn1.DERAbstractString\n * @description\n * @see KJUR.asn1.DERAbstractString - superclass\n */\nKJUR.asn1.DERIA5String = function (params) {\n KJUR.asn1.DERIA5String.superclass.constructor.call(this, params);\n this.hT = \"16\";\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERIA5String, KJUR.asn1.DERAbstractString);\n// ********************************************************************\n/**\n * class for ASN.1 DER UTCTime\n * @name KJUR.asn1.DERUTCTime\n * @class class for ASN.1 DER UTCTime\n * @param {Array} params associative array of parameters (ex. {'str': '130430235959Z'})\n * @extends KJUR.asn1.DERAbstractTime\n * @description\n *
    \n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n *
      \n *
    • str - specify initial ASN.1 value(V) by a string (ex.'130430235959Z')
    • \n *
    • hex - specify initial ASN.1 value(V) by a hexadecimal string
    • \n *
    • date - specify Date object.
    • \n *
    \n * NOTE: 'params' can be omitted.\n *

    EXAMPLES

    \n * @example\n * d1 = new KJUR.asn1.DERUTCTime();\n * d1.setString('130430125959Z');\n *\n * d2 = new KJUR.asn1.DERUTCTime({'str': '130430125959Z'});\n * d3 = new KJUR.asn1.DERUTCTime({'date': new Date(Date.UTC(2015, 0, 31, 0, 0, 0, 0))});\n * d4 = new KJUR.asn1.DERUTCTime('130430125959Z');\n */\nKJUR.asn1.DERUTCTime = function (params) {\n KJUR.asn1.DERUTCTime.superclass.constructor.call(this, params);\n this.hT = \"17\";\n /**\n * set value by a Date object
    \n * @name setByDate\n * @memberOf KJUR.asn1.DERUTCTime#\n * @function\n * @param {Date} dateObject Date object to set ASN.1 value(V)\n * @example\n * o = new KJUR.asn1.DERUTCTime();\n * o.setByDate(new Date(\"2016/12/31\"));\n */\n this.setByDate = function (dateObject) {\n this.hTLV = null;\n this.isModified = true;\n this.date = dateObject;\n this.s = this.formatDate(this.date, 'utc');\n this.hV = stohex(this.s);\n };\n this.getFreshValueHex = function () {\n if (typeof this.date == \"undefined\" && typeof this.s == \"undefined\") {\n this.date = new Date();\n this.s = this.formatDate(this.date, 'utc');\n this.hV = stohex(this.s);\n }\n return this.hV;\n };\n if (params !== undefined) {\n if (params.str !== undefined) {\n this.setString(params.str);\n }\n else if (typeof params == \"string\" && params.match(/^[0-9]{12}Z$/)) {\n this.setString(params);\n }\n else if (params.hex !== undefined) {\n this.setStringHex(params.hex);\n }\n else if (params.date !== undefined) {\n this.setByDate(params.date);\n }\n }\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERUTCTime, KJUR.asn1.DERAbstractTime);\n// ********************************************************************\n/**\n * class for ASN.1 DER GeneralizedTime\n * @name KJUR.asn1.DERGeneralizedTime\n * @class class for ASN.1 DER GeneralizedTime\n * @param {Array} params associative array of parameters (ex. {'str': '20130430235959Z'})\n * @property {Boolean} withMillis flag to show milliseconds or not\n * @extends KJUR.asn1.DERAbstractTime\n * @description\n *
    \n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n *
      \n *
    • str - specify initial ASN.1 value(V) by a string (ex.'20130430235959Z')
    • \n *
    • hex - specify initial ASN.1 value(V) by a hexadecimal string
    • \n *
    • date - specify Date object.
    • \n *
    • millis - specify flag to show milliseconds (from 1.0.6)
    • \n *
    \n * NOTE1: 'params' can be omitted.\n * NOTE2: 'withMillis' property is supported from asn1 1.0.6.\n */\nKJUR.asn1.DERGeneralizedTime = function (params) {\n KJUR.asn1.DERGeneralizedTime.superclass.constructor.call(this, params);\n this.hT = \"18\";\n this.withMillis = false;\n /**\n * set value by a Date object\n * @name setByDate\n * @memberOf KJUR.asn1.DERGeneralizedTime#\n * @function\n * @param {Date} dateObject Date object to set ASN.1 value(V)\n * @example\n * When you specify UTC time, use 'Date.UTC' method like this:
    \n * o1 = new DERUTCTime();\n * o1.setByDate(date);\n *\n * date = new Date(Date.UTC(2015, 0, 31, 23, 59, 59, 0)); #2015JAN31 23:59:59\n */\n this.setByDate = function (dateObject) {\n this.hTLV = null;\n this.isModified = true;\n this.date = dateObject;\n this.s = this.formatDate(this.date, 'gen', this.withMillis);\n this.hV = stohex(this.s);\n };\n this.getFreshValueHex = function () {\n if (this.date === undefined && this.s === undefined) {\n this.date = new Date();\n this.s = this.formatDate(this.date, 'gen', this.withMillis);\n this.hV = stohex(this.s);\n }\n return this.hV;\n };\n if (params !== undefined) {\n if (params.str !== undefined) {\n this.setString(params.str);\n }\n else if (typeof params == \"string\" && params.match(/^[0-9]{14}Z$/)) {\n this.setString(params);\n }\n else if (params.hex !== undefined) {\n this.setStringHex(params.hex);\n }\n else if (params.date !== undefined) {\n this.setByDate(params.date);\n }\n if (params.millis === true) {\n this.withMillis = true;\n }\n }\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERGeneralizedTime, KJUR.asn1.DERAbstractTime);\n// ********************************************************************\n/**\n * class for ASN.1 DER Sequence\n * @name KJUR.asn1.DERSequence\n * @class class for ASN.1 DER Sequence\n * @extends KJUR.asn1.DERAbstractStructured\n * @description\n *
    \n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n *
      \n *
    • array - specify array of ASN1Object to set elements of content
    • \n *
    \n * NOTE: 'params' can be omitted.\n */\nKJUR.asn1.DERSequence = function (params) {\n KJUR.asn1.DERSequence.superclass.constructor.call(this, params);\n this.hT = \"30\";\n this.getFreshValueHex = function () {\n var h = '';\n for (var i = 0; i < this.asn1Array.length; i++) {\n var asn1Obj = this.asn1Array[i];\n h += asn1Obj.getEncodedHex();\n }\n this.hV = h;\n return this.hV;\n };\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERSequence, KJUR.asn1.DERAbstractStructured);\n// ********************************************************************\n/**\n * class for ASN.1 DER Set\n * @name KJUR.asn1.DERSet\n * @class class for ASN.1 DER Set\n * @extends KJUR.asn1.DERAbstractStructured\n * @description\n *
    \n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n *
      \n *
    • array - specify array of ASN1Object to set elements of content
    • \n *
    • sortflag - flag for sort (default: true). ASN.1 BER is not sorted in 'SET OF'.
    • \n *
    \n * NOTE1: 'params' can be omitted.
    \n * NOTE2: sortflag is supported since 1.0.5.\n */\nKJUR.asn1.DERSet = function (params) {\n KJUR.asn1.DERSet.superclass.constructor.call(this, params);\n this.hT = \"31\";\n this.sortFlag = true; // item shall be sorted only in ASN.1 DER\n this.getFreshValueHex = function () {\n var a = new Array();\n for (var i = 0; i < this.asn1Array.length; i++) {\n var asn1Obj = this.asn1Array[i];\n a.push(asn1Obj.getEncodedHex());\n }\n if (this.sortFlag == true)\n a.sort();\n this.hV = a.join('');\n return this.hV;\n };\n if (typeof params != \"undefined\") {\n if (typeof params.sortflag != \"undefined\" &&\n params.sortflag == false)\n this.sortFlag = false;\n }\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERSet, KJUR.asn1.DERAbstractStructured);\n// ********************************************************************\n/**\n * class for ASN.1 DER TaggedObject\n * @name KJUR.asn1.DERTaggedObject\n * @class class for ASN.1 DER TaggedObject\n * @extends KJUR.asn1.ASN1Object\n * @description\n *
    \n * Parameter 'tagNoNex' is ASN.1 tag(T) value for this object.\n * For example, if you find '[1]' tag in a ASN.1 dump,\n * 'tagNoHex' will be 'a1'.\n *
    \n * As for optional argument 'params' for constructor, you can specify *ANY* of\n * following properties:\n *
      \n *
    • explicit - specify true if this is explicit tag otherwise false\n * (default is 'true').
    • \n *
    • tag - specify tag (default is 'a0' which means [0])
    • \n *
    • obj - specify ASN1Object which is tagged
    • \n *
    \n * @example\n * d1 = new KJUR.asn1.DERUTF8String({'str':'a'});\n * d2 = new KJUR.asn1.DERTaggedObject({'obj': d1});\n * hex = d2.getEncodedHex();\n */\nKJUR.asn1.DERTaggedObject = function (params) {\n KJUR.asn1.DERTaggedObject.superclass.constructor.call(this);\n this.hT = \"a0\";\n this.hV = '';\n this.isExplicit = true;\n this.asn1Object = null;\n /**\n * set value by an ASN1Object\n * @name setString\n * @memberOf KJUR.asn1.DERTaggedObject#\n * @function\n * @param {Boolean} isExplicitFlag flag for explicit/implicit tag\n * @param {Integer} tagNoHex hexadecimal string of ASN.1 tag\n * @param {ASN1Object} asn1Object ASN.1 to encapsulate\n */\n this.setASN1Object = function (isExplicitFlag, tagNoHex, asn1Object) {\n this.hT = tagNoHex;\n this.isExplicit = isExplicitFlag;\n this.asn1Object = asn1Object;\n if (this.isExplicit) {\n this.hV = this.asn1Object.getEncodedHex();\n this.hTLV = null;\n this.isModified = true;\n }\n else {\n this.hV = null;\n this.hTLV = asn1Object.getEncodedHex();\n this.hTLV = this.hTLV.replace(/^../, tagNoHex);\n this.isModified = false;\n }\n };\n this.getFreshValueHex = function () {\n return this.hV;\n };\n if (typeof params != \"undefined\") {\n if (typeof params['tag'] != \"undefined\") {\n this.hT = params['tag'];\n }\n if (typeof params['explicit'] != \"undefined\") {\n this.isExplicit = params['explicit'];\n }\n if (typeof params['obj'] != \"undefined\") {\n this.asn1Object = params['obj'];\n this.setASN1Object(this.isExplicit, this.hT, this.asn1Object);\n }\n }\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERTaggedObject, KJUR.asn1.ASN1Object);\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/jsrsasign/asn1-1.0.js?"); + + /***/ + }), + + /***/ + "./lib/lib/jsrsasign/yahoo.js": + /*!************************************!*\ + !*** ./lib/lib/jsrsasign/yahoo.js ***! + \************************************/ + /***/ + ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + + "use strict"; + eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"YAHOO\": () => (/* binding */ YAHOO)\n/* harmony export */ });\n/*!\nCopyright (c) 2011, Yahoo! Inc. All rights reserved.\nCode licensed under the BSD License:\nhttp://developer.yahoo.com/yui/license.html\nversion: 2.9.0\n*/\nvar YAHOO = {};\nYAHOO.lang = {\n /**\n * Utility to set up the prototype, constructor and superclass properties to\n * support an inheritance strategy that can chain constructors and methods.\n * Static members will not be inherited.\n *\n * @method extend\n * @static\n * @param {Function} subc the object to modify\n * @param {Function} superc the object to inherit\n * @param {Object} overrides additional properties/methods to add to the\n * subclass prototype. These will override the\n * matching items obtained from the superclass\n * if present.\n */\n extend: function (subc, superc, overrides) {\n if (!superc || !subc) {\n throw new Error(\"YAHOO.lang.extend failed, please check that \" +\n \"all dependencies are included.\");\n }\n var F = function () { };\n F.prototype = superc.prototype;\n subc.prototype = new F();\n subc.prototype.constructor = subc;\n subc.superclass = superc.prototype;\n if (superc.prototype.constructor == Object.prototype.constructor) {\n superc.prototype.constructor = superc;\n }\n if (overrides) {\n var i;\n for (i in overrides) {\n subc.prototype[i] = overrides[i];\n }\n /*\n * IE will not enumerate native functions in a derived object even if the\n * function was overridden. This is a workaround for specific functions\n * we care about on the Object prototype.\n * @property _IEEnumFix\n * @param {Function} r the object to receive the augmentation\n * @param {Function} s the object that supplies the properties to augment\n * @static\n * @private\n */\n var _IEEnumFix = function () { }, ADD = [\"toString\", \"valueOf\"];\n try {\n if (/MSIE/.test(navigator.userAgent)) {\n _IEEnumFix = function (r, s) {\n for (i = 0; i < ADD.length; i = i + 1) {\n var fname = ADD[i], f = s[fname];\n if (typeof f === 'function' && f != Object.prototype[fname]) {\n r[fname] = f;\n }\n }\n };\n }\n }\n catch (ex) { }\n ;\n _IEEnumFix(subc.prototype, overrides);\n }\n }\n};\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/jsrsasign/yahoo.js?"); + + /***/ + }), + + /***/ + "./node_modules/process/browser.js": + /*!*****************************************!*\ + !*** ./node_modules/process/browser.js ***! + \*****************************************/ + /***/ + ((module) => { + + eval("// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n//# sourceURL=webpack://JSEncrypt/./node_modules/process/browser.js?"); + + /***/ + }) + + /******/ + }); + /************************************************************************/ + /******/ // The module cache + /******/ + var __webpack_module_cache__ = {}; + /******/ + /******/ // The require function + /******/ + function __webpack_require__(moduleId) { + /******/ // Check if module is in cache + /******/ + var cachedModule = __webpack_module_cache__[moduleId]; + /******/ + if (cachedModule !== undefined) { + /******/ + return cachedModule.exports; + /******/ + } + /******/ // Create a new module (and put it into the cache) + /******/ + var module = __webpack_module_cache__[moduleId] = { + /******/ // no module.id needed + /******/ // no module.loaded needed + /******/ + exports: {} + /******/ + }; + /******/ + /******/ // Execute the module function + /******/ + __webpack_modules__[moduleId](module, module.exports, __webpack_require__); + /******/ + /******/ // Return the exports of the module + /******/ + return module.exports; + /******/ + } + /******/ + /************************************************************************/ + /******/ + /* webpack/runtime/define property getters */ + /******/ + (() => { + /******/ // define getter functions for harmony exports + /******/ + __webpack_require__.d = (exports, definition) => { + /******/ + for (var key in definition) { + /******/ + if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { + /******/ + Object.defineProperty(exports, key, { + enumerable: true, + get: definition[key] + }); + /******/ + } + /******/ + } + /******/ + }; + /******/ + })(); + /******/ + /******/ + /* webpack/runtime/hasOwnProperty shorthand */ + /******/ + (() => { + /******/ + __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) + /******/ + })(); + /******/ + /******/ + /* webpack/runtime/make namespace object */ + /******/ + (() => { + /******/ // define __esModule on exports + /******/ + __webpack_require__.r = (exports) => { + /******/ + if (typeof Symbol !== 'undefined' && Symbol.toStringTag) { + /******/ + Object.defineProperty(exports, Symbol.toStringTag, { + value: 'Module' + }); + /******/ + } + /******/ + Object.defineProperty(exports, '__esModule', { + value: true + }); + /******/ + }; + /******/ + })(); + /******/ + /************************************************************************/ + /******/ + /******/ // startup + /******/ // Load entry module and return exports + /******/ // This entry module can't be inlined because the eval devtool is used. + /******/ + var __webpack_exports__ = __webpack_require__("./lib/index.js"); + /******/ + __webpack_exports__ = __webpack_exports__["default"]; + /******/ + /******/ + return __webpack_exports__; + /******/ + })(); +}); \ No newline at end of file diff --git a/潇洒/js/json5.js b/潇洒/api/json5.js similarity index 100% rename from 潇洒/js/json5.js rename to 潇洒/api/json5.js diff --git a/潇洒/js/node-rsa.js b/潇洒/api/node-rsa.js similarity index 100% rename from 潇洒/js/node-rsa.js rename to 潇洒/api/node-rsa.js diff --git a/潇洒/js/pako.min.js b/潇洒/api/pako.min.js similarity index 100% rename from 潇洒/js/pako.min.js rename to 潇洒/api/pako.min.js diff --git a/潇洒/js/模板.js b/潇洒/api/模板.js similarity index 100% rename from 潇洒/js/模板.js rename to 潇洒/api/模板.js diff --git a/潇洒/js/56DM.js b/潇洒/js/56DM.js new file mode 100644 index 0000000..3ff0ad6 --- /dev/null +++ b/潇洒/js/56DM.js @@ -0,0 +1 @@ +dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJzU25Yqo5ryrJywKICAgIGhvc3Q6ICdodHRwczovL3d3dy41NmRtLmNjLycsCiAgICB1cmw6ICdodHRwczovL3d3dy41NmRtLmNjL3R5cGUvZnljbGFzcy1meXBhZ2UuaHRtbCcsCiAgICBzZWFyY2hVcmw6ICdodHRwczovL3d3dy41NmRtLmNjL3NlYXJjaC8qKi0tLS0tLS0tLS1meXBhZ2UtLS0uaHRtbCcsCiAgICBzZWFyY2hhYmxlOiAyLCAvL+aYr+WQpuWQr+eUqOWFqOWxgOaQnOe0oiwKICAgIHF1aWNrU2VhcmNoOiAwLCAvL+aYr+WQpuWQr+eUqOW/q+mAn+aQnOe0oiwKICAgIGZpbHRlcmFibGU6IDAsIC8v5piv5ZCm5ZCv55So5YiG57G7562b6YCJLAogICAgaGVhZGVyczogewogICAgICAgICdVc2VyLUFnZW50JzogJ1VDX1VBJywgLy8gIkNvb2tpZSI6ICIiCiAgICB9LCAvLyBjbGFzc19wYXJzZTonLnN0dWktaGVhZGVyX19tZW51IGxpOmd0KDApOmx0KDcpO2EmJlRleHQ7YSYmaHJlZjsvKFxcZCspLmh0bWwnLAogICAgY2xhc3NfcGFyc2U6ICcuc251aS1oZWFkZXItbWVudS1uYXYgbGk6Z3QoMCk6bHQoNik7YSYmVGV4dDthJiZocmVmOy4qLyguKj8pLmh0bWwnLAogICAgcGxheV9wYXJzZTogdHJ1ZSwKICAgIGxhenk6IGBqczoKICAgICAgICAgICAgaWYoL1xcLihtM3U4fG1wNCkvLnRlc3QoaW5wdXQpKXsKICAgICAgICAgICAgICAgIGlucHV0ID0ge3BhcnNlOjAsdXJsOmlucHV0fQogICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgIGlmKHJ1bGUucGFyc2VfdXJsLnN0YXJ0c1dpdGgoJ2pzb246JykpewogICAgICAgICAgICAgICAgICAgIGxldCBwdXJsID0gcnVsZS5wYXJzZV91cmwucmVwbGFjZSgnanNvbjonLCcnKStpbnB1dDsKICAgICAgICAgICAgICAgICAgICBsZXQgaHRtbCA9IHJlcXVlc3QocHVybCk7CiAgICAgICAgICAgICAgICAgICAgaW5wdXQgPSB7cGFyc2U6MCx1cmw6SlNPTi5wYXJzZShodG1sKS51cmx9CiAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICBpbnB1dD0gcnVsZS5wYXJzZV91cmwraW5wdXQ7IAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGAsCiAgICBsaW1pdDogNiwKICAgIOaOqOiNkDogJy5jQ0JmX0ZBQUVmYmM7bGk7YSYmdGl0bGU7Lmxhenlsb2FkJiZkYXRhLW9yaWdpbmFsOy5kQURfQkJDSSYmVGV4dDthJiZocmVmJywKICAgIGRvdWJsZTogdHJ1ZSwgLy8g5o6o6I2Q5YaF5a655piv5ZCm5Y+M5bGC5a6a5L2NCiAgICDkuIDnuqc6ICcuY0NCZl9GQUFFZmJjIGxpO2EmJnRpdGxlO2EmJmRhdGEtb3JpZ2luYWw7LmRBRF9CQkNJJiZUZXh0O2EmJmhyZWYnLAogICAg5LqM57qnOiB7CiAgICAgICAgInRpdGxlIjogImgxJiZUZXh0IiwKICAgICAgICAiaW1nIjogIi5zdHVpLWNvbnRlbnRfX3RodW1iIC5sYXp5bG9hZCYmZGF0YS1vcmlnaW5hbCIsCiAgICAgICAgImRlc2MiOiAiLmNDQmZfREFCQ2NhY19faGNJZGVFIHA6ZXEoMCkmJlRleHQ7LmNDQmZfREFCQ2NhY19faGNJZGVFIHA6ZXEoMSkmJlRleHQ7LmNDQmZfREFCQ2NhY19faGNJZGVFIHA6ZXEoMikmJlRleHQ7LmNDQmZfREFCQ2NhY19faGNJZGVFIHA6ZXEoMykmJlRleHQ7LmNDQmZfREFCQ2NhY19faGNJZGVFIHA6ZXEoNCkmJlRleHQiLAogICAgICAgICJjb250ZW50IjogIi5kZXRhaWwmJlRleHQiLAogICAgICAgICJ0YWJzIjogIi5jaGFubmVsLXRhYiBsaSIsCiAgICAgICAgImxpc3RzIjogIi5wbGF5LWxpc3QtY29udGVudDplcSgjaWQpIGxpIgogICAgfSwKICAgIOaQnOe0ojogJy5jQ0JmX0ZBQUVmYmNfX2RiRDthJiZ0aXRsZTsubGF6eWxvYWQmJmRhdGEtb3JpZ2luYWw7LmRBRF9CQkNJJiZUZXh0O2EmJmhyZWY7LmNDQmZfRkFBRWZiY19faGNJZGVFJiZwOmVxKDApIHAmJlRleHQnLAp9 \ No newline at end of file diff --git a/潇洒/js/56动漫.js b/潇洒/js/56动漫.js deleted file mode 100644 index 266b5f0..0000000 --- a/潇洒/js/56动漫.js +++ /dev/null @@ -1,40 +0,0 @@ -var rule = { - title: '56动漫', - host: 'https://www.56dm.cc/', - url: 'https://www.56dm.cc/type/fyclass-fypage.html', - searchUrl: 'https://www.56dm.cc/search/**----------fypage---.html', - searchable: 2, //是否启用全局搜索, - quickSearch: 0, //是否启用快速搜索, - filterable: 0, //是否启用分类筛选, - headers: { - 'User-Agent': 'UC_UA', // "Cookie": "" - }, // class_parse:'.stui-header__menu li:gt(0):lt(7);a&&Text;a&&href;/(\\d+).html', - class_parse: '.snui-header-menu-nav li:gt(0):lt(6);a&&Text;a&&href;.*/(.*?).html', - play_parse: true, - lazy: `js: - if(/\\.(m3u8|mp4)/.test(input)){ - input = {parse:0,url:input} - }else{ - if(rule.parse_url.startsWith('json:')){ - let purl = rule.parse_url.replace('json:','')+input; - let html = request(purl); - input = {parse:0,url:JSON.parse(html).url} - }else{ - input= rule.parse_url+input; - } - } - `, - limit: 6, - 推荐: '.cCBf_FAAEfbc;li;a&&title;.lazyload&&data-original;.dAD_BBCI&&Text;a&&href', - double: true, // 推荐内容是否双层定位 - 一级: '.cCBf_FAAEfbc li;a&&title;a&&data-original;.dAD_BBCI&&Text;a&&href', - 二级: { - "title": "h1&&Text", - "img": ".stui-content__thumb .lazyload&&data-original", - "desc": ".cCBf_DABCcac__hcIdeE p:eq(0)&&Text;.cCBf_DABCcac__hcIdeE p:eq(1)&&Text;.cCBf_DABCcac__hcIdeE p:eq(2)&&Text;.cCBf_DABCcac__hcIdeE p:eq(3)&&Text;.cCBf_DABCcac__hcIdeE p:eq(4)&&Text", - "content": ".detail&&Text", - "tabs": ".channel-tab li", - "lists": ".play-list-content:eq(#id) li" - }, - 搜索: '.cCBf_FAAEfbc__dbD;a&&title;.lazyload&&data-original;.dAD_BBCI&&Text;a&&href;.cCBf_FAAEfbc__hcIdeE&&p:eq(0) p&&Text', -} \ No newline at end of file diff --git a/潇洒/js/88看球.js b/潇洒/js/88看球.js deleted file mode 100644 index c552ea3..0000000 --- a/潇洒/js/88看球.js +++ /dev/null @@ -1,61 +0,0 @@ -var rule = { - title:'88看球', - // host:'http://www.88kanqiu.cc', - host:'http://www.88kanqiu.bar/', - url: "/match/fyclass/live", - searchUrl: "", - searchable: 0, - quickSearch: 0, - class_parse: ".nav-pills li;a&&Text;a&&href;/match/(\\d+)/live", - headers: { - "User-Agent": "PC_UA", - }, - timeout: 5000, - play_parse: true, - pagecount:{"1":1,"2":1,"4":1,"22":1,"8":1,"9":1,"10":1,"14":1,"15":1,"12":1,"13":1,"16":1,"28":1,"7":1,"11":1,"33":1,"27":1,"23":1,"26":1,"3":1,"21":1,"18":1}, - lazy: `js: - if(/embed=/.test(input)) { - let url = input.match(/embed=(.*?)&/)[1]; - url = base64Decode(url); - input = { - jx:0, - url: url.split('#')[0], - parse: 0 - } - } else if (/\?url=/.test(input)){ - input = { - jx:0, - url: input.split('?url=')[1].split('#')[0], - parse: 0 - } - } else { - input - } - `, - limit: 6, - double: false, - 推荐: "*", - 一级: ".list-group .group-game-item;.d-none&&Text;img&&src;.btn&&Text;a&&href", - 二级: { - title: ".game-info-container&&Text;.customer-navbar-nav li&&Text", - img: "img&&src", - desc: ";;;div.team-name:eq(0)&&Text;div.team-name:eq(1)&&Text", - content: "div.game-time&&Text", - tabs: "js:TABS=['实时直播']", - lists: `js: - LISTS = []; - let html = request(input.replace('play', 'play-url')); - let pdata = JSON.parse(html).data; - pdata = pdata.slice(6); - pdata = pdata.slice(0, -2); - pdata = base64Decode(pdata); - // log(pdata); - let jo = JSON.parse(pdata).links; - let d = jo.map(function (it) { - return it.name + '$' + urlencode(it.url) - }); - LISTS.push(d) - `, - }, - 搜索: "", -}; \ No newline at end of file diff --git a/潇洒/js/ADM.js b/潇洒/js/ADM.js new file mode 100644 index 0000000..0eac3e9 --- /dev/null +++ b/潇洒/js/ADM.js @@ -0,0 +1 @@ +bXViYW4u55+t6KeGMi7kuoznuqcuaW1nID0gJy5kZXRhaWwtcGljJiZpbWcmJmRhdGEtc3JjJzsKdmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+eIseW8ueW5lScsCiAgICDmqKHmnb86ICfnn63op4YyJywKICAgIGhvc3Q6ICdodHRwczovL2FuaW1lLmdpcmlnaXJpbG92ZS5jb20nLAogICAgaG9tZVVybDogJy9tYXAvJywKICAgIC8vIHVybDonL3Nob3cvZnljbGFzcy0tLS0tLS0tZnlwYWdlLS0tLycKICAgIHVybDogJy9zaG93L2Z5Y2xhc3NmeWZpbHRlci8nLAogICAgZmlsdGVyYWJsZTogMSwgLy/mmK/lkKblkK/nlKjliIbnsbvnrZvpgIksCiAgICBmaWx0ZXJfdXJsOiAnLXt7ZmwuYXJlYX19LXt7ZmwuYnl9fS17e2ZsLmNsYXNzfX0te3tmbC5sYW5nfX0te3tmbC5sZXR0ZXJ9fS0tLWZ5cGFnZS0tLXt7ZmwueWVhcn19JywKICAgIGZpbHRlcjogewogICAgICAgICIyIjogW3sKICAgICAgICAgICAgImtleSI6ICJjbGFzcyIsCiAgICAgICAgICAgICJuYW1lIjogIuexu+WeiyIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlhajpg6giLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLllpzliaciLAogICAgICAgICAgICAgICAgInYiOiAi5Zac5YmnIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLniLHmg4UiLAogICAgICAgICAgICAgICAgInYiOiAi54ix5oOFIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmgZDmgJYiLAogICAgICAgICAgICAgICAgInYiOiAi5oGQ5oCWIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLliqjkvZwiLAogICAgICAgICAgICAgICAgInYiOiAi5Yqo5L2cIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnp5HlubsiLAogICAgICAgICAgICAgICAgInYiOiAi56eR5bm7IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLliafmg4UiLAogICAgICAgICAgICAgICAgInYiOiAi5Ymn5oOFIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmiJjkuokiLAogICAgICAgICAgICAgICAgInYiOiAi5oiY5LqJIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlpYflubsiLAogICAgICAgICAgICAgICAgInYiOiAi5aWH5bm7IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlhpLpmakiLAogICAgICAgICAgICAgICAgInYiOiAi5YaS6ZmpIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmgqznlpEiLAogICAgICAgICAgICAgICAgInYiOiAi5oKs55aRIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmoKHlm60iLAogICAgICAgICAgICAgICAgInYiOiAi5qCh5ZutIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlkI7lrqsiLAogICAgICAgICAgICAgICAgInYiOiAi5ZCO5a6rIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLng63ooYAiLAogICAgICAgICAgICAgICAgInYiOiAi54Ot6KGAIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLov5DliqgiLAogICAgICAgICAgICAgICAgInYiOiAi6L+Q5YqoIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnmb7lkIgiLAogICAgICAgICAgICAgICAgInYiOiAi55m+5ZCIIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLkuZnlpbMiLAogICAgICAgICAgICAgICAgInYiOiAi5LmZ5aWzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmnLrnlLIiLAogICAgICAgICAgICAgICAgInYiOiAi5py655SyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLml6XluLgiLAogICAgICAgICAgICAgICAgInYiOiAi5pel5bi4IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLprZTms5XlsJHlpbMiLAogICAgICAgICAgICAgICAgInYiOiAi6a2U5rOV5bCR5aWzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlvILkuJbnlYwiLAogICAgICAgICAgICAgICAgInYiOiAi5byC5LiW55WMIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLniLHmipbpnLIiLAogICAgICAgICAgICAgICAgInYiOiAi54ix5oqW6ZyyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLpn7PkuZAiLAogICAgICAgICAgICAgICAgInYiOiAi6Z+z5LmQIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLokIwiLAogICAgICAgICAgICAgICAgInYiOiAi6JCMIgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJhcmVhIiwKICAgICAgICAgICAgIm5hbWUiOiAi5Zyw5Yy6IiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqCIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuS4gOaciCIsCiAgICAgICAgICAgICAgICAidiI6ICLkuIDmnIgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWbm+aciCIsCiAgICAgICAgICAgICAgICAidiI6ICLlm5vmnIgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuS4g+aciCIsCiAgICAgICAgICAgICAgICAidiI6ICLkuIPmnIgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWNgeaciCIsCiAgICAgICAgICAgICAgICAidiI6ICLljYHmnIgiCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogInllYXIiLAogICAgICAgICAgICAibmFtZSI6ICLlubTku70iLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOoIiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyNSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDI1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDI0IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjMiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyMyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMiIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDIyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIxIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjAiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyMCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxOSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE5IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE4IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTciLAogICAgICAgICAgICAgICAgInYiOiAiMjAxNyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNiIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE2IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE1IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTQiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxNCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxMyIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDEzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDEyIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTEiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxMCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDEwIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA5IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDgiLAogICAgICAgICAgICAgICAgInYiOiAiMjAwOCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwNyIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDA3IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA2IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDUiLAogICAgICAgICAgICAgICAgInYiOiAiMjAwNSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwNCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDA0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDAzIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDIiLAogICAgICAgICAgICAgICAgInYiOiAiMjAwMiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwMSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDAxIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDAwIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDAiCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogImxhbmciLAogICAgICAgICAgICAibmFtZSI6ICLor63oqIAiLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOoIiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pel6K+tIiwKICAgICAgICAgICAgICAgICJ2IjogIuaXpeivrSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5Zu96K+tIiwKICAgICAgICAgICAgICAgICJ2IjogIuWbveivrSIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAiYnkiLAogICAgICAgICAgICAibmFtZSI6ICLmjpLluo8iLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5pyA5pawIiwKICAgICAgICAgICAgICAgICJ2IjogInRpbWUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuacgOeDrSIsCiAgICAgICAgICAgICAgICAidiI6ICJoaXRzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLor4TliIYiLAogICAgICAgICAgICAgICAgInYiOiAic2NvcmUiCiAgICAgICAgICAgIH1dCiAgICAgICAgfV0sCiAgICAgICAgIjMiOiBbewogICAgICAgICAgICAia2V5IjogImNsYXNzIiwKICAgICAgICAgICAgIm5hbWUiOiAi57G75Z6LIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqCIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaQnueskSIsCiAgICAgICAgICAgICAgICAidiI6ICLmkJ7nrJEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIueIseaDhSIsCiAgICAgICAgICAgICAgICAidiI6ICLniLHmg4UiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaBkOaAliIsCiAgICAgICAgICAgICAgICAidiI6ICLmgZDmgJYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWKqOS9nCIsCiAgICAgICAgICAgICAgICAidiI6ICLliqjkvZwiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuenkeW5uyIsCiAgICAgICAgICAgICAgICAidiI6ICLnp5HlubsiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWJp+aDhSIsCiAgICAgICAgICAgICAgICAidiI6ICLliafmg4UiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaImOS6iSIsCiAgICAgICAgICAgICAgICAidiI6ICLmiJjkuokiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWlh+W5uyIsCiAgICAgICAgICAgICAgICAidiI6ICLlpYflubsiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWGkumZqSIsCiAgICAgICAgICAgICAgICAidiI6ICLlhpLpmakiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaCrOeWkSIsCiAgICAgICAgICAgICAgICAidiI6ICLmgqznlpEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuagoeWbrSIsCiAgICAgICAgICAgICAgICAidiI6ICLmoKHlm60iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWQjuWuqyIsCiAgICAgICAgICAgICAgICAidiI6ICLlkI7lrqsiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIueDreihgCIsCiAgICAgICAgICAgICAgICAidiI6ICLng63ooYAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIui/kOWKqCIsCiAgICAgICAgICAgICAgICAidiI6ICLov5DliqgiCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogImFyZWEiLAogICAgICAgICAgICAibmFtZSI6ICLlnLDljLoiLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOoIiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5YaF5ZywIiwKICAgICAgICAgICAgICAgICJ2IjogIuWGheWcsCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5riv5Y+wIiwKICAgICAgICAgICAgICAgICJ2IjogIua4r+WPsCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pel6Z+pIiwKICAgICAgICAgICAgICAgICJ2IjogIuaXpemfqSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5qyn576OIiwKICAgICAgICAgICAgICAgICJ2IjogIuasp+e+jiIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAieWVhciIsCiAgICAgICAgICAgICJuYW1lIjogIuW5tOS7vSIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlhajpg6giLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDI1IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjQiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyNCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMyIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDIzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIyIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjEiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDIwIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE5IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTgiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxOCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNyIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE3IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE2IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTUiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxNSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDEzIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTIiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxMiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxMSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDExIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDEwIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDkiLAogICAgICAgICAgICAgICAgInYiOiAiMjAwOSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwOCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDA4IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA3IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDYiLAogICAgICAgICAgICAgICAgInYiOiAiMjAwNiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwNSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDA1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA0IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDMiLAogICAgICAgICAgICAgICAgInYiOiAiMjAwMyIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAibGFuZyIsCiAgICAgICAgICAgICJuYW1lIjogIuivreiogCIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlhajpg6giLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlm73or60iLAogICAgICAgICAgICAgICAgInYiOiAi5Zu96K+tIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLoi7Hor60iLAogICAgICAgICAgICAgICAgInYiOiAi6Iux6K+tIgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJieSIsCiAgICAgICAgICAgICJuYW1lIjogIuaOkuW6jyIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLmnIDmlrAiLAogICAgICAgICAgICAgICAgInYiOiAidGltZSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pyA54OtIiwKICAgICAgICAgICAgICAgICJ2IjogImhpdHMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuivhOWIhiIsCiAgICAgICAgICAgICAgICAidiI6ICJzY29yZSIKICAgICAgICAgICAgfV0KICAgICAgICB9XSwKICAgICAgICAiMjEiOiBbewogICAgICAgICAgICAia2V5IjogImNsYXNzIiwKICAgICAgICAgICAgIm5hbWUiOiAi57G75Z6LIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqCIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWWnOWJpyIsCiAgICAgICAgICAgICAgICAidiI6ICLllpzliaciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIueIseaDhSIsCiAgICAgICAgICAgICAgICAidiI6ICLniLHmg4UiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaBkOaAliIsCiAgICAgICAgICAgICAgICAidiI6ICLmgZDmgJYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWKqOS9nCIsCiAgICAgICAgICAgICAgICAidiI6ICLliqjkvZwiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuenkeW5uyIsCiAgICAgICAgICAgICAgICAidiI6ICLnp5HlubsiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWJp+aDhSIsCiAgICAgICAgICAgICAgICAidiI6ICLliafmg4UiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaImOS6iSIsCiAgICAgICAgICAgICAgICAidiI6ICLmiJjkuokiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWlh+W5uyIsCiAgICAgICAgICAgICAgICAidiI6ICLlpYflubsiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWGkumZqSIsCiAgICAgICAgICAgICAgICAidiI6ICLlhpLpmakiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaCrOeWkSIsCiAgICAgICAgICAgICAgICAidiI6ICLmgqznlpEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuagoeWbrSIsCiAgICAgICAgICAgICAgICAidiI6ICLmoKHlm60iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWQjuWuqyIsCiAgICAgICAgICAgICAgICAidiI6ICLlkI7lrqsiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIueDreihgCIsCiAgICAgICAgICAgICAgICAidiI6ICLng63ooYAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIui/kOWKqCIsCiAgICAgICAgICAgICAgICAidiI6ICLov5DliqgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIueZvuWQiCIsCiAgICAgICAgICAgICAgICAidiI6ICLnmb7lkIgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuiAvee+jiIsCiAgICAgICAgICAgICAgICAidiI6ICLogL3nvo4iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuacuueUsiIsCiAgICAgICAgICAgICAgICAidiI6ICLmnLrnlLIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaXpeW4uCIsCiAgICAgICAgICAgICAgICAidiI6ICLml6XluLgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIumtlOazleWwkeWlsyIsCiAgICAgICAgICAgICAgICAidiI6ICLprZTms5XlsJHlpbMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuW8guS4lueVjCIsCiAgICAgICAgICAgICAgICAidiI6ICLlvILkuJbnlYwiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIueIseaKlumcsiIsCiAgICAgICAgICAgICAgICAidiI6ICLniLHmipbpnLIiCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogInllYXIiLAogICAgICAgICAgICAibmFtZSI6ICLlubTku70iLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOoIiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyNSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDI1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDI0IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjMiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyMyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMiIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDIyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIxIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjAiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyMCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxOSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE5IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE4IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTciLAogICAgICAgICAgICAgICAgInYiOiAiMjAxNyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNiIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE2IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE1IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTQiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxNCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxMyIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDEzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDEyIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTEiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxMCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDEwIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA5IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDgiLAogICAgICAgICAgICAgICAgInYiOiAiMjAwOCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwNyIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDA3IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA2IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDUiLAogICAgICAgICAgICAgICAgInYiOiAiMjAwNSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwNCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDA0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDAzIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDMiCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogImxhbmciLAogICAgICAgICAgICAibmFtZSI6ICLor63oqIAiLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOoIiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pel6K+tIiwKICAgICAgICAgICAgICAgICJ2IjogIuaXpeivrSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5Lit5paHIiwKICAgICAgICAgICAgICAgICJ2IjogIuS4reaWhyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6Iux6K+tIiwKICAgICAgICAgICAgICAgICJ2IjogIuiLseivrSIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAiYnkiLAogICAgICAgICAgICAibmFtZSI6ICLmjpLluo8iLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5pyA5pawIiwKICAgICAgICAgICAgICAgICJ2IjogInRpbWUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuacgOeDrSIsCiAgICAgICAgICAgICAgICAidiI6ICJoaXRzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLor4TliIYiLAogICAgICAgICAgICAgICAgInYiOiAic2NvcmUiCiAgICAgICAgICAgIH1dCiAgICAgICAgfV0sCiAgICAgICAgIjIwIjogW3sKICAgICAgICAgICAgImtleSI6ICJjbGFzcyIsCiAgICAgICAgICAgICJuYW1lIjogIuexu+WeiyIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlhajpg6giLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLniLHmg4UiLAogICAgICAgICAgICAgICAgInYiOiAi54ix5oOFIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnp5HlubsiLAogICAgICAgICAgICAgICAgInYiOiAi56eR5bm7IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnu4/lhbgiLAogICAgICAgICAgICAgICAgInYiOiAi57uP5YW4IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlhpLpmakiLAogICAgICAgICAgICAgICAgInYiOiAi5YaS6ZmpIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLliafmg4UiLAogICAgICAgICAgICAgICAgInYiOiAi5Ymn5oOFIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLliqjkvZwiLAogICAgICAgICAgICAgICAgInYiOiAi5Yqo5L2cIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlkIzmgKciLAogICAgICAgICAgICAgICAgInYiOiAi5ZCM5oCnIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLllpzliaciLAogICAgICAgICAgICAgICAgInYiOiAi5Zac5YmnIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlpYflubsiLAogICAgICAgICAgICAgICAgInYiOiAi5aWH5bm7IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmgZDmgJYiLAogICAgICAgICAgICAgICAgInYiOiAi5oGQ5oCWIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmgqznlpEu5oOK5oKaIiwKICAgICAgICAgICAgICAgICJ2IjogIuaCrOeWkS7mg4rmgpoiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaImOS6iSIsCiAgICAgICAgICAgICAgICAidiI6ICLmiJjkuokiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuasp+e+jiIsCiAgICAgICAgICAgICAgICAidiI6ICLmrKfnvo4iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuatjOiIniIsCiAgICAgICAgICAgICAgICAidiI6ICLmrYzoiJ4iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIueBvumaviIsCiAgICAgICAgICAgICAgICAidiI6ICLngb7pmr4iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuiusOW9lS7ms7DliaciLAogICAgICAgICAgICAgICAgInYiOiAi6K6w5b2VLuazsOWJpyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5L2T6IKyIiwKICAgICAgICAgICAgICAgICJ2IjogIuS9k+iCsiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi54On6ISRIiwKICAgICAgICAgICAgICAgICJ2IjogIueDp+iEkSIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAiYXJlYSIsCiAgICAgICAgICAgICJuYW1lIjogIuWcsOWMuiIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlhajpg6giLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLml6XmnKwiLAogICAgICAgICAgICAgICAgInYiOiAi5pel5pysIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmrKfnvo4iLAogICAgICAgICAgICAgICAgInYiOiAi5qyn576OIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLms7Dlm70iLAogICAgICAgICAgICAgICAgInYiOiAi5rOw5Zu9IgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJ5ZWFyIiwKICAgICAgICAgICAgIm5hbWUiOiAi5bm05Lu9IiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqCIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjUiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyNSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyNCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDI0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIzIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjIiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyMiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDIxIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIwIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTkiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxOSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxOCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE4IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE3IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTYiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxNiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE0IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTMiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxMyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxMiIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDEyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDExIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTAiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxMCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwOSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDA5IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA4IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDciLAogICAgICAgICAgICAgICAgInYiOiAiMjAwNyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwNiIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDA2IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA1IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDQuMjAwMyIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDA0LjIwMDMiCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogImxhbmciLAogICAgICAgICAgICAibmFtZSI6ICLor63oqIAiLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOoIiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pel6K+tIiwKICAgICAgICAgICAgICAgICJ2IjogIuaXpeivrSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6Iux6K+tIiwKICAgICAgICAgICAgICAgICJ2IjogIuiLseivrSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5rOw6K+tIiwKICAgICAgICAgICAgICAgICJ2IjogIuazsOivrSIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAiYnkiLAogICAgICAgICAgICAibmFtZSI6ICLmjpLluo8iLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5pyA5pawIiwKICAgICAgICAgICAgICAgICJ2IjogInRpbWUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuacgOeDrSIsCiAgICAgICAgICAgICAgICAidiI6ICJoaXRzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLor4TliIYiLAogICAgICAgICAgICAgICAgInYiOiAic2NvcmUiCiAgICAgICAgICAgIH1dCiAgICAgICAgfV0sCiAgICAgICAgIjI0IjogW3sKICAgICAgICAgICAgImtleSI6ICJieSIsCiAgICAgICAgICAgICJuYW1lIjogIuaOkuW6jyIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLmnIDmlrAiLAogICAgICAgICAgICAgICAgInYiOiAidGltZSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pyA54OtIiwKICAgICAgICAgICAgICAgICJ2IjogImhpdHMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuivhOWIhiIsCiAgICAgICAgICAgICAgICAidiI6ICJzY29yZSIKICAgICAgICAgICAgfV0KICAgICAgICB9XSwKICAgICAgICAiMjYiOiBbewogICAgICAgICAgICAia2V5IjogImJ5IiwKICAgICAgICAgICAgIm5hbWUiOiAi5o6S5bqPIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuacgOaWsCIsCiAgICAgICAgICAgICAgICAidiI6ICJ0aW1lIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmnIDng60iLAogICAgICAgICAgICAgICAgInYiOiAiaGl0cyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6K+E5YiGIiwKICAgICAgICAgICAgICAgICJ2IjogInNjb3JlIgogICAgICAgICAgICB9XQogICAgICAgIH1dCiAgICB9LAogICAgc2VhcmNoVXJsOiAnL3NlYXJjaC8qKi0tLS0tLS0tLS1meXBhZ2UtLS0vJywKICAgIGNsYXNzX25hbWU6ICfml6Xnlaom576O55WqJuWKh+WgtOeJiCbnnJ/kurrnlarliocmQkTlia/pn7Pou4wm5YW25LuWJywKICAgIGNsYXNzX3VybDogJzImMyYyMSYyMCYyNCYyNicsCiAgICBwbGF5X3BhcnNlOiB0cnVlLAogICAgbGF6eTogYGpzOgogICAgICAgIHZhciBodG1sID0gSlNPTi5wYXJzZShyZXF1ZXN0KGlucHV0KS5tYXRjaCgvciBwbGF5ZXJfLio/PSguKj8pPC8pWzFdKTsKICAgICAgICB2YXIgdXJsID0gaHRtbC51cmw7CiAgICAgICAgdmFyIGZyb20gPSBodG1sLmZyb207CiAgICAgICAgdmFyIG5leHQgPSBodG1sLmxpbmtfbmV4dDsKICAgICAgICBpZiAoaHRtbC5lbmNyeXB0ID09ICcxJykgewogICAgICAgICAgICB1cmwgPSB1bmVzY2FwZSh1cmwpCiAgICAgICAgfSBlbHNlIGlmIChodG1sLmVuY3J5cHQgPT0gJzInKSB7CiAgICAgICAgICAgIHVybCA9IHVuZXNjYXBlKGJhc2U2NERlY29kZSh1cmwpKQogICAgICAgIH0gZWxzZSBpZiAoaHRtbC5lbmNyeXB0ID09ICczJykgewogICAgICAgICAgICB1cmwgPSB1cmwuc3Vic3RyaW5nKDgsIHVybC5sZW5ndGgpOwogICAgICAgICAgICB1cmwgPSBiYXNlNjREZWNvZGUodXJsKTsKICAgICAgICAgICAgdXJsID0gdXJsLnN1YnN0cmluZyg4LCAodXJsLmxlbmd0aCkgLSA4KQogICAgICAgIH0KICAgICAgICBpZiAoL1xcLm0zdTh8XFwubXA0Ly50ZXN0KHVybCkpIHsKICAgICAgICAgICAgaW5wdXQgPSB7CiAgICAgICAgICAgICAgICBqeDogMCwKICAgICAgICAgICAgICAgIHVybDogdXJsLAogICAgICAgICAgICAgICAgcGFyc2U6IDAKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHZhciBwYXVybCA9IHJlcXVlc3QoSE9TVCArICcvc3RhdGljL3BsYXllci8nICsgZnJvbSArICcuanMnKS5tYXRjaCgvIHNyYz0iKC4qPyknLylbMV07CiAgICAgICAgICAgIGlmICgvaHR0cHMvLnRlc3QocGF1cmwpKSB7CiAgICAgICAgICAgICAgICB2YXIgcHVybCA9IHBhdXJsICsgdXJsICsgJyZuZXh0PScgKyBuZXh0ICsgJyZ0aXRsZT0nOwogICAgICAgICAgICAgICAgaW5wdXQgPSB7CiAgICAgICAgICAgICAgICAgICAgang6IDAsCiAgICAgICAgICAgICAgICAgICAgdXJsOiBwdXJsLAogICAgICAgICAgICAgICAgICAgIHBhcnNlOiAxCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICBgLAogICAg5o6o6I2QOiAnLmJvcmRlci1ib3gmJi5wdWJsaWMtbGlzdC1ib3g7YSYmdGl0bGU7LmxhenkmJmRhdGEtc3JjOy5wdWJsaWMtbGlzdC1wcmImJlRleHQ7YSYmaHJlZicsCiAgICBkb3VibGU6IGZhbHNlLCAvLyDmjqjojZDlhoXlrrnmmK/lkKblj4zlsYLlrprkvY0KICAgIOS4gOe6pzogJy5ib3JkZXItYm94IC5wdWJsaWMtbGlzdC1ib3g7YSYmdGl0bGU7LmxhenkmJmRhdGEtc3JjOy5wdWJsaWMtbGlzdC1wcmImJlRleHQ7YSYmaHJlZicsCiAgICDmkJzntKI6ICcucm93LXJpZ2h0JiYuc2VhcmNoLWJveDsudGh1bWItdHh0JiZUZXh0Oy5sYXp5JiZkYXRhLXNyYzsucHVibGljLWxpc3QtcHJiJiZUZXh0O2EmJmhyZWYnLAp9 \ No newline at end of file diff --git a/潇洒/js/APPV2.js b/潇洒/js/APPV2.js deleted file mode 100644 index fec0f1b..0000000 --- a/潇洒/js/APPV2.js +++ /dev/null @@ -1,109 +0,0 @@ -/** - * 传参 ?type=url¶ms=http://122.228.85.203:1000@泽少1 - * 传参 ?type=url¶ms=http://122.228.85.203:1000@泽少2 - */ - -var rule = { - title: 'APPV2[模板]', - author: '道长', - version: '20241012 beta1', - update_info: ` -20241012: -1.根据群友嗷呜的appv2模板修改成可传参源,类似采集之王用法传参 -`.trim(), - host: '', - url: '/api.php/app/video?tid=fyclassfyfilter&limit=20&pg=fypage', - filter_url: '', - filter: {}, - homeUrl: '/api.php/app/index_video', - detailUrl: '/api.php/app/video_detail?id=fyid', - searchUrl: '/api.php/app/search?text=**&pg=fypage', - parseUrl: '', - searchable: 2, - quickSearch: 1, - filterable: 1, - headers: { - 'User-Agent': 'okhttp/4.1.0' - }, - params: 'http://122.228.85.203:1000$http://122.228.85.203:1000/play?url=', - hostJs: $js.toString(() => { - HOST = rule.params.split('$')[0]; - }), - 预处理: $js.toString(() => { - log(`传入参数:${rule.params}`); - let _host = rule.params.split('$')[0]; - rule.parseUrl = rule.params.split('$')[1]; - let _url = _host.rstrip('/') + '/api.php/app/nav?token'; - let _headers = {'User-Agent': 'Dart/2.14 (dart:io)'}; - let html = request(_url, {headers: _headers}); - let data = JSON.parse(html); - let _classes = []; - let _filter = {}; - let _filter_url = ''; - let dy = {"class": "类型", "area": "地区", "lang": "语言", "year": "年份", "letter": "字母", "by": "排序"}; - let jsonData = data.list; - for (let k = 0; k < jsonData.length; k++) { - let hasNonEmptyField = false; - let _obj = { - type_name: jsonData[k].type_name, - type_id: jsonData[k].type_id, - }; - _classes.push(_obj); - for (let key in dy) { - if (key in jsonData[k].type_extend && jsonData[k].type_extend[key].trim() !== "") { - hasNonEmptyField = true; - break - } - } - if (hasNonEmptyField) { - _filter[String(jsonData[k].type_id)] = []; - for (let dkey in jsonData[k].type_extend) { - if (dkey in dy && jsonData[k].type_extend[dkey].trim() !== "") { - if (k === 0) { - _filter_url += `&${dkey}={{fl.${dkey}}}` - } - let values = jsonData[k].type_extend[dkey].split(','); - let valueArray = values.map(value => ({"n": value.trim(), "v": value.trim()})); - _filter[String(jsonData[k].type_id)].push({"key": dkey, "name": dy[dkey], "value": valueArray}) - } - } - } - } - rule.classes = _classes; - rule.filter = _filter; - rule.filter_url = _filter_url; - }), - class_parse: $js.toString(() => { - input = rule.classes; - }), - play_parse: true, - lazy: $js.toString(() => { - if (!/^http/.test(input)) { - input = rule.parseUrl + input - } else { - input = { - url: input, - parse: 0, - header: '' - } - } - - }), - 推荐: $js.toString(() => { - let data = JSON.parse(request(input)).list; - let com = []; - data.forEach(item => { - if (Array.isArray(item.vlist) && item.vlist.length !== 0) { - com = com.concat(item.vlist) - } - }) - VODS = com - }), - 一级: $js.toString(() => { - VODS = JSON.parse(request(input)).list - }), - 二级: $js.toString(() => { - VOD = JSON.parse(request(input)).data - }), - 搜索: '*', -} \ No newline at end of file diff --git a/潇洒/js/AQY.js b/潇洒/js/AQY.js new file mode 100644 index 0000000..b95cf2e --- /dev/null +++ b/潇洒/js/AQY.js @@ -0,0 +1 @@ +dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+Wlh+ePjeW8guWFvVvlrphdJywKICAgIGhvc3Q6ICdodHRwczovL3d3dy5pcWl5aS5jb20nLAogICAgaG9tZVVybDogJycsCiAgICAvLyBkZXRhaWxVcmw6J2h0dHBzOi8vcGN3LWFwaS5pcWl5aS5jb20vYWxidW1zL2FsYnVtL2F2bGlzdGluZm8/YWlkPWZ5aWQmc2l6ZT0yMDAwJnBhZ2U9MScsCiAgICBkZXRhaWxVcmw6ICdodHRwczovL3Bjdy1hcGkuaXFpeWkuY29tL3ZpZGVvL3ZpZGVvL3ZpZGVvaW5mb3dpdGh1c2VyL2Z5aWQ/YWdlbnRfdHlwZT0xJmF1dGhjb29raWU9JnN1YmtleT1meWlkJnN1YnNjcmliZT0xJywKICAgIHNlYXJjaFVybDogJ2h0dHBzOi8vc2VhcmNoLnZpZGVvLmlxaXlpLmNvbS9vP2lmPWh0bWw1JmtleT0qKiZwYWdlTnVtPWZ5cGFnZSZwb3M9MSZwYWdlU2l6ZT0yNCZzaXRlPWlxaXlpJywKICAgIHNlYXJjaGFibGU6IDIsCiAgICBtdWx0aTogMSwKICAgIGZpbHRlcmFibGU6IDEsCiAgICBmaWx0ZXI6IHsKICAgICAgICAnMSc6IFt7CiAgICAgICAgICAgICdrZXknOiAnbW9kZScsCiAgICAgICAgICAgICduYW1lJzogJ+e7vOWQiOaOkuW6jycsCiAgICAgICAgICAgICd2YWx1ZSc6IFt7CiAgICAgICAgICAgICAgICAnbic6ICflhajpg6gnLAogICAgICAgICAgICAgICAgJ3YnOiAnJwogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfng63mkq3mppwnLAogICAgICAgICAgICAgICAgJ3YnOiAxMQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICflpb3or4TmppwnLAogICAgICAgICAgICAgICAgJ3YnOiA4CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+aWsOS4iue6vycsCiAgICAgICAgICAgICAgICAndic6IDQKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICdrZXknOiAneWVhcicsCiAgICAgICAgICAgICduYW1lJzogJ+WFqOmDqOW5tOS7vScsCiAgICAgICAgICAgICd2YWx1ZSc6IFt7CiAgICAgICAgICAgICAgICAnbic6ICflhajpg6gnLAogICAgICAgICAgICAgICAgJ3YnOiAnJwogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDI1IiwKICAgICAgICAgICAgICAgICJ2IjogMjAyNQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDI0IiwKICAgICAgICAgICAgICAgICJ2IjogMjAyNAogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICcyMDIzJywKICAgICAgICAgICAgICAgICd2JzogMjAyMwogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICcyMDIyJywKICAgICAgICAgICAgICAgICd2JzogMjAyMgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICcyMDIxJywKICAgICAgICAgICAgICAgICd2JzogMjAyMQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICcyMDIwJywKICAgICAgICAgICAgICAgICd2JzogMjAyMAogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICcyMDE5JywKICAgICAgICAgICAgICAgICd2JzogMjAxOQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICcyMDE4JywKICAgICAgICAgICAgICAgICd2JzogMjAxOAogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICcyMDE3JywKICAgICAgICAgICAgICAgICd2JzogMjAxNwogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICcyMDE2LTIwMTEnLAogICAgICAgICAgICAgICAgJ3YnOiAnMjAxMV8yMDE2JwogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICcyMDEwLTIwMDAnLAogICAgICAgICAgICAgICAgJ3YnOiAnMjAwMF8yMDEwJwogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICc5MOW5tOS7oycsCiAgICAgICAgICAgICAgICAndic6ICcxOTkwXzE5OTknCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJzgw5bm05LujJywKICAgICAgICAgICAgICAgICd2JzogJzE5ODBfMTk4OScKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn5pu05pepJywKICAgICAgICAgICAgICAgICd2JzogJzE5NjRfMTk3OScKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICdrZXknOiAnaXNfcHVyY2hhc2UnLAogICAgICAgICAgICAnbmFtZSc6ICflhajpg6jotYTotLknLAogICAgICAgICAgICAndmFsdWUnOiBbewogICAgICAgICAgICAgICAgJ24nOiAn5YWo6YOoJywKICAgICAgICAgICAgICAgICd2JzogJycKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn5YWN6LS5JywKICAgICAgICAgICAgICAgICd2JzogMAogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfkvJrlkZgnLAogICAgICAgICAgICAgICAgJ3YnOiAxCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+S7mOi0uScsCiAgICAgICAgICAgICAgICAndic6IDIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICdrZXknOiAndGhyZWVfY2F0ZWdvcnlfaWQnLAogICAgICAgICAgICAnbmFtZSc6ICflnLDljLonLAogICAgICAgICAgICAndmFsdWUnOiBbewogICAgICAgICAgICAgICAgJ24nOiAn5YWo6YOoJywKICAgICAgICAgICAgICAgICd2JzogJycKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn5Y2O6K+tJywKICAgICAgICAgICAgICAgICd2JzogMQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfpppnmuK/lnLDljLonLAogICAgICAgICAgICAgICAgJ3YnOiAyODk5NwogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfnvo7lm70nLAogICAgICAgICAgICAgICAgJ3YnOiAyCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+asp+a0sicsCiAgICAgICAgICAgICAgICAndic6IDMKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn6Z+p5Zu9JywKICAgICAgICAgICAgICAgICd2JzogNAogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfml6XmnKwnLAogICAgICAgICAgICAgICAgJ3YnOiAzMDgKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn5rOw5Zu9JywKICAgICAgICAgICAgICAgICd2JzogMTExNQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfljbDluqYnLAogICAgICAgICAgICAgICAgJ3YnOiAyODk5OQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICflhbblroMnLAogICAgICAgICAgICAgICAgJ3YnOiA1CiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAna2V5JzogJzE4MDAxJywKICAgICAgICAgICAgJ25hbWUnOiAn57G75Z6LJywKICAgICAgICAgICAgJ3ZhbHVlJzogW3sKICAgICAgICAgICAgICAgICduJzogJ+WFqOmDqCcsCiAgICAgICAgICAgICAgICAndic6ICcnCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+WWnOWJpycsCiAgICAgICAgICAgICAgICAndic6IDgKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn54ix5oOFJywKICAgICAgICAgICAgICAgICd2JzogNgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfliqjkvZwnLAogICAgICAgICAgICAgICAgJ3YnOiAxMQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfmnqrmiJgnLAogICAgICAgICAgICAgICAgJ3YnOiAxMzEKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn54qv572qJywKICAgICAgICAgICAgICAgICd2JzogMjkxCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+aDiuaCmicsCiAgICAgICAgICAgICAgICAndic6IDEyOAogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfmgZDmgJYnLAogICAgICAgICAgICAgICAgJ3YnOiAxMAogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfmgqznlpEnLAogICAgICAgICAgICAgICAgJ3YnOiAyODkKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn5Yqo55S7JywKICAgICAgICAgICAgICAgICd2JzogMTIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn5a625bqtJywKICAgICAgICAgICAgICAgICd2JzogMjczNTYKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn5aWH5bm7JywKICAgICAgICAgICAgICAgICd2JzogMTI4NAogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfprZTlubsnLAogICAgICAgICAgICAgICAgJ3YnOiAxMjkKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn56eR5bm7JywKICAgICAgICAgICAgICAgICd2JzogOQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfmiJjkuoknLAogICAgICAgICAgICAgICAgJ3YnOiA3CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+mdkuaYpScsCiAgICAgICAgICAgICAgICAndic6IDEzMAogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgJ2tleSc6ICcyNzM5NicsCiAgICAgICAgICAgICduYW1lJzogJ+inhOagvCcsCiAgICAgICAgICAgICd2YWx1ZSc6IFt7CiAgICAgICAgICAgICAgICAnbic6ICflhajpg6gnLAogICAgICAgICAgICAgICAgJ3YnOiAnJwogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICflt6jliLYnLAogICAgICAgICAgICAgICAgJ3YnOiAyNzM5NwogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfpmaLnur8nLAogICAgICAgICAgICAgICAgJ3YnOiAyNzgxNQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfni6zmkq0nLAogICAgICAgICAgICAgICAgJ3YnOiAzMDE0OQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfnvZHnu5znlLXlvbEnLAogICAgICAgICAgICAgICAgJ3YnOiAyNzQwMQogICAgICAgICAgICB9XQogICAgICAgIH1dLAogICAgICAgICcyJzogW3sKICAgICAgICAgICAgJ2tleSc6ICdtb2RlJywKICAgICAgICAgICAgJ25hbWUnOiAn57u85ZCI5o6S5bqPJywKICAgICAgICAgICAgJ3ZhbHVlJzogW3sKICAgICAgICAgICAgICAgICduJzogJ+WFqOmDqCcsCiAgICAgICAgICAgICAgICAndic6ICcnCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+eDreaSreamnCcsCiAgICAgICAgICAgICAgICAndic6IDExCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+WlveivhOamnCcsCiAgICAgICAgICAgICAgICAndic6IDgKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn5paw5LiK57q/JywKICAgICAgICAgICAgICAgICd2JzogNAogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgJ2tleSc6ICd5ZWFyJywKICAgICAgICAgICAgJ25hbWUnOiAn5YWo6YOo5bm05Lu9JywKICAgICAgICAgICAgJ3ZhbHVlJzogW3sKICAgICAgICAgICAgICAgICduJzogJ+WFqOmDqCcsCiAgICAgICAgICAgICAgICAndic6ICcnCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJzIwMjMnLAogICAgICAgICAgICAgICAgJ3YnOiAyMDIzCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJzIwMjInLAogICAgICAgICAgICAgICAgJ3YnOiAyMDIyCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJzIwMjEnLAogICAgICAgICAgICAgICAgJ3YnOiAyMDIxCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJzIwMjAnLAogICAgICAgICAgICAgICAgJ3YnOiAyMDIwCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJzIwMTknLAogICAgICAgICAgICAgICAgJ3YnOiAyMDE5CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJzIwMTgnLAogICAgICAgICAgICAgICAgJ3YnOiAyMDE4CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJzIwMTcnLAogICAgICAgICAgICAgICAgJ3YnOiAyMDE3CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJzIwMTYtMjAxMScsCiAgICAgICAgICAgICAgICAndic6ICcyMDExXzIwMTYnCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJzIwMTAtMjAwMCcsCiAgICAgICAgICAgICAgICAndic6ICcyMDAwXzIwMTAnCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJzkw5bm05LujJywKICAgICAgICAgICAgICAgICd2JzogJzE5OTBfMTk5OScKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAnODDlubTku6MnLAogICAgICAgICAgICAgICAgJ3YnOiAnMTk4MF8xOTg5JwogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfmm7Tml6knLAogICAgICAgICAgICAgICAgJ3YnOiAnMTk2NF8xOTc5JwogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgJ2tleSc6ICdpc19wdXJjaGFzZScsCiAgICAgICAgICAgICduYW1lJzogJ+WFqOmDqOi1hOi0uScsCiAgICAgICAgICAgICd2YWx1ZSc6IFt7CiAgICAgICAgICAgICAgICAnbic6ICflhajpg6gnLAogICAgICAgICAgICAgICAgJ3YnOiAnJwogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICflhY3otLknLAogICAgICAgICAgICAgICAgJ3YnOiAwCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+S8muWRmCcsCiAgICAgICAgICAgICAgICAndic6IDEKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn5LuY6LS5JywKICAgICAgICAgICAgICAgICd2JzogMgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgJ2tleSc6ICd0aHJlZV9jYXRlZ29yeV9pZCcsCiAgICAgICAgICAgICduYW1lJzogJ+WcsOWMuicsCiAgICAgICAgICAgICd2YWx1ZSc6IFt7CiAgICAgICAgICAgICAgICAnbic6ICflhajpg6gnLAogICAgICAgICAgICAgICAgJ3YnOiAnJwogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICflhoXlnLAnLAogICAgICAgICAgICAgICAgJ3YnOiAxNQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfmuK/liacnLAogICAgICAgICAgICAgICAgJ3YnOiAxNgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfpn6nliacnLAogICAgICAgICAgICAgICAgJ3YnOiAxNwogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfnvo7liacnLAogICAgICAgICAgICAgICAgJ3YnOiAxOAogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfml6XliacnLAogICAgICAgICAgICAgICAgJ3YnOiAzMDkKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn5rOw5YmnJywKICAgICAgICAgICAgICAgICd2JzogMTExNAogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICflj7Dmub7lnLDljLonLAogICAgICAgICAgICAgICAgJ3YnOiAxMTE3CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+iLseWJpycsCiAgICAgICAgICAgICAgICAndic6IDI4OTE2CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+WFtuWugycsCiAgICAgICAgICAgICAgICAndic6IDE5CiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAna2V5JzogJzE4MDAzJywKICAgICAgICAgICAgJ25hbWUnOiAn57G75Z6LJywKICAgICAgICAgICAgJ3ZhbHVlJzogW3sKICAgICAgICAgICAgICAgICduJzogJ+WFqOmDqCcsCiAgICAgICAgICAgICAgICAndic6ICcnCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+iHquWIticsCiAgICAgICAgICAgICAgICAndic6IDExOTkyCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+WPpOijhScsCiAgICAgICAgICAgICAgICAndic6IDI0CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+iogOaDhScsCiAgICAgICAgICAgICAgICAndic6IDIwCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+atpuS+oCcsCiAgICAgICAgICAgICAgICAndic6IDIzCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+WBtuWDjycsCiAgICAgICAgICAgICAgICAndic6IDMwCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+WutuW6rScsCiAgICAgICAgICAgICAgICAndic6IDE2NTQKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn6Z2S5pilJywKICAgICAgICAgICAgICAgICd2JzogMTY1MwogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfpg73luIInLAogICAgICAgICAgICAgICAgJ3YnOiAyNDA2NAogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfllpzliacnLAogICAgICAgICAgICAgICAgJ3YnOiAxMzUKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn5oiY5LqJJywKICAgICAgICAgICAgICAgICd2JzogMjc5MTYKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn5Yab5peFJywKICAgICAgICAgICAgICAgICd2JzogMTY1NQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfosI3miJgnLAogICAgICAgICAgICAgICAgJ3YnOiAyOTAKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn5oKs55aRJywKICAgICAgICAgICAgICAgICd2JzogMzIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn572q5qGIJywKICAgICAgICAgICAgICAgICd2JzogMTQ5CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+epv+i2iicsCiAgICAgICAgICAgICAgICAndic6IDE0OAogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICflrqvlu7cnLAogICAgICAgICAgICAgICAgJ3YnOiAxMzkKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn5Y6G5Y+yJywKICAgICAgICAgICAgICAgICd2JzogMjEKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn56We6K+dJywKICAgICAgICAgICAgICAgICd2JzogMTQ1CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+enkeW5uycsCiAgICAgICAgICAgICAgICAndic6IDM0CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+W5tOS7oycsCiAgICAgICAgICAgICAgICAndic6IDI3CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+WGnOadkScsCiAgICAgICAgICAgICAgICAndic6IDI5CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+WVhuaImCcsCiAgICAgICAgICAgICAgICAndic6IDE0MAogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfliafmg4UnLAogICAgICAgICAgICAgICAgJ3YnOiAyNDA2MwogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICflpYflubsnLAogICAgICAgICAgICAgICAgJ3YnOiAyNzg4MQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfnvZHliacnLAogICAgICAgICAgICAgICAgJ3YnOiAyNDA2NQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfnq5bnn63niYcnLAogICAgICAgICAgICAgICAgJ3YnOiAzMjgzOQogICAgICAgICAgICB9XQogICAgICAgIH1dLAogICAgICAgICczJzogW3sKICAgICAgICAgICAgJ2tleSc6ICdtb2RlJywKICAgICAgICAgICAgJ25hbWUnOiAn57u85ZCI5o6S5bqPJywKICAgICAgICAgICAgJ3ZhbHVlJzogW3sKICAgICAgICAgICAgICAgICduJzogJ+WFqOmDqCcsCiAgICAgICAgICAgICAgICAndic6ICcnCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+eDreaSreamnCcsCiAgICAgICAgICAgICAgICAndic6IDExCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+WlveivhOamnCcsCiAgICAgICAgICAgICAgICAndic6IDgKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn5paw5LiK57q/JywKICAgICAgICAgICAgICAgICd2JzogNAogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgJ2tleSc6ICd5ZWFyJywKICAgICAgICAgICAgJ25hbWUnOiAn5YWo6YOo5bm05Lu9JywKICAgICAgICAgICAgJ3ZhbHVlJzogW3sKICAgICAgICAgICAgICAgICduJzogJ+WFqOmDqCcsCiAgICAgICAgICAgICAgICAndic6ICcnCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJzIwMjMnLAogICAgICAgICAgICAgICAgJ3YnOiAyMDIzCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJzIwMjInLAogICAgICAgICAgICAgICAgJ3YnOiAyMDIyCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJzIwMjEnLAogICAgICAgICAgICAgICAgJ3YnOiAyMDIxCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJzIwMjAnLAogICAgICAgICAgICAgICAgJ3YnOiAyMDIwCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJzIwMTknLAogICAgICAgICAgICAgICAgJ3YnOiAyMDE5CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJzIwMTgnLAogICAgICAgICAgICAgICAgJ3YnOiAyMDE4CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJzIwMTcnLAogICAgICAgICAgICAgICAgJ3YnOiAyMDE3CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJzIwMTYtMjAxMScsCiAgICAgICAgICAgICAgICAndic6ICcyMDExXzIwMTYnCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJzIwMTAtMjAwMCcsCiAgICAgICAgICAgICAgICAndic6ICcyMDAwXzIwMTAnCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJzkw5bm05LujJywKICAgICAgICAgICAgICAgICd2JzogJzE5OTBfMTk5OScKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAnODDlubTku6MnLAogICAgICAgICAgICAgICAgJ3YnOiAnMTk4MF8xOTg5JwogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfmm7Tml6knLAogICAgICAgICAgICAgICAgJ3YnOiAnMTk2NF8xOTc5JwogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgJ2tleSc6ICdpc19wdXJjaGFzZScsCiAgICAgICAgICAgICduYW1lJzogJ+WFqOmDqOi1hOi0uScsCiAgICAgICAgICAgICd2YWx1ZSc6IFt7CiAgICAgICAgICAgICAgICAnbic6ICflhajpg6gnLAogICAgICAgICAgICAgICAgJ3YnOiAnJwogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICflhY3otLknLAogICAgICAgICAgICAgICAgJ3YnOiAwCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+S8muWRmCcsCiAgICAgICAgICAgICAgICAndic6IDEKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn5LuY6LS5JywKICAgICAgICAgICAgICAgICd2JzogMgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgJ2tleSc6ICd0aHJlZV9jYXRlZ29yeV9pZCcsCiAgICAgICAgICAgICduYW1lJzogJ+WcsOWMuicsCiAgICAgICAgICAgICd2YWx1ZSc6IFt7CiAgICAgICAgICAgICAgICAnbic6ICflhajpg6gnLAogICAgICAgICAgICAgICAgJ3YnOiAnJwogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICflm73lhoUnLAogICAgICAgICAgICAgICAgJ3YnOiAyMDMyMwogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICflm73lpJYnLAogICAgICAgICAgICAgICAgJ3YnOiAyMDMyNAogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgJ2tleSc6ICcxODAwNCcsCiAgICAgICAgICAgICduYW1lJzogJ+exu+WeiycsCiAgICAgICAgICAgICd2YWx1ZSc6IFt7CiAgICAgICAgICAgICAgICAnbic6ICflhajpg6gnLAogICAgICAgICAgICAgICAgJ3YnOiAnJwogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfkurrmlocnLAogICAgICAgICAgICAgICAgJ3YnOiA3MAogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfnvo7po58nLAogICAgICAgICAgICAgICAgJ3YnOiAzMzkwOAogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfljLvnlpcnLAogICAgICAgICAgICAgICAgJ3YnOiAzMzkyNAogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfoh6rnhLYnLAogICAgICAgICAgICAgICAgJ3YnOiAzMzkzMwogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfokIzlrqAnLAogICAgICAgICAgICAgICAgJ3YnOiAzMzk0NQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfotKLnu48nLAogICAgICAgICAgICAgICAgJ3YnOiAzMzk1MwogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfnvarmoYgnLAogICAgICAgICAgICAgICAgJ3YnOiAzMzk2MAogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfnq57mioAnLAogICAgICAgICAgICAgICAgJ3YnOiAzMzk2NwogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfngb7pmr4nLAogICAgICAgICAgICAgICAgJ3YnOiAzMzk3NAogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICflhpvkuosnLAogICAgICAgICAgICAgICAgJ3YnOiA3MgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfljoblj7InLAogICAgICAgICAgICAgICAgJ3YnOiA3NAogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfmjqLpmaknLAogICAgICAgICAgICAgICAgJ3YnOiA3MwogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfnpL7kvJonLAogICAgICAgICAgICAgICAgJ3YnOiA3MQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfnp5HmioAnLAogICAgICAgICAgICAgICAgJ3YnOiAyODExOQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfml4XmuLgnLAogICAgICAgICAgICAgICAgJ3YnOiAzMTAKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICdrZXknOiAnMjg0NjcnLAogICAgICAgICAgICAnbmFtZSc6ICflh7rlk4HmlrknLAogICAgICAgICAgICAndmFsdWUnOiBbewogICAgICAgICAgICAgICAgJ24nOiAn5YWo6YOoJywKICAgICAgICAgICAgICAgICd2JzogJycKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAnQkJDJywKICAgICAgICAgICAgICAgICd2JzogMjg0NjgKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn576O5Zu95Y6G5Y+y6aKR6YGTJywKICAgICAgICAgICAgICAgICd2JzogMjg0NzAKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn5o6i57Si6aKR6YGTJywKICAgICAgICAgICAgICAgICd2JzogMjg0NzEKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn5aSu6KeG6K6w5b2VJywKICAgICAgICAgICAgICAgICd2JzogMjg0NzIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn5YyX5Lqs57qq5a6e6aKR6YGTJywKICAgICAgICAgICAgICAgICd2JzogMjg0NzMKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn5LiK5rW357qq5a6e6aKR6YGTJywKICAgICAgICAgICAgICAgICd2JzogMjg0NzQKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn5pyX5oCd5paH5YyWJywKICAgICAgICAgICAgICAgICd2JzogMjg0NzYKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAnQ05FWCcsCiAgICAgICAgICAgICAgICAndic6IDI4NDc3CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+S6lOaYn+S8oOWlhycsCiAgICAgICAgICAgICAgICAndic6IDI4NDc4CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ0lNRycsCiAgICAgICAgICAgICAgICAndic6IDI4NDc5CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ05ISycsCiAgICAgICAgICAgICAgICAndic6IDI4NDgwCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+eIseWlh+iJuuWHuuWTgScsCiAgICAgICAgICAgICAgICAndic6IDMxMjgzCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ05ldGZsaXgnLAogICAgICAgICAgICAgICAgJ3YnOiAzMTI4NgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgJ2tleSc6ICcyOTA3NicsCiAgICAgICAgICAgICduYW1lJzogJ+eJh+enjScsCiAgICAgICAgICAgICd2YWx1ZSc6IFt7CiAgICAgICAgICAgICAgICAnbic6ICflhajpg6gnLAogICAgICAgICAgICAgICAgJ3YnOiAnJwogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfnuqrlvZXnlLXlvbEnLAogICAgICAgICAgICAgICAgJ3YnOiAyOTA3NwogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfns7vliJfnuqrlvZXniYcnLAogICAgICAgICAgICAgICAgJ3YnOiAyOTA3OAogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfnvZHnu5znuqrlvZXniYcnLAogICAgICAgICAgICAgICAgJ3YnOiAyOTA4MgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfnuqrlrp7moI/nm64nLAogICAgICAgICAgICAgICAgJ3YnOiAyOTA4MwogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgJ2tleSc6ICczMTI5NCcsCiAgICAgICAgICAgICduYW1lJzogJ+aXtumVvycsCiAgICAgICAgICAgICd2YWx1ZSc6IFt7CiAgICAgICAgICAgICAgICAnbic6ICflhajpg6gnLAogICAgICAgICAgICAgICAgJ3YnOiAnJwogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICflvq7nuqrlvZUnLAogICAgICAgICAgICAgICAgJ3YnOiAyOTA3OQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfplb/nuqrlvZUnLAogICAgICAgICAgICAgICAgJ3YnOiAyOTA4MAogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfnn63nuqrlvZUnLAogICAgICAgICAgICAgICAgJ3YnOiAyOTA4MQogICAgICAgICAgICB9XQogICAgICAgIH1dLAogICAgICAgICc0JzogW3sKICAgICAgICAgICAgJ2tleSc6ICdtb2RlJywKICAgICAgICAgICAgJ25hbWUnOiAn57u85ZCI5o6S5bqPJywKICAgICAgICAgICAgJ3ZhbHVlJzogW3sKICAgICAgICAgICAgICAgICduJzogJ+WFqOmDqCcsCiAgICAgICAgICAgICAgICAndic6ICcnCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+eDreaSreamnCcsCiAgICAgICAgICAgICAgICAndic6IDExCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+WlveivhOamnCcsCiAgICAgICAgICAgICAgICAndic6IDgKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn5paw5LiK57q/JywKICAgICAgICAgICAgICAgICd2JzogNAogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgJ2tleSc6ICd5ZWFyJywKICAgICAgICAgICAgJ25hbWUnOiAn5YWo6YOo5bm05Lu9JywKICAgICAgICAgICAgJ3ZhbHVlJzogW3sKICAgICAgICAgICAgICAgICduJzogJ+WFqOmDqCcsCiAgICAgICAgICAgICAgICAndic6ICcnCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJzIwMjMnLAogICAgICAgICAgICAgICAgJ3YnOiAyMDIzCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJzIwMjInLAogICAgICAgICAgICAgICAgJ3YnOiAyMDIyCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJzIwMjEnLAogICAgICAgICAgICAgICAgJ3YnOiAyMDIxCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJzIwMjAnLAogICAgICAgICAgICAgICAgJ3YnOiAyMDIwCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJzIwMTknLAogICAgICAgICAgICAgICAgJ3YnOiAyMDE5CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJzIwMTgnLAogICAgICAgICAgICAgICAgJ3YnOiAyMDE4CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJzIwMTcnLAogICAgICAgICAgICAgICAgJ3YnOiAyMDE3CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJzIwMTYtMjAxMScsCiAgICAgICAgICAgICAgICAndic6ICcyMDExXzIwMTYnCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJzIwMTAtMjAwMCcsCiAgICAgICAgICAgICAgICAndic6ICcyMDAwXzIwMTAnCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJzkw5bm05LujJywKICAgICAgICAgICAgICAgICd2JzogJzE5OTBfMTk5OScKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAnODDlubTku6MnLAogICAgICAgICAgICAgICAgJ3YnOiAnMTk4MF8xOTg5JwogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfmm7Tml6knLAogICAgICAgICAgICAgICAgJ3YnOiAnMTk2NF8xOTc5JwogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgJ2tleSc6ICdpc19wdXJjaGFzZScsCiAgICAgICAgICAgICduYW1lJzogJ+WFqOmDqOi1hOi0uScsCiAgICAgICAgICAgICd2YWx1ZSc6IFt7CiAgICAgICAgICAgICAgICAnbic6ICflhajpg6gnLAogICAgICAgICAgICAgICAgJ3YnOiAnJwogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICflhY3otLknLAogICAgICAgICAgICAgICAgJ3YnOiAwCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+S8muWRmCcsCiAgICAgICAgICAgICAgICAndic6IDEKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn5LuY6LS5JywKICAgICAgICAgICAgICAgICd2JzogMgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgJ2tleSc6ICd0aHJlZV9jYXRlZ29yeV9pZCcsCiAgICAgICAgICAgICduYW1lJzogJ+WcsOWMuicsCiAgICAgICAgICAgICd2YWx1ZSc6IFt7CiAgICAgICAgICAgICAgICAnbic6ICflhajpg6gnLAogICAgICAgICAgICAgICAgJ3YnOiAnJwogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfkuK3lm73lpKfpmYYnLAogICAgICAgICAgICAgICAgJ3YnOiAzNwogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfml6XmnKwnLAogICAgICAgICAgICAgICAgJ3YnOiAzOAogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfpn6nlm70nLAogICAgICAgICAgICAgICAgJ3YnOiAxMTA2CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+asp+e+jicsCiAgICAgICAgICAgICAgICAndic6IDMwMjE4CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+WFtuWugycsCiAgICAgICAgICAgICAgICAndic6IDQwCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAna2V5JzogJzMwMjE5JywKICAgICAgICAgICAgJ25hbWUnOiAn54mI5pysJywKICAgICAgICAgICAgJ3ZhbHVlJzogW3sKICAgICAgICAgICAgICAgICduJzogJ+WFqOmDqCcsCiAgICAgICAgICAgICAgICAndic6ICcnCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+WKqOeUuycsCiAgICAgICAgICAgICAgICAndic6IDMwMjIwCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+eJueaRhCcsCiAgICAgICAgICAgICAgICAndic6IDMwMjIzCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+W4g+iii+aIjycsCiAgICAgICAgICAgICAgICAndic6IDMwMjI0CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+eJueWIq+evhycsCiAgICAgICAgICAgICAgICAndic6IDMyNzgyCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+WKqOaAgea8q+eUuycsCiAgICAgICAgICAgICAgICAndic6IDMyNzgzCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+WKqOeUu+eUteW9sScsCiAgICAgICAgICAgICAgICAndic6IDMyNzg0CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+erlueJiOinhumikScsCiAgICAgICAgICAgICAgICAndic6IDMyNzg1CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+i9u+WKqOeUuycsCiAgICAgICAgICAgICAgICAndic6IDMzNDgyCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+efreWJpycsCiAgICAgICAgICAgICAgICAndic6IDMzNDgzCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAna2V5JzogJzMwMjI1JywKICAgICAgICAgICAgJ25hbWUnOiAn6aOO5qC8JywKICAgICAgICAgICAgJ3ZhbHVlJzogW3sKICAgICAgICAgICAgICAgICduJzogJ+WFqOmDqCcsCiAgICAgICAgICAgICAgICAndic6ICcnCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+aQnueskScsCiAgICAgICAgICAgICAgICAndic6IDMwMjMwCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+eDreihgCcsCiAgICAgICAgICAgICAgICAndic6IDMwMjMyCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+WCrOazqicsCiAgICAgICAgICAgICAgICAndic6IDMwMjMzCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+ayu+aEiCcsCiAgICAgICAgICAgICAgICAndic6IDMwMjM0CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+WKseW/lycsCiAgICAgICAgICAgICAgICAndic6IDMwMjM3CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+acuuaImCcsCiAgICAgICAgICAgICAgICAndic6IDMwMjQxCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+aBi+eIsScsCiAgICAgICAgICAgICAgICAndic6IDMwMjQzCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+enkeW5uycsCiAgICAgICAgICAgICAgICAndic6IDMwMjQ1CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+Wlh+W5uycsCiAgICAgICAgICAgICAgICAndic6IDMwMjQ3CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+aOqOeQhicsCiAgICAgICAgICAgICAgICAndic6IDMwMjQ4CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+agoeWbrScsCiAgICAgICAgICAgICAgICAndic6IDMwMjQ5CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+aXpeW4uCcsCiAgICAgICAgICAgICAgICAndic6IDMwMjUyCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+WOhuWPsicsCiAgICAgICAgICAgICAgICAndic6IDMwMjU0CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+e+jumjnycsCiAgICAgICAgICAgICAgICAndic6IDMwMjU1CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+iBjOWcuicsCiAgICAgICAgICAgICAgICAndic6IDMwMjU2CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+WBtuWDjycsCiAgICAgICAgICAgICAgICAndic6IDMwMjU4CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+azoemdoicsCiAgICAgICAgICAgICAgICAndic6IDMwMjY1CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+WGkumZqScsCiAgICAgICAgICAgICAgICAndic6IDMwMjY3CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+ernuaKgCcsCiAgICAgICAgICAgICAgICAndic6IDMwMjY4CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+WQiOWutuasoicsCiAgICAgICAgICAgICAgICAndic6IDMwMjcwCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+atpuS+oCcsCiAgICAgICAgICAgICAgICAndic6IDMyNzkyCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+eOhOW5uycsCiAgICAgICAgICAgICAgICAndic6IDMyNzkzCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAna2V5JzogJzMyNzk1JywKICAgICAgICAgICAgJ25hbWUnOiAn5paw57G75Z6LJywKICAgICAgICAgICAgJ3ZhbHVlJzogW3sKICAgICAgICAgICAgICAgICduJzogJ+WFqOmDqCcsCiAgICAgICAgICAgICAgICAndic6ICcnCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+i9u+Wwj+ivtOaUuee8licsCiAgICAgICAgICAgICAgICAndic6IDMyNzk2CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+a8q+eUu+aUuee8licsCiAgICAgICAgICAgICAgICAndic6IDMyNzk3CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+a4uOaIj+aUuee8licsCiAgICAgICAgICAgICAgICAndic6IDMyNzk4CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+WOn+WImycsCiAgICAgICAgICAgICAgICAndic6IDMyNzk5CiAgICAgICAgICAgIH1dCiAgICAgICAgfV0sCiAgICAgICAgJzYnOiBbewogICAgICAgICAgICAna2V5JzogJ21vZGUnLAogICAgICAgICAgICAnbmFtZSc6ICfnu7zlkIjmjpLluo8nLAogICAgICAgICAgICAndmFsdWUnOiBbewogICAgICAgICAgICAgICAgJ24nOiAn5YWo6YOoJywKICAgICAgICAgICAgICAgICd2JzogJycKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn54Ot5pKt5qacJywKICAgICAgICAgICAgICAgICd2JzogMTEKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn5aW96K+E5qacJywKICAgICAgICAgICAgICAgICd2JzogOAogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfmlrDkuIrnur8nLAogICAgICAgICAgICAgICAgJ3YnOiA0CiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAna2V5JzogJ3llYXInLAogICAgICAgICAgICAnbmFtZSc6ICflhajpg6jlubTku70nLAogICAgICAgICAgICAndmFsdWUnOiBbewogICAgICAgICAgICAgICAgJ24nOiAn5YWo6YOoJywKICAgICAgICAgICAgICAgICd2JzogJycKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAnMjAyMycsCiAgICAgICAgICAgICAgICAndic6IDIwMjMKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAnMjAyMicsCiAgICAgICAgICAgICAgICAndic6IDIwMjIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAnMjAyMScsCiAgICAgICAgICAgICAgICAndic6IDIwMjEKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAnMjAyMCcsCiAgICAgICAgICAgICAgICAndic6IDIwMjAKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAnMjAxOScsCiAgICAgICAgICAgICAgICAndic6IDIwMTkKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAnMjAxOCcsCiAgICAgICAgICAgICAgICAndic6IDIwMTgKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAnMjAxNycsCiAgICAgICAgICAgICAgICAndic6IDIwMTcKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAnMjAxNi0yMDExJywKICAgICAgICAgICAgICAgICd2JzogJzIwMTFfMjAxNicKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAnMjAxMC0yMDAwJywKICAgICAgICAgICAgICAgICd2JzogJzIwMDBfMjAxMCcKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAnOTDlubTku6MnLAogICAgICAgICAgICAgICAgJ3YnOiAnMTk5MF8xOTk5JwogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICc4MOW5tOS7oycsCiAgICAgICAgICAgICAgICAndic6ICcxOTgwXzE5ODknCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+abtOaXqScsCiAgICAgICAgICAgICAgICAndic6ICcxOTY0XzE5NzknCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAna2V5JzogJ2lzX3B1cmNoYXNlJywKICAgICAgICAgICAgJ25hbWUnOiAn5YWo6YOo6LWE6LS5JywKICAgICAgICAgICAgJ3ZhbHVlJzogW3sKICAgICAgICAgICAgICAgICduJzogJ+WFqOmDqCcsCiAgICAgICAgICAgICAgICAndic6ICcnCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+WFjei0uScsCiAgICAgICAgICAgICAgICAndic6IDAKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn5Lya5ZGYJywKICAgICAgICAgICAgICAgICd2JzogMQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfku5jotLknLAogICAgICAgICAgICAgICAgJ3YnOiAyCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAna2V5JzogJ3RocmVlX2NhdGVnb3J5X2lkJywKICAgICAgICAgICAgJ25hbWUnOiAn5Zyw5Yy6JywKICAgICAgICAgICAgJ3ZhbHVlJzogW3sKICAgICAgICAgICAgICAgICduJzogJ+WFqOmDqCcsCiAgICAgICAgICAgICAgICAndic6ICcnCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+WGheWcsCcsCiAgICAgICAgICAgICAgICAndic6IDE1MQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfmuK/lj7AnLAogICAgICAgICAgICAgICAgJ3YnOiAxNTIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn6Z+p5Zu9JywKICAgICAgICAgICAgICAgICd2JzogMzMzMDYKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn5qyn576OJywKICAgICAgICAgICAgICAgICd2JzogMTU0CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+WFtuWugycsCiAgICAgICAgICAgICAgICAndic6IDExMTMKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICdrZXknOiAnMTgwMTQnLAogICAgICAgICAgICAnbmFtZSc6ICfnsbvlnosnLAogICAgICAgICAgICAndmFsdWUnOiBbewogICAgICAgICAgICAgICAgJ24nOiAn5YWo6YOoJywKICAgICAgICAgICAgICAgICd2JzogJycKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn5pKt5oqlJywKICAgICAgICAgICAgICAgICd2JzogMTU1CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+iuv+iwiCcsCiAgICAgICAgICAgICAgICAndic6IDE1NgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfmuLjmiI8nLAogICAgICAgICAgICAgICAgJ3YnOiAxNTgKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn5pma5LyaJywKICAgICAgICAgICAgICAgICd2JzogMjkyCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+absuiJuicsCiAgICAgICAgICAgICAgICAndic6IDI5MwogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfohLHlj6Pnp4AnLAogICAgICAgICAgICAgICAgJ3YnOiAyMTE4CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+ecn+S6uuengCcsCiAgICAgICAgICAgICAgICAndic6IDIyMjQKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn56ue5oqAJywKICAgICAgICAgICAgICAgICd2JzogMzAyNzgKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn54ix5aWH6Im65Ye65ZOBJywKICAgICAgICAgICAgICAgICd2JzogMzAyNzkKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn56ue5ryUJywKICAgICAgICAgICAgICAgICd2JzogMzM4NjAKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICdrZXknOiAnMzMxNjInLAogICAgICAgICAgICAnbmFtZSc6ICfpopjmnZAnLAogICAgICAgICAgICAndmFsdWUnOiBbewogICAgICAgICAgICAgICAgJ24nOiAn5YWo6YOoJywKICAgICAgICAgICAgICAgICd2JzogJycKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn6Z+z5LmQJywKICAgICAgICAgICAgICAgICd2JzogMzMxNjMKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn6Iie6LmIJywKICAgICAgICAgICAgICAgICd2JzogMzMxNzIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn5paH5YyWJywKICAgICAgICAgICAgICAgICd2JzogMzMxNzMKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn576O6aOfJywKICAgICAgICAgICAgICAgICd2JzogMzMxODIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn5Lym55CGJywKICAgICAgICAgICAgICAgICd2JzogMzMxODQKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn55u45LqyJywKICAgICAgICAgICAgICAgICd2JzogMzMxOTMKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn57qq5a6eJywKICAgICAgICAgICAgICAgICd2JzogMzMxOTUKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn55Sf5rS7JywKICAgICAgICAgICAgICAgICd2JzogMzMxOTYKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn5Lqy5a2QJywKICAgICAgICAgICAgICAgICd2JzogMzMxOTcKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn5bCR5YS/JywKICAgICAgICAgICAgICAgICd2JzogMzMxOTgKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn6LSi57uPJywKICAgICAgICAgICAgICAgICd2JzogMzMxOTkKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn5YGl5bq3JywKICAgICAgICAgICAgICAgICd2JzogMzMyMDAKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn5pe25bCaJywKICAgICAgICAgICAgICAgICd2JzogMzMyMDMKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn5peF5ri4JywKICAgICAgICAgICAgICAgICd2JzogMzMyMDUKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn5pWZ6IKyJywKICAgICAgICAgICAgICAgICd2JzogMzMyMDYKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn5YW25a6DJywKICAgICAgICAgICAgICAgICd2JzogMzMyMjAKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn54ix5oOFJywKICAgICAgICAgICAgICAgICd2JzogMzMzMTYKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn5pCe56yRJywKICAgICAgICAgICAgICAgICd2JzogMzMzMTcKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn55uK5pm6JywKICAgICAgICAgICAgICAgICd2JzogMzMzMTgKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn6IGM5Zy6JywKICAgICAgICAgICAgICAgICd2JzogMzMzMTkKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn6K+t6KiAJywKICAgICAgICAgICAgICAgICd2JzogMzM1MzAKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn6L6p6K66JywKICAgICAgICAgICAgICAgICd2JzogMzM1MzEKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn5ryU6K6yJywKICAgICAgICAgICAgICAgICd2JzogMzM4NDMKICAgICAgICAgICAgfV0KICAgICAgICB9XSwKICAgICAgICAnNSc6IFt7CiAgICAgICAgICAgICdrZXknOiAnbW9kZScsCiAgICAgICAgICAgICduYW1lJzogJ+e7vOWQiOaOkuW6jycsCiAgICAgICAgICAgICd2YWx1ZSc6IFt7CiAgICAgICAgICAgICAgICAnbic6ICflhajpg6gnLAogICAgICAgICAgICAgICAgJ3YnOiAnJwogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfng63mkq3mppwnLAogICAgICAgICAgICAgICAgJ3YnOiAxMQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICflpb3or4TmppwnLAogICAgICAgICAgICAgICAgJ3YnOiA4CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+aWsOS4iue6vycsCiAgICAgICAgICAgICAgICAndic6IDQKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICdrZXknOiAneWVhcicsCiAgICAgICAgICAgICduYW1lJzogJ+WFqOmDqOW5tOS7vScsCiAgICAgICAgICAgICd2YWx1ZSc6IFt7CiAgICAgICAgICAgICAgICAnbic6ICflhajpg6gnLAogICAgICAgICAgICAgICAgJ3YnOiAnJwogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICcyMDIzJywKICAgICAgICAgICAgICAgICd2JzogMjAyMwogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICcyMDIyJywKICAgICAgICAgICAgICAgICd2JzogMjAyMgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICcyMDIxJywKICAgICAgICAgICAgICAgICd2JzogMjAyMQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICcyMDIwJywKICAgICAgICAgICAgICAgICd2JzogMjAyMAogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICcyMDE5JywKICAgICAgICAgICAgICAgICd2JzogMjAxOQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICcyMDE4JywKICAgICAgICAgICAgICAgICd2JzogMjAxOAogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICcyMDE3JywKICAgICAgICAgICAgICAgICd2JzogMjAxNwogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICcyMDE2LTIwMTEnLAogICAgICAgICAgICAgICAgJ3YnOiAnMjAxMV8yMDE2JwogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICcyMDEwLTIwMDAnLAogICAgICAgICAgICAgICAgJ3YnOiAnMjAwMF8yMDEwJwogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICc5MOW5tOS7oycsCiAgICAgICAgICAgICAgICAndic6ICcxOTkwXzE5OTknCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJzgw5bm05LujJywKICAgICAgICAgICAgICAgICd2JzogJzE5ODBfMTk4OScKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn5pu05pepJywKICAgICAgICAgICAgICAgICd2JzogJzE5NjRfMTk3OScKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICdrZXknOiAnaXNfcHVyY2hhc2UnLAogICAgICAgICAgICAnbmFtZSc6ICflhajpg6jotYTotLknLAogICAgICAgICAgICAndmFsdWUnOiBbewogICAgICAgICAgICAgICAgJ24nOiAn5YWo6YOoJywKICAgICAgICAgICAgICAgICd2JzogJycKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn5YWN6LS5JywKICAgICAgICAgICAgICAgICd2JzogMAogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfkvJrlkZgnLAogICAgICAgICAgICAgICAgJ3YnOiAxCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+S7mOi0uScsCiAgICAgICAgICAgICAgICAndic6IDIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICdrZXknOiAndGhyZWVfY2F0ZWdvcnlfaWQnLAogICAgICAgICAgICAnbmFtZSc6ICflnLDljLonLAogICAgICAgICAgICAndmFsdWUnOiBbewogICAgICAgICAgICAgICAgJ24nOiAn5YWo6YOoJywKICAgICAgICAgICAgICAgICd2JzogJycKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn5YaF5ZywJywKICAgICAgICAgICAgICAgICd2JzogMjIxCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+a4r+WPsCcsCiAgICAgICAgICAgICAgICAndic6IDIyMAogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfmrKfnvo4nLAogICAgICAgICAgICAgICAgJ3YnOiAyMTkKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn5pel6Z+pJywKICAgICAgICAgICAgICAgICd2JzogMjE4CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+aLiee+jicsCiAgICAgICAgICAgICAgICAndic6IDIxNwogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfkuprmtLLlnLDljLonLAogICAgICAgICAgICAgICAgJ3YnOiAyMTYKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn6Z2e5rSyJywKICAgICAgICAgICAgICAgICd2JzogMjE1CiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAna2V5JzogJzE4MDA5JywKICAgICAgICAgICAgJ25hbWUnOiAn6K+t56eNJywKICAgICAgICAgICAgJ3ZhbHVlJzogW3sKICAgICAgICAgICAgICAgICduJzogJ+WFqOmDqCcsCiAgICAgICAgICAgICAgICAndic6ICcnCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+aZrumAmuivnScsCiAgICAgICAgICAgICAgICAndic6IDkxCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+eypOivrScsCiAgICAgICAgICAgICAgICAndic6IDkyCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+mXveWNl+ivrScsCiAgICAgICAgICAgICAgICAndic6IDkzCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+iLseivrScsCiAgICAgICAgICAgICAgICAndic6IDk0CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+aXpeivrScsCiAgICAgICAgICAgICAgICAndic6IDk1CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+mfqeivrScsCiAgICAgICAgICAgICAgICAndic6IDk2CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+WFtuWugycsCiAgICAgICAgICAgICAgICAndic6IDk3CiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAna2V5JzogJzIzNTU0JywKICAgICAgICAgICAgJ25hbWUnOiAn6Z+z5LmQ57G75Z6LJywKICAgICAgICAgICAgJ3ZhbHVlJzogW3sKICAgICAgICAgICAgICAgICduJzogJ+WFqOmDqCcsCiAgICAgICAgICAgICAgICAndic6ICcnCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+WNleabsk1WJywKICAgICAgICAgICAgICAgICd2JzogMjM1NTYKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn5Y2V5puy546w5Zy6JywKICAgICAgICAgICAgICAgICd2JzogMjM1NTcKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn5ryU5ZSx5LyaJywKICAgICAgICAgICAgICAgICd2JzogMjM1NTgKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn5paw6Ze7JywKICAgICAgICAgICAgICAgICd2JzogMjM1NTkKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn6K6/6LCIJywKICAgICAgICAgICAgICAgICd2JzogMjM1NjAKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn6Z+z5LmQ6K6w5b2VJywKICAgICAgICAgICAgICAgICd2JzogMjM1NjEKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn6Z+z5LmQ5ZGo6L65JywKICAgICAgICAgICAgICAgICd2JzogMjM1NjIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn6Z+z5LmQ6IqC55uuJywKICAgICAgICAgICAgICAgICd2JzogMjM1NjMKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn5b2x6KeG5Y6f5aOwJywKICAgICAgICAgICAgICAgICd2JzogMjM1NjQKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn6Z+z5LmQ55+t54mHJywKICAgICAgICAgICAgICAgICd2JzogMjM1NjUKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn5YW25LuWJywKICAgICAgICAgICAgICAgICd2JzogMjM1NjYKICAgICAgICAgICAgfV0KICAgICAgICB9XSwKICAgICAgICAnMTYnOiBbewogICAgICAgICAgICAna2V5JzogJ21vZGUnLAogICAgICAgICAgICAnbmFtZSc6ICfnu7zlkIjmjpLluo8nLAogICAgICAgICAgICAndmFsdWUnOiBbewogICAgICAgICAgICAgICAgJ24nOiAn5YWo6YOoJywKICAgICAgICAgICAgICAgICd2JzogJycKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn54Ot5pKt5qacJywKICAgICAgICAgICAgICAgICd2JzogMTEKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn5aW96K+E5qacJywKICAgICAgICAgICAgICAgICd2JzogOAogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfmlrDkuIrnur8nLAogICAgICAgICAgICAgICAgJ3YnOiA0CiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAna2V5JzogJ3llYXInLAogICAgICAgICAgICAnbmFtZSc6ICflhajpg6jlubTku70nLAogICAgICAgICAgICAndmFsdWUnOiBbewogICAgICAgICAgICAgICAgJ24nOiAn5YWo6YOoJywKICAgICAgICAgICAgICAgICd2JzogJycKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAnMjAyMycsCiAgICAgICAgICAgICAgICAndic6IDIwMjMKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAnMjAyMicsCiAgICAgICAgICAgICAgICAndic6IDIwMjIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAnMjAyMScsCiAgICAgICAgICAgICAgICAndic6IDIwMjEKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAnMjAyMCcsCiAgICAgICAgICAgICAgICAndic6IDIwMjAKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAnMjAxOScsCiAgICAgICAgICAgICAgICAndic6IDIwMTkKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAnMjAxOCcsCiAgICAgICAgICAgICAgICAndic6IDIwMTgKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAnMjAxNycsCiAgICAgICAgICAgICAgICAndic6IDIwMTcKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAnMjAxNi0yMDExJywKICAgICAgICAgICAgICAgICd2JzogJzIwMTFfMjAxNicKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAnMjAxMC0yMDAwJywKICAgICAgICAgICAgICAgICd2JzogJzIwMDBfMjAxMCcKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAnOTDlubTku6MnLAogICAgICAgICAgICAgICAgJ3YnOiAnMTk5MF8xOTk5JwogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICc4MOW5tOS7oycsCiAgICAgICAgICAgICAgICAndic6ICcxOTgwXzE5ODknCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+abtOaXqScsCiAgICAgICAgICAgICAgICAndic6ICcxOTY0XzE5NzknCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAna2V5JzogJ2lzX3B1cmNoYXNlJywKICAgICAgICAgICAgJ25hbWUnOiAn5YWo6YOo6LWE6LS5JywKICAgICAgICAgICAgJ3ZhbHVlJzogW3sKICAgICAgICAgICAgICAgICduJzogJ+WFqOmDqCcsCiAgICAgICAgICAgICAgICAndic6ICcnCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+WFjei0uScsCiAgICAgICAgICAgICAgICAndic6IDAKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn5Lya5ZGYJywKICAgICAgICAgICAgICAgICd2JzogMQogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfku5jotLknLAogICAgICAgICAgICAgICAgJ3YnOiAyCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAna2V5JzogJzE4MDYxJywKICAgICAgICAgICAgJ25hbWUnOiAn57G75Z6LJywKICAgICAgICAgICAgJ3ZhbHVlJzogW3sKICAgICAgICAgICAgICAgICduJzogJ+WFqOmDqCcsCiAgICAgICAgICAgICAgICAndic6ICcnCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+WWnOWJpycsCiAgICAgICAgICAgICAgICAndic6IDEyOTYKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn54ix5oOFJywKICAgICAgICAgICAgICAgICd2JzogMTI5NwogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfliqjkvZwnLAogICAgICAgICAgICAgICAgJ3YnOiAxMjk4CiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+Wlh+W5uycsCiAgICAgICAgICAgICAgICAndic6IDEyOTkKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgJ24nOiAn5oOK5oKaJywKICAgICAgICAgICAgICAgICd2JzogMTMwMAogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAnbic6ICfmgqznlpEnLAogICAgICAgICAgICAgICAgJ3YnOiAxMzAxCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICduJzogJ+mdkuaYpScsCiAgICAgICAgICAgICAgICAndic6IDEzMDIKICAgICAgICAgICAgfV0KICAgICAgICB9XQogICAgfSwKICAgIC8vIHVybDonaHR0cHM6Ly9wY3ctYXBpLmlxaXlpLmNvbS9zZWFyY2gvcmVjb21tZW5kL2xpc3Q/Y2hhbm5lbF9pZD1meWNsYXNzJmRhdGFfdHlwZT0xJmlzX3B1cmNoYXNlPSZtb2RlPTI0JnBhZ2VfaWQ9ZnlwYWdlJnJldF9udW09NDgmdGhyZWVfY2F0ZWdvcnlfaWQ9JywKICAgIHVybDogJ2h0dHBzOi8vcGN3LWFwaS5pcWl5aS5jb20vc2VhcmNoL3JlY29tbWVuZC9saXN0P2NoYW5uZWxfaWQ9ZnljbGFzcyZkYXRhX3R5cGU9MSZwYWdlX2lkPWZ5cGFnZSZyZXRfbnVtPTQ4JywKICAgIGZpbHRlcl91cmw6ICdpc19wdXJjaGFzZT17e2ZsLmlzX3B1cmNoYXNlfX0mbW9kZT17e2ZsLm1vZGV9fSZ0aHJlZV9jYXRlZ29yeV9pZD17e2ZsLnRocmVlX2NhdGVnb3J5X2lkfX0mbWFya2V0X3JlbGVhc2VfZGF0ZV9sZXZlbD17e2ZsLnllYXJ9fScsCiAgICAvLyB1cmw6J2h0dHBzOi8vcGN3LWFwaS5pcWl5aS5jb20vc2VhcmNoL3ZpZGVvL3ZpZGVvbGlzdHM/Y2hhbm5lbF9pZD1meWNsYXNzJnBhZ2VOdW09ZnlwYWdlJnBhZ2VTaXplPTI0JmRhdGFfdHlwZT0xJnNpdGU9aXFpeWknLAogICAgaGVhZGVyczogewogICAgICAgICdVc2VyLUFnZW50JzogJ01PQklMRV9VQScKICAgIH0sCiAgICB0aW1lb3V0OiA1MDAwLAogICAgY2xhc3NfbmFtZTogJ+eUteW9sSbnlLXop4bliacm57qq5b2V54mHJuWKqOa8qybnu7zoibom6Z+z5LmQJue9kee7nOeUteW9sScsCiAgICBjbGFzc191cmw6ICcxJjImMyY0JjYmNSYxNicsCiAgICBsaW1pdDogMjAsCiAgICBwbGF5X3BhcnNlOiB0cnVlLAogICAgbGF6eTogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICB0cnkgewogICAgICAgICAgICBsZXQgYXBpID0gIiIgKyBpbnB1dC5zcGxpdCgiPyIpWzBdOwogICAgICAgICAgICBjb25zb2xlLmxvZyhhcGkpOwogICAgICAgICAgICBsZXQgcmVzcG9uc2UgPSBmZXRjaChhcGksIHsKICAgICAgICAgICAgICAgIG1ldGhvZDogJ2dldCcsCiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7CiAgICAgICAgICAgICAgICAgICAgJ1VzZXItQWdlbnQnOiAnb2todHRwLzMuMTQuOScsCiAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBsZXQgYmF0YSA9IEpTT04ucGFyc2UocmVzcG9uc2UpOwogICAgICAgICAgICBpZiAoYmF0YS51cmwuaW5jbHVkZXMoInFpeWkiKSkgewogICAgICAgICAgICAgICAgaW5wdXQgPSB7CiAgICAgICAgICAgICAgICAgICAgcGFyc2U6IDAsCiAgICAgICAgICAgICAgICAgICAgdXJsOiBiYXRhLnVybCwKICAgICAgICAgICAgICAgICAgICBqeDogMCwKICAgICAgICAgICAgICAgICAgICBkYW5tYWt1OiAiaHR0cDovLzEyNy4wLjAuMTo5OTc4L3Byb3h5P2RvPWRhbm11JnNpdGU9anMmdXJsPWh0dHA6Ly9kbS5xeHE2LmNvbS96eS9hcGkucGhwP3VybD0iICsgaW5wdXQuc3BsaXQoIj8iKVswXQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlucHV0ID0gewogICAgICAgICAgICAgICAgICAgIHBhcnNlOiAwLAogICAgICAgICAgICAgICAgICAgIHVybDogaW5wdXQuc3BsaXQoIj8iKVswXSwKICAgICAgICAgICAgICAgICAgICBqeDogMSwKICAgICAgICAgICAgICAgICAgICBkYW5tYWt1OiAiaHR0cDovLzEyNy4wLjAuMTo5OTc4L3Byb3h5P2RvPWRhbm11JnNpdGU9anMmdXJsPWh0dHA6Ly9kbS5xeHE2LmNvbS96eS9hcGkucGhwP3VybD0iICsgaW5wdXQuc3BsaXQoIj8iKVswXQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgIH0gY2F0Y2ggewogICAgICAgICAgICBpbnB1dCA9IHsKICAgICAgICAgICAgICAgIHBhcnNlOiAwLAogICAgICAgICAgICAgICAgdXJsOiBpbnB1dC5zcGxpdCgiPyIpWzBdLAogICAgICAgICAgICAgICAgang6IDEsCiAgICAgICAgICAgICAgICBkYW5tYWt1OiAiaHR0cDovLzEyNy4wLjAuMTo5OTc4L3Byb3h5P2RvPWRhbm11JnNpdGU9anMmdXJsPWh0dHA6Ly9kbS5xeHE2LmNvbS96eS9hcGkucGhwP3VybD0iICsgaW5wdXQuc3BsaXQoIj8iKVswXQogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0pLAogICAgLy8gcGxheV9wYXJzZTp0cnVlLAogICAgLy8g5omL5Yqo6LCD55So6Kej5p6Q6K+35rGCanNvbueahHVybCzmraRsYXp55LiN5pa55L6/CiAgICAvLyBsYXp5OidqczppbnB1dD0iaHR0cHM6Ly9jYWNoZS5qc29uLmljdS9ob21lL2FwaT90eXBlPXlzJnVpZD0yOTI3OTYma2V5PWZub3J5QUJERUZKTlBRVjI2OSZ1cmw9IitpbnB1dC5zcGxpdCgiPyIpWzBdO2xvZyhpbnB1dCk7bGV0IGh0bWw9SlNPTi5wYXJzZShyZXF1ZXN0KGlucHV0KSk7bG9nKGh0bWwpO2lucHV0PWh0bWwudXJsfHxpbnB1dCcsCiAgICAvLyDmjqjojZA6Jy5saXN0X2l0ZW07aW1nJiZhbHQ7aW1nJiZzcmM7YSYmVGV4dDthJiZkYXRhLWZsb2F0JywKICAgIC8vIOS4gOe6pzonanNvbjouZGF0YS5saXN0Oy5uYW1lOy5pbWFnZVVybDsubGF0ZXN0T3JkZXI7LmFsYnVtSWQnLAogICAg5o6o6I2QOiAnJywKICAgIC8vIOaOqOiNkDonanM6bGV0IGQ9W107ZmV0Y2hfcGFyYW1zLmhlYWRlcnNbInVzZXItYWdlbnQiXT1QQ19VQTtwZGZoPWpzcC5wZGZoO3BkZmE9anNwLnBkZmE7cGQ9anNwLnBkO2xldCBodG1sPWZldGNoKEhPU1QsZmV0Y2hfcGFyYW1zKTtsZXQgbGlzdHM9cGRmYShodG1sLCIucXktbW9kLWxpIik7bGlzdHMuZm9yRWFjaChmdW5jdGlvbihpdCl7dHJ5e2xldCB0aXRsZT1wZGZoKGl0LCJwLnN1YiYmdGl0bGUiKTtsZXQgZGVzYz1wZGZoKGl0LCIucXktbW9kLWxhYmVsJiZUZXh0Iik7bGV0IHBpY191cmw9cGQoaXQsImltZyYmc3JjIik7ZC5wdXNoKHt0aXRsZTp0aXRsZSxkZXNjOmRlc2MsaW1nOnBpY191cmx9KX1jYXRjaChlKXt9fSk7cmVzPXNldFJlc3VsdChkKTsnLAogICAg5LiA57qnOiAnanM6bGV0IGQ9W107aWYoTVlfQ0FURT09PSIxNiIpe2lucHV0PWlucHV0LnJlcGxhY2UoImNoYW5uZWxfaWQ9MTYiLCJjaGFubmVsX2lkPTEiKS5zcGxpdCgidGhyZWVfY2F0ZWdvcnlfaWQiKVswXTtpbnB1dCs9InRocmVlX2NhdGVnb3J5X2lkPTI3NDAxIn1lbHNlIGlmKE1ZX0NBVEU9PT0iNSIpe2lucHV0PWlucHV0LnJlcGxhY2UoImRhdGFfdHlwZT0xIiwiZGF0YV90eXBlPTIiKX1sZXQgaHRtbD1yZXF1ZXN0KGlucHV0KTtsZXQganNvbj1KU09OLnBhcnNlKGh0bWwpO2lmKGpzb24uY29kZT09PSJBMDAwMDMiKXtmZXRjaF9wYXJhbXMuaGVhZGVyc1sidXNlci1hZ2VudCJdPVBDX1VBO2pzb249SlNPTi5wYXJzZShmZXRjaChpbnB1dCxmZXRjaF9wYXJhbXMpKX1qc29uLmRhdGEubGlzdC5mb3JFYWNoKGZ1bmN0aW9uKGRhdGEpe2lmKGRhdGEuY2hhbm5lbElkPT09MSl7ZGVzYz1kYXRhLmhhc093blByb3BlcnR5KCJzY29yZSIpP2RhdGEuc2NvcmUrIuWIhlxcdCI6IiJ9ZWxzZSBpZihkYXRhLmNoYW5uZWxJZD09PTJ8fGRhdGEuY2hhbm5lbElkPT09NCl7aWYoZGF0YS5sYXRlc3RPcmRlcj09PWRhdGEudmlkZW9Db3VudCl7ZGVzYz0oZGF0YS5oYXNPd25Qcm9wZXJ0eSgic2NvcmUiKT9kYXRhLnNjb3JlKyLliIZcXHQiOiIiKStkYXRhLmxhdGVzdE9yZGVyKyLpm4blhagifWVsc2V7aWYoZGF0YS52aWRlb0NvdW50KXtkZXNjPShkYXRhLmhhc093blByb3BlcnR5KCJzY29yZSIpP2RhdGEuc2NvcmUrIuWIhlxcdCI6IiIpK2RhdGEubGF0ZXN0T3JkZXIrIi8iK2RhdGEudmlkZW9Db3VudCsi6ZuGIn1lbHNle2Rlc2M9IuabtOaWsOiHsyAiK2RhdGEubGF0ZXN0T3JkZXIrIumbhiJ9fX1lbHNlIGlmKGRhdGEuY2hhbm5lbElkPT09Nil7ZGVzYz1kYXRhLnBlcmlvZCsi5pyfIn1lbHNlIGlmKGRhdGEuY2hhbm5lbElkPT09NSl7ZGVzYz1kYXRhLmZvY3VzfWVsc2V7aWYoZGF0YS5sYXRlc3RPcmRlcil7ZGVzYz0i5pu05paw6IezIOesrCIrZGF0YS5sYXRlc3RPcmRlcisi5pyfIn1lbHNlIGlmKGRhdGEucGVyaW9kKXtkZXNjPWRhdGEucGVyaW9kfWVsc2V7ZGVzYz1kYXRhLmZvY3VzfX11cmw9TVlfQ0FURSsiJCIrZGF0YS5hbGJ1bUlkO2QucHVzaCh7dXJsOnVybCx0aXRsZTpkYXRhLm5hbWUsZGVzYzpkZXNjLHBpY191cmw6ZGF0YS5pbWFnZVVybC5yZXBsYWNlKCIuanBnIiwiXzM5MF81MjAuanBnP2NhcGxpc3Q9anBnLHdlYnAiKX0pfSk7c2V0UmVzdWx0KGQpOycsCiAgICAvLyDkuIDnuqc6J2pzOmxldCBkPVtdO2lmKE1ZX0NBVEU9PT0iMTYiKXtpbnB1dD1pbnB1dC5yZXBsYWNlKCJjaGFubmVsX2lkPTE2IiwiY2hhbm5lbF9pZD0xIikuc3BsaXQoInRocmVlX2NhdGVnb3J5X2lkIilbMF07aW5wdXQrPSJ0aHJlZV9jYXRlZ29yeV9pZD0yNzQwMSJ9ZWxzZSBpZihNWV9DQVRFPT09IjUiKXtpbnB1dD1pbnB1dC5yZXBsYWNlKCJkYXRhX3R5cGU9MSIsImRhdGFfdHlwZT0yIil9bGV0IGh0bWw9ZmV0Y2goaW5wdXQsZmV0Y2hfcGFyYW1zKTtsZXQganNvbj1KU09OLnBhcnNlKGh0bWwpO2lmKGpzb24uY29kZT09PSJBMDAwMDMiKXtmZXRjaF9wYXJhbXMuaGVhZGVyc1sidXNlci1hZ2VudCJdPVBDX1VBO2pzb249SlNPTi5wYXJzZShmZXRjaChpbnB1dCxmZXRjaF9wYXJhbXMpKX1qc29uLmRhdGEubGlzdC5mb3JFYWNoKGZ1bmN0aW9uKGRhdGEpe2lmKGRhdGEuY2hhbm5lbElkPT09MSl7ZGVzYz1kYXRhLmhhc093blByb3BlcnR5KCJzY29yZSIpP2RhdGEuc2NvcmUrIuWIhlxcdCI6IiJ9ZWxzZSBpZihkYXRhLmNoYW5uZWxJZD09PTJ8fGRhdGEuY2hhbm5lbElkPT09NCl7aWYoZGF0YS5sYXRlc3RPcmRlcj09PWRhdGEudmlkZW9Db3VudCl7ZGVzYz0oZGF0YS5oYXNPd25Qcm9wZXJ0eSgic2NvcmUiKT9kYXRhLnNjb3JlKyLliIZcXHQiOiIiKStkYXRhLmxhdGVzdE9yZGVyKyLpm4blhagifWVsc2V7aWYoZGF0YS52aWRlb0NvdW50KXtkZXNjPShkYXRhLmhhc093blByb3BlcnR5KCJzY29yZSIpP2RhdGEuc2NvcmUrIuWIhlxcdCI6IiIpK2RhdGEubGF0ZXN0T3JkZXIrIi8iK2RhdGEudmlkZW9Db3VudCsi6ZuGIn1lbHNle2Rlc2M9IuabtOaWsOiHsyAiK2RhdGEubGF0ZXN0T3JkZXIrIumbhiJ9fX1lbHNlIGlmKGRhdGEuY2hhbm5lbElkPT09Nil7ZGVzYz1kYXRhLnBlcmlvZCsi5pyfIn1lbHNlIGlmKGRhdGEuY2hhbm5lbElkPT09NSl7ZGVzYz1kYXRhLmZvY3VzfWVsc2V7aWYoZGF0YS5sYXRlc3RPcmRlcil7ZGVzYz0i5pu05paw6IezIOesrCIrZGF0YS5sYXRlc3RPcmRlcisi5pyfIn1lbHNlIGlmKGRhdGEucGVyaW9kKXtkZXNjPWRhdGEucGVyaW9kfWVsc2V7ZGVzYz1kYXRhLmZvY3VzfX11cmw9TVlfQ0FURSsiJCIrZGF0YS5hbGJ1bUlkO2QucHVzaCh7dXJsOnVybCx0aXRsZTpkYXRhLm5hbWUsZGVzYzpkZXNjLHBpY191cmw6ZGF0YS5pbWFnZVVybC5yZXBsYWNlKCIuanBnIiwiXzM5MF81MjAuanBnP2NhcGxpc3Q9anBnLHdlYnAiKX0pfSk7c2V0UmVzdWx0KGQpOycsCiAgICAvLyDkuIDnuqc6J2pzb246LmRhdGEubGlzdDsubmFtZTsuaW1hZ2VVcmw7LnBsYXlVcmw7LmxhdGVzdE9yZGVyJywKICAgIC8vIOS6jOe6pzp7aXNfanNvbjoxLCJ0aXRsZSI6ImRhdGEudGl0bGU7ZGF0YS5tb3ZpZWNhdGVnb3J5WzBdK2RhdGEubW92aWVjYXRlZ29yeVsxXSIsImltZyI6ImRhdGEuY2RuY292ZXIiLCJkZXNjIjoiZGF0YS5hcmVhWzBdO2RhdGEuZGlyZWN0b3JbMF0iLCJjb250ZW50IjoiZGF0YS5kZXNjcmlwdGlvbiIsInRhYnMiOiJkYXRhLnBsYXlsaW5rX3NpdGVzO2RhdGEucGxheWxpbmtzZGV0YWlsLiNpZHYucXVhbGl0eSIsImxpc3RzIjoiZGF0YS5wbGF5bGlua3NkZXRhaWwuI2lkdi5kZWZhdWx0X3VybCJ9LAogICAgLy8g5LqM57qnOntpc19qc29uOjEsInRpdGxlIjoiZGF0YS5uYW1lK2RhdGEuc3VidGl0bGU7ZGF0YS5sYXRlc3RPcmRlciIsImltZyI6ImRhdGEuaW1hZ2VVcmwiLCJkZXNjIjoiZGF0YS5jYXRlZ29yaWVzO2RhdGEuYXJlYXMiLCJjb250ZW50IjoiZGF0YS5kZXNjcmlwdGlvbiIsInRhYnMiOiJkYXRhLm5hbWUiLCJsaXN0cyI6ImRhdGEucGxheWxpbmtzZGV0YWlsLiNpZHYuZGVmYXVsdF91cmwifSwKICAgIOS6jOe6pzogJycsCiAgICDkuoznuqc6ICdqczpsZXQgZD1bXTtsZXQgaHRtbD1yZXF1ZXN0KGlucHV0KTtsZXQganNvbj1KU09OLnBhcnNlKGh0bWwpLmRhdGE7Vk9EPXt2b2RfaWQ6IiIsdm9kX3VybDppbnB1dCx2b2RfbmFtZToiIix0eXBlX25hbWU6IiIsdm9kX2FjdG9yOiIiLHZvZF95ZWFyOiIiLHZvZF9kaXJlY3RvcjoiIix2b2RfYXJlYToiIix2b2RfY29udGVudDoiIix2b2RfcmVtYXJrczoiIix2b2RfcGljOiIifTtWT0Qudm9kX25hbWU9anNvbi5uYW1lO3RyeXtpZihqc29uLmxhdGVzdE9yZGVyKXtWT0Qudm9kX3JlbWFya3M9Iuexu+WeizogIisoanNvbi5jYXRlZ29yaWVzWzBdLm5hbWV8fCIiKSsiXFx0IisoanNvbi5jYXRlZ29yaWVzWzFdLm5hbWV8fCIiKSsiXFx0IisoanNvbi5jYXRlZ29yaWVzWzJdLm5hbWV8fCIiKSsiXFx0Iisi6K+E5YiG77yaIisoanNvbi5zY29yZXx8IiIpKyJcXG7mm7TmlrDoh7PvvJrnrKwiK2pzb24ubGF0ZXN0T3JkZXIrIumbhijmnJ8pL+WFsSIranNvbi52aWRlb0NvdW50KyLpm4Yo5pyfKSJ9ZWxzZXtWT0Qudm9kX3JlbWFya3M9Iuexu+WeizogIisoanNvbi5jYXRlZ29yaWVzWzBdLm5hbWV8fCIiKSsiXFx0IisoanNvbi5jYXRlZ29yaWVzWzFdLm5hbWV8fCIiKSsiXFx0IisoanNvbi5jYXRlZ29yaWVzWzJdLm5hbWV8fCIiKSsiXFx0Iisi6K+E5YiG77yaIisoanNvbi5zY29yZXx8IiIpK2pzb24ucGVyaW9kfX1jYXRjaChlKXtWT0Qudm9kX3JlbWFya3M9anNvbi5zdWJ0aXRsZX1WT0Qudm9kX2FyZWE9KGpzb24uZm9jdXN8fCIiKSsiXFxu6LWE6LS577yaIisoanNvbi5wYXlNYXJrPT09MT8iVklQIjoi5YWN6LS5IikrIlxcbuWcsOWMuu+8miIrKGpzb24uYXJlYXN8fCIiKTtsZXQgdnNpemU9IjU3OV83NzIiO3RyeXt2c2l6ZT1qc29uLmltYWdlU2l6ZVsxMl19Y2F0Y2goZSl7fVZPRC52b2RfcGljPWpzb24uaW1hZ2VVcmwucmVwbGFjZSgiLmpwZyIsIl8iK3ZzaXplKyIuanBnP2NhcGxpc3Q9anBnLHdlYnAiKTtWT0QudHlwZV9uYW1lPWpzb24uY2F0ZWdvcmllcy5tYXAoZnVuY3Rpb24oaXQpe3JldHVybiBpdC5uYW1lfSkuam9pbigiLCIpO2lmKGpzb24ucGVvcGxlLm1haW5fY2hhcmFjdG9yKXtsZXQgdm9kX2FjdG9ycz1bXTtqc29uLnBlb3BsZS5tYWluX2NoYXJhY3Rvci5mb3JFYWNoKGZ1bmN0aW9uKGl0KXt2b2RfYWN0b3JzLnB1c2goaXQubmFtZSl9KTtWT0Qudm9kX2FjdG9yPXZvZF9hY3RvcnMuam9pbigiLCIpfVZPRC52b2RfY29udGVudD1qc29uLmRlc2NyaXB0aW9uO2xldCBwbGF5bGlzdHM9W107aWYoanNvbi5jaGFubmVsSWQ9PT0xfHxqc29uLmNoYW5uZWxJZD09PTUpe3BsYXlsaXN0cz1be3BsYXlVcmw6anNvbi5wbGF5VXJsLGltYWdlVXJsOmpzb24uaW1hZ2VVcmwsc2hvcnRUaXRsZTpqc29uLnNob3J0VGl0bGUsZm9jdXM6anNvbi5mb2N1cyxwZXJpb2Q6anNvbi5wZXJpb2R9XX1lbHNle2lmKGpzb24uY2hhbm5lbElkPT09Nil7bGV0IHFzPWpzb24ucGVyaW9kLnNwbGl0KCItIilbMF07bGV0IGxpc3RVcmw9Imh0dHBzOi8vcGN3LWFwaS5pcWl5aS5jb20vYWxidW0vc291cmNlL3N2bGlzdGluZm8/Y2lkPTYmc291cmNlaWQ9Iitqc29uLmFsYnVtSWQrIiZ0aW1lbGlzdD0iK3FzO2xldCBwbGF5RGF0YT1KU09OLnBhcnNlKHJlcXVlc3QobGlzdFVybCkpLmRhdGFbcXNdO3BsYXlEYXRhLmZvckVhY2goZnVuY3Rpb24oaXQpe3BsYXlsaXN0cy5wdXNoKHtwbGF5VXJsOml0LnBsYXlVcmwsaW1hZ2VVcmw6aXQuaW1hZ2VVcmwsc2hvcnRUaXRsZTppdC5zaG9ydFRpdGxlLGZvY3VzOml0LmZvY3VzLHBlcmlvZDppdC5wZXJpb2R9KX0pfWVsc2V7bGV0IGxpc3RVcmw9Imh0dHBzOi8vcGN3LWFwaS5pcWl5aS5jb20vYWxidW1zL2FsYnVtL2F2bGlzdGluZm8/YWlkPSIranNvbi5hbGJ1bUlkKyImc2l6ZT0yMDAmcGFnZT0xIjtsZXQgZGF0YT1KU09OLnBhcnNlKHJlcXVlc3QobGlzdFVybCkpLmRhdGE7bGV0IHRvdGFsPWRhdGEudG90YWw7cGxheWxpc3RzPWRhdGEuZXBzb2RlbGlzdDtpZih0b3RhbD4yMDApe2ZvcihsZXQgaT0yO2k8dG90YWwvMjAwKzE7aSsrKXtsZXQgbGlzdFVybD0iaHR0cHM6Ly9wY3ctYXBpLmlxaXlpLmNvbS9hbGJ1bXMvYWxidW0vYXZsaXN0aW5mbz9haWQ9Iitqc29uLmFsYnVtSWQrIiZzaXplPTIwMCZwYWdlPSIraTtsZXQgZGF0YT1KU09OLnBhcnNlKHJlcXVlc3QobGlzdFVybCkpLmRhdGE7cGxheWxpc3RzPXBsYXlsaXN0cy5jb25jYXQoZGF0YS5lcHNvZGVsaXN0KX19fX1wbGF5bGlzdHMuZm9yRWFjaChmdW5jdGlvbihpdCl7ZC5wdXNoKHt0aXRsZTppdC5zaG9ydFRpdGxlfHwi56ysIitpdC5vcmRlcisi6ZuGIixkZXNjOml0LnN1YnRpdGxlfHxpdC5mb2N1c3x8aXQucGVyaW9kLGltZzppdC5pbWFnZVVybC5yZXBsYWNlKCIuanBnIiwiXzQ4MF8yNzAuanBnP2NhcGxpc3Q9anBnLHdlYnAiKSx1cmw6aXQucGxheVVybH0pfSk7Vk9ELnZvZF9wbGF5X2Zyb209InFpeWkiO1ZPRC52b2RfcGxheV91cmw9ZC5tYXAoZnVuY3Rpb24oaXQpe3JldHVybiBpdC50aXRsZSsiJCIraXQudXJsfSkuam9pbigiIyIpOycsCiAgICAvLyDkuoznuqc6J2pzOmxldCBkPVtdO2xldCBodG1sPXJlcXVlc3QoaW5wdXQpO2xldCBqc29uPUpTT04ucGFyc2UoaHRtbCkuZGF0YTt2b2Q9e3ZvZF9pZDoiIix2b2RfdXJsOmlucHV0LHZvZF9uYW1lOiIiLHR5cGVfbmFtZToiIix2b2RfYWN0b3I6IiIsdm9kX3llYXI6IiIsdm9kX2RpcmVjdG9yOiIiLHZvZF9hcmVhOiIiLHZvZF9jb250ZW50OiIiLHZvZF9yZW1hcmtzOiIiLHZvZF9waWM6IiJ9O3ZvZC52b2RfbmFtZT1qc29uLm5hbWU7dHJ5e2lmKGpzb24ubGF0ZXN0T3JkZXIpe3ZvZC52b2RfcmVtYXJrcz0i57G75Z6LOiAiKyhqc29uLmNhdGVnb3JpZXNbMF0ubmFtZXx8IiIpKyJcXHQiKyhqc29uLmNhdGVnb3JpZXNbMV0ubmFtZXx8IiIpKyJcXHQiKyhqc29uLmNhdGVnb3JpZXNbMl0ubmFtZXx8IiIpKyJcXHQiKyLor4TliIbvvJoiKyhqc29uLnNjb3JlfHwiIikrIlxcbuabtOaWsOiHs++8muesrCIranNvbi5sYXRlc3RPcmRlcisi6ZuGKOacnykv5YWxIitqc29uLnZpZGVvQ291bnQrIumbhijmnJ8pIn1lbHNle3ZvZC52b2RfcmVtYXJrcz0i57G75Z6LOiAiKyhqc29uLmNhdGVnb3JpZXNbMF0ubmFtZXx8IiIpKyJcXHQiKyhqc29uLmNhdGVnb3JpZXNbMV0ubmFtZXx8IiIpKyJcXHQiKyhqc29uLmNhdGVnb3JpZXNbMl0ubmFtZXx8IiIpKyJcXHQiKyLor4TliIbvvJoiKyhqc29uLnNjb3JlfHwiIikranNvbi5wZXJpb2R9fWNhdGNoKGUpe3ZvZC52b2RfcmVtYXJrcz1qc29uLnN1YnRpdGxlfXZvZC52b2RfYXJlYT0oanNvbi5mb2N1c3x8IiIpKyJcXG7otYTotLnvvJoiKyhqc29uLnBheU1hcms9PT0xPyJWSVAiOiLlhY3otLkiKSsiXFxu5Zyw5Yy677yaIisoanNvbi5hcmVhc3x8IiIpO2xldCB2c2l6ZT0iNTc5Xzc3MiI7dHJ5e3ZzaXplPWpzb24uaW1hZ2VTaXplWzEyXX1jYXRjaChlKXt9dm9kLnZvZF9waWM9anNvbi5pbWFnZVVybC5yZXBsYWNlKCIuanBnIiwiXyIrdnNpemUrIi5qcGc/Y2FwbGlzdD1qcGcsd2VicCIpO3ZvZC50eXBlX25hbWU9anNvbi5jYXRlZ29yaWVzLm1hcChmdW5jdGlvbihpdCl7cmV0dXJuIGl0Lm5hbWV9KS5qb2luKCIsIik7aWYoanNvbi5wZW9wbGUubWFpbl9jaGFyYWN0b3Ipe3ZvZF9hY3RvcnM9W107anNvbi5wZW9wbGUubWFpbl9jaGFyYWN0b3IuZm9yRWFjaChmdW5jdGlvbihpdCl7dm9kX2FjdG9ycy5wdXNoKGl0Lm5hbWUpfSk7dm9kLnZvZF9hY3Rvcj12b2RfYWN0b3JzLmpvaW4oIiwiKX12b2Qudm9kX2NvbnRlbnQ9anNvbi5kZXNjcmlwdGlvbjtsZXQgcGxheWxpc3RzPVtdO2lmKGpzb24uY2hhbm5lbElkPT09MXx8anNvbi5jaGFubmVsSWQ9PT01KXtwbGF5bGlzdHM9W3twbGF5VXJsOmpzb24ucGxheVVybCxpbWFnZVVybDpqc29uLmltYWdlVXJsLHNob3J0VGl0bGU6anNvbi5zaG9ydFRpdGxlLGZvY3VzOmpzb24uZm9jdXMscGVyaW9kOmpzb24ucGVyaW9kfV19ZWxzZXtpZihqc29uLmNoYW5uZWxJZD09PTYpe2xldCBxcz1qc29uLnBlcmlvZC5zcGxpdCgiLSIpWzBdO2xldCBsaXN0VXJsPSJodHRwczovL3Bjdy1hcGkuaXFpeWkuY29tL2FsYnVtL3NvdXJjZS9zdmxpc3RpbmZvP2NpZD02JnNvdXJjZWlkPSIranNvbi5hbGJ1bUlkKyImdGltZWxpc3Q9IitxcztsZXQgcGxheURhdGE9SlNPTi5wYXJzZShyZXF1ZXN0KGxpc3RVcmwpKS5kYXRhW3FzXTtwbGF5RGF0YS5mb3JFYWNoKGZ1bmN0aW9uKGl0KXtwbGF5bGlzdHMucHVzaCh7cGxheVVybDppdC5wbGF5VXJsLGltYWdlVXJsOml0LmltYWdlVXJsLHNob3J0VGl0bGU6aXQuc2hvcnRUaXRsZSxmb2N1czppdC5mb2N1cyxwZXJpb2Q6aXQucGVyaW9kfSl9KX1lbHNle2xldCBsaXN0VXJsPSJodHRwczovL3Bjdy1hcGkuaXFpeWkuY29tL2FsYnVtcy9hbGJ1bS9hdmxpc3RpbmZvP2FpZD0iK2pzb24uYWxidW1JZCsiJnNpemU9MjAwJnBhZ2U9MSI7bGV0IGRhdGE9SlNPTi5wYXJzZShyZXF1ZXN0KGxpc3RVcmwpKS5kYXRhO2xldCB0b3RhbD1kYXRhLnRvdGFsO3BsYXlsaXN0cz1kYXRhLmVwc29kZWxpc3Q7aWYodG90YWw+MjAwKXtmb3IobGV0IGk9MjtpPHRvdGFsLzIwMCsxO2krKyl7bGV0IGxpc3RVcmw9Imh0dHBzOi8vcGN3LWFwaS5pcWl5aS5jb20vYWxidW1zL2FsYnVtL2F2bGlzdGluZm8/YWlkPSIranNvbi5hbGJ1bUlkKyImc2l6ZT0yMDAmcGFnZT0iK2k7bGV0IGRhdGE9SlNPTi5wYXJzZShyZXF1ZXN0KGxpc3RVcmwpKS5kYXRhO3BsYXlsaXN0cz1wbGF5bGlzdHMuY29uY2F0KGRhdGEuZXBzb2RlbGlzdCl9fX19cGxheWxpc3RzLmZvckVhY2goZnVuY3Rpb24oaXQpe2QucHVzaCh7dGl0bGU6aXQuc2hvcnRUaXRsZXx8IuesrCIraXQub3JkZXIrIumbhiIsZGVzYzppdC5zdWJ0aXRsZXx8aXQuZm9jdXN8fGl0LnBlcmlvZCxpbWc6aXQuaW1hZ2VVcmwucmVwbGFjZSgiLmpwZyIsIl80ODBfMjcwLmpwZz9jYXBsaXN0PWpwZyx3ZWJwIiksdXJsOml0LnBsYXlVcmx9KX0pO3ZvZC52b2RfcGxheV9mcm9tPSJxaXlpIjt2b2Qudm9kX3BsYXlfdXJsPWQubWFwKGZ1bmN0aW9uKGl0KXtyZXR1cm4gaXQudGl0bGUrIiQiK2l0LnVybH0pLmpvaW4oIiMiKTsnLAogICAg5pCc57SiOiAnanNvbjouZGF0YS5kb2NpbmZvczsuYWxidW1Eb2NJbmZvLmFsYnVtVGl0bGU7LmFsYnVtRG9jSW5mby5hbGJ1bVZJbWFnZTsuYWxidW1Eb2NJbmZvLmNoYW5uZWw7LmFsYnVtRG9jSW5mby5hbGJ1bUlkOy5hbGJ1bURvY0luZm8udHZGb2N1cycsCn0= \ No newline at end of file diff --git a/潇洒/js/AS.js b/潇洒/js/AS.js new file mode 100644 index 0000000..8a1d37a --- /dev/null +++ b/潇洒/js/AS.js @@ -0,0 +1 @@ +dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+eIseaQnCcsCiAgICBob3N0OiAnaHR0cHM6Ly93d3cuZXNvdWEuY29tLycsCiAgICBob3N0SnM6ICcnLAogICAgaGVhZGVyczogewogICAgICAgICdVc2VyLUFnZW50JzogJ01vemlsbGEvNS4wIChMaW51eDsgQW5kcm9pZCAxMTsgUGl4ZWwgNSkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzkwLjAuNDQzMC45MSBNb2JpbGUgU2FmYXJpLzUzNy4zNicsCiAgICB9LAogICAg57yW56CBOiAndXRmLTgnLAogICAgdGltZW91dDogNTAwMCwKICAgIHVybDogJ2h0dHBzOi8vd3d3LmVzb3VhLmNvbS9zZWFyY2g/cT1meWNsYXNzJmZvcm1hdD12aWRlbyZleGFjdD10cnVlJnBhZ2U9ZnlwYWdlJywKICAgIGZpbHRlcl91cmw6ICcnLAogICAgZGV0YWlsVXJsOiAnJywKICAgIHNlYXJjaFVybDogJ2h0dHBzOi8vd3d3LmVzb3VhLmNvbS9zZWFyY2g/cT0qKiZmb3JtYXQ9dmlkZW8mZXhhY3Q9dHJ1ZSZwYWdlPWZ5cGFnZScsCiAgICBzZWFyY2hhYmxlOiAxLAogICAgcXVpY2tTZWFyY2g6IDEsCiAgICBmaWx0ZXJhYmxlOiAxLAogICAgY2xhc3NfbmFtZTogJ+WJp+mbhibnlLXlvbEm55+t5YmnJuWKqOa8qybnu7zoibonLAogICAgY2xhc3NfdXJsOiAn5Ymn6ZuGJueUteW9sSbnn63liacm5Yqo5ryrJue7vOiJuicsCiAgICBwcm94eV9ydWxlOiAnJywKICAgIHNuaWZmZXI6IGZhbHNlLAogICAgaXNWaWRlbzogJycsCiAgICBwbGF5X3BhcnNlOiB0cnVlLAogICAgcGFyc2VfdXJsOiAnJywKICAgIGxhenk6ICJqczpcbiAgICAgICAgaW5wdXQgPSAncHVzaDovLycgKyBpbnB1dDtcbiAgICAiLAogICAgbGltaXQ6IDksCiAgICBkb3VibGU6IGZhbHNlLAogICAgLy8g5o6o6I2QOiAnKicsCiAgICDkuIDnuqc6ICdqczpcbiAgICAgICAgbGV0IGh0bWwgPSBmZXRjaChpbnB1dCk7XG4gICAgICAgIGxldCBsaXN0ID0gcGRmYShodG1sLCAiYm9keSYmLnNlbWktc3BhY2UtbWVkaXVtLXZlcnRpY2FsIik7XG4gICAgICAgIFZPRFMgPSBsaXN0Lm1hcCh4ID0+IHtcbiAgICAgICAgICAgIGxldCByZW1hcmtzID0gcGRmaCh4LCAiZGl2JiZpbWcmJmFsdCIpO1xuICAgICAgICAgICAgLy8g6L+H5ruk5o6J5YyF5ZCrIui/hembt+S6keebmCLnmoTlhoXlrrlcbiAgICAgICAgICAgIGlmKHJlbWFya3MuaW5jbHVkZXMoIui/hembt+S6keebmCIpIHx8IHJlbWFya3MuaW5jbHVkZXMoIjExNSIpIHx8IHJlbWFya3MuaW5jbHVkZXMoIumYv+mHjCIpKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdm9kX25hbWU6IHBkZmgoeCwgImRpdiYmYSYmdGl0bGUiKSxcbiAgICAgICAgICAgICAgICB2b2RfcGljOiBcJ1wnLFxuICAgICAgICAgICAgICAgIHZvZF9yZW1hcmtzOiByZW1hcmtzLFxuICAgICAgICAgICAgICAgIHZvZF9jb250ZW50OiByZW1hcmtzLFxuICAgICAgICAgICAgICAgIHZvZF9pZDogcGRmaCh4LCAiZGl2JiZhJiZocmVmIilcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkuZmlsdGVyKHggPT4geCAhPT0gbnVsbCk7XG4gICAgJywKICAgIOS6jOe6pzogewogICAgICAgIHRpdGxlOiAnaDEmJlRleHQnLAogICAgICAgIGltZzogJ2ltZyYmc3JjJywKICAgICAgICBkZXNjOiAnLmNhcmQtdGV4dDplcSgyKSYmVGV4dDs7OzsnLAogICAgICAgIGNvbnRlbnQ6ICdib2R5JiYuc2VtaS1zcGFjZS1sb29zZS12ZXJ0aWNhbCYmYSYmaHJlZicsCiAgICAgICAgdGFiczogImpzOlRBQlMgPSBbJ+aHkuebmCddIiwKICAgICAgICBsaXN0czogImpzOlxuICAgICAgICAgICAgTElTVFMgPSBbXTtcbiAgICAgICAgICAgIGxldCBsaXN0czEgPSBwZGZhKGh0bWwsICdib2R5JiYuc2VtaS1zcGFjZS1sb29zZS12ZXJ0aWNhbCcpLm1hcChpdCA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IF90dCA9IHBkZmgoaXQsICdzcGFuJiZ0aXRsZScpO1xuICAgICAgICAgICAgICAgIGxldCBfdXUgPSBwZGZoKGl0LCAnYSYmaHJlZicpO1xuICAgICAgICAgICAgICAgIHJldHVybiBfdHQgKyAnJCcgKyBfdXU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIExJU1RTLnB1c2gobGlzdHMxKTtcbiAgICAgICAgIiwKICAgIH0sCiAgICDmkJzntKI6ICdqczpcbiAgICAgICAgbGV0IGh0bWwgPSBmZXRjaChpbnB1dCk7XG4gICAgICAgIGxldCBsaXN0ID0gcGRmYShodG1sLCAiYm9keSYmLnNlbWktc3BhY2UtbWVkaXVtLXZlcnRpY2FsIik7XG4gICAgICAgIFZPRFMgPSBsaXN0Lm1hcCh4ID0+IHtcbiAgICAgICAgICAgIGxldCByZW1hcmtzID0gcGRmaCh4LCAiZGl2JiZpbWcmJmFsdCIpO1xuICAgICAgICAgICAgLy8g6L+H5ruk5o6J5YyF5ZCrIui/hembt+S6keebmCLnmoTlhoXlrrlcbiAgICAgICAgICAgIGlmKHJlbWFya3MuaW5jbHVkZXMoIui/hembt+S6keebmCIpIHx8IHJlbWFya3MuaW5jbHVkZXMoIjExNSIpIHx8IHJlbWFya3MuaW5jbHVkZXMoIumYv+mHjCIpKSByZXR1cm4gbnVsbDtsZXQgdm9kTmFtZSA9IHBkZmgoeCwgImRpdiYmYSYmdGl0bGUiKTtcbiAgICAgICAgICAgIC8vIOi/h+a7pOadoeS7tu+8mui/hembt+S6keebmOOAgS50eHTlkI7nvIDjgIHnqbrlkI3np7BcbiAgICAgICAgICAgIGlmKHZvZE5hbWUuZW5kc1dpdGgoIi56aXAiKSB8fCB2b2ROYW1lLmVuZHNXaXRoKCIudHh0IikgfHwgIXZvZE5hbWUudHJpbSgpKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdm9kX25hbWU6IHBkZmgoeCwgImRpdiYmYSYmdGl0bGUiKSxcbiAgICAgICAgICAgICAgICB2b2RfcGljOiBcJ1wnLFxuICAgICAgICAgICAgICAgIHZvZF9yZW1hcmtzOiByZW1hcmtzLFxuICAgICAgICAgICAgICAgIHZvZF9jb250ZW50OiByZW1hcmtzLFxuICAgICAgICAgICAgICAgIHZvZF9pZDogcGRmaCh4LCAiZGl2JiZhJiZocmVmIilcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkuZmlsdGVyKHggPT4geCAhPT0gbnVsbCk7XG4gICAgJywKICAgIGNhdGVfZXhjbHVkZTogJ+mmlumhtXznlZnoqIB8QVBQfOS4i+i9vXzotYTorq985paw6Ze7fOWKqOaAgScsCiAgICB0YWJfZXhjbHVkZTogJ+eMnOS9oHzllpzmrKJ85LiL6L29fOWJp+aDhXzmppx86K+E6K66JywKICAgIOexu+WeizogJ+W9seinhicsCiAgICBob21lVXJsOiAnaHR0cHM6Ly93d3cuZXNvdWEuY29tLycsCiAgICDkuoznuqforr/pl67liY06ICcnLAogICAgZW5jb2Rpbmc6ICd1dGYtOCcsCiAgICBzZWFyY2hfZW5jb2Rpbmc6ICcnLAogICAg5Zu+54mH5p2l5rqQOiAnJywKICAgIOWbvueJh+abv+aNojogJycsCiAgICBwbGF5X2pzb246IFtdLAogICAgcGFnZWNvdW50OiB7fSwKICAgIHRhYl9yZW1vdmU6IFtdLAogICAgdGFiX29yZGVyOiBbXSwKICAgIHRhYl9yZW5hbWU6IHt9LAp9 \ No newline at end of file diff --git a/潇洒/js/BK.js b/潇洒/js/BK.js new file mode 100644 index 0000000..f07dda1 --- /dev/null +++ b/潇洒/js/BK.js @@ -0,0 +1 @@ +dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+eZvumFt+efreWJpycsCiAgICBob3N0OiAnaHR0cHM6Ly9hcGkua3VsZXUuY29tLycsCiAgICBob3N0SnM6ICcnLAogICAgaGVhZGVyczogewogICAgICAgICdVc2VyLUFnZW50JzogJ01vemlsbGEvNS4wIChMaW51eDsgQW5kcm9pZCAxMTsgUGl4ZWwgNSkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzkwLjAuNDQzMC45MSBNb2JpbGUgU2FmYXJpLzUzNy4zNicsCiAgICB9LAogICAg57yW56CBOiAndXRmLTgnLAogICAgdGltZW91dDogNTAwMCwKICAgIHVybDogJ2h0dHBzOi8vYXBpLmt1bGV1LmNvbS9meWNsYXNzJywKICAgIGZpbHRlcl91cmw6ICcnLAogICAgZGV0YWlsVXJsOiAnJywKICAgIHNlYXJjaFVybDogJ2h0dHBzOi8vYXBpLmt1bGV1LmNvbS9hcGkvYmRkaj90ZXh0PSoqJywKICAgIHNlYXJjaGFibGU6IDEsCiAgICBxdWlja1NlYXJjaDogMSwKICAgIGZpbHRlcmFibGU6IDEsCiAgICBjbGFzc19uYW1lOiAn5LuK5pel5pu05pawJueZvuW6puefreWJpybmr4/ml6Xmm7TmlrAm5aS45YWL55+t5YmnJuavj+aXpeabtOaWsCcsCiAgICBjbGFzc191cmw6ICdhcGkveWluZ3NoaSZhcGkvYmRkaj9saXN0JmFwaS9iZGRqP3RvZGF5JmFwaS9hY3Rpb24/bGlzdCZhcGkvYWN0aW9uP3RvZGF5JywKICAgIHByb3h5X3J1bGU6ICcnLAogICAgc25pZmZlcjogZmFsc2UsCiAgICBpc1ZpZGVvOiAnJywKICAgIHBsYXlfcGFyc2U6IHRydWUsCiAgICBwYXJzZV91cmw6ICcnLAogICAgbGF6eTogImpzOlxuICAgICAgICBpbnB1dCA9ICdwdXNoOi8vJyArIGlucHV0O1xuICAgICIsCiAgICBsaW1pdDogOSwKICAgIGRvdWJsZTogZmFsc2UsCiAgICAvLyDmjqjojZA6ICcqJywKICAgIOS4gOe6pzogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgIGxldCBjaWQgPSBNWV9DQVRFIHx8ICcxMDgnOwogICAgbGV0IHBnID0gTVlfUEFHRSB8fCAxOwogICAgbGV0IHVybCA9IGBodHRwczovL2FwaS5rdWxldS5jb20vJHtjaWR9YDsKICAgIGxldCBraHRtbCA9IGZldGNoKHVybCwge2hlYWRlcnM6IHJ1bGUuaGVhZGVyc30pOwogICAgbGV0IGtqc29uID0gSlNPTi5wYXJzZShraHRtbCk7CiAgICBWT0RTID0gW107CiAgICBranNvbi5kYXRhLmZvckVhY2goaXQgPT4gewogICAgICAgIFZPRFMucHVzaCh7CiAgICAgICAgICAgIHZvZF9uYW1lOiBpdC5uYW1lLAogICAgICAgICAgICB2b2RfcGljOiBgaHR0cHM6Ly90c2UzLW1tLmNuLmJpbmcubmV0L3RoL2lkL09JUC1DLnJsUU9ZdHNyaXdXS0h3b2ZHdWZKX0FIYVFkP3c9MTU3Jmg9MzUwJmM9NyZyPTAmbz03JmRwcj0zLjcmcGlkPTEuNyZybT0zYCwKICAgICAgICAgICAgdm9kX3JlbWFya3M6IGl0LmFkZHRpbWUsCiAgICAgICAgICAgIHZvZF9pZDogYHB1c2g6Ly8ke2l0LnZpZXdsaW5rfWAKICAgICAgICB9KTsKICAgIH0pOwp9KSwKICAgIOS6jOe6pzogJyonLAogICAg5pCc57SiOiRqcy50b1N0cmluZygoKSA9PiB7CiAgICBsZXQgdXJsID0gYGh0dHBzOi8vYXBpLmt1bGV1LmNvbS9hcGkvYmRkaj90ZXh0PSR7S0VZfWA7CiAgICBsZXQga2h0bWwgPSBmZXRjaCh1cmwpOwogICAgbGV0IGtqc29uID0gSlNPTi5wYXJzZShraHRtbCk7CiAgICBWT0RTID0gW107CiAgICBranNvbi5kYXRhLmZvckVhY2goaXQgPT4gewogICAgICAgIFZPRFMucHVzaCh7CiAgICAgICAgICAgIHZvZF9uYW1lOiBpdC5uYW1lLAogICAgICAgICAgICB2b2RfcGljOiBpdC5wUGljLAogICAgICAgICAgICB2b2RfcmVtYXJrczogaXQuYWRkdGltZSwKICAgICAgICAgICAgdm9kX2lkOiBgcHVzaDovLyR7aXQudmlld2xpbmt9YAogICAgICAgIH0pCiAgICB9KQp9KSwKICAgIGNhdGVfZXhjbHVkZTogJ+mmlumhtXznlZnoqIB8QVBQfOS4i+i9vXzotYTorq985paw6Ze7fOWKqOaAgScsCiAgICB0YWJfZXhjbHVkZTogJ+eMnOS9oHzllpzmrKJ85LiL6L29fOWJp+aDhXzmppx86K+E6K66JywKICAgIOexu+WeizogJ+W9seinhicsCiAgICBob21lVXJsOiAnaHR0cHM6Ly93d3cubHpwYW54LmNvbS8nLAogICAg5LqM57qn6K6/6Zeu5YmNOiAnJywKICAgIGVuY29kaW5nOiAndXRmLTgnLAogICAgc2VhcmNoX2VuY29kaW5nOiAnJywKICAgIOWbvueJh+adpea6kDogJycsCiAgICDlm77niYfmm7/mjaI6ICcnLAogICAgcGxheV9qc29uOiBbXSwKICAgIHBhZ2Vjb3VudDoge30sCiAgICB0YWJfcmVtb3ZlOiBbXSwKICAgIHRhYl9vcmRlcjogW10sCiAgICB0YWJfcmVuYW1lOiB7fSwKfQ== \ No newline at end of file diff --git a/潇洒/js/CJZW.js b/潇洒/js/CJZW.js new file mode 100644 index 0000000..fc8dccc --- /dev/null +++ b/潇洒/js/CJZW.js @@ -0,0 +1 @@ +Z2xvYmFsVGhpcy5nZXRSYW5kb21JdGVtID0gZnVuY3Rpb24gKGl0ZW1zKSB7CiAgICByZXR1cm4gaXRlbXNbTWF0aC5yYW5kb20oKSAqIGl0ZW1zLmxlbmd0aCB8IDBdOwp9CnZhciBydWxlID0gewogICAgdGl0bGU6ICfph4fpm4bkuYvnjotb5ZCIXScsCiAgICBhdXRob3I6ICfpgZPplb8nLAogICAgdmVyc2lvbjogJzIwMjQwNzA2IGJldGExNycsCiAgICB1cGRhdGVfaW5mbzogYGAudHJpbSgpLAogICAgaG9zdDogJycsCiAgICBob21lVGlkOiAnJywKICAgIGhvbWVVcmw6ICcvYXBpLnBocC9wcm92aWRlL3ZvZC8/YWM9ZGV0YWlsJnQ9e3tydWxlLmhvbWVUaWR9fScsCiAgICBkZXRhaWxVcmw6ICcvYXBpLnBocC9wcm92aWRlL3ZvZC8/YWM9ZGV0YWlsJmlkcz1meWlkJywKICAgIHNlYXJjaFVybDogJy9hcGkucGhwL3Byb3ZpZGUvdm9kLz93ZD0qKiZwZz0jVHJ1ZVBhZ2UjI3BhZ2U9ZnlwYWdlJywKICAgIGNsYXNzVXJsOiAnL2FwaS5waHAvcHJvdmlkZS92b2QvJywKICAgIHVybDogJy9hcGkucGhwL3Byb3ZpZGUvdm9kLz9hYz1kZXRhaWwmcGc9ZnlwYWdlJnQ9ZnlmaWx0ZXInLAogICAgZmlsdGVyX3VybDogJ3t7Zmwu57G75Z6LfX0nLAogICAgaGVhZGVyczogewogICAgICAgICdVc2VyLUFnZW50JzogJ01PQklMRV9VQScKICAgIH0sCiAgICB0aW1lb3V0OiA1MDAwLAogICAgbGltaXQ6IDIwLAogICAgc2VhcmNoX2xpbWl0OiAxMCwKICAgIHNlYXJjaGFibGU6IDEsCiAgICBxdWlja1NlYXJjaDogMCwKICAgIGZpbHRlcmFibGU6IDEsCiAgICBwbGF5X3BhcnNlOiB0cnVlLAogICAgcGFyc2VfdXJsOiAnJywKICAgIHNlYXJjaF9tYXRjaDogZmFsc2UsCiAgICBzZWFyY2hfcGljOiB0cnVlLAogICAg6aKE5aSE55CGOiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgIGZ1bmN0aW9uIGdldENsYXNzZXMoaXRlbSkgewogICAgICAgICAgICBsZXQgY2xhc3NlcyA9IFtdOwogICAgICAgICAgICBpZiAoaXRlbS5jbGFzc19uYW1lICYmIGl0ZW0uY2xhc3NfdXJsKSB7CiAgICAgICAgICAgICAgICBpZiAoIS8mfOeUteW9sXznlLXop4bliad857u86Im6fOWKqOa8q1tcdTRFMDAtXHU5RkE1XSsvLnRlc3QoaXRlbS5jbGFzc19uYW1lKSkgewogICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uY2xhc3NfbmFtZSA9IHVuZ3ppcChpdGVtLmNsYXNzX25hbWUpCiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICBsb2coYOS4jeivhuWIq+eahGNsYXNzX25hbWXlr7zoh7Rnemlw6Kej56CB5aSx6LSlOiR7ZX1gKQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2xhc3NlcwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGxldCBuYW1lcyA9IGl0ZW0uY2xhc3NfbmFtZS5zcGxpdCgnJicpOwogICAgICAgICAgICAgICAgbGV0IHVybHMgPSBpdGVtLmNsYXNzX3VybC5zcGxpdCgnJicpOwogICAgICAgICAgICAgICAgbGV0IGNudCA9IE1hdGgubWluKG5hbWVzLmxlbmd0aCwgdXJscy5sZW5ndGgpOwogICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjbnQ7IGkrKykgewogICAgICAgICAgICAgICAgICAgIGNsYXNzZXMucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlX2lkJzogdXJsc1tpXSwKICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGVfbmFtZSc6IG5hbWVzW2ldCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGNsYXNzZXMKICAgICAgICB9CiAgICAgICAgaWYgKHR5cGVvZihiYXRjaEZldGNoKSA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgICAgICBydWxlLnNlYXJjaF9saW1pdCA9IDE2OwogICAgICAgICAgICBsb2coJ+W9k+WJjeeoi+W6j+aUr+aMgeaJuemHj+ivt+axgltiYXRjaEZldGNoXSzmkJzntKLpmZDliLblt7Lorr7nva7kuLoxNicpOwogICAgICAgIH0KICAgICAgICBsZXQgX3VybCA9IHJ1bGUucGFyYW1zOwogICAgICAgIGxvZyhg5Lyg5YWl5Y+C5pWwOiR7X3VybH1gKTsKICAgICAgICBpZiAoX3VybCAmJiB0eXBlb2YoX3VybCkgPT09ICdzdHJpbmcnICYmIC9eKGh0dHB8ZmlsZSkvLnRlc3QoX3VybCkpIHsKICAgICAgICAgICAgaWYgKF91cmwuaW5jbHVkZXMoJyQnKSkgewogICAgICAgICAgICAgICAgbGV0IF91cmxfcGFyYW1zID0gX3VybC5zcGxpdCgnJCcpOwogICAgICAgICAgICAgICAgX3VybCA9IF91cmxfcGFyYW1zWzBdOwogICAgICAgICAgICAgICAgcnVsZS5zZWFyY2hfbWF0Y2ggPSAhIShfdXJsX3BhcmFtc1sxXSk7CiAgICAgICAgICAgICAgICBpZiAoX3VybF9wYXJhbXMubGVuZ3RoID4gMikgewogICAgICAgICAgICAgICAgICAgIHJ1bGUuc2VhcmNoX3BpYyA9ICEhKF91cmxfcGFyYW1zWzJdKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBsZXQgaHRtbCA9IHJlcXVlc3QoX3VybCk7CiAgICAgICAgICAgIGxldCBqc29uID0gSlNPTi5wYXJzZShodG1sKTsKICAgICAgICAgICAgbGV0IF9jbGFzc2VzID0gW107CiAgICAgICAgICAgIHJ1bGUuZmlsdGVyID0ge307CiAgICAgICAgICAgIHJ1bGUuZmlsdGVyX2RlZiA9IHt9OwogICAgICAgICAgICBqc29uLmZvckVhY2goaXQgPT4gewogICAgICAgICAgICAgICAgbGV0IF9vYmogPSB7CiAgICAgICAgICAgICAgICAgICAgdHlwZV9uYW1lOiBpdC5uYW1lLAogICAgICAgICAgICAgICAgICAgIHR5cGVfaWQ6IGl0LnVybCwKICAgICAgICAgICAgICAgICAgICBwYXJzZV91cmw6IGl0LnBhcnNlX3VybCB8fCAnJywKICAgICAgICAgICAgICAgICAgICBzZWFyY2hhYmxlOiBpdC5zZWFyY2hhYmxlICE9PSAwLAogICAgICAgICAgICAgICAgICAgIGFwaTogaXQuYXBpIHx8ICcnLAogICAgICAgICAgICAgICAgICAgIGNhdGVfZXhjbHVkZTogaXQuY2F0ZV9leGNsdWRlIHx8ICcnLAogICAgICAgICAgICAgICAgICAgIGNhdGVfZXhjbHVkZXM6IGl0LmNhdGVfZXhjbHVkZXMgfHwgW10sCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgX2NsYXNzZXMucHVzaChfb2JqKTsKICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgbGV0IGpzb24xID0gW107CiAgICAgICAgICAgICAgICAgICAgaWYgKGl0LmNsYXNzX25hbWUgJiYgaXQuY2xhc3NfdXJsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGpzb24xID0gZ2V0Q2xhc3NlcyhpdCk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAganNvbjEgPSBKU09OLnBhcnNlKHJlcXVlc3QodXJsam9pbihfb2JqLnR5cGVfaWQsIF9vYmouYXBpIHx8IHJ1bGUuY2xhc3NVcmwpKSkuY2xhc3M7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChfb2JqLmNhdGVfZXhjbHVkZXMgJiYgQXJyYXkuaXNBcnJheShfb2JqLmNhdGVfZXhjbHVkZXMpICYmIF9vYmouY2F0ZV9leGNsdWRlcy5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGpzb24xID0ganNvbjEuZmlsdGVyKGNsID0+ICFfb2JqLmNhdGVfZXhjbHVkZXMuaW5jbHVkZXMoY2wudHlwZV9uYW1lKSk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChfb2JqLmNhdGVfZXhjbHVkZSkgewogICAgICAgICAgICAgICAgICAgICAgICBqc29uMSA9IGpzb24xLmZpbHRlcihjbCA9PiAhbmV3IFJlZ0V4cChfb2JqLmNhdGVfZXhjbHVkZSwgJ2knKS50ZXN0KGNsLnR5cGVfbmFtZSkpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBydWxlLmZpbHRlcltfb2JqLnR5cGVfaWRdID0gW3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJrZXkiOiAi57G75Z6LIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogIuexu+WeiyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUiOiBqc29uMS5tYXAoaSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm4iOiBpLnR5cGVfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3YnOiBpLnR5cGVfaWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgXTsKICAgICAgICAgICAgICAgICAgICBpZiAoanNvbjEubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICBydWxlLmZpbHRlcl9kZWZbaXQudXJsXSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICLnsbvlnosiOiBqc29uMVswXS50eXBlX2lkCiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgICAgIHJ1bGUuZmlsdGVyW2l0LnVybF0gPSBbewogICAgICAgICAgICAgICAgICAgICAgICAgICAgImtleSI6ICLnsbvlnosiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAi57G75Z6LIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgcnVsZS5jbGFzc2VzID0gX2NsYXNzZXM7CiAgICAgICAgfQogICAgfSksCiAgICBjbGFzc19wYXJzZTogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICBpbnB1dCA9IHJ1bGUuY2xhc3NlczsKICAgIH0pLAogICAg5o6o6I2QOiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgIFZPRFMgPSBbXTsKICAgICAgICBpZiAocnVsZS5jbGFzc2VzKSB7CiAgICAgICAgICAgIGxldCByYW5kb21DbGFzcyA9IGdldFJhbmRvbUl0ZW0ocnVsZS5jbGFzc2VzKTsKICAgICAgICAgICAgbGV0IF91cmwgPSB1cmxqb2luKHJhbmRvbUNsYXNzLnR5cGVfaWQsIGlucHV0KTsKICAgICAgICAgICAgaWYgKHJhbmRvbUNsYXNzLmFwaSkgewogICAgICAgICAgICAgICAgX3VybCA9IF91cmwucmVwbGFjZSgnL2FwaS5waHAvcHJvdmlkZS92b2QvJywgcmFuZG9tQ2xhc3MuYXBpKQogICAgICAgICAgICB9CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICBsZXQgaHRtbCA9IHJlcXVlc3QoX3VybCwgewogICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ6IHJ1bGUudGltZW91dAogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBsZXQganNvbiA9IEpTT04ucGFyc2UoaHRtbCk7CiAgICAgICAgICAgICAgICBWT0RTID0ganNvbi5saXN0OwogICAgICAgICAgICAgICAgVk9EUy5mb3JFYWNoKGl0ID0+IHsKICAgICAgICAgICAgICAgICAgICBpdC52b2RfaWQgPSByYW5kb21DbGFzcy50eXBlX2lkICsgJyQnICsgaXQudm9kX2lkOwogICAgICAgICAgICAgICAgICAgIGl0LnZvZF9yZW1hcmtzID0gaXQudm9kX3JlbWFya3MgKyAnfCcgKyByYW5kb21DbGFzcy50eXBlX25hbWU7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfSBjYXRjaCAoZSkge30KICAgICAgICB9CiAgICB9KSwKICAgIOS4gOe6pzogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICBWT0RTID0gW107CiAgICAgICAgaWYgKHJ1bGUuY2xhc3NlcykgewogICAgICAgICAgICBsZXQgX3VybCA9IHVybGpvaW4oTVlfQ0FURSwgaW5wdXQpOwogICAgICAgICAgICBsZXQgY3VycmVudF92b2QgPSBydWxlLmNsYXNzZXMuZmluZChpdGVtID0+IGl0ZW0udHlwZV9pZCA9PT0gTVlfQ0FURSk7CiAgICAgICAgICAgIGlmIChjdXJyZW50X3ZvZCAmJiBjdXJyZW50X3ZvZC5hcGkpIHsKICAgICAgICAgICAgICAgIF91cmwgPSBfdXJsLnJlcGxhY2UoJy9hcGkucGhwL3Byb3ZpZGUvdm9kLycsIGN1cnJlbnRfdm9kLmFwaSkKICAgICAgICAgICAgfQogICAgICAgICAgICBsZXQgaHRtbCA9IHJlcXVlc3QoX3VybCk7CiAgICAgICAgICAgIGxldCBqc29uID0gSlNPTi5wYXJzZShodG1sKTsKICAgICAgICAgICAgVk9EUyA9IGpzb24ubGlzdDsKICAgICAgICAgICAgVk9EUy5mb3JFYWNoKGl0ID0+IHsKICAgICAgICAgICAgICAgIGl0LnZvZF9pZCA9IE1ZX0NBVEUgKyAnJCcgKyBpdC52b2RfaWQKICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgfSksCiAgICDkuoznuqc6ICRqcy50b1N0cmluZygoKSA9PiB7CiAgICAgICAgVk9EID0ge307CiAgICAgICAgaWYgKG9ySWQgPT09ICd1cGRhdGVfaW5mbycpIHsKICAgICAgICAgICAgVk9EID0gewogICAgICAgICAgICAgICAgdm9kX2NvbnRlbnQ6IHJ1bGUudXBkYXRlX2luZm8udHJpbSgpLAogICAgICAgICAgICAgICAgdm9kX25hbWU6ICfmm7TmlrDml6Xlv5cnLAogICAgICAgICAgICAgICAgdHlwZV9uYW1lOiAn5pu05paw5pel5b+XJywKICAgICAgICAgICAgICAgIHZvZF9waWM6ICdodHRwczovL3Jlc291cmNlLWNkbi50dXhpYW9iZWkuY29tL3ZpZGVvL0Z0V2hzMm1ld1hfN25FdUU1MV9rNnp2ZzZhd2wucG5nJywKICAgICAgICAgICAgICAgIHZvZF9yZW1hcmtzOiBg54mI5pysOiR7cnVsZS52ZXJzaW9ufWAsCiAgICAgICAgICAgICAgICB2b2RfcGxheV9mcm9tOiAn6YGT6ZW/5Zyo57q/JywKICAgICAgICAgICAgICAgIHZvZF9wbGF5X3VybDogJ+maj+acuuWwj+inhumikSRodHRwOi8vYXBpLnl1am4uY24vYXBpL3p6eGpqLnBocCcsCiAgICAgICAgICAgIH07CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKHJ1bGUuY2xhc3NlcykgewogICAgICAgICAgICAgICAgbGV0IF91cmwgPSB1cmxqb2luKGZ5Y2xhc3MsIGlucHV0KTsKICAgICAgICAgICAgICAgIGxldCBjdXJyZW50X3ZvZCA9IHJ1bGUuY2xhc3Nlcy5maW5kKGl0ZW0gPT4gaXRlbS50eXBlX2lkID09PSBmeWNsYXNzKTsKICAgICAgICAgICAgICAgIGlmIChjdXJyZW50X3ZvZCAmJiBjdXJyZW50X3ZvZC5hcGkpIHsKICAgICAgICAgICAgICAgICAgICBfdXJsID0gX3VybC5yZXBsYWNlKCcvYXBpLnBocC9wcm92aWRlL3ZvZC8nLCBjdXJyZW50X3ZvZC5hcGkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBsZXQgaHRtbCA9IHJlcXVlc3QoX3VybCk7CiAgICAgICAgICAgICAgICBsZXQganNvbiA9IEpTT04ucGFyc2UoaHRtbCk7CiAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IGpzb24ubGlzdDsKICAgICAgICAgICAgICAgIFZPRCA9IGRhdGFbMF07CiAgICAgICAgICAgICAgICBpZiAoY3VycmVudF92b2QgJiYgY3VycmVudF92b2QudHlwZV9uYW1lKSB7CiAgICAgICAgICAgICAgICAgICAgVk9ELnZvZF9wbGF5X2Zyb20gPSBWT0Qudm9kX3BsYXlfZnJvbS5zcGxpdCgnJCQkJykubWFwKGl0ID0+IGN1cnJlbnRfdm9kLnR5cGVfbmFtZSArICd8JyArIGl0KS5qb2luKCckJCQnKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSksCiAgICDmkJzntKI6ICRqcy50b1N0cmluZygoKSA9PiB7CiAgICAgICAgVk9EUyA9IFtdOwogICAgICAgIGlmIChydWxlLmNsYXNzZXMpIHsKICAgICAgICAgICAgbGV0IGNhblNlYXJjaCA9IHJ1bGUuY2xhc3Nlcy5maWx0ZXIoaXQgPT4gaXQuc2VhcmNoYWJsZSk7CiAgICAgICAgICAgIGxldCBwYWdlID0gTnVtYmVyKE1ZX1BBR0UpOwogICAgICAgICAgICBwYWdlID0gKE1ZX1BBR0UgLSAxKSAlIE1hdGguY2VpbChjYW5TZWFyY2gubGVuZ3RoIC8gcnVsZS5zZWFyY2hfbGltaXQpICsgMTsKICAgICAgICAgICAgbGV0IHRydWVQYWdlID0gTWF0aC5jZWlsKE1ZX1BBR0UgLyBNYXRoLmNlaWwoY2FuU2VhcmNoLmxlbmd0aCAvIHJ1bGUuc2VhcmNoX2xpbWl0KSk7CiAgICAgICAgICAgIGlmIChydWxlLnNlYXJjaF9saW1pdCkgewogICAgICAgICAgICAgICAgbGV0IHN0YXJ0ID0gKHBhZ2UgLSAxKSAqIHJ1bGUuc2VhcmNoX2xpbWl0OwogICAgICAgICAgICAgICAgbGV0IGVuZCA9IHBhZ2UgKiBydWxlLnNlYXJjaF9saW1pdDsKICAgICAgICAgICAgICAgIGxldCB0MSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpOwogICAgICAgICAgICAgICAgbGV0IHNlYXJjaE1vZGUgPSB0eXBlb2YoYmF0Y2hGZXRjaCkgPT09ICdmdW5jdGlvbicgPyAn5om56YePJyA6ICfljZXkuKonOwogICAgICAgICAgICAgICAgbG9nKCdzdGFydDonICsgc3RhcnQpOwogICAgICAgICAgICAgICAgbG9nKCdlbmQ6JyArIGVuZCk7CiAgICAgICAgICAgICAgICBsb2coJ+aQnOe0ouaooeW8jzonICsgc2VhcmNoTW9kZSk7CiAgICAgICAgICAgICAgICBsb2coJ+eyvuWHhuaQnOe0ojonICsgcnVsZS5zZWFyY2hfbWF0Y2gpOwogICAgICAgICAgICAgICAgbG9nKCflvLrliLbojrflj5blm77niYc6JyArIHJ1bGUuc2VhcmNoX3BpYyk7CiAgICAgICAgICAgICAgICBpZiAoc3RhcnQgPCBjYW5TZWFyY2gubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgbGV0IHNlYXJjaF9jbGFzc2VzID0gY2FuU2VhcmNoLnNsaWNlKHN0YXJ0LCBlbmQpOwogICAgICAgICAgICAgICAgICAgIGxldCB1cmxzID0gW107CiAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2NsYXNzZXMuZm9yRWFjaChpdCA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBfdXJsID0gdXJsam9pbihpdC50eXBlX2lkLCBpbnB1dCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdC5hcGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF91cmwgPSBfdXJsLnJlcGxhY2UoJy9hcGkucGhwL3Byb3ZpZGUvdm9kLycsIGl0LmFwaSkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBfdXJsID0gX3VybC5yZXBsYWNlKCIjVHJ1ZVBhZ2UjIiwgIiIgKyB0cnVlUGFnZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHVybHMucHVzaChfdXJsKTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICBsZXQgcmVzdWx0c19saXN0ID0gW107CiAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdHMgPSBbXTsKICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mKGJhdGNoRmV0Y2gpID09PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXFVcmxzID0gdXJscy5tYXAoaXQgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGl0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dDogcnVsZS50aW1lb3V0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJldHMgPSBiYXRjaEZldGNoKHJlcVVybHMpOwogICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGV0YWlsVXJscyA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGV0YWlsVXJsQ291bnQgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICByZXRzLmZvckVhY2goKHJldCwgaWR4KSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaXQgPSBzZWFyY2hfY2xhc3Nlc1tpZHhdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJldCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBqc29uID0gSlNPTi5wYXJzZShyZXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IGpzb24ubGlzdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5mb3JFYWNoKGkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaS5zaXRlX25hbWUgPSBpdC50eXBlX25hbWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLnZvZF9pZCA9IGl0LnR5cGVfaWQgKyAnJCcgKyBpLnZvZF9pZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkudm9kX3JlbWFya3MgPSBpLnZvZF9yZW1hcmtzICsgJ3wnICsgaXQudHlwZV9uYW1lOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJ1bGUuc2VhcmNoX21hdGNoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gZGF0YS5maWx0ZXIoaXRlbSA9PiBpdGVtLnZvZF9uYW1lICYmIChuZXcgUmVnRXhwKEtFWSwgJ2knKSkudGVzdChpdGVtLnZvZF9uYW1lKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocnVsZS5zZWFyY2hfcGljICYmICFkYXRhWzBdLnZvZF9waWMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2coYOW9k+WJjeaQnOe0ouermeeCueOAkCR7aXQudHlwZV9uYW1lfeOAkeayoeWbvueJhyzlsJ3or5Xorr/pl67kuoznuqfljrvojrflj5blm77niYdgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGV0YWlsVXJsID0gdXJsc1tpZHhdLnNwbGl0KCd3ZD0nKVswXSArICdhYz1kZXRhaWwmaWRzPScgKyBkYXRhLm1hcChrID0+IGsudm9kX2lkLnNwbGl0KCckJylbMV0pLmpvaW4oJywnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWxVcmxzLnB1c2goZGV0YWlsVXJsKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzX2xpc3QucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc19waWM6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWxVcmxDb3VudDogZGV0YWlsVXJsQ291bnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWxVcmxDb3VudCsrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzX2xpc3QucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc19waWM6IHRydWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nKGDor7fmsYI6JHtpdC50eXBlX2lkfeWPkeeUn+mUmeivrzoke2UubWVzc2FnZX1gKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXFVcmxzMiA9IGRldGFpbFVybHMubWFwKGl0ID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBpdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ6IHJ1bGUudGltZW91dAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXRzMiA9IHJlcVVybHMyLmxlbmd0aCA+IDAgPyBiYXRjaEZldGNoKHJlcVVybHMyKSA6IFtdOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IHJlc3VsdHNfbGlzdC5sZW5ndGg7IGsrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdF9kYXRhID0gcmVzdWx0c19saXN0W2tdLmRhdGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdHNfbGlzdFtrXS5oYXNfcGljKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRldGFpbEpzb24gPSBKU09OLnBhcnNlKHJldHMyW3Jlc3VsdHNfbGlzdFtrXS5kZXRhaWxVcmxDb3VudF0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2coJ+S6jOe6p+aVsOaNruWIl+ihqOWFg+e0oOaVsDonICsgZGV0YWlsSnNvbi5saXN0Lmxlbmd0aCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdF9kYXRhLmZvckVhY2goKGQsIF9zZXEpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkZXRhaWxWb2RQaWMgPSBkZXRhaWxKc29uLmxpc3QuZmluZCh2b2QgPT4gdm9kLnZvZF9pZC50b1N0cmluZygpID09PSBkLnZvZF9pZC5zcGxpdCgnJCcpWzFdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZXRhaWxWb2RQaWMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGQsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9kX3BpYzogZGV0YWlsVm9kUGljLnZvZF9waWMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2coYOW8uuWItuiOt+WPlue9keermSR7cmVzdWx0X2RhdGFbMF0uc2l0ZV9uYW1lfeeahOaQnOe0ouWbvueJh+Wksei0pToke2UubWVzc2FnZX1gKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzID0gcmVzdWx0cy5jb25jYXQocmVzdWx0X2RhdGEpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgdXJscy5mb3JFYWNoKChfdXJsLCBpZHgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpdCA9IHNlYXJjaF9jbGFzc2VzW2lkeF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBodG1sID0gcmVxdWVzdChfdXJsKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQganNvbiA9IEpTT04ucGFyc2UoaHRtbCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGEgPSBqc29uLmxpc3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5mb3JFYWNoKGkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLnZvZF9pZCA9IGl0LnR5cGVfaWQgKyAnJCcgKyBpLnZvZF9pZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaS52b2RfcmVtYXJrcyA9IGkudm9kX3JlbWFya3MgKyAnfCcgKyBpdC50eXBlX25hbWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJ1bGUuc2VhcmNoX21hdGNoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhLmZpbHRlcihpdGVtID0+IGl0ZW0udm9kX25hbWUgJiYgKG5ldyBSZWdFeHAoS0VZLCAnaScpKS50ZXN0KGl0ZW0udm9kX25hbWUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChydWxlLnNlYXJjaF9waWMgJiYgIWRhdGFbMF0udm9kX3BpYykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nKGDlvZPliY3mkJzntKLnq5nngrnjgJAke2l0LnR5cGVfbmFtZX3jgJHmsqHlm77niYcs5bCd6K+V6K6/6Zeu5LqM57qn5Y676I635Y+W5Zu+54mHYCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGV0YWlsVXJsID0gdXJsc1tpZHhdLnNwbGl0KCd3ZD0nKVswXSArICdhYz1kZXRhaWwmaWRzPScgKyBkYXRhLm1hcChrID0+IGsudm9kX2lkLnNwbGl0KCckJylbMV0pLmpvaW4oJywnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRldGFpbEpzb24gPSBKU09OLnBhcnNlKHJlcXVlc3QoZGV0YWlsVXJsKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nKCfkuoznuqfmlbDmja7liJfooajlhYPntKDmlbA6JyArIGRldGFpbEpzb24ubGlzdC5sZW5ndGgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuZm9yRWFjaCgoZCwgX3NlcSkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGV0YWlsVm9kUGljID0gZGV0YWlsSnNvbi5saXN0LmZpbmQodm9kID0+IHZvZC52b2RfaWQudG9TdHJpbmcoKSA9PT0gZC52b2RfaWQuc3BsaXQoJyQnKVsxXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZXRhaWxWb2RQaWMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oZCwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvZF9waWM6IGRldGFpbFZvZFBpYy52b2RfcGljCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhg5by65Yi26I635Y+W572R56uZJHtpdC50eXBlX2lkfeeahOaQnOe0ouWbvueJh+Wksei0pToke2UubWVzc2FnZX1gKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzID0gcmVzdWx0cy5jb25jYXQoZGF0YSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMgPSByZXN1bHRzLmNvbmNhdChkYXRhKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2coYOivt+axgjoke2l0LnR5cGVfaWR95Y+R55Sf6ZSZ6K+vOiR7ZS5tZXNzYWdlfWApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBWT0RTID0gcmVzdWx0czsKICAgICAgICAgICAgICAgICAgICBsZXQgdDIgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTsKICAgICAgICAgICAgICAgICAgICBsb2coYCR7c2VhcmNoTW9kZX3mkJzntKI6JHt1cmxzLmxlbmd0aH3kuKrnq5nogJfml7Y6JHsoTnVtYmVyKHQyKSAtIE51bWJlcih0MSkpfW1zYCkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0pLAogICAgbGF6eTogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICBsZXQgcGFyc2VfdXJsID0gJyc7CiAgICAgICAgaWYgKGZsYWcgJiYgZmxhZy5pbmNsdWRlcygnfCcpKSB7CiAgICAgICAgICAgIGxldCB0eXBlX25hbWUgPSBmbGFnLnNwbGl0KCd8JylbMF07CiAgICAgICAgICAgIGxldCBjdXJyZW50X3ZvZCA9IHJ1bGUuY2xhc3Nlcy5maW5kKGl0ZW0gPT4gaXRlbS50eXBlX25hbWUgPT09IHR5cGVfbmFtZSk7CiAgICAgICAgICAgIGlmIChjdXJyZW50X3ZvZCAmJiBjdXJyZW50X3ZvZC5wYXJzZV91cmwpIHsKICAgICAgICAgICAgICAgIHBhcnNlX3VybCA9IGN1cnJlbnRfdm9kLnBhcnNlX3VybAogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICgvXC4obTN1OHxtcDQpLy50ZXN0KGlucHV0KSkgewogICAgICAgICAgICBpbnB1dCA9IHsKICAgICAgICAgICAgICAgIHBhcnNlOiAwLAogICAgICAgICAgICAgICAgdXJsOiBpbnB1dAogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKHBhcnNlX3VybC5zdGFydHNXaXRoKCdqc29uOicpKSB7CiAgICAgICAgICAgICAgICBsZXQgcHVybCA9IHBhcnNlX3VybC5yZXBsYWNlKCdqc29uOicsICcnKSArIGlucHV0OwogICAgICAgICAgICAgICAgbGV0IGh0bWwgPSByZXF1ZXN0KHB1cmwpOwogICAgICAgICAgICAgICAgaW5wdXQgPSB7CiAgICAgICAgICAgICAgICAgICAgcGFyc2U6IDAsCiAgICAgICAgICAgICAgICAgICAgdXJsOiBKU09OLnBhcnNlKGh0bWwpLnVybAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaW5wdXQgPSBwYXJzZV91cmwgKyBpbnB1dDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0pLAp9Cg== \ No newline at end of file diff --git a/潇洒/js/DHPDQ.js b/潇洒/js/DHPDQ.js new file mode 100644 index 0000000..45ecec1 --- /dev/null +++ b/潇洒/js/DHPDQ.js @@ -0,0 +1 @@ +dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+WKqOeUu+eJh+Wkp+WFqCcsCiAgICBob3N0OiAnaHR0cHM6Ly93d3cuZGhwZHEyLmNvbS8nLAogICAgdXJsOiAnaHR0cHM6Ly93d3cuZGhwZHEyLmNvbS9rYXRvbmcvZnljbGFzcy1meXBhZ2UvJywKICAgIHNlYXJjaFVybDogJy92b2RzZWFyY2gvKiotLS0tLS0tLS0tZnlwYWdlLS0tLycsCiAgICBjbGFzc19wYXJzZTogJy5jX2NsYXNzIGxpO2EmJlRleHQ7YSYmaHJlZjsuKi8oLio/KS8nLAogICAgc2VhcmNoYWJsZTogMiwKICAgIHF1aWNrU2VhcmNoOiAwLAogICAgZmlsdGVyYWJsZTogMCwKICAgIGhlYWRlcnM6IHsKICAgICAgICAnVXNlci1BZ2VudCc6ICdNT0JJTEVfVUEnLAogICAgfSwKICAgIHBsYXlfcGFyc2U6IHRydWUsCiAgICBsYXp5OiAnJywKICAgIGxpbWl0OiA2LAogICAg5o6o6I2QOiAnLnN0dWktdm9kbGlzdDtsaTthJiZ0aXRsZTthJiZkYXRhLW9yaWdpbmFsOy5waWMtdGV4dCYmVGV4dDthJiZocmVmJywKICAgIGRvdWJsZTogdHJ1ZSwKICAgIOS4gOe6pzogJy5zdHVpLXZvZGxpc3QgbGk7YSYmdGl0bGU7YSYmZGF0YS1vcmlnaW5hbDsucGljLXRleHQmJlRleHQ7YSYmaHJlZicsCiAgICDkuoznuqc6IHsKICAgICAgICB0aXRsZTogJ2gxJiZUZXh0Oy5kZXRhaWxfbGlzdCYmdWw6ZXEoMSkmJmxpJiZhOmVxKDIpJiZUZXh0JywKICAgICAgICBpbWc6ICcudm9kbGlzdF90aHVtYiYmZGF0YS1vcmlnaW5hbCcsCiAgICAgICAgZGVzYzogJy5wbGF5aW5mbyYmcDplcSgwKSYmVGV4dDsucGxheWluZm8mJnA6ZXEoMSkmJlRleHQ7LnBsYXlpbmZvJiZwOmVxKDIpJiZUZXh0Oy5wbGF5aW5mbyYmcDplcSgzKSYmVGV4dCcsCiAgICAgICAgY29udGVudDogJy5jb250ZW50OmVxKDEpJywKICAgICAgICB0YWJzOiAnLnJlbGF0ZXNkaCAudGl0bGUgaDMnLAogICAgICAgIGxpc3RzOiAnLnJlbGF0ZXNkaDplcSgjaWQpIGxpJywKICAgIH0sCiAgICDmkJzntKI6ICcqJywKfQ== \ No newline at end of file diff --git a/潇洒/js/DJDQ.js b/潇洒/js/DJDQ.js new file mode 100644 index 0000000..cf012c5 --- /dev/null +++ b/潇洒/js/DJDQ.js @@ -0,0 +1 @@ +dmFyIHJ1bGUgPSB7CiAgICDnsbvlnos6ICflvbHop4YnLCAvL+W9seinhnzlkKzkuaZ85ryr55S7fOWwj+ivtAogICAgdGl0bGU6ICfnn63liacnLAogICAgaG9zdDogJ2h0dHBzOi8vYWktaW1nLnljdWJicy5jbi8nLAogICAgaG9tZVVybDogJy9hcGkvZHVhbmp1L2xpc3QnLAogICAgdXJsOiAnL2FwaS9kdWFuanUvbGlzdCcsCiAgICBzZWFyY2hVcmw6ICdodHRwczovL2FwaS5rdWxldS5jb20vYXBpL2FjdGlvbj90ZXh0PSoqJywKICAgIHNlYXJjaGFibGU6IDEsCiAgICBxdWlja1NlYXJjaDogMCwKICAgIGZpbHRlcmFibGU6IDAsCiAgICBoZWFkZXJzOiB7CiAgICAgICAgJ1VzZXItQWdlbnQnOiAnTU9CSUxFX1VBJywKICAgIH0sCiAgICBoaWtlckxpc3RDb2w6ICJ0ZXh0XzEiLAogICAgaGlrZXJDbGFzc0xpc3RDb2w6ICJ0ZXh0XzEiLAogICAgdGltZW91dDogNTAwMCwKICAgIGNsYXNzX25hbWU6ICcnLAogICAgY2xhc3NfdXJsOiAnJywKICAgIHBsYXlfcGFyc2U6IHRydWUsCiAgICBsYXp5OiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgIGlucHV0ID0gInB1c2g6Ly8iICsgaW5wdXQ7CiAgICB9KSwKICAgIGRvdWJsZTogZmFsc2UsCiAgICDmjqjojZA6ICcqJywKICAgIOS4gOe6pzogJ2pzb246ZGF0YTtuYW1lOzs7dXJsJywKICAgIOS6jOe6pzogJyonLAogICAg5pCc57SiOiAnanNvbjpkYXRhO25hbWU7Ozt2aWV3bGluaycsCn0= \ No newline at end of file diff --git a/潇洒/js/DJHJ.js b/潇洒/js/DJHJ.js new file mode 100644 index 0000000..953f3d3 --- /dev/null +++ b/潇洒/js/DJHJ.js @@ -0,0 +1 @@ +dmFyIHJ1bGUgPSB7CiAgICDnsbvlnos6ICflvbHop4YnLCAvL+W9seinhnzlkKzkuaZ85ryr55S7fOWwj+ivtAogICAgdGl0bGU6ICfniLHnnIvnn63liadb55uYXScsCiAgICBob3N0OiAnaHR0cHM6Ly95cy4xMTB0LmNuLycsCiAgICBob21lVXJsOiAnL2FwaS9hamF4LnBocD9hY3Q9cmVjb21tZW5kJywKICAgIGhvbWVVcmw6ICcvYXBpL2FqYXgucGhwP2FjdD1EYWlseScsCiAgICB1cmw6ICcvYXBpL2FqYXgucGhwP2FjdD1meWNsYXNzJywKICAgIHNlYXJjaFVybDogJy9hcGkvYWpheC5waHA/YWN0PXNlYXJjaCZuYW1lPSoqJywKICAgIHNlYXJjaGFibGU6IDEsCiAgICBxdWlja1NlYXJjaDogMCwKICAgIGZpbHRlcmFibGU6IDAsCiAgICBoZWFkZXJzOiB7CiAgICAgICAgJ1VzZXItQWdlbnQnOiAnTU9CSUxFX1VBJywKICAgIH0sCiAgICBoaWtlckxpc3RDb2w6ICJ0ZXh0XzEiLAogICAgaGlrZXJDbGFzc0xpc3RDb2w6ICJ0ZXh0XzEiLAogICAgdGltZW91dDogNTAwMCwKICAgIGNsYXNzX25hbWU6ICflhajpg6gnLAogICAgY2xhc3NfdXJsOiAneWluZ3NoaWxpc3QnLAogICAgcGxheV9wYXJzZTogdHJ1ZSwKICAgIGxhenk6ICRqcy50b1N0cmluZygoKSA9PiB7CiAgICAgICAgaW5wdXQgPSAicHVzaDovLyIgKyBpbnB1dDsKICAgIH0pLAogICAgZG91YmxlOiBmYWxzZSwKICAgIOaOqOiNkDogJyonLAogICAg5LiA57qnOiAnanNvbjpkYXRhO25hbWU7O2FkZHRpbWU7dXJsJywKICAgIOS6jOe6pzogJyonLAogICAg5pCc57SiOiAnKicsCn0= \ No newline at end of file diff --git a/潇洒/js/DMD.js b/潇洒/js/DMD.js new file mode 100644 index 0000000..f2acc72 --- /dev/null +++ b/潇洒/js/DMD.js @@ -0,0 +1 @@ +dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+WKqOa8q+WymycsCiAgICAvLyBob3N0OidodHRwOi8vd3d3LmRtZDg1LmNvbScsCiAgICAvLyBob3N0OidodHRwOi8vd3d3Ljg4ZG13LmNvbScsCiAgICBob3N0OiAnaHR0cDovL3d3dy5kbWFuZDUuY29tJywKICAgIC8vIHVybDonL3ZvZC1saXN0LWlkLWZ5Y2xhc3MtcGctZnlwYWdlLW9yZGVyLS1ieS17Ynl9LWNsYXNzLXtjbGFzc30teWVhci17eWVhcn0tbGV0dGVyLS1hcmVhLS1sYW5nLS5odG1sJywKICAgIHVybDogJy92b2QtbGlzdC1pZC1meWNsYXNzLXBnLWZ5cGFnZS1vcmRlci1meWZpbHRlci1hcmVhLS1sYW5nLS5odG1sJywKICAgIGZpbHRlcmFibGU6IDEsIC8v5piv5ZCm5ZCv55So5YiG57G7562b6YCJLAogICAgZmlsdGVyX3VybDogJy1ieS17e2ZsLmJ5fX0tY2xhc3Mte3tmbC5jbGFzc319LXllYXIte3tmbC55ZWFyfX0tbGV0dGVyLXt7ZmwubGV0dGVyfX0nLAogICAgZmlsdGVyOiB7CiAgICAgICAgIjEiOiBbewogICAgICAgICAgICAia2V5IjogImNsYXNzIiwKICAgICAgICAgICAgIm5hbWUiOiAi5Ymn5oOFIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqCIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWGkumZqSIsCiAgICAgICAgICAgICAgICAidiI6ICIxIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLng63ooYAiLAogICAgICAgICAgICAgICAgInYiOiAiMiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5aWH5bm7IiwKICAgICAgICAgICAgICAgICJ2IjogIjMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaBi+eIsSIsCiAgICAgICAgICAgICAgICAidiI6ICI0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmoKHlm60iLAogICAgICAgICAgICAgICAgInYiOiAiNSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5ZCO5a6rIiwKICAgICAgICAgICAgICAgICJ2IjogIjYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaQnueskSIsCiAgICAgICAgICAgICAgICAidiI6ICI3IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLpnZLmmKUiLAogICAgICAgICAgICAgICAgInYiOiAiOCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi55m+5ZCIIiwKICAgICAgICAgICAgICAgICJ2IjogIjkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuenkeW5uyIsCiAgICAgICAgICAgICAgICAidiI6ICIxNCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5o6o55CGIiwKICAgICAgICAgICAgICAgICJ2IjogIjEzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLprZTms5UiLAogICAgICAgICAgICAgICAgInYiOiAiMTIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuelnumtlCIsCiAgICAgICAgICAgICAgICAidiI6ICIxMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5rK75oSIIiwKICAgICAgICAgICAgICAgICJ2IjogIjEwIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnq57mioAiLAogICAgICAgICAgICAgICAgInYiOiAiNTkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaCrOeWkSIsCiAgICAgICAgICAgICAgICAidiI6ICI2MCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5oiY5LqJIiwKICAgICAgICAgICAgICAgICJ2IjogIjYyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLokJ3ojokiLAogICAgICAgICAgICAgICAgInYiOiAiNjMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIumtlOW5uyIsCiAgICAgICAgICAgICAgICAidiI6ICI2NCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5oiY5paXIiwKICAgICAgICAgICAgICAgICJ2IjogIjY1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmrYzoiJ4iLAogICAgICAgICAgICAgICAgInYiOiAiOTgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWOhuWPsiIsCiAgICAgICAgICAgICAgICAidiI6ICI5OSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5Yqx5b+XIiwKICAgICAgICAgICAgICAgICJ2IjogIjEwOCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5YG25YOPIiwKICAgICAgICAgICAgICAgICJ2IjogIjExOCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6IGM5Zy6IiwKICAgICAgICAgICAgICAgICJ2IjogIjEyMSIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAieWVhciIsCiAgICAgICAgICAgICJuYW1lIjogIuW5tOS7vSIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlhajpg6giLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDI1IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjQiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyNCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMyIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDIzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIyIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjEiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDIwIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE5IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTgiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxOCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNyIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE3IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE2IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTUiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxNSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDEzIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTIiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxMiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxMSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDExIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDEwIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDkiLAogICAgICAgICAgICAgICAgInYiOiAiMjAwOSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwOCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDA4IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA3IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDYiLAogICAgICAgICAgICAgICAgInYiOiAiMjAwNiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwNSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDA1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA0IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDMiLAogICAgICAgICAgICAgICAgInYiOiAiMjAwMyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwMiIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDAyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDAxIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDAiLAogICAgICAgICAgICAgICAgInYiOiAiMjAwMCIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAibGV0dGVyIiwKICAgICAgICAgICAgIm5hbWUiOiAi5a2X5q+NIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqCIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkEiLAogICAgICAgICAgICAgICAgInYiOiAiQSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiQiIsCiAgICAgICAgICAgICAgICAidiI6ICJCIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJDIiwKICAgICAgICAgICAgICAgICJ2IjogIkMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkQiLAogICAgICAgICAgICAgICAgInYiOiAiRCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiRSIsCiAgICAgICAgICAgICAgICAidiI6ICJFIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJGIiwKICAgICAgICAgICAgICAgICJ2IjogIkYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkciLAogICAgICAgICAgICAgICAgInYiOiAiRyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiSCIsCiAgICAgICAgICAgICAgICAidiI6ICJIIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJJIiwKICAgICAgICAgICAgICAgICJ2IjogIkkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkoiLAogICAgICAgICAgICAgICAgInYiOiAiSiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiSyIsCiAgICAgICAgICAgICAgICAidiI6ICJLIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJMIiwKICAgICAgICAgICAgICAgICJ2IjogIkwiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIk0iLAogICAgICAgICAgICAgICAgInYiOiAiTSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiTiIsCiAgICAgICAgICAgICAgICAidiI6ICJOIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJPIiwKICAgICAgICAgICAgICAgICJ2IjogIk8iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIlAiLAogICAgICAgICAgICAgICAgInYiOiAiUCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiUSIsCiAgICAgICAgICAgICAgICAidiI6ICJRIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJSIiwKICAgICAgICAgICAgICAgICJ2IjogIlIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIlMiLAogICAgICAgICAgICAgICAgInYiOiAiUyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiVCIsCiAgICAgICAgICAgICAgICAidiI6ICJUIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJVIiwKICAgICAgICAgICAgICAgICJ2IjogIlUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIlYiLAogICAgICAgICAgICAgICAgInYiOiAiViIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiVyIsCiAgICAgICAgICAgICAgICAidiI6ICJXIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJYIiwKICAgICAgICAgICAgICAgICJ2IjogIlgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIlkiLAogICAgICAgICAgICAgICAgInYiOiAiWSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiWiIsCiAgICAgICAgICAgICAgICAidiI6ICJaIgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJieSIsCiAgICAgICAgICAgICJuYW1lIjogIuaOkuW6jyIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLmm7TmlrAiLAogICAgICAgICAgICAgICAgInYiOiAidGltZSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5b6X5YiGIiwKICAgICAgICAgICAgICAgICJ2IjogInNjb3JlIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmgLvmjpLooYwiLAogICAgICAgICAgICAgICAgInYiOiAiaGl0cyIKICAgICAgICAgICAgfV0KICAgICAgICB9XSwKICAgICAgICAiMyI6IFt7CiAgICAgICAgICAgICJrZXkiOiAiY2xhc3MiLAogICAgICAgICAgICAibmFtZSI6ICLliafmg4UiLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOoIiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5YaS6ZmpIiwKICAgICAgICAgICAgICAgICJ2IjogIjM2IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLng63ooYAiLAogICAgICAgICAgICAgICAgInYiOiAiMzciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWlh+W5uyIsCiAgICAgICAgICAgICAgICAidiI6ICIzOCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5oGL54ixIiwKICAgICAgICAgICAgICAgICJ2IjogIjM5IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmgYvniLEiLAogICAgICAgICAgICAgICAgInYiOiAiNDAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaBi+eIsSIsCiAgICAgICAgICAgICAgICAidiI6ICI0MCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pCe56yRIiwKICAgICAgICAgICAgICAgICJ2IjogIjQyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmsrvmhIgiLAogICAgICAgICAgICAgICAgInYiOiAiNDMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuelnumtlCIsCiAgICAgICAgICAgICAgICAidiI6ICI0NCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6a2U5rOVIiwKICAgICAgICAgICAgICAgICJ2IjogIjQ1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnmb7lkIgiLAogICAgICAgICAgICAgICAgInYiOiAiNDYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaOqOeQhiIsCiAgICAgICAgICAgICAgICAidiI6ICI0NyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi56eR5bm7IiwKICAgICAgICAgICAgICAgICJ2IjogIjQ4IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnq57mioAiLAogICAgICAgICAgICAgICAgInYiOiAiNDkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaCrOeWkSIsCiAgICAgICAgICAgICAgICAidiI6ICI2NiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5oiY5LqJIiwKICAgICAgICAgICAgICAgICJ2IjogIjY4IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLokJ3ojokiLAogICAgICAgICAgICAgICAgInYiOiAiNjkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIumtlOW5uyIsCiAgICAgICAgICAgICAgICAidiI6ICI3MCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5oiY5paXIiwKICAgICAgICAgICAgICAgICJ2IjogIjcxIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLpnZLmmKUiLAogICAgICAgICAgICAgICAgInYiOiAiNzIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWOhuWPsiIsCiAgICAgICAgICAgICAgICAidiI6ICIxMDAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuatjOiIniIsCiAgICAgICAgICAgICAgICAidiI6ICIxMDEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaBkOaAliIsCiAgICAgICAgICAgICAgICAidiI6ICIxMDQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuiBjOWcuiIsCiAgICAgICAgICAgICAgICAidiI6ICIxMDciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWKseW/lyIsCiAgICAgICAgICAgICAgICAidiI6ICIxMDkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWBtuWDjyIsCiAgICAgICAgICAgICAgICAidiI6ICIxMTkiCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogInllYXIiLAogICAgICAgICAgICAibmFtZSI6ICLlubTku70iLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOoIiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyNSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDI1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDI0IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjMiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyMyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMiIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDIyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIxIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjAiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyMCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxOSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE5IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE4IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTciLAogICAgICAgICAgICAgICAgInYiOiAiMjAxNyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNiIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE2IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE1IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTQiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxNCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxMyIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDEzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDEyIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTEiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxMCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDEwIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA5IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDgiLAogICAgICAgICAgICAgICAgInYiOiAiMjAwOCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwNyIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDA3IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA2IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDUiLAogICAgICAgICAgICAgICAgInYiOiAiMjAwNSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwNCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDA0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDAzIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDIiLAogICAgICAgICAgICAgICAgInYiOiAiMjAwMiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwMSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDAxIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDAwIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDAiCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogImxldHRlciIsCiAgICAgICAgICAgICJuYW1lIjogIuWtl+avjSIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlhajpg6giLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJBIiwKICAgICAgICAgICAgICAgICJ2IjogIkEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkIiLAogICAgICAgICAgICAgICAgInYiOiAiQiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiQyIsCiAgICAgICAgICAgICAgICAidiI6ICJDIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJEIiwKICAgICAgICAgICAgICAgICJ2IjogIkQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkUiLAogICAgICAgICAgICAgICAgInYiOiAiRSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiRiIsCiAgICAgICAgICAgICAgICAidiI6ICJGIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJHIiwKICAgICAgICAgICAgICAgICJ2IjogIkciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkgiLAogICAgICAgICAgICAgICAgInYiOiAiSCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiSSIsCiAgICAgICAgICAgICAgICAidiI6ICJJIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJKIiwKICAgICAgICAgICAgICAgICJ2IjogIkoiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIksiLAogICAgICAgICAgICAgICAgInYiOiAiSyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiTCIsCiAgICAgICAgICAgICAgICAidiI6ICJMIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJNIiwKICAgICAgICAgICAgICAgICJ2IjogIk0iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIk4iLAogICAgICAgICAgICAgICAgInYiOiAiTiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiTyIsCiAgICAgICAgICAgICAgICAidiI6ICJPIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJQIiwKICAgICAgICAgICAgICAgICJ2IjogIlAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIlEiLAogICAgICAgICAgICAgICAgInYiOiAiUSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiUiIsCiAgICAgICAgICAgICAgICAidiI6ICJSIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJTIiwKICAgICAgICAgICAgICAgICJ2IjogIlMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIlQiLAogICAgICAgICAgICAgICAgInYiOiAiVCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiVSIsCiAgICAgICAgICAgICAgICAidiI6ICJVIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJWIiwKICAgICAgICAgICAgICAgICJ2IjogIlYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIlciLAogICAgICAgICAgICAgICAgInYiOiAiVyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiWCIsCiAgICAgICAgICAgICAgICAidiI6ICJYIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJZIiwKICAgICAgICAgICAgICAgICJ2IjogIlkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIloiLAogICAgICAgICAgICAgICAgInYiOiAiWiIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAiYnkiLAogICAgICAgICAgICAibmFtZSI6ICLmjpLluo8iLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5pu05pawIiwKICAgICAgICAgICAgICAgICJ2IjogInRpbWUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuW+l+WIhiIsCiAgICAgICAgICAgICAgICAidiI6ICJzY29yZSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5oC75o6S6KGMIiwKICAgICAgICAgICAgICAgICJ2IjogImhpdHMiCiAgICAgICAgICAgIH1dCiAgICAgICAgfV0sCiAgICAgICAgIjQiOiBbewogICAgICAgICAgICAia2V5IjogImNsYXNzIiwKICAgICAgICAgICAgIm5hbWUiOiAi5Ymn5oOFIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqCIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWGkumZqSIsCiAgICAgICAgICAgICAgICAidiI6ICI1MCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi54Ot6KGAIiwKICAgICAgICAgICAgICAgICJ2IjogIjUxIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmrabkvqAiLAogICAgICAgICAgICAgICAgInYiOiAiNTIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWlh+W5uyIsCiAgICAgICAgICAgICAgICAidiI6ICI1MyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi546E5bm7IiwKICAgICAgICAgICAgICAgICJ2IjogIjU0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnq57mioAiLAogICAgICAgICAgICAgICAgInYiOiAiNTUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIumtlOW5uyIsCiAgICAgICAgICAgICAgICAidiI6ICI1NiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi56eR5bm7IiwKICAgICAgICAgICAgICAgICJ2IjogIjU3IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmgYvniLEiLAogICAgICAgICAgICAgICAgInYiOiAiNTgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWOhuWPsiIsCiAgICAgICAgICAgICAgICAidiI6ICI3MyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5oiY5paXIiwKICAgICAgICAgICAgICAgICJ2IjogIjc0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmkJ7nrJEiLAogICAgICAgICAgICAgICAgInYiOiAiNzUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuelnumtlCIsCiAgICAgICAgICAgICAgICAidiI6ICI3NiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5oiY5LqJIiwKICAgICAgICAgICAgICAgICJ2IjogIjk3IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlj6Tpo44iLAogICAgICAgICAgICAgICAgInYiOiAiMTExIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlsJHlpbMiLAogICAgICAgICAgICAgICAgInYiOiAiMTEyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLokJ3ojokiLAogICAgICAgICAgICAgICAgInYiOiAiMTEzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmsrvmhIgiLAogICAgICAgICAgICAgICAgInYiOiAiMTE0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLml6XluLgiLAogICAgICAgICAgICAgICAgInYiOiAiMTE1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmrYzoiJ4iLAogICAgICAgICAgICAgICAgInYiOiAiMTE2IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlgbblg48iLAogICAgICAgICAgICAgICAgInYiOiAiMTIwIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLogYzlnLoiLAogICAgICAgICAgICAgICAgInYiOiAiMTIzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLku5nkvqAiLAogICAgICAgICAgICAgICAgInYiOiAiMTI1IgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJ5ZWFyIiwKICAgICAgICAgICAgIm5hbWUiOiAi5bm05Lu9IiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqCIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjUiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyNSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyNCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDI0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIzIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjIiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyMiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDIxIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIwIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTkiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxOSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxOCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE4IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE3IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTYiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxNiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE0IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTMiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxMyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxMiIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDEyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDExIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTAiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxMCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwOSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDA5IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA4IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDciLAogICAgICAgICAgICAgICAgInYiOiAiMjAwNyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwNiIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDA2IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA1IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDQiLAogICAgICAgICAgICAgICAgInYiOiAiMjAwNCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwMyIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDAzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDAyIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDEiLAogICAgICAgICAgICAgICAgInYiOiAiMjAwMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwMCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDAwIgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJsZXR0ZXIiLAogICAgICAgICAgICAibmFtZSI6ICLlrZfmr40iLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOoIiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiQSIsCiAgICAgICAgICAgICAgICAidiI6ICJBIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJCIiwKICAgICAgICAgICAgICAgICJ2IjogIkIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkMiLAogICAgICAgICAgICAgICAgInYiOiAiQyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiRCIsCiAgICAgICAgICAgICAgICAidiI6ICJEIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJFIiwKICAgICAgICAgICAgICAgICJ2IjogIkUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkYiLAogICAgICAgICAgICAgICAgInYiOiAiRiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiRyIsCiAgICAgICAgICAgICAgICAidiI6ICJHIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJIIiwKICAgICAgICAgICAgICAgICJ2IjogIkgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkkiLAogICAgICAgICAgICAgICAgInYiOiAiSSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiSiIsCiAgICAgICAgICAgICAgICAidiI6ICJKIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJLIiwKICAgICAgICAgICAgICAgICJ2IjogIksiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkwiLAogICAgICAgICAgICAgICAgInYiOiAiTCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiTSIsCiAgICAgICAgICAgICAgICAidiI6ICJNIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJOIiwKICAgICAgICAgICAgICAgICJ2IjogIk4iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIk8iLAogICAgICAgICAgICAgICAgInYiOiAiTyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiUCIsCiAgICAgICAgICAgICAgICAidiI6ICJQIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJRIiwKICAgICAgICAgICAgICAgICJ2IjogIlEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIlIiLAogICAgICAgICAgICAgICAgInYiOiAiUiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiUyIsCiAgICAgICAgICAgICAgICAidiI6ICJTIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJUIiwKICAgICAgICAgICAgICAgICJ2IjogIlQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIlUiLAogICAgICAgICAgICAgICAgInYiOiAiVSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiViIsCiAgICAgICAgICAgICAgICAidiI6ICJWIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJXIiwKICAgICAgICAgICAgICAgICJ2IjogIlciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIlgiLAogICAgICAgICAgICAgICAgInYiOiAiWCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiWSIsCiAgICAgICAgICAgICAgICAidiI6ICJZIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJaIiwKICAgICAgICAgICAgICAgICJ2IjogIloiCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogImJ5IiwKICAgICAgICAgICAgIm5hbWUiOiAi5o6S5bqPIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuabtOaWsCIsCiAgICAgICAgICAgICAgICAidiI6ICJ0aW1lIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlvpfliIYiLAogICAgICAgICAgICAgICAgInYiOiAic2NvcmUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaAu+aOkuihjCIsCiAgICAgICAgICAgICAgICAidiI6ICJoaXRzIgogICAgICAgICAgICB9XQogICAgICAgIH1dLAogICAgICAgICIxNiI6IFt7CiAgICAgICAgICAgICJrZXkiOiAiY2xhc3MiLAogICAgICAgICAgICAibmFtZSI6ICLliafmg4UiLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOoIiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5YaS6ZmpIiwKICAgICAgICAgICAgICAgICJ2IjogIjc3IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLng63ooYAiLAogICAgICAgICAgICAgICAgInYiOiAiNzgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWlh+W5uyIsCiAgICAgICAgICAgICAgICAidiI6ICI3OSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5oGL54ixIiwKICAgICAgICAgICAgICAgICJ2IjogIjgwIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmoKHlm60iLAogICAgICAgICAgICAgICAgInYiOiAiODEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWQjuWuqyIsCiAgICAgICAgICAgICAgICAidiI6ICI4MiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pCe56yRIiwKICAgICAgICAgICAgICAgICJ2IjogIjgzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLpnZLmmKUiLAogICAgICAgICAgICAgICAgInYiOiAiODQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIueZvuWQiCIsCiAgICAgICAgICAgICAgICAidiI6ICI4NSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5rK75oSIIiwKICAgICAgICAgICAgICAgICJ2IjogIjg2IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnpZ7prZQiLAogICAgICAgICAgICAgICAgInYiOiAiODciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIumtlOazlSIsCiAgICAgICAgICAgICAgICAidiI6ICI4OCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5o6o55CGIiwKICAgICAgICAgICAgICAgICJ2IjogIjg5IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnp5HlubsiLAogICAgICAgICAgICAgICAgInYiOiAiOTAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuernuaKgCIsCiAgICAgICAgICAgICAgICAidiI6ICI5MSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5oKs55aRIiwKICAgICAgICAgICAgICAgICJ2IjogIjkyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmiJjkuokiLAogICAgICAgICAgICAgICAgInYiOiAiOTMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuiQneiOiSIsCiAgICAgICAgICAgICAgICAidiI6ICI5NCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6a2U5bm7IiwKICAgICAgICAgICAgICAgICJ2IjogIjk1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmiJjmlpciLAogICAgICAgICAgICAgICAgInYiOiAiOTYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWOhuWPsiIsCiAgICAgICAgICAgICAgICAidiI6ICIxMDIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuatjOiIniIsCiAgICAgICAgICAgICAgICAidiI6ICIxMDMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaBkOaAliIsCiAgICAgICAgICAgICAgICAidiI6ICIxMDUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuiBjOWcuiIsCiAgICAgICAgICAgICAgICAidiI6ICIxMDYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWKseW/lyIsCiAgICAgICAgICAgICAgICAidiI6ICIxMTAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWBtuWDjyIsCiAgICAgICAgICAgICAgICAidiI6ICIxMTciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuiBjOWcuiIsCiAgICAgICAgICAgICAgICAidiI6ICIxMjQiCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogInllYXIiLAogICAgICAgICAgICAibmFtZSI6ICLlubTku70iLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOoIiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyNSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDI1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDI0IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjMiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyMyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMiIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDIyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIxIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjAiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyMCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxOSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE5IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE4IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTciLAogICAgICAgICAgICAgICAgInYiOiAiMjAxNyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNiIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE2IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE1IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTQiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxNCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxMyIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDEzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDEyIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTEiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxMCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDEwIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA5IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDgiLAogICAgICAgICAgICAgICAgInYiOiAiMjAwOCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwNyIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDA3IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA2IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDUiLAogICAgICAgICAgICAgICAgInYiOiAiMjAwNSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwNCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDA0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDAzIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDIiLAogICAgICAgICAgICAgICAgInYiOiAiMjAwMiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwMSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDAxIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDAwIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDAiCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogImxldHRlciIsCiAgICAgICAgICAgICJuYW1lIjogIuWtl+avjSIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlhajpg6giLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJBIiwKICAgICAgICAgICAgICAgICJ2IjogIkEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkIiLAogICAgICAgICAgICAgICAgInYiOiAiQiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiQyIsCiAgICAgICAgICAgICAgICAidiI6ICJDIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJEIiwKICAgICAgICAgICAgICAgICJ2IjogIkQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkUiLAogICAgICAgICAgICAgICAgInYiOiAiRSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiRiIsCiAgICAgICAgICAgICAgICAidiI6ICJGIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJHIiwKICAgICAgICAgICAgICAgICJ2IjogIkciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkgiLAogICAgICAgICAgICAgICAgInYiOiAiSCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiSSIsCiAgICAgICAgICAgICAgICAidiI6ICJJIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJKIiwKICAgICAgICAgICAgICAgICJ2IjogIkoiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIksiLAogICAgICAgICAgICAgICAgInYiOiAiSyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiTCIsCiAgICAgICAgICAgICAgICAidiI6ICJMIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJNIiwKICAgICAgICAgICAgICAgICJ2IjogIk0iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIk4iLAogICAgICAgICAgICAgICAgInYiOiAiTiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiTyIsCiAgICAgICAgICAgICAgICAidiI6ICJPIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJQIiwKICAgICAgICAgICAgICAgICJ2IjogIlAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIlEiLAogICAgICAgICAgICAgICAgInYiOiAiUSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiUiIsCiAgICAgICAgICAgICAgICAidiI6ICJSIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJTIiwKICAgICAgICAgICAgICAgICJ2IjogIlMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIlQiLAogICAgICAgICAgICAgICAgInYiOiAiVCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiVSIsCiAgICAgICAgICAgICAgICAidiI6ICJVIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJWIiwKICAgICAgICAgICAgICAgICJ2IjogIlYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIlciLAogICAgICAgICAgICAgICAgInYiOiAiVyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiWCIsCiAgICAgICAgICAgICAgICAidiI6ICJYIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJZIiwKICAgICAgICAgICAgICAgICJ2IjogIlkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIloiLAogICAgICAgICAgICAgICAgInYiOiAiWiIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAiYnkiLAogICAgICAgICAgICAibmFtZSI6ICLmjpLluo8iLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5pu05pawIiwKICAgICAgICAgICAgICAgICJ2IjogInRpbWUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuW+l+WIhiIsCiAgICAgICAgICAgICAgICAidiI6ICJzY29yZSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5oC75o6S6KGMIiwKICAgICAgICAgICAgICAgICJ2IjogImhpdHMiCiAgICAgICAgICAgIH1dCiAgICAgICAgfV0KICAgIH0sCiAgICBzZWFyY2hVcmw6ICcvc2VhcmNoLXBnLWZ5cGFnZS13ZC0qKi5odG1sJywKICAgIHNlYXJjaGFibGU6IDIsIC8v5piv5ZCm5ZCv55So5YWo5bGA5pCc57SiLAogICAgcXVpY2tTZWFyY2g6IDAsIC8v5piv5ZCm5ZCv55So5b+r6YCf5pCc57SiLAogICAgaGVhZGVyczogewogICAgICAgICdVc2VyLUFnZW50JzogJ1BDX1VBJywKICAgIH0sCiAgICBjbGFzc19wYXJzZTogJy5zZWNOYWNVbCBsaTthJiZUZXh0O2EmJmhyZWY7LiovKFxcZCspLTEuaHRtbCcsCiAgICBwbGF5X3BhcnNlOiB0cnVlLAogICAgbGF6eTogJycsCiAgICBsaW1pdDogNiwKICAgIOaOqOiNkDogJy5jMV9sX3dhcF9jb250YWN0IGxpOyo7aW1nJiZzcmM7LnRpbWU6ZXEoMCkmJlRleHQ7KicsCiAgICDkuIDnuqc6ICcubGlzdDNfY25fYm94IC5jbl9ib3gyO2EmJnRpdGxlOy5saXN0X3BpYyYmc3JjOy5saXN0XzIwIGxpOmVxKDEpIHNwYW4mJlRleHQ7YSYmaHJlZicsCiAgICDkuoznuqc6IHsKICAgICAgICAidGl0bGUiOiAiaDEmJlRleHQ7Lm9fcl9jb250YWN0JiZsaTplcSgwKSYmVGV4dCIsCiAgICAgICAgImltZyI6ICIub19iaWdfaW1nX2JnX2IgaW1nJiZzcmMiLAogICAgICAgICJkZXNjIjogIi5vX3JfY29udGFjdCYmbGk6ZXEoNikmJlRleHQ7Lm9fcl9jb250YWN0JiZsaTplcSg1KSYmVGV4dDsub19yX2NvbnRhY3QmJmxpOmVxKDMpJiZUZXh0Oy5vX3JfY29udGFjdCYmbGk6ZXEoMikmJlRleHQ7Lm9fcl9jb250YWN0JiZsaTplcSgxKSYmVGV4dCIsCiAgICAgICAgImNvbnRlbnQiOiAiLmRlc19ib3gmJlRleHQiLAogICAgICAgICJ0YWJzIjogIi5mcm9tLXRhYnMmJmxhYmVsIiwKICAgICAgICAibGlzdHMiOiAiLm1uX2xpc3RfbGlfbW92aWU6ZXEoI2lkKSBsaSIKICAgIH0sCiAgICDmkJzntKI6ICcqJywKfQ== \ No newline at end of file diff --git a/潇洒/js/HKDM.js b/潇洒/js/HKDM.js new file mode 100644 index 0000000..a02652e --- /dev/null +++ b/潇洒/js/HKDM.js @@ -0,0 +1 @@ +dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+Wlveeci+WKqOa8qycsCiAgICBob3N0OiAnaHR0cHM6Ly93d3cueW91aml1bGEuY29tLycsCiAgICB1cmw6ICdodHRwczovL3d3dy55b3VqaXVsYS5jb20veW91aml1L2Z5Y2xhc3MtZnlwYWdlLmh0bWwnLAogICAgc2VhcmNoVXJsOiAnaHR0cHM6Ly93d3cueW91aml1bGEuY29tL3NlYXJjaC5waHA/cGFnZT1meXBhZ2Umc2VhcmNod29yZD0qKiZzZWFyY2h0eXBlPScsCiAgICBzZWFyY2hhYmxlOiAyLCAvL+aYr+WQpuWQr+eUqOWFqOWxgOaQnOe0oiwKICAgIHF1aWNrU2VhcmNoOiAwLCAvL+aYr+WQpuWQr+eUqOW/q+mAn+aQnOe0oiwKICAgIGZpbHRlcmFibGU6IDAsIC8v5piv5ZCm5ZCv55So5YiG57G7562b6YCJLAogICAgaGVhZGVyczogewogICAgICAgICdVc2VyLUFnZW50JzogJ1VDX1VBJywgLy8gIkNvb2tpZSI6ICIiCiAgICB9LCAvLyBjbGFzc19wYXJzZTonLnN0dWktaGVhZGVyX19tZW51IGxpOmd0KDApOmx0KDcpO2EmJlRleHQ7YSYmaHJlZjsvKFxcZCspLmh0bWwnLAogICAgY2xhc3NfcGFyc2U6ICcuc3R1aS1oZWFkZXJfX21lbnUgbGk6Z3QoMCk6bHQoNyk7YSYmVGV4dDthJiZocmVmOy4qLyguKj8pLmh0bWwnLAogICAgcGxheV9wYXJzZTogdHJ1ZSwKICAgIGxhenk6ICcnLAogICAgbGltaXQ6IDYsCiAgICDmjqjojZA6ICd1bC5zdHVpLXZvZGxpc3QuY2xlYXJmaXg7bGk7YSYmdGl0bGU7Lmxhenlsb2FkJiZkYXRhLW9yaWdpbmFsOy5waWMtdGV4dCYmVGV4dDthJiZocmVmJywKICAgIGRvdWJsZTogdHJ1ZSwgLy8g5o6o6I2Q5YaF5a655piv5ZCm5Y+M5bGC5a6a5L2NCiAgICDkuIDnuqc6ICcuc3R1aS12b2RsaXN0IGxpO2EmJnRpdGxlO2EmJmRhdGEtb3JpZ2luYWw7LnBpYy10ZXh0JiZUZXh0O2EmJmhyZWYnLAogICAg5LqM57qnOiB7CiAgICAgICAgInRpdGxlIjogIi5zdHVpLWNvbnRlbnRfX2RldGFpbCAudGl0bGUmJlRleHQ7LnN0dWktY29udGVudF9fZGV0YWlsIHA6ZXEoLTIpJiZUZXh0IiwKICAgICAgICAiaW1nIjogIi5zdHVpLWNvbnRlbnRfX3RodW1iIC5sYXp5bG9hZCYmZGF0YS1vcmlnaW5hbCIsCiAgICAgICAgImRlc2MiOiAiLnN0dWktY29udGVudF9fZGV0YWlsIHA6ZXEoMCkmJlRleHQ7LnN0dWktY29udGVudF9fZGV0YWlsIHA6ZXEoMSkmJlRleHQ7LnN0dWktY29udGVudF9fZGV0YWlsIHA6ZXEoMikmJlRleHQiLAogICAgICAgICJjb250ZW50IjogIiNkZXNjJiZUZXh0IiwKICAgICAgICAidGFicyI6ICIuc3R1aS1wYW5uZWwtYm94IGgzIiwKICAgICAgICAibGlzdHMiOiAiLnN0dWktY29udGVudF9fcGxheWxpc3Q6ZXEoI2lkKSBsaSIKICAgIH0sCiAgICDmkJzntKI6ICd1bC5zdHVpLXZvZGxpc3QmJmxpO2EmJnRpdGxlOy5sYXp5bG9hZCYmZGF0YS1vcmlnaW5hbDsudGV4dC1tdXRlZCYmVGV4dDthJiZocmVmOy50ZXh0LW11dGVkOmVxKC0xKSYmVGV4dCcsCgp9 \ No newline at end of file diff --git a/潇洒/js/HZDM.js b/潇洒/js/HZDM.js new file mode 100644 index 0000000..93fe094 --- /dev/null +++ b/潇洒/js/HZDM.js @@ -0,0 +1 @@ +dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+iKseWtkOWKqOa8q1vmvKtdJywKICAgIGhvc3Q6ICdodHRwczovL3d3dy5odWF6aWRtLmNvbScsCiAgICBjbGFzc19uYW1lOiAnVFbliqjmvKsm5Ymn5Zy6JueJueaRhCcsCiAgICBjbGFzc191cmw6ICcxJjImMycsCiAgICBzZWFyY2hVcmw6ICcvaW5kZXgucGhwL2FqYXgvc3VnZ2VzdD9taWQ9MSZ3ZD0qKiZsaW1pdD01MCcsCiAgICBzZWFyY2hVcmw6ICcvdm9kc2VhcmNoLyoqLS0tLS0tLS0tLWZ5cGFnZS0tLS5odG1sJywKICAgIHNlYXJjaGFibGU6IDIsCiAgICBxdWlja1NlYXJjaDogMCwKICAgIGhlYWRlcnM6IHsKICAgICAgICAnVXNlci1BZ2VudCc6ICdNT0JJTEVfVUEnLAogICAgfSwKICAgIHVybDogJy9pbmRleC5waHAvYXBpL3ZvZCN0eXBlPWZ5Y2xhc3NmeWZpbHRlciZwYWdlPWZ5cGFnZScsCiAgICBmaWx0ZXJhYmxlOiAwLAogICAgZmlsdGVyX3VybDogJyZjbGFzcz17e2ZsLmNsYXNzfX0meWVhcj17e2ZsLnllYXJ9fSZsZXR0ZXI9e3tmbC5sZXR0ZXJ9fSZieT17e2ZsLmJ5fX0nLAogICAgZmlsdGVyOiB7CiAgICAgICAgIjEiOiBbewogICAgICAgICAgICAia2V5IjogImNsYXNzIiwKICAgICAgICAgICAgIm5hbWUiOiAi57G75Z6LIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqCIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuW8guS4lueVjCIsCiAgICAgICAgICAgICAgICAidiI6ICLlvILkuJbnlYwiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIueZvuWQiCIsCiAgICAgICAgICAgICAgICAidiI6ICLnmb7lkIgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWQjuWuqyIsCiAgICAgICAgICAgICAgICAidiI6ICLlkI7lrqsiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIueDreihgCIsCiAgICAgICAgICAgICAgICAidiI6ICLng63ooYAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIue6r+eIsSIsCiAgICAgICAgICAgICAgICAidiI6ICLnuq/niLEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuepv+i2iiIsCiAgICAgICAgICAgICAgICAidiI6ICLnqb/otooiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWlh+W5uyIsCiAgICAgICAgICAgICAgICAidiI6ICLlpYflubsiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaImOaWlyIsCiAgICAgICAgICAgICAgICAidiI6ICLmiJjmlpciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWQjuWuqyIsCiAgICAgICAgICAgICAgICAidiI6ICLlkI7lrqsiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaQnueskSIsCiAgICAgICAgICAgICAgICAidiI6ICLmkJ7nrJEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaXpeW4uCIsCiAgICAgICAgICAgICAgICAidiI6ICLml6XluLgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuenkeW5uyIsCiAgICAgICAgICAgICAgICAidiI6ICLnp5HlubsiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuayu+aEiCIsCiAgICAgICAgICAgICAgICAidiI6ICLmsrvmhIgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuagoeWbrSIsCiAgICAgICAgICAgICAgICAidiI6ICLmoKHlm60iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaBi+eIsSIsCiAgICAgICAgICAgICAgICAidiI6ICLmgYvniLEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWGkumZqSIsCiAgICAgICAgICAgICAgICAidiI6ICLlhpLpmakiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaOqOeQhiIsCiAgICAgICAgICAgICAgICAidiI6ICLmjqjnkIYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuacuuaImCIsCiAgICAgICAgICAgICAgICAidiI6ICLmnLrmiJgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIumfs+S5kCIsCiAgICAgICAgICAgICAgICAidiI6ICLpn7PkuZAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuiQneiOiSIsCiAgICAgICAgICAgICAgICAidiI6ICLokJ3ojokiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaBkOaAliIsCiAgICAgICAgICAgICAgICAidiI6ICLmgZDmgJYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaDiuaCmiIsCiAgICAgICAgICAgICAgICAidiI6ICLmg4rmgpoiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuazoemdoueVqiIsCiAgICAgICAgICAgICAgICAidiI6ICLms6HpnaLnlaoiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIua4uOaIj+aUuSIsCiAgICAgICAgICAgICAgICAidiI6ICLmuLjmiI/mlLkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWwj+ivtOaUuSIsCiAgICAgICAgICAgICAgICAidiI6ICLlsI/or7TmlLkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIua8q+eUu+aUuSIsCiAgICAgICAgICAgICAgICAidiI6ICLmvKvnlLvmlLkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuiFkCIsCiAgICAgICAgICAgICAgICAidiI6ICLohZAiCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogInllYXIiLAogICAgICAgICAgICAibmFtZSI6ICLlubTku70iLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOoIiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyNSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDI1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDI0IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjMiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyMyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMiIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDIyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIxIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjAiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyMCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxOSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE5IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE4IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTciLAogICAgICAgICAgICAgICAgInYiOiAiMjAxNyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNiIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE2IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE1IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTQiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxNCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxMyIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDEzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDEyIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTEiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxMCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDEwIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA5IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDgiLAogICAgICAgICAgICAgICAgInYiOiAiMjAwOCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwNyIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDA3IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA2IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDUiLAogICAgICAgICAgICAgICAgInYiOiAiMjAwNSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwNCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDA0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDAzIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDIiLAogICAgICAgICAgICAgICAgInYiOiAiMjAwMiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwMSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDAxIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDAwIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjE5OTkiLAogICAgICAgICAgICAgICAgInYiOiAiMTk5OSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMTk5OCIsCiAgICAgICAgICAgICAgICAidiI6ICIxOTk4IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIxOTk3IiwKICAgICAgICAgICAgICAgICJ2IjogIjE5OTciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjE5OTYiLAogICAgICAgICAgICAgICAgInYiOiAiMTk5NiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMTk5NSIsCiAgICAgICAgICAgICAgICAidiI6ICIxOTk1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIxOTk0IiwKICAgICAgICAgICAgICAgICJ2IjogIjE5OTQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjE5OTMiLAogICAgICAgICAgICAgICAgInYiOiAiMTk5MyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMTk5MiIsCiAgICAgICAgICAgICAgICAidiI6ICIxOTkyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIxOTkxIiwKICAgICAgICAgICAgICAgICJ2IjogIjE5OTEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjE5OTAiLAogICAgICAgICAgICAgICAgInYiOiAiMTk5MCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMTk4OSIsCiAgICAgICAgICAgICAgICAidiI6ICIxOTg5IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIxOTg4IiwKICAgICAgICAgICAgICAgICJ2IjogIjE5ODgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjE5ODciLAogICAgICAgICAgICAgICAgInYiOiAiMTk4NyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMTk4NiIsCiAgICAgICAgICAgICAgICAidiI6ICIxOTg2IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIxOTg1IiwKICAgICAgICAgICAgICAgICJ2IjogIjE5ODUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjE5ODQiLAogICAgICAgICAgICAgICAgInYiOiAiMTk4NCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMTk4MyIsCiAgICAgICAgICAgICAgICAidiI6ICIxOTgzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIxOTgyIiwKICAgICAgICAgICAgICAgICJ2IjogIjE5ODIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjE5ODEiLAogICAgICAgICAgICAgICAgInYiOiAiMTk4MSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMTk4MCIsCiAgICAgICAgICAgICAgICAidiI6ICIxOTgwIgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJsZXR0ZXIiLAogICAgICAgICAgICAibmFtZSI6ICLlrZfmr40iLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOoIiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiQSIsCiAgICAgICAgICAgICAgICAidiI6ICJBIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJCIiwKICAgICAgICAgICAgICAgICJ2IjogIkIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkMiLAogICAgICAgICAgICAgICAgInYiOiAiQyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiRCIsCiAgICAgICAgICAgICAgICAidiI6ICJEIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJFIiwKICAgICAgICAgICAgICAgICJ2IjogIkUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkYiLAogICAgICAgICAgICAgICAgInYiOiAiRiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiRyIsCiAgICAgICAgICAgICAgICAidiI6ICJHIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJIIiwKICAgICAgICAgICAgICAgICJ2IjogIkgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkkiLAogICAgICAgICAgICAgICAgInYiOiAiSSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiSiIsCiAgICAgICAgICAgICAgICAidiI6ICJKIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJLIiwKICAgICAgICAgICAgICAgICJ2IjogIksiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkwiLAogICAgICAgICAgICAgICAgInYiOiAiTCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiTSIsCiAgICAgICAgICAgICAgICAidiI6ICJNIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJOIiwKICAgICAgICAgICAgICAgICJ2IjogIk4iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIk8iLAogICAgICAgICAgICAgICAgInYiOiAiTyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiUCIsCiAgICAgICAgICAgICAgICAidiI6ICJQIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJRIiwKICAgICAgICAgICAgICAgICJ2IjogIlEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIlIiLAogICAgICAgICAgICAgICAgInYiOiAiUiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiUyIsCiAgICAgICAgICAgICAgICAidiI6ICJTIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJUIiwKICAgICAgICAgICAgICAgICJ2IjogIlQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIlUiLAogICAgICAgICAgICAgICAgInYiOiAiVSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiViIsCiAgICAgICAgICAgICAgICAidiI6ICJWIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJXIiwKICAgICAgICAgICAgICAgICJ2IjogIlciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIlgiLAogICAgICAgICAgICAgICAgInYiOiAiWCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiWSIsCiAgICAgICAgICAgICAgICAidiI6ICJZIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJaIiwKICAgICAgICAgICAgICAgICJ2IjogIloiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjAtOSIsCiAgICAgICAgICAgICAgICAidiI6ICIwLTkiCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogImJ5IiwKICAgICAgICAgICAgIm5hbWUiOiAi5pe26Ze0IiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuaMieacgOaWsCIsCiAgICAgICAgICAgICAgICAidiI6ICJ0aW1lIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmjInmnIDng60iLAogICAgICAgICAgICAgICAgInYiOiAiaGl0cyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5oyJ6K+E5YiGIiwKICAgICAgICAgICAgICAgICJ2IjogInNjb3JlIgogICAgICAgICAgICB9XQogICAgICAgIH1dLAogICAgICAgICIyIjogW3sKICAgICAgICAgICAgImtleSI6ICJjbGFzcyIsCiAgICAgICAgICAgICJuYW1lIjogIuexu+WeiyIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlhajpg6giLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlvILkuJbnlYwiLAogICAgICAgICAgICAgICAgInYiOiAi5byC5LiW55WMIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnmb7lkIgiLAogICAgICAgICAgICAgICAgInYiOiAi55m+5ZCIIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLng63ooYAiLAogICAgICAgICAgICAgICAgInYiOiAi54Ot6KGAIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnqb/otooiLAogICAgICAgICAgICAgICAgInYiOiAi56m/6LaKIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlpYflubsiLAogICAgICAgICAgICAgICAgInYiOiAi5aWH5bm7IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmiJjmlpciLAogICAgICAgICAgICAgICAgInYiOiAi5oiY5paXIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmkJ7nrJEiLAogICAgICAgICAgICAgICAgInYiOiAi5pCe56yRIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLml6XluLgiLAogICAgICAgICAgICAgICAgInYiOiAi5pel5bi4IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnp5HlubsiLAogICAgICAgICAgICAgICAgInYiOiAi56eR5bm7IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmsrvmhIgiLAogICAgICAgICAgICAgICAgInYiOiAi5rK75oSIIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmoKHlm60iLAogICAgICAgICAgICAgICAgInYiOiAi5qCh5ZutIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmgYvniLEiLAogICAgICAgICAgICAgICAgInYiOiAi5oGL54ixIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlhpLpmakiLAogICAgICAgICAgICAgICAgInYiOiAi5YaS6ZmpIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmnLrmiJgiLAogICAgICAgICAgICAgICAgInYiOiAi5py65oiYIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLpn7PkuZAiLAogICAgICAgICAgICAgICAgInYiOiAi6Z+z5LmQIgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJ5ZWFyIiwKICAgICAgICAgICAgIm5hbWUiOiAi5bm05Lu9IiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqCIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjUiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyNSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyNCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDI0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIzIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjIiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyMiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDIxIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIwIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTkiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxOSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxOCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE4IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE3IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTYiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxNiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE0IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTMiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxMyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxMiIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDEyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDExIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTAiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxMCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwOSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDA5IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA4IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDciLAogICAgICAgICAgICAgICAgInYiOiAiMjAwNyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwNiIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDA2IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA1IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDQiLAogICAgICAgICAgICAgICAgInYiOiAiMjAwNCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwMyIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDAzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDAyIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDEiLAogICAgICAgICAgICAgICAgInYiOiAiMjAwMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwMCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDAwIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIxOTk5IiwKICAgICAgICAgICAgICAgICJ2IjogIjE5OTkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjE5OTgiLAogICAgICAgICAgICAgICAgInYiOiAiMTk5OCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMTk5NyIsCiAgICAgICAgICAgICAgICAidiI6ICIxOTk3IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIxOTk2IiwKICAgICAgICAgICAgICAgICJ2IjogIjE5OTYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjE5OTUiLAogICAgICAgICAgICAgICAgInYiOiAiMTk5NSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMTk5NCIsCiAgICAgICAgICAgICAgICAidiI6ICIxOTk0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIxOTkzIiwKICAgICAgICAgICAgICAgICJ2IjogIjE5OTMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjE5OTIiLAogICAgICAgICAgICAgICAgInYiOiAiMTk5MiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMTk5MSIsCiAgICAgICAgICAgICAgICAidiI6ICIxOTkxIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIxOTkwIiwKICAgICAgICAgICAgICAgICJ2IjogIjE5OTAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjE5ODkiLAogICAgICAgICAgICAgICAgInYiOiAiMTk4OSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMTk4OCIsCiAgICAgICAgICAgICAgICAidiI6ICIxOTg4IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIxOTg3IiwKICAgICAgICAgICAgICAgICJ2IjogIjE5ODciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjE5ODYiLAogICAgICAgICAgICAgICAgInYiOiAiMTk4NiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMTk4NSIsCiAgICAgICAgICAgICAgICAidiI6ICIxOTg1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIxOTg0IiwKICAgICAgICAgICAgICAgICJ2IjogIjE5ODQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjE5ODMiLAogICAgICAgICAgICAgICAgInYiOiAiMTk4MyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMTk4MiIsCiAgICAgICAgICAgICAgICAidiI6ICIxOTgyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIxOTgxIiwKICAgICAgICAgICAgICAgICJ2IjogIjE5ODEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjE5ODAiLAogICAgICAgICAgICAgICAgInYiOiAiMTk4MCIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAibGV0dGVyIiwKICAgICAgICAgICAgIm5hbWUiOiAi5a2X5q+NIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqCIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkEiLAogICAgICAgICAgICAgICAgInYiOiAiQSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiQiIsCiAgICAgICAgICAgICAgICAidiI6ICJCIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJDIiwKICAgICAgICAgICAgICAgICJ2IjogIkMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkQiLAogICAgICAgICAgICAgICAgInYiOiAiRCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiRSIsCiAgICAgICAgICAgICAgICAidiI6ICJFIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJGIiwKICAgICAgICAgICAgICAgICJ2IjogIkYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkciLAogICAgICAgICAgICAgICAgInYiOiAiRyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiSCIsCiAgICAgICAgICAgICAgICAidiI6ICJIIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJJIiwKICAgICAgICAgICAgICAgICJ2IjogIkkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkoiLAogICAgICAgICAgICAgICAgInYiOiAiSiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiSyIsCiAgICAgICAgICAgICAgICAidiI6ICJLIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJMIiwKICAgICAgICAgICAgICAgICJ2IjogIkwiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIk0iLAogICAgICAgICAgICAgICAgInYiOiAiTSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiTiIsCiAgICAgICAgICAgICAgICAidiI6ICJOIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJPIiwKICAgICAgICAgICAgICAgICJ2IjogIk8iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIlAiLAogICAgICAgICAgICAgICAgInYiOiAiUCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiUSIsCiAgICAgICAgICAgICAgICAidiI6ICJRIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJSIiwKICAgICAgICAgICAgICAgICJ2IjogIlIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIlMiLAogICAgICAgICAgICAgICAgInYiOiAiUyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiVCIsCiAgICAgICAgICAgICAgICAidiI6ICJUIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJVIiwKICAgICAgICAgICAgICAgICJ2IjogIlUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIlYiLAogICAgICAgICAgICAgICAgInYiOiAiViIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiVyIsCiAgICAgICAgICAgICAgICAidiI6ICJXIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJYIiwKICAgICAgICAgICAgICAgICJ2IjogIlgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIlkiLAogICAgICAgICAgICAgICAgInYiOiAiWSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiWiIsCiAgICAgICAgICAgICAgICAidiI6ICJaIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIwLTkiLAogICAgICAgICAgICAgICAgInYiOiAiMC05IgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJieSIsCiAgICAgICAgICAgICJuYW1lIjogIuaXtumXtCIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLmjInmnIDmlrAiLAogICAgICAgICAgICAgICAgInYiOiAidGltZSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5oyJ5pyA54OtIiwKICAgICAgICAgICAgICAgICJ2IjogImhpdHMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaMieivhOWIhiIsCiAgICAgICAgICAgICAgICAidiI6ICJzY29yZSIKICAgICAgICAgICAgfV0KICAgICAgICB9XSwKICAgICAgICAiMyI6IFt7CiAgICAgICAgICAgICJrZXkiOiAiY2xhc3MiLAogICAgICAgICAgICAibmFtZSI6ICLnsbvlnosiLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOoIiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5Yqo5L2cIiwKICAgICAgICAgICAgICAgICJ2IjogIuWKqOS9nCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5aWH5bm7IiwKICAgICAgICAgICAgICAgICJ2IjogIuWlh+W5uyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi56eR5bm7IiwKICAgICAgICAgICAgICAgICJ2IjogIuenkeW5uyIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAieWVhciIsCiAgICAgICAgICAgICJuYW1lIjogIuW5tOS7vSIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlhajpg6giLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDI1IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjQiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyNCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMyIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDIzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIyIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjEiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDIwIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE5IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTgiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxOCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNyIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE3IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE2IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTUiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxNSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDEzIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTIiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxMiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxMSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDExIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDEwIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDkiLAogICAgICAgICAgICAgICAgInYiOiAiMjAwOSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwOCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDA4IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA3IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDYiLAogICAgICAgICAgICAgICAgInYiOiAiMjAwNiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwNSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDA1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA0IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDMiLAogICAgICAgICAgICAgICAgInYiOiAiMjAwMyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwMiIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDAyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDAxIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDAiLAogICAgICAgICAgICAgICAgInYiOiAiMjAwMCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMTk5OSIsCiAgICAgICAgICAgICAgICAidiI6ICIxOTk5IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIxOTk4IiwKICAgICAgICAgICAgICAgICJ2IjogIjE5OTgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjE5OTciLAogICAgICAgICAgICAgICAgInYiOiAiMTk5NyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMTk5NiIsCiAgICAgICAgICAgICAgICAidiI6ICIxOTk2IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIxOTk1IiwKICAgICAgICAgICAgICAgICJ2IjogIjE5OTUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjE5OTQiLAogICAgICAgICAgICAgICAgInYiOiAiMTk5NCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMTk5MyIsCiAgICAgICAgICAgICAgICAidiI6ICIxOTkzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIxOTkyIiwKICAgICAgICAgICAgICAgICJ2IjogIjE5OTIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjE5OTEiLAogICAgICAgICAgICAgICAgInYiOiAiMTk5MSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMTk5MCIsCiAgICAgICAgICAgICAgICAidiI6ICIxOTkwIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIxOTg5IiwKICAgICAgICAgICAgICAgICJ2IjogIjE5ODkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjE5ODgiLAogICAgICAgICAgICAgICAgInYiOiAiMTk4OCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMTk4NyIsCiAgICAgICAgICAgICAgICAidiI6ICIxOTg3IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIxOTg2IiwKICAgICAgICAgICAgICAgICJ2IjogIjE5ODYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjE5ODUiLAogICAgICAgICAgICAgICAgInYiOiAiMTk4NSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMTk4NCIsCiAgICAgICAgICAgICAgICAidiI6ICIxOTg0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIxOTgzIiwKICAgICAgICAgICAgICAgICJ2IjogIjE5ODMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjE5ODIiLAogICAgICAgICAgICAgICAgInYiOiAiMTk4MiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMTk4MSIsCiAgICAgICAgICAgICAgICAidiI6ICIxOTgxIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIxOTgwIiwKICAgICAgICAgICAgICAgICJ2IjogIjE5ODAiCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogImxldHRlciIsCiAgICAgICAgICAgICJuYW1lIjogIuWtl+avjSIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlhajpg6giLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJBIiwKICAgICAgICAgICAgICAgICJ2IjogIkEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkIiLAogICAgICAgICAgICAgICAgInYiOiAiQiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiQyIsCiAgICAgICAgICAgICAgICAidiI6ICJDIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJEIiwKICAgICAgICAgICAgICAgICJ2IjogIkQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkUiLAogICAgICAgICAgICAgICAgInYiOiAiRSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiRiIsCiAgICAgICAgICAgICAgICAidiI6ICJGIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJHIiwKICAgICAgICAgICAgICAgICJ2IjogIkciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkgiLAogICAgICAgICAgICAgICAgInYiOiAiSCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiSSIsCiAgICAgICAgICAgICAgICAidiI6ICJJIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJKIiwKICAgICAgICAgICAgICAgICJ2IjogIkoiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIksiLAogICAgICAgICAgICAgICAgInYiOiAiSyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiTCIsCiAgICAgICAgICAgICAgICAidiI6ICJMIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJNIiwKICAgICAgICAgICAgICAgICJ2IjogIk0iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIk4iLAogICAgICAgICAgICAgICAgInYiOiAiTiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiTyIsCiAgICAgICAgICAgICAgICAidiI6ICJPIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJQIiwKICAgICAgICAgICAgICAgICJ2IjogIlAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIlEiLAogICAgICAgICAgICAgICAgInYiOiAiUSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiUiIsCiAgICAgICAgICAgICAgICAidiI6ICJSIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJTIiwKICAgICAgICAgICAgICAgICJ2IjogIlMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIlQiLAogICAgICAgICAgICAgICAgInYiOiAiVCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiVSIsCiAgICAgICAgICAgICAgICAidiI6ICJVIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJWIiwKICAgICAgICAgICAgICAgICJ2IjogIlYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIlciLAogICAgICAgICAgICAgICAgInYiOiAiVyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiWCIsCiAgICAgICAgICAgICAgICAidiI6ICJYIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJZIiwKICAgICAgICAgICAgICAgICJ2IjogIlkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIloiLAogICAgICAgICAgICAgICAgInYiOiAiWiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMC05IiwKICAgICAgICAgICAgICAgICJ2IjogIjAtOSIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAiYnkiLAogICAgICAgICAgICAibmFtZSI6ICLml7bpl7QiLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5oyJ5pyA5pawIiwKICAgICAgICAgICAgICAgICJ2IjogInRpbWUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaMieacgOeDrSIsCiAgICAgICAgICAgICAgICAidiI6ICJoaXRzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmjInor4TliIYiLAogICAgICAgICAgICAgICAgInYiOiAic2NvcmUiCiAgICAgICAgICAgIH1dCiAgICAgICAgfV0KICAgIH0sCiAgICBmaWx0ZXJfZGVmOiB7fSwKICAgIGRldGFpbFVybDogJy92b2RkZXRhaWwvZnlpZC5odG1sJywKICAgIHBsYXlfcGFyc2U6IHRydWUsCiAgICBzbmlmZmVyOiAxLAogICAgaXNfdmlkZW86ICdvYmovdG9zfGJkLnhoc2NkbnwvdWdjLycsCiAgICBsYXp5OiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgIGlucHV0ID0gewogICAgICAgICAgICBwYXJzZTogMSwKICAgICAgICAgICAgdXJsOiBpbnB1dCwKICAgICAgICAgICAgLy9qczondHJ5e2xldCB1cmxzPUFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiaWZyYW1lIikpLmZpbHRlcih4PT54LnNyYy5pbmNsdWRlcygiP3VybD0iKSk7aWYodXJscyl7bG9jYXRpb24uaHJlZj11cmxzWzBdLnNyY319Y2F0Y2h7fWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImJ1dHRvbiIpLmNsaWNrKCknLAogICAgICAgICAgICBqczogJ3RyeXtsb2NhdGlvbi5ocmVmPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNwbGF5bGVmdCBpZnJhbWUiKS5zcmN9Y2F0Y2h7fWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImJ1dHRvbi5zd2FsLWJ1dHRvbi0tY29uZmlybSIpLmNsaWNrKCknLAogICAgICAgICAgICBwYXJzZV9leHRyYTogJyZpc19wYz0xJmN1c3RvbV9yZWdleD0nICsgcnVsZS5pc192aWRlbywKICAgICAgICB9CiAgICB9KSwKICAgIGxpbWl0OiA2LAogICAg5o6o6I2QOiAnLmxpc3Qtdm9kLmZsZXggLnB1YmxpYy1saXN0LWJveDthJiZ0aXRsZTsubGF6eSYmZGF0YS1vcmlnaW5hbDsucHVibGljLWxpc3QtcHJiJiZUZXh0O2EmJmhyZWYnLAogICAg5LiA57qnOiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgIGxldCBib2R5ID0gaW5wdXQuc3BsaXQoIiMiKVsxXTsKICAgICAgICBsZXQgdCA9IE1hdGgucm91bmQobmV3IERhdGUgLyAxZTMpLnRvU3RyaW5nKCk7CiAgICAgICAgbGV0IGtleSA9IG1kNSgiRFMiICsgdCArICJEQ0MxNDdEMTE5NDNBRjc1Iik7CiAgICAgICAgbGV0IHVybCA9IGlucHV0LnNwbGl0KCIjIilbMF07CiAgICAgICAgYm9keSA9IGJvZHkgKyAiJnRpbWU9IiArIHQgKyAiJmtleT0iICsga2V5OwogICAgICAgIHByaW50KGJvZHkpOwogICAgICAgIGZldGNoX3BhcmFtcy5ib2R5ID0gYm9keTsKICAgICAgICBsZXQgaHRtbCA9IHBvc3QodXJsLCBmZXRjaF9wYXJhbXMpOwogICAgICAgIGxldCBkYXRhID0gSlNPTi5wYXJzZShodG1sKTsKICAgICAgICBWT0RTID0gZGF0YS5saXN0Lm1hcChmdW5jdGlvbihpdCkgewogICAgICAgICAgICBpdC52b2RfcGljID0gdXJsam9pbjIoaW5wdXQuc3BsaXQoIi9pIilbMF0sIGl0LnZvZF9waWMpOwogICAgICAgICAgICByZXR1cm4gaXQKICAgICAgICB9KTsKICAgIH0pLAogICAg5LqM57qnOiB7CiAgICAgICAgdGl0bGU6ICcuc2xpZGUtaW5mby10aXRsZSYmVGV4dDsuc2xpZGUtaW5mbzplcSgzKS0tc3Ryb25nJiZUZXh0JywKICAgICAgICBpbWc6ICcuZGV0YWlsLXBpYyYmZGF0YS1vcmlnaW5hbCcsCiAgICAgICAgZGVzYzogJy5mcmFjdGlvbiYmVGV4dDsuc2xpZGUtaW5mby1yZW1hcmtzOmVxKDEpJiZUZXh0Oy5zbGlkZS1pbmZvLXJlbWFya3M6ZXEoMikmJlRleHQ7LnNsaWRlLWluZm86ZXEoMiktLXN0cm9uZyYmVGV4dDsuc2xpZGUtaW5mbzplcSgxKS0tc3Ryb25nJiZUZXh0JywKICAgICAgICBjb250ZW50OiAnI2hlaWdodF9saW1pdCYmVGV4dCcsCiAgICAgICAgdGFiczogJy5hbnRob2xvZ3kud293LmZhZGVJblVwLmFuaW1hdGVkJiYuc3dpcGVyLXdyYXBwZXImJmEnLAogICAgICAgIHRhYl90ZXh0OiAnLnN3aXBlci1zbGlkZSYmVGV4dCcsCiAgICAgICAgbGlzdHM6ICcuYW50aG9sb2d5LWxpc3QtYm94OmVxKCNpZCkgbGknLAogICAgfSwKICAgIOaQnOe0ojogJ2pzb246bGlzdDtuYW1lO3BpYzs7aWQnLAogICAg5pCc57SiOiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgIGxldCBodG1sID0gZmV0Y2goaW5wdXQpOwogICAgICAgIGxldCBsaXN0ID0gcGRmYShodG1sLCAiLnB1YmxpYy1saXN0LWJveCIpOwogICAgICAgIFZPRFMgPSBsaXN0Lm1hcCh4ID0+IHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIHZvZF9uYW1lOiBwZGZoKHgsICIudGh1bWItdHh0JiZUZXh0IiksCiAgICAgICAgICAgICAgICB2b2RfcGljOiBwZGZoKHgsICIubGF6eSYmZGF0YS1zcmMiKSwKICAgICAgICAgICAgICAgIHZvZF9yZW1hcmtzOiBwZGZoKHgsICIucHVibGljLWxpc3QtcHJiJiZUZXh0IiksCiAgICAgICAgICAgICAgICB2b2RfY29udGVudDogcGRmaCh4LCAiLnRodW1iLWJsdXJiJiZUZXh0IiksCiAgICAgICAgICAgICAgICB2b2RfaWQ6IHBkZmgoeCwgImEmJmhyZWYiKQogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9KSwKICAgIOWbvueJh+abv+aNojogJyZhbXA7PT4mJwp9 \ No newline at end of file diff --git a/潇洒/js/JQQ.js b/潇洒/js/JQQ.js new file mode 100644 index 0000000..2646d89 --- /dev/null +++ b/潇洒/js/JQQ.js @@ -0,0 +1 @@ +T2JqZWN0LmFzc2lnbihtdWJhbi5teHByby7kuoznuqcsIHsKICAgIHRhYl90ZXh0OiAnZGl2LS1zbWFsbCYmVGV4dCcsCn0pOwp2YXIgcnVsZSA9IHsKICAgIOaooeadvzogJ214cHJvJywKICAgIHRpdGxlOiAn5Ymn5ZyI5ZyIJywKICAgIGhvc3Q6ICdodHRwczovL3d3dy5qcXF6eC5jYy8nLAogICAgdXJsOiAnL3ZvZHNob3cvaWQvZnljbGFzcy9wYWdlL2Z5cGFnZS5odG1sJywKICAgIHNlYXJjaFVybDogJy92b2RzZWFyY2gqKi9wYWdlL2Z5cGFnZS5odG1sJywKICAgIGNsYXNzX3BhcnNlOiAnLm5hdmJhci1pdGVtcyBsaTpndCgyKTpsdCg4KTthJiZUZXh0O2EmJmhyZWY7LiovKC4qPylcLmh0bWwnLAogICAgY2F0ZV9leGNsdWRlOiAn5LuK5pel5pu05pawfOeDreamnCcsCn0= \ No newline at end of file diff --git a/潇洒/js/夸克盘搜.js b/潇洒/js/KKPS.js similarity index 66% rename from 潇洒/js/夸克盘搜.js rename to 潇洒/js/KKPS.js index 5242c32..9855768 100644 --- a/潇洒/js/夸克盘搜.js +++ b/潇洒/js/KKPS.js @@ -10,7 +10,7 @@ var rule = { url: 'https://qkpanso.com/search?q=fyclass&format=video&page=fypage', filter_url: '', detailUrl: '', - searchUrl: 'https://qkpanso.com/search?q=**&format=video&exact=true&page=fypage', + searchUrl: 'https://qkpanso.com/search?q=**&exact=true&format=video&page=fypage', searchable: 1, quickSearch: 1, filterable: 1, @@ -25,7 +25,7 @@ var rule = { limit: 9, double: false, // 推荐: '*', - 一级: 'js:\n let html = fetch(input);\n let list = pdfa(html, "body&&.semi-space-medium-vertical");\n VODS = list.map(x => {\n let remarks = pdfh(x, "div&&img&&alt");\n // 过滤掉包含"迅雷云盘"的内容\n if(remarks.includes("迅雷云盘") || remarks.includes("115") || remarks.includes("阿里")) return null;\n return {\n vod_name: pdfh(x, "div&&a&&title"),\n vod_pic: \'http://pic-smzy.oss-cn-beijing.aliyuncs.com/images/5e/2a/1410241152a3eca2eca7ace140ed1c0c01b12a5e.png\',\n vod_remarks: remarks,\n vod_content: remarks,\n vod_id: pdfh(x, "div&&a&&href")\n }\n }).filter(x => x !== null);\n ', + 一级: 'js:\n let html = fetch(input);\n let list = pdfa(html, "body&&.semi-space-medium-vertical");\n VODS = list.map(x => {\n let remarks = pdfh(x, "div&&img&&alt");\n // 过滤掉包含"迅雷云盘"的内容\n if(remarks.includes("迅雷云盘")) return null;\n return {\n vod_name: pdfh(x, "div&&a&&title"),\n vod_pic: \'http://pic-smzy.oss-cn-beijing.aliyuncs.com/images/5e/2a/1410241152a3eca2eca7ace140ed1c0c01b12a5e.png\',\n vod_remarks: remarks,\n vod_content: remarks,\n vod_id: pdfh(x, "div&&a&&href")\n }\n }).filter(x => x !== null);\n ', 二级: { title: 'h1&&Text', img: 'img&&src', @@ -34,7 +34,7 @@ var rule = { tabs: "js:TABS = ['夸克盘搜']", lists: "js:\n LISTS = [];\n let lists1 = pdfa(html, 'body&&.semi-space-loose-vertical').map(it => {\n let _tt = pdfh(it, 'span&&title');\n let _uu = pdfh(it, 'a&&href');\n return _tt + '$' + _uu;\n });\n LISTS.push(lists1);\n ", }, - 搜索: 'js:\n let html = fetch(input);\n let list = pdfa(html, "body&&.semi-space-medium-vertical");\n VODS = list.map(x => {\n let remarks = pdfh(x, "div&&img&&alt");\n // 过滤掉包含"迅雷云盘"的内容\n if(remarks.includes("迅雷云盘") || remarks.includes("115") || remarks.includes("阿里")) return null;\n return {\n vod_name: pdfh(x, "div&&a&&title"),\n vod_pic: \'http://pic-smzy.oss-cn-beijing.aliyuncs.com/images/5e/2a/1410241152a3eca2eca7ace140ed1c0c01b12a5e.png\',\n vod_remarks: remarks,\n vod_content: remarks,\n vod_id: pdfh(x, "div&&a&&href")\n }\n }).filter(x => x !== null);\n ', + 搜索: 'js:\n let html = fetch(input);\n let list = pdfa(html, "body&&.semi-space-medium-vertical");\n VODS = list.map(x => {\n let remarks = pdfh(x, "div&&img&&alt");\n // 过滤掉包含"迅雷云盘"的内容\n if(remarks.includes("迅雷云盘")) return null;\n return {\n vod_name: pdfh(x, "div&&a&&title"),\n vod_pic: \'http://pic-smzy.oss-cn-beijing.aliyuncs.com/images/5e/2a/1410241152a3eca2eca7ace140ed1c0c01b12a5e.png\',\n vod_remarks: remarks,\n vod_content: remarks,\n vod_id: pdfh(x, "div&&a&&href")\n }\n }).filter(x => x !== null);\n ', cate_exclude: '首页|留言|APP|下载|资讯|新闻|动态', tab_exclude: '猜你|喜欢|下载|剧情|榜|评论', 类型: '影视', diff --git a/潇洒/js/LMM.js b/潇洒/js/LMM.js new file mode 100644 index 0000000..764011d --- /dev/null +++ b/潇洒/js/LMM.js @@ -0,0 +1 @@ +dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogIui3r+a8q+a8qyIsCiAgICBob3N0OiAiaHR0cDovL3d3dy5sbW0zNi5jb20iLAogICAgdXJsOiAiL3ZvZC9zaG93L2lkL2Z5Y2xhc3NmeWZpbHRlci5odG1sIiwKICAgIHNlYXJjaFVybDogJy92b2Qvc2VhcmNoL3BhZ2UvZnlwYWdlL3dkLyoqLmh0bWwnLAogICAgc2VhcmNoYWJsZTogMiwKICAgIHF1aWNrU2VhcmNoOiAwLAogICAgZmlsdGVyYWJsZTogMSwKICAgIGZpbHRlcjogewogICAgICAgICIzIjogW3sKICAgICAgICAgICAgImtleSI6ICLlubTku6MiLAogICAgICAgICAgICAibmFtZSI6ICLlubTku6MiLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOoIiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyNSIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDI1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDI0IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMjQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjMiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAyMyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMiIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDIyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIxIiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMjEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjAiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAyMCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxOSIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDE5IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE4IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMTgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTciLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAxNyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNiIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDE2IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE1IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMTUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuabtOaXqSIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDE0LTE5ODAiCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogIuaOkuW6jyIsCiAgICAgICAgICAgICJuYW1lIjogIuaOkuW6jyIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLmnIDov5Hmm7TmlrAiLAogICAgICAgICAgICAgICAgInYiOiAiL2J5L3RpbWUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuacgOmrmOS6uuawlCIsCiAgICAgICAgICAgICAgICAidiI6ICIvYnkvaGl0cyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pyA6auY6K+E5YiGIiwKICAgICAgICAgICAgICAgICJ2IjogIi9ieS9zY29yZSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pyA5aSa54K56LWeIiwKICAgICAgICAgICAgICAgICJ2IjogIi9ieS91cCIKICAgICAgICAgICAgfV0KICAgICAgICB9XSwKICAgICAgICAiNCI6IFt7CiAgICAgICAgICAgICJrZXkiOiAi5bm05LujIiwKICAgICAgICAgICAgIm5hbWUiOiAi5bm05LujIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqCIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjUiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAyNSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyNCIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDI0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIzIiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMjMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjIiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAyMiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMSIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDIxIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIwIiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMjAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTkiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAxOSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxOCIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDE4IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE3IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMTciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTYiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAxNiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNSIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDE1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmm7Tml6kiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAxNC0xOTgwIgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICLmjpLluo8iLAogICAgICAgICAgICAibmFtZSI6ICLmjpLluo8iLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5pyA6L+R5pu05pawIiwKICAgICAgICAgICAgICAgICJ2IjogIi9ieS90aW1lIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmnIDpq5jkurrmsJQiLAogICAgICAgICAgICAgICAgInYiOiAiL2J5L2hpdHMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuacgOmrmOivhOWIhiIsCiAgICAgICAgICAgICAgICAidiI6ICIvYnkvc2NvcmUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuacgOWkmueCuei1niIsCiAgICAgICAgICAgICAgICAidiI6ICIvYnkvdXAiCiAgICAgICAgICAgIH1dCiAgICAgICAgfV0sCiAgICAgICAgIjUiOiBbewogICAgICAgICAgICAia2V5IjogIuW5tOS7oyIsCiAgICAgICAgICAgICJuYW1lIjogIuW5tOS7oyIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlhajpg6giLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDI1IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMjUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjQiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAyNCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMyIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDIzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIyIiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMjIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjEiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAyMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMCIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDIwIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE5IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMTkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTgiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAxOCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNyIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDE3IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE2IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMTYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTUiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAxNSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pu05pepIiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMTQtMTk4MCIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAi5o6S5bqPIiwKICAgICAgICAgICAgIm5hbWUiOiAi5o6S5bqPIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuacgOi/keabtOaWsCIsCiAgICAgICAgICAgICAgICAidiI6ICIvYnkvdGltZSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pyA6auY5Lq65rCUIiwKICAgICAgICAgICAgICAgICJ2IjogIi9ieS9oaXRzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmnIDpq5jor4TliIYiLAogICAgICAgICAgICAgICAgInYiOiAiL2J5L3Njb3JlIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmnIDlpJrngrnotZ4iLAogICAgICAgICAgICAgICAgInYiOiAiL2J5L3VwIgogICAgICAgICAgICB9XQogICAgICAgIH1dLAogICAgICAgICI2IjogW3sKICAgICAgICAgICAgImtleSI6ICLlubTku6MiLAogICAgICAgICAgICAibmFtZSI6ICLlubTku6MiLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOoIiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyNSIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDI1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDI0IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMjQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjMiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAyMyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMiIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDIyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIxIiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMjEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjAiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAyMCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxOSIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDE5IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE4IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMTgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTciLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAxNyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNiIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDE2IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE1IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMTUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuabtOaXqSIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDE0LTE5ODAiCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogIuaOkuW6jyIsCiAgICAgICAgICAgICJuYW1lIjogIuaOkuW6jyIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLmnIDov5Hmm7TmlrAiLAogICAgICAgICAgICAgICAgInYiOiAiL2J5L3RpbWUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuacgOmrmOS6uuawlCIsCiAgICAgICAgICAgICAgICAidiI6ICIvYnkvaGl0cyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pyA6auY6K+E5YiGIiwKICAgICAgICAgICAgICAgICJ2IjogIi9ieS9zY29yZSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pyA5aSa54K56LWeIiwKICAgICAgICAgICAgICAgICJ2IjogIi9ieS91cCIKICAgICAgICAgICAgfV0KICAgICAgICB9XSwKICAgICAgICAiNyI6IFt7CiAgICAgICAgICAgICJrZXkiOiAi5bm05LujIiwKICAgICAgICAgICAgIm5hbWUiOiAi5bm05LujIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqCIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjUiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAyNSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyNCIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDI0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIzIiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMjMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjIiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAyMiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMSIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDIxIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIwIiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMjAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTkiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAxOSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxOCIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDE4IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE3IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMTciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTYiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAxNiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNSIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDE1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmm7Tml6kiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAxNC0xOTgwIgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICLmjpLluo8iLAogICAgICAgICAgICAibmFtZSI6ICLmjpLluo8iLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5pyA6L+R5pu05pawIiwKICAgICAgICAgICAgICAgICJ2IjogIi9ieS90aW1lIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmnIDpq5jkurrmsJQiLAogICAgICAgICAgICAgICAgInYiOiAiL2J5L2hpdHMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuacgOmrmOivhOWIhiIsCiAgICAgICAgICAgICAgICAidiI6ICIvYnkvc2NvcmUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuacgOWkmueCuei1niIsCiAgICAgICAgICAgICAgICAidiI6ICIvYnkvdXAiCiAgICAgICAgICAgIH1dCiAgICAgICAgfV0sCiAgICAgICAgIjgiOiBbewogICAgICAgICAgICAia2V5IjogIuW5tOS7oyIsCiAgICAgICAgICAgICJuYW1lIjogIuW5tOS7oyIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlhajpg6giLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDI1IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMjUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjQiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAyNCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMyIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDIzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIyIiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMjIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjEiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAyMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMCIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDIwIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE5IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMTkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTgiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAxOCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNyIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDE3IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE2IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMTYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTUiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAxNSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pu05pepIiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMTQtMTk4MCIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAi5o6S5bqPIiwKICAgICAgICAgICAgIm5hbWUiOiAi5o6S5bqPIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuacgOi/keabtOaWsCIsCiAgICAgICAgICAgICAgICAidiI6ICIvYnkvdGltZSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pyA6auY5Lq65rCUIiwKICAgICAgICAgICAgICAgICJ2IjogIi9ieS9oaXRzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmnIDpq5jor4TliIYiLAogICAgICAgICAgICAgICAgInYiOiAiL2J5L3Njb3JlIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmnIDlpJrngrnotZ4iLAogICAgICAgICAgICAgICAgInYiOiAiL2J5L3VwIgogICAgICAgICAgICB9XQogICAgICAgIH1dCiAgICB9LAogICAgZmlsdGVyX3VybDogInt7Zmwu5o6S5bqPfX17e2ZsLuW5tOS7o319L3BhZ2UvZnlwYWdlIiwKICAgIGZpbHRlcl9kZWY6ICIiLAogICAgaGVhZGVyczogewogICAgICAgICJVc2VyLUFnZW50IjogIk1PQklMRV9VQSIKICAgIH0sCiAgICB0aW1lb3V0OiA1MDAwLAogICAgY2xhc3NfbmFtZTogIuaXpeacrOWKqOa8qyblm73kuqfliqjmvKsm5qyn576O5Yqo5ryrJuaXpeacrOWKqOeUu+eUteW9sSblm73kuqfliqjnlLvnlLXlvbEm5qyn576O5Yqo55S755S15b2xIiwKICAgIGNsYXNzX3VybDogIjYmNyY4JjMmNCY1IiwKICAgIGNsYXNzX3BhcnNlOiAiIiwKICAgIGNhdGVfZXhjbHVkZTogIiIsCiAgICBwbGF5X3BhcnNlOiB0cnVlLAogICAgbGF6eTogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICBmdW5jdGlvbiBnZXREQWVzU3RyaW5nKHRva2VuKSB7CiAgICAgICAgICAgIGV2YWwoZ2V0Q3J5cHRvSlMoKSk7CiAgICAgICAgICAgIHZhciBrZXkgPSBDcnlwdG9KUy5lbmMuVXRmOC5wYXJzZSgiZWpqb29vcHBwcXFxcnd3dyIpOwoKICAgICAgICAgICAgdmFyIGl2ID0gQ3J5cHRvSlMuZW5jLlV0ZjgucGFyc2UoIjEzNDg5ODc2MzU2ODQ2NTEiKTsKCiAgICAgICAgICAgIHZhciB0b2tlbiA9IENyeXB0b0pTLkFFUy5kZWNyeXB0KHRva2VuLCBrZXksIHsKICAgICAgICAgICAgICAgIGl2OiBpdiwKICAgICAgICAgICAgICAgIG1vZGU6IENyeXB0b0pTLm1vZGUuQ0JDLAogICAgICAgICAgICAgICAgcGFkZGluZzogQ3J5cHRvSlMucGFkLlBrY3M3LAogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIHJldHVybiB0b2tlbi50b1N0cmluZyhDcnlwdG9KUy5lbmMuVXRmOCk7CiAgICAgICAgfQoKICAgICAgICB2YXIgaHRtbCA9IEpTT04ucGFyc2UocmVxdWVzdChpbnB1dCkubWF0Y2goL3IgcGxheWVyXy4qPz0oLio/KTwvKVsxXSk7CiAgICAgICAgdmFyIHVybCA9IGh0bWwudXJsOwogICAgICAgIHZhciBmcm9tID0gaHRtbC5mcm9tOwogICAgICAgIGlmIChodG1sLmVuY3J5cHQgPT0gIjEiKSB7CiAgICAgICAgICAgIHVybCA9IHVuZXNjYXBlKHVybCk7CiAgICAgICAgfSBlbHNlIGlmIChodG1sLmVuY3J5cHQgPT0gIjIiKSB7CiAgICAgICAgICAgIHVybCA9IHVuZXNjYXBlKGJhc2U2NERlY29kZSh1cmwpKTsKICAgICAgICB9CiAgICAgICAgaWYgKC9cLm1wNHxcLm0zdTh8XC5mbHYvLnRlc3QodXJsKSkgewogICAgICAgICAgICBpbnB1dCA9IHsKICAgICAgICAgICAgICAgIHBhcnNlOiAwLAogICAgICAgICAgICAgICAgdXJsOiB1cmwuc3BsaXQoIiYiKVswXSwKICAgICAgICAgICAgICAgIGpzOiAnJwogICAgICAgICAgICB9OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHZhciBqc2ggPSByZXF1ZXN0KEhPU1QgKyAiL3N0YXRpYy9wbGF5ZXIvIiArIGZyb20gKyAiLmpzIiwgewogICAgICAgICAgICAgICAgaGVhZGVyczogewogICAgICAgICAgICAgICAgICAgIFJlZmVyZXI6IGlucHV0CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9KS5tYXRjaCgvXC5zcmNccyo9XHMqKC4qPyk7LylbMV07CiAgICAgICAgICAgIC8vbG9nKE1ZX0hPTUUpOwogICAgICAgICAgICBpZiAoL3R5cGU9Ly50ZXN0KGpzaCkpIHsKICAgICAgICAgICAgICAgIGpzaCA9IGpzaAogICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9bXCtccyddL2csICIiKQogICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9NYWNQbGF5ZXIuUGFyc2UvLCAiIikKICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvTWFjUGxheWVyLlBsYXlVcmwvLCB1cmwpCiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL3dpbmRvdy5sb2NhdGlvbi5ocmVmLywgaW5wdXQpOwogICAgICAgICAgICAgICAgdmFyIHBsYXlodCA9IGZldGNoKGpzaCwgewogICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgUmVmZXJlcjogSE9TVAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAganNoID0ganNoCiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1tcK1xzJ10vZywgIiIpCiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL01hY1BsYXllci5QYXJzZS8sICIiKQogICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9NYWNQbGF5ZXIuUGxheVVybC8sIHVybCkKICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvd2luZG93LmxvY2F0aW9uLmhyZWYvLCBpbnB1dCk7CgogICAgICAgICAgICAgICAganNoID0gSlNPTi5wYXJzZSgKICAgICAgICAgICAgICAgICAgICBmZXRjaChqc2gsIHsKICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVmZXJlcjogSE9TVAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBvbmx5SGVhZGVyczogdHJ1ZQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICApLnVybDsKICAgICAgICAgICAgICAgIHZhciBwbGF5aHQgPSBmZXRjaChqc2gsIHsKICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIFJlZmVyZXI6IEhPU1QKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIHBvc3RhcGkgPSBqc2gubWF0Y2goL14oLio/XC9cLy4qP1wvLio/XC8pLylbMV07CgogICAgICAgICAgICB2YXIgcG9zdHVybCA9IHBvc3RhcGkgKyBwbGF5aHQubWF0Y2goL3Bvc3RcKCIoLio/KSIvKVsxXTsKICAgICAgICAgICAgaWYgKC9hY3Rccyo9Ly50ZXN0KHBsYXlodCkpIHsKICAgICAgICAgICAgICAgIHZhciB2aWQgPSBwbGF5aHQubWF0Y2goL3ZpZFxzKj1ccyoiKC4qPykiLylbMV07CiAgICAgICAgICAgICAgICB2YXIgdCA9IHBsYXlodC5tYXRjaCgvdmFyXHMqdFxzKj1ccyoiKC4qPykiLylbMV07CiAgICAgICAgICAgICAgICB2YXIgdG9rZW4gPSBwbGF5aHQubWF0Y2goL3Rva2VuXHMqPVxzKiIoLio/KSIvKVsxXTsKICAgICAgICAgICAgICAgIHZhciBhY3QgPSBwbGF5aHQubWF0Y2goL2FjdFxzKj1ccyoiKC4qPykiLylbMV07CiAgICAgICAgICAgICAgICB2YXIgcGxheSA9IHBsYXlodC5tYXRjaCgvcGxheVxzKj1ccyoiKC4qPykiLylbMV07CiAgICAgICAgICAgICAgICB0b2tlbiA9IGdldERBZXNTdHJpbmcodG9rZW4pOwoKICAgICAgICAgICAgICAgIHZhciBkYXRhID0gSlNPTi5wYXJzZSgKICAgICAgICAgICAgICAgICAgICBwb3N0KHBvc3R1cmwsIHsKICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVmZXJlcjogSE9TVAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBib2R5OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWQ6IHZpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQ6IHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbjogdG9rZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Q6IGFjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXk6IHBsYXksCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDUwMDAKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIGlucHV0ID0gewogICAgICAgICAgICAgICAgICAgIHBhcnNlOiAwLAogICAgICAgICAgICAgICAgICAgIHVybDogZGF0YS51cmwsCiAgICAgICAgICAgICAgICAgICAganM6ICcnCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdmFyIGtleSA9ICIiOwoKICAgICAgICAgICAgICAgIHBsYXlodC5tYXRjaCgvdmFyIChcdyspPSIoLio/KSI7L2cpLmZvckVhY2goZnVuY3Rpb24obGlzdCkgewogICAgICAgICAgICAgICAgICAgIGtleSArPSBsaXN0Lm1hdGNoKC8iKC4qPykiLylbMV07CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIGNvbnN0IGJvZHlzID0gSlNPTi5wYXJzZSgKICAgICAgICAgICAgICAgICAgICBwbGF5aHQKICAgICAgICAgICAgICAgICAgICAubWF0Y2goL3Bvc3RcKC4qPywoLio/KSxcbi8pWzFdCiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoLyJrZXl5eSJccyo6XHMqJycuKj8nJy8sICcia2V5eXkiIDogIicgKyBrZXkgKyAnIicpCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgdmFyIGRhdGEgPSBKU09OLnBhcnNlKAogICAgICAgICAgICAgICAgICAgIHBvc3QocG9zdHVybCwgewogICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWZlcmVyOiBIT1NUCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IGJvZHlzCiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBpZiAoZGF0YS5leHQgPT0gInhncGxheWVyIikgewogICAgICAgICAgICAgICAgICAgIHZhciBkYXRhdXJsID0KICAgICAgICAgICAgICAgICAgICAgICAgImh0dHBzOi8veXVuLjM2NmRheS5zaXRlL21wNGhscy94Z3BsYXllci5waHA/dmlkPSIgKyBkYXRhLnVybDsKICAgICAgICAgICAgICAgICAgICB2YXIgdmlkZW8gPSBmZXRjaChkYXRhdXJsLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZmVyZXI6IGpzaAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSkubWF0Y2goCiAgICAgICAgICAgICAgICAgICAgICAgIC8idXJsIjogIiguKj8pIi8KICAgICAgICAgICAgICAgICAgICApWzFdOwogICAgICAgICAgICAgICAgICAgIGlucHV0ID0gewogICAgICAgICAgICAgICAgICAgICAgICBwYXJzZTogMCwKICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiB2aWRlbywKICAgICAgICAgICAgICAgICAgICAgICAganM6ICcnCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZGF0YS5leHQgPT0gImhscyIgfHwgZGF0YS5leHQgPT0gImhsc19saXN0IikgewogICAgICAgICAgICAgICAgICAgIGlucHV0ID0gewogICAgICAgICAgICAgICAgICAgICAgICBwYXJzZTogMCwKICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBkZWNvZGVVUklDb21wb25lbnQoZGF0YS51cmwpLAogICAgICAgICAgICAgICAgICAgICAgICBqczogJycKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpbnB1dCA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2U6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogZGF0YS51cmwsCiAgICAgICAgICAgICAgICAgICAgICAgIGpzOiAnJwogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9KSwKICAgIGRvdWJsZTogZmFsc2UsCiAgICDmjqjojZA6ICIqIiwKICAgIOS4gOe6pzogIi52aWRlby1pbWctYm94O2g2LnRpdGxlJiZUZXh0Oy5sYXp5bG9hZCYmZGF0YS1zcmM7LmxhYmVsJiZUZXh0O2EmJmhyZWYiLAogICAg5LqM57qnOiB7CiAgICAgICAgdGl0bGU6ICIucGFnZS10aXRsZSYmVGV4dDsudGFnLWxpbmsmJlRleHQiLAogICAgICAgIGltZzogIi5tb2R1bGUtaXRlbS1waWMmJi5sYXp5bG9hZCYmc3JjIiwKICAgICAgICBkZXNjOiAiLnZpZGVvLWluZm8taXRlbXM6ZXEoMykmJlRleHQ7LnZpZGVvLWluZm8taXRlbXM6ZXEoMikmJlRleHQ7Oy52aWRlby1pbmZvLWl0ZW1zOmVxKDEpJiZUZXh0Oy52aWRlby1pbmZvLWl0ZW1zOmVxKDApJiZUZXh0IiwKICAgICAgICBjb250ZW50OiAiLnZpZGVvLWluZm8tY29udGVudCYmVGV4dCIsCiAgICAgICAgdGFiczogIi5tb2R1bGUtdGFiLWl0ZW0udGFiLWl0ZW0iLAogICAgICAgIGxpc3RzOiAiLm1vZHVsZS1wbGF5ZXItbGlzdDplcSgjaWQpIGEiLAogICAgICAgIHRhYl90ZXh0OiAiYm9keSYmVGV4dCIsCiAgICAgICAgbGlzdF90ZXh0OiAiYm9keSYmVGV4dCIsCiAgICAgICAgbGlzdF91cmw6ICJhJiZocmVmIgogICAgfSwKICAgIGRldGFpbFVybDogIiIsCiAgICDmkJzntKI6ICIqIgp9 \ No newline at end of file diff --git a/潇洒/js/LP.js b/潇洒/js/LP.js new file mode 100644 index 0000000..fea1aa7 --- /dev/null +++ b/潇洒/js/LP.js @@ -0,0 +1 @@ +dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+aHkuebmOaQnCcsCiAgICBob3N0OiAnaHR0cHM6Ly93d3cubHpwYW54LmNvbS8nLAogICAgaG9zdEpzOiAnJywKICAgIGhlYWRlcnM6IHsKICAgICAgICAnVXNlci1BZ2VudCc6ICdNb3ppbGxhLzUuMCAoTGludXg7IEFuZHJvaWQgMTE7IFBpeGVsIDUpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS85MC4wLjQ0MzAuOTEgTW9iaWxlIFNhZmFyaS81MzcuMzYnLAogICAgfSwKICAgIOe8lueggTogJ3V0Zi04JywKICAgIHRpbWVvdXQ6IDUwMDAsCiAgICB1cmw6ICdodHRwczovL3d3dy5senBhbnguY29tL3NlYXJjaD9xPWZ5Y2xhc3MmZm9ybWF0PXZpZGVvJnBhZ2U9ZnlwYWdlJywKICAgIGZpbHRlcl91cmw6ICcnLAogICAgZGV0YWlsVXJsOiAnJywKICAgIHNlYXJjaFVybDogJ2h0dHBzOi8vd3d3Lmx6cGFueC5jb20vc2VhcmNoP3E9KiomZm9ybWF0PXZpZGVvJnBhZ2U9ZnlwYWdlJywKICAgIHNlYXJjaGFibGU6IDEsCiAgICBxdWlja1NlYXJjaDogMSwKICAgIGZpbHRlcmFibGU6IDEsCiAgICBjbGFzc19uYW1lOiAn5Ymn6ZuGJueUteW9sSbnn63liacm5Yqo5ryrJue7vOiJuicsCiAgICBjbGFzc191cmw6ICfliafpm4Ym55S15b2xJuefree9keWJpybliqjmvKsm57u86Im6JywKICAgIHByb3h5X3J1bGU6ICcnLAogICAgc25pZmZlcjogZmFsc2UsCiAgICBpc1ZpZGVvOiAnJywKICAgIHBsYXlfcGFyc2U6IHRydWUsCiAgICBwYXJzZV91cmw6ICcnLAogICAgbGF6eTogImpzOlxuICAgICAgICBpbnB1dCA9ICdwdXNoOi8vJyArIGlucHV0O1xuICAgICIsCiAgICBsaW1pdDogOSwKICAgIGRvdWJsZTogZmFsc2UsCiAgICAvLyDmjqjojZA6ICcqJywKICAgIOS4gOe6pzogJ2pzOlxuICAgICAgICBsZXQgaHRtbCA9IGZldGNoKGlucHV0KTtcbiAgICAgICAgbGV0IGxpc3QgPSBwZGZhKGh0bWwsICJib2R5JiYuc2VtaS1zcGFjZS1tZWRpdW0tdmVydGljYWwiKTtcbiAgICAgICAgVk9EUyA9IGxpc3QubWFwKHggPT4ge1xuICAgICAgICAgICAgbGV0IHJlbWFya3MgPSBwZGZoKHgsICJkaXYmJmltZyYmYWx0Iik7XG4gICAgICAgICAgICAvLyDov4fmu6TmjonljIXlkKsi6L+F6Zu35LqR55uYIueahOWGheWuuVxuICAgICAgICAgICAgaWYocmVtYXJrcy5pbmNsdWRlcygi6L+F6Zu35LqR55uYIikpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB2b2RfbmFtZTogcGRmaCh4LCAiZGl2JiZhJiZ0aXRsZSIpLFxuICAgICAgICAgICAgICAgIHZvZF9waWM6IFwnaHR0cHM6Ly93dzEuc2luYWltZy5jbi9tdzY5MC8wMDZmYU1uZGx5MWh0bWIxbTA4YWRqMzBlMjBlMnEzbS5qcGdcJyxcbiAgICAgICAgICAgICAgICB2b2RfcmVtYXJrczogcmVtYXJrcyxcbiAgICAgICAgICAgICAgICB2b2RfY29udGVudDogcmVtYXJrcyxcbiAgICAgICAgICAgICAgICB2b2RfaWQ6IHBkZmgoeCwgImRpdiYmYSYmaHJlZiIpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLmZpbHRlcih4ID0+IHggIT09IG51bGwpO1xuICAgICcsCiAgICDkuoznuqc6IHsKICAgICAgICB0aXRsZTogJ2gxJiZUZXh0JywKICAgICAgICBpbWc6ICdpbWcmJnNyYycsCiAgICAgICAgZGVzYzogJy5jYXJkLXRleHQ6ZXEoMikmJlRleHQ7Ozs7JywKICAgICAgICBjb250ZW50OiAnYm9keSYmLnNlbWktc3BhY2UtbG9vc2UtdmVydGljYWwmJmEmJmhyZWYnLAogICAgICAgIHRhYnM6ICJqczpUQUJTID0gWyfmh5Lnm5gnXSIsCiAgICAgICAgbGlzdHM6ICJqczpcbiAgICAgICAgICAgIExJU1RTID0gW107XG4gICAgICAgICAgICBsZXQgbGlzdHMxID0gcGRmYShodG1sLCAnYm9keSYmLnNlbWktc3BhY2UtbG9vc2UtdmVydGljYWwnKS5tYXAoaXQgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBfdHQgPSBwZGZoKGl0LCAnc3BhbiYmdGl0bGUnKTtcbiAgICAgICAgICAgICAgICBsZXQgX3V1ID0gcGRmaChpdCwgJ2EmJmhyZWYnKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gX3R0ICsgJyQnICsgX3V1O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBMSVNUUy5wdXNoKGxpc3RzMSk7XG4gICAgICAgICIsCiAgICB9LAogICAg5pCc57SiOiAnanM6XG4gICAgICAgIGxldCBodG1sID0gZmV0Y2goaW5wdXQpO1xuICAgICAgICBsZXQgbGlzdCA9IHBkZmEoaHRtbCwgImJvZHkmJi5zZW1pLXNwYWNlLW1lZGl1bS12ZXJ0aWNhbCIpO1xuICAgICAgICBWT0RTID0gbGlzdC5tYXAoeCA9PiB7XG4gICAgICAgICAgICBsZXQgcmVtYXJrcyA9IHBkZmgoeCwgImRpdiYmaW1nJiZhbHQiKTtcbiAgICAgICAgICAgIC8vIOi/h+a7pOaOieWMheWQqyLov4Xpm7fkupHnm5gi55qE5YaF5a65XG4gICAgICAgICAgICBpZihyZW1hcmtzLmluY2x1ZGVzKCLov4Xpm7fkupHnm5giKSkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHZvZF9uYW1lOiBwZGZoKHgsICJkaXYmJmEmJnRpdGxlIiksXG4gICAgICAgICAgICAgICAgdm9kX3BpYzogXCdodHRwczovL3d3MS5zaW5haW1nLmNuL213NjkwLzAwNmZhTW5kbHkxaHRtYjFtMDhhZGozMGUyMGUycTNtLmpwZ1wnLFxuICAgICAgICAgICAgICAgIHZvZF9yZW1hcmtzOiByZW1hcmtzLFxuICAgICAgICAgICAgICAgIHZvZF9jb250ZW50OiByZW1hcmtzLFxuICAgICAgICAgICAgICAgIHZvZF9pZDogcGRmaCh4LCAiZGl2JiZhJiZocmVmIilcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkuZmlsdGVyKHggPT4geCAhPT0gbnVsbCk7XG4gICAgJywKICAgIGNhdGVfZXhjbHVkZTogJ+mmlumhtXznlZnoqIB8QVBQfOS4i+i9vXzotYTorq985paw6Ze7fOWKqOaAgScsCiAgICB0YWJfZXhjbHVkZTogJ+eMnOS9oHzllpzmrKJ85LiL6L29fOWJp+aDhXzmppx86K+E6K66JywKICAgIOexu+WeizogJ+W9seinhicsCiAgICBob21lVXJsOiAnaHR0cHM6Ly93d3cubHpwYW54LmNvbS8nLAogICAg5LqM57qn6K6/6Zeu5YmNOiAnJywKICAgIGVuY29kaW5nOiAndXRmLTgnLAogICAgc2VhcmNoX2VuY29kaW5nOiAnJywKICAgIOWbvueJh+adpea6kDogJycsCiAgICDlm77niYfmm7/mjaI6ICcnLAogICAgcGxheV9qc29uOiBbXSwKICAgIHBhZ2Vjb3VudDoge30sCiAgICB0YWJfcmVtb3ZlOiBbXSwKICAgIHRhYl9vcmRlcjogW10sCiAgICB0YWJfcmVuYW1lOiB7fSwKfQ== \ No newline at end of file diff --git a/潇洒/js/MGSP.js b/潇洒/js/MGSP.js new file mode 100644 index 0000000..32301fe --- /dev/null +++ b/潇洒/js/MGSP.js @@ -0,0 +1 @@ +dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+eZvuW/meaXoOaenFvlrphdJywKICAgIGhvc3Q6ICdodHRwczovL3BpYW5rdS5hcGkuJTZkJTY3JTc0JTc2LmNvbScsCiAgICBob21lVXJsOiAnJywKICAgIC8vIHNlYXJjaFVybDogJ2h0dHBzOi8vbW9iaWxlc28uYnouJTZkJTY3JTc0JTc2LmNvbS9wYy9zZWFyY2gvdjE/cT0qKiZwbj1meXBhZ2UmcGM9MTAnLAogICAgLy8g5paw54mI5o6l5Y+j5pCc57Si5Y+Y5oiQdjLlubbkuJTliqDkuobpqozor4HvvIzom4vnlrwKICAgIC8vIHNlYXJjaFVybDogJ2h0dHBzOi8vbW9iaWxlc28uYnoubWd0di5jb20vcGMvc2VhcmNoL3YyP2FsbG93ZWRSQz0xJnNyYz1tZ3R2JmRpZD1jZjAzYjk1OS02OTQ1LTRjYjYtYmNiMy04ODc2MjQ1OTM1NGQmdGltZXN0YW1wPTIwMjQtMDYtMjFUMTUlM0E1MiUzQTU1WiZzaWduVmVyc2lvbj0xJnNpZ25Ob25jZT04ZGFlNjdhMWZhZmM0YmRhOTg0ZWM4ZGViNDc2NjZhZCZxPSoqJnBuPWZ5cGFnZSZwYz0xMCZjb3JyPTEmX3N1cHBvcnQ9MTAwMDAwMDAmc2lnbmF0dXJlPTRlMjdmZGRjZDJhMWE2NmQ2YzE3NjRlZDZiNzRiYWI3JywKICAgIC8vIOeUqOaJi+acuueahOWQp++8jOaQnuS4jeWumui/meS4qgogICAgc2VhcmNoVXJsOiAnaHR0cHM6Ly9tb2JpbGVzby5iei4lNmQlNjclNzQlNzYuY29tL21zaXRlL3NlYXJjaC92Mj9xPSoqJnBuPWZ5cGFnZSZwYz0xMCcsCiAgICBkZXRhaWxVcmw6ICdodHRwczovL3Bjd2ViLmFwaS5tZ3R2LmNvbS9lcGlzb2RlL2xpc3Q/cGFnZT0xJnNpemU9NTAmdmlkZW9faWQ9ZnlpZCcsCiAgICBzZWFyY2hhYmxlOiAyLAogICAgcXVpY2tTZWFyY2g6IDAsCiAgICBmaWx0ZXJhYmxlOiAxLAogICAgbXVsdGk6IDEsCiAgICAvLyDliIbnsbvpk77mjqVmeXBhZ2Xlj4LmlbDmlK/mjIEx5LiqKCnooajovr7lvI8KICAgIC8vIGh0dHBzOi8vd3d3Lm1ndHYuY29tL2xpYi8zP2xhc3RwPWxpc3RfaW5kZXgma2luZD1hMSZ5ZWFyPWFsbCZjaGFyZ2VJbmZvPWExJnNvcnQ9YzIKICAgIHVybDogJy9yaWRlci9saXN0L3Bjd2ViL3YzP3BsYXRmb3JtPXBjd2ViJmNoYW5uZWxJZD1meWNsYXNzJnBuPWZ5cGFnZSZwYz04MCZodWRvbmc9MSZfc3VwcG9ydD0xMDAwMDAwMCZraW5kPWExJmFyZWE9YTEnLAogICAgZmlsdGVyX3VybDogJ3llYXI9e3tmbC55ZWFyIG9yICJhbGwifX0mc29ydD17e2ZsLnNvcnQgb3IgImFsbCJ9fSZjaGFyZ2VJbmZvPXt7ZmwuY2hhcmdlSW5mbyBvciAiYWxsIn19JywKICAgIGhlYWRlcnM6IHsKICAgICAgICAnVXNlci1BZ2VudCc6ICdQQ19VQScKICAgIH0sCiAgICB0aW1lb3V0OiA1MDAwLAogICAgY2xhc3NfbmFtZTogJ+eUteinhuWJpybnlLXlvbEm57u86Im6JuWKqOa8qybnuqrlvZXniYcm5pWZ6IKyJuWwkeWEvycsCiAgICBjbGFzc191cmw6ICcyJjMmMSY1MCY1MSYxMTUmMTAnLAogICAgZmlsdGVyOiB7CiAgICAgICAgIjEiOiBbewogICAgICAgICAgICAia2V5IjogImNoYXJnZUluZm8iLAogICAgICAgICAgICAibmFtZSI6ICLku5jotLnnsbvlnosiLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOoIiwKICAgICAgICAgICAgICAgICJ2IjogImFsbCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5YWN6LS5IiwKICAgICAgICAgICAgICAgICJ2IjogImIxIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJ2aXAiLAogICAgICAgICAgICAgICAgInYiOiAiYjIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIlZJUOeUqOWIuCIsCiAgICAgICAgICAgICAgICAidiI6ICJiMyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5LuY6LS554K55pKtIiwKICAgICAgICAgICAgICAgICJ2IjogImI0IgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJzb3J0IiwKICAgICAgICAgICAgIm5hbWUiOiAi5o6S5bqPIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuacgOaWsCIsCiAgICAgICAgICAgICAgICAidiI6ICJjMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pyA54OtIiwKICAgICAgICAgICAgICAgICJ2IjogImMyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnn6XkuY7pq5jliIYiLAogICAgICAgICAgICAgICAgInYiOiAiYzQiCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogInllYXIiLAogICAgICAgICAgICAibmFtZSI6ICLlubTku6MiLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOoIiwKICAgICAgICAgICAgICAgICJ2IjogImFsbCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyNSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDI1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDI0IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjMiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyMyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMiIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDIyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIxIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjAiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyMCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxOSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE5IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE4IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTciLAogICAgICAgICAgICAgICAgInYiOiAiMjAxNyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNiIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE2IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE1IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTQiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxNCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxMyIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDEzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDEyIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTEiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxMCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDEwIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA5IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDgiLAogICAgICAgICAgICAgICAgInYiOiAiMjAwOCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwNyIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDA3IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA2IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDUiLAogICAgICAgICAgICAgICAgInYiOiAiMjAwNSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwNCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDA0IgogICAgICAgICAgICB9XQogICAgICAgIH1dLAogICAgICAgICIyIjogW3sKICAgICAgICAgICAgImtleSI6ICJjaGFyZ2VJbmZvIiwKICAgICAgICAgICAgIm5hbWUiOiAi5LuY6LS557G75Z6LIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqCIsCiAgICAgICAgICAgICAgICAidiI6ICJhbGwiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWFjei0uSIsCiAgICAgICAgICAgICAgICAidiI6ICJiMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAidmlwIiwKICAgICAgICAgICAgICAgICJ2IjogImIyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJWSVDnlKjliLgiLAogICAgICAgICAgICAgICAgInYiOiAiYjMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuS7mOi0ueeCueaSrSIsCiAgICAgICAgICAgICAgICAidiI6ICJiNCIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAic29ydCIsCiAgICAgICAgICAgICJuYW1lIjogIuaOkuW6jyIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLmnIDmlrAiLAogICAgICAgICAgICAgICAgInYiOiAiYzEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuacgOeDrSIsCiAgICAgICAgICAgICAgICAidiI6ICJjMiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi55+l5LmO6auY5YiGIiwKICAgICAgICAgICAgICAgICJ2IjogImM0IgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJ5ZWFyIiwKICAgICAgICAgICAgIm5hbWUiOiAi5bm05LujIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqCIsCiAgICAgICAgICAgICAgICAidiI6ICJhbGwiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjUiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyNSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyNCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDI0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIzIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjIiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyMiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDIxIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIwIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTkiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxOSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxOCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE4IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE3IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTYiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxNiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE0IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTMiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxMyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxMiIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDEyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDExIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTAiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxMCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwOSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDA5IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA4IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDciLAogICAgICAgICAgICAgICAgInYiOiAiMjAwNyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwNiIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDA2IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA1IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDQiLAogICAgICAgICAgICAgICAgInYiOiAiMjAwNCIKICAgICAgICAgICAgfV0KICAgICAgICB9XSwKICAgICAgICAiMyI6IFt7CiAgICAgICAgICAgICJrZXkiOiAiY2hhcmdlSW5mbyIsCiAgICAgICAgICAgICJuYW1lIjogIuS7mOi0ueexu+WeiyIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlhajpg6giLAogICAgICAgICAgICAgICAgInYiOiAiYWxsIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlhY3otLkiLAogICAgICAgICAgICAgICAgInYiOiAiYjEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogInZpcCIsCiAgICAgICAgICAgICAgICAidiI6ICJiMiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiVklQ55So5Yi4IiwKICAgICAgICAgICAgICAgICJ2IjogImIzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLku5jotLnngrnmkq0iLAogICAgICAgICAgICAgICAgInYiOiAiYjQiCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogInNvcnQiLAogICAgICAgICAgICAibmFtZSI6ICLmjpLluo8iLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5pyA5pawIiwKICAgICAgICAgICAgICAgICJ2IjogImMxIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmnIDng60iLAogICAgICAgICAgICAgICAgInYiOiAiYzIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuefpeS5jumrmOWIhiIsCiAgICAgICAgICAgICAgICAidiI6ICJjNCIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAieWVhciIsCiAgICAgICAgICAgICJuYW1lIjogIuW5tOS7oyIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlhajpg6giLAogICAgICAgICAgICAgICAgInYiOiAiYWxsIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDI1IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjQiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyNCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMyIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDIzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIyIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjEiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDIwIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE5IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTgiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxOCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNyIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE3IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE2IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTUiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxNSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDEzIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTIiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxMiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxMSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDExIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDEwIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDkiLAogICAgICAgICAgICAgICAgInYiOiAiMjAwOSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwOCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDA4IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA3IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDYiLAogICAgICAgICAgICAgICAgInYiOiAiMjAwNiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwNSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDA1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA0IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDQiCiAgICAgICAgICAgIH1dCiAgICAgICAgfV0sCiAgICAgICAgIjUwIjogW3sKICAgICAgICAgICAgImtleSI6ICJjaGFyZ2VJbmZvIiwKICAgICAgICAgICAgIm5hbWUiOiAi5LuY6LS557G75Z6LIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqCIsCiAgICAgICAgICAgICAgICAidiI6ICJhbGwiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWFjei0uSIsCiAgICAgICAgICAgICAgICAidiI6ICJiMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAidmlwIiwKICAgICAgICAgICAgICAgICJ2IjogImIyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJWSVDnlKjliLgiLAogICAgICAgICAgICAgICAgInYiOiAiYjMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuS7mOi0ueeCueaSrSIsCiAgICAgICAgICAgICAgICAidiI6ICJiNCIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAic29ydCIsCiAgICAgICAgICAgICJuYW1lIjogIuaOkuW6jyIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLmnIDmlrAiLAogICAgICAgICAgICAgICAgInYiOiAiYzEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuacgOeDrSIsCiAgICAgICAgICAgICAgICAidiI6ICJjMiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi55+l5LmO6auY5YiGIiwKICAgICAgICAgICAgICAgICJ2IjogImM0IgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJ5ZWFyIiwKICAgICAgICAgICAgIm5hbWUiOiAi5bm05LujIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqCIsCiAgICAgICAgICAgICAgICAidiI6ICJhbGwiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjUiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyNSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyNCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDI0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIzIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjIiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyMiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDIxIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIwIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTkiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxOSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxOCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE4IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE3IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTYiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxNiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE0IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTMiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxMyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxMiIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDEyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDExIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTAiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxMCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwOSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDA5IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA4IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDciLAogICAgICAgICAgICAgICAgInYiOiAiMjAwNyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwNiIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDA2IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA1IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDQiLAogICAgICAgICAgICAgICAgInYiOiAiMjAwNCIKICAgICAgICAgICAgfV0KICAgICAgICB9XSwKICAgICAgICAiNTEiOiBbewogICAgICAgICAgICAia2V5IjogImNoYXJnZUluZm8iLAogICAgICAgICAgICAibmFtZSI6ICLku5jotLnnsbvlnosiLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOoIiwKICAgICAgICAgICAgICAgICJ2IjogImFsbCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5YWN6LS5IiwKICAgICAgICAgICAgICAgICJ2IjogImIxIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJ2aXAiLAogICAgICAgICAgICAgICAgInYiOiAiYjIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIlZJUOeUqOWIuCIsCiAgICAgICAgICAgICAgICAidiI6ICJiMyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5LuY6LS554K55pKtIiwKICAgICAgICAgICAgICAgICJ2IjogImI0IgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJzb3J0IiwKICAgICAgICAgICAgIm5hbWUiOiAi5o6S5bqPIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuacgOaWsCIsCiAgICAgICAgICAgICAgICAidiI6ICJjMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pyA54OtIiwKICAgICAgICAgICAgICAgICJ2IjogImMyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnn6XkuY7pq5jliIYiLAogICAgICAgICAgICAgICAgInYiOiAiYzQiCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogInllYXIiLAogICAgICAgICAgICAibmFtZSI6ICLlubTku6MiLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOoIiwKICAgICAgICAgICAgICAgICJ2IjogImFsbCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyNSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDI1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDI0IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjMiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyMyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMiIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDIyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIxIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjAiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyMCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxOSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE5IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE4IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTciLAogICAgICAgICAgICAgICAgInYiOiAiMjAxNyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNiIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE2IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE1IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTQiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxNCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxMyIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDEzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDEyIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTEiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxMCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDEwIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA5IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDgiLAogICAgICAgICAgICAgICAgInYiOiAiMjAwOCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwNyIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDA3IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA2IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDUiLAogICAgICAgICAgICAgICAgInYiOiAiMjAwNSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwNCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDA0IgogICAgICAgICAgICB9XQogICAgICAgIH1dLAogICAgICAgICIxMTUiOiBbewogICAgICAgICAgICAia2V5IjogImNoYXJnZUluZm8iLAogICAgICAgICAgICAibmFtZSI6ICLku5jotLnnsbvlnosiLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOoIiwKICAgICAgICAgICAgICAgICJ2IjogImFsbCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5YWN6LS5IiwKICAgICAgICAgICAgICAgICJ2IjogImIxIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJ2aXAiLAogICAgICAgICAgICAgICAgInYiOiAiYjIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIlZJUOeUqOWIuCIsCiAgICAgICAgICAgICAgICAidiI6ICJiMyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5LuY6LS554K55pKtIiwKICAgICAgICAgICAgICAgICJ2IjogImI0IgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJzb3J0IiwKICAgICAgICAgICAgIm5hbWUiOiAi5o6S5bqPIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuacgOaWsCIsCiAgICAgICAgICAgICAgICAidiI6ICJjMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pyA54OtIiwKICAgICAgICAgICAgICAgICJ2IjogImMyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnn6XkuY7pq5jliIYiLAogICAgICAgICAgICAgICAgInYiOiAiYzQiCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogInllYXIiLAogICAgICAgICAgICAibmFtZSI6ICLlubTku6MiLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOoIiwKICAgICAgICAgICAgICAgICJ2IjogImFsbCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyNSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDI1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDI0IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjMiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyMyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMiIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDIyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIxIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjAiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyMCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxOSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE5IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE4IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTciLAogICAgICAgICAgICAgICAgInYiOiAiMjAxNyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNiIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE2IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE1IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTQiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxNCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxMyIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDEzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDEyIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTEiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxMCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDEwIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA5IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDgiLAogICAgICAgICAgICAgICAgInYiOiAiMjAwOCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwNyIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDA3IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA2IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDUiLAogICAgICAgICAgICAgICAgInYiOiAiMjAwNSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwNCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDA0IgogICAgICAgICAgICB9XQogICAgICAgIH1dCiAgICB9LAogICAgbGltaXQ6IDIwLAogICAgcGxheV9wYXJzZTogdHJ1ZSwKICAgIGxhenk6ICRqcy50b1N0cmluZygoKSA9PiB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgbGV0IGFwaSA9ICIiICsgaW5wdXQuc3BsaXQoIj8iKVswXTsKICAgICAgICAgICAgY29uc29sZS5sb2coYXBpKTsKICAgICAgICAgICAgbGV0IHJlc3BvbnNlID0gZmV0Y2goYXBpLCB7CiAgICAgICAgICAgICAgICBtZXRob2Q6ICdnZXQnLAogICAgICAgICAgICAgICAgaGVhZGVyczogewogICAgICAgICAgICAgICAgICAgICdVc2VyLUFnZW50JzogJ29raHR0cC8zLjE0LjknLAogICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgbGV0IGJhdGEgPSBKU09OLnBhcnNlKHJlc3BvbnNlKTsKICAgICAgICAgICAgaWYgKGJhdGEudXJsLmluY2x1ZGVzKCJtZ3R2IikpIHsKICAgICAgICAgICAgICAgIGlucHV0ID0gewogICAgICAgICAgICAgICAgICAgIHBhcnNlOiAwLAogICAgICAgICAgICAgICAgICAgIHVybDogYmF0YS51cmwsCiAgICAgICAgICAgICAgICAgICAgang6IDAsCiAgICAgICAgICAgICAgICAgICAgZGFubWFrdTogImh0dHA6Ly8xMjcuMC4wLjE6OTk3OC9wcm94eT9kbz1kYW5tdSZzaXRlPWpzJnVybD1odHRwOi8vZG0ucXhxNi5jb20venkvYXBpLnBocD91cmw9IiArIGlucHV0LnNwbGl0KCI/IilbMF0KICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBpbnB1dCA9IHsKICAgICAgICAgICAgICAgICAgICBwYXJzZTogMCwKICAgICAgICAgICAgICAgICAgICB1cmw6IGlucHV0LnNwbGl0KCI/IilbMF0sCiAgICAgICAgICAgICAgICAgICAgang6IDEsCiAgICAgICAgICAgICAgICAgICAgZGFubWFrdTogImh0dHA6Ly8xMjcuMC4wLjE6OTk3OC9wcm94eT9kbz1kYW5tdSZzaXRlPWpzJnVybD1odHRwOi8vZG0ucXhxNi5jb20venkvYXBpLnBocD91cmw9IiArIGlucHV0LnNwbGl0KCI/IilbMF0KICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICB9IGNhdGNoIHsKICAgICAgICAgICAgaW5wdXQgPSB7CiAgICAgICAgICAgICAgICBwYXJzZTogMCwKICAgICAgICAgICAgICAgIHVybDogaW5wdXQuc3BsaXQoIj8iKVswXSwKICAgICAgICAgICAgICAgIGp4OiAxLAogICAgICAgICAgICAgICAgZGFubWFrdTogImh0dHA6Ly8xMjcuMC4wLjE6OTk3OC9wcm94eT9kbz1kYW5tdSZzaXRlPWpzJnVybD1odHRwOi8vZG0ucXhxNi5jb20venkvYXBpLnBocD91cmw9IiArIGlucHV0LnNwbGl0KCI/IilbMF0KICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9KSwKICAgIC8vIOaJi+WKqOiwg+eUqOino+aekOivt+axgmpzb27nmoR1cmws5q2kbGF6eeS4jeaWueS+vwogICAgLy8gbGF6eTonanM6cHJpbnQoaW5wdXQpO2ZldGNoX3BhcmFtcy5oZWFkZXJzWyJ1c2VyLWFnZW50Il09TU9CSUxFX1VBO2xldCBodG1sPXJlcXVlc3QoaW5wdXQpO2xldCBydXJsPWh0bWwubWF0Y2goL3dpbmRvd1xcLm9wZW5cXChcJyguKj8pXCcsLylbMV07cnVybD11cmxEZWFsKHJ1cmwpO2lucHV0PXtwYXJzZToxLHVybDpydXJsfTsnLAogICAgLy8g5o6o6I2QOicubGlzdF9pdGVtO2ltZyYmYWx0O2ltZyYmc3JjO2EmJlRleHQ7YSYmZGF0YS1mbG9hdCcsCiAgICDkuIDnuqc6ICdqc29uOmRhdGEuaGl0RG9jczt0aXRsZTtpbWc7dXBkYXRlSW5mb3x8cmlnaHRDb3JuZXIudGV4dDtwbGF5UGFydElkJywKICAgIC8vIOS4gOe6pzonanNvbjpkYXRhLmhpdERvY3M7dGl0bGU7aW1nO3VwZGF0ZUluZm87cGxheVBhcnRJZCcsCiAgICDkuoznuqc6ICRqcy50b1N0cmluZygoKSA9PiB7CiAgICAgICAgZmV0Y2hfcGFyYW1zLmhlYWRlcnMuUmVmZXJlciA9ICJodHRwczovL3d3dy5tZ3R2LmNvbSI7CiAgICAgICAgZmV0Y2hfcGFyYW1zLmhlYWRlcnNbIlVzZXItQWdlbnQiXSA9IE1PQklMRV9VQTsKICAgICAgICBwZGZoID0ganNwLnBkZmg7CiAgICAgICAgcGRmYSA9IGpzcC5wZGZhOwogICAgICAgIHBkID0ganNwLnBkOwogICAgICAgIFZPRCA9IHt9OwogICAgICAgIGxldCBkID0gW107CiAgICAgICAgbGV0IGh0bWwgPSByZXF1ZXN0KGlucHV0KTsKICAgICAgICBsZXQganNvbiA9IEpTT04ucGFyc2UoaHRtbCk7CiAgICAgICAgbGV0IGhvc3QgPSAiaHR0cHM6Ly93d3cubWd0di5jb20iOwogICAgICAgIGxldCBvdXJsID0ganNvbi5kYXRhLmxpc3QubGVuZ3RoID4gMCA/IGpzb24uZGF0YS5saXN0WzBdLnVybCA6IGpzb24uZGF0YS5zZXJpZXNbMF0udXJsOwogICAgICAgIGlmICghL15odHRwLy50ZXN0KG91cmwpKSB7CiAgICAgICAgICAgIG91cmwgPSBob3N0ICsgb3VybAogICAgICAgIH0KICAgICAgICBmZXRjaF9wYXJhbXMuaGVhZGVyc1siVXNlci1BZ2VudCJdID0gTU9CSUxFX1VBOwogICAgICAgIGh0bWwgPSByZXF1ZXN0KG91cmwpOwogICAgICAgIGlmIChodG1sLmluY2x1ZGVzKCJ3aW5kb3cubG9jYXRpb24gPSIpKSB7CiAgICAgICAgICAgIHByaW50KCLlvIDlp4vojrflj5ZvdXJsIik7CiAgICAgICAgICAgIG91cmwgPSBwZGZoKGh0bWwsICJtZXRhW2h0dHAtZXF1aXY9cmVmcmVzaF0mJmNvbnRlbnQiKS5zcGxpdCgidXJsPSIpWzFdOwogICAgICAgICAgICBwcmludCgi6I635Y+W5Yiwb3VybDoiICsgb3VybCk7CiAgICAgICAgICAgIGh0bWwgPSByZXF1ZXN0KG91cmwpCiAgICAgICAgfQogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGxldCBkZXRhaWxzID0gcGRmaChodG1sLCAiLm0tZGV0YWlscyYmSHRtbCIpLnJlcGxhY2UoL2gxPi8sICJoNj4iKS5yZXBsYWNlKC9kaXYvZywgImJyIik7CiAgICAgICAgICAgIHByaW50KGRldGFpbHMpOwogICAgICAgICAgICBsZXQgYWN0b3IgPSAiIiwKICAgICAgICAgICAgICAgIGRpcmVjdG9yID0gIiIsCiAgICAgICAgICAgICAgICB0aW1lID0gIiI7CiAgICAgICAgICAgIGlmICgv5pKt5Ye65pe26Ze0Ly50ZXN0KGRldGFpbHMpKSB7CiAgICAgICAgICAgICAgICBhY3RvciA9IHBkZmgoaHRtbCwgInA6ZXEoNSkmJlRleHQiKS5zdWJzdHIoMCwgMjUpOwogICAgICAgICAgICAgICAgZGlyZWN0b3IgPSBwZGZoKGh0bWwsICJwOmVxKDQpJiZUZXh0Iik7CiAgICAgICAgICAgICAgICB0aW1lID0gcGRmaChodG1sLCAicDplcSgzKSYmVGV4dCIpCiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBhY3RvciA9IHBkZmgoaHRtbCwgInA6ZXEoNCkmJlRleHQiKS5zdWJzdHIoMCwgMjUpOwogICAgICAgICAgICAgICAgZGlyZWN0b3IgPSBwZGZoKGh0bWwsICJwOmVxKDMpJiZUZXh0Iik7CiAgICAgICAgICAgICAgICB0aW1lID0gIuW3suWujOe7kyIKICAgICAgICAgICAgfQogICAgICAgICAgICBsZXQgX2ltZyA9IHBkKGh0bWwsICIudmlkZW8taW1nJiZpbWcmJnNyYyIpOwogICAgICAgICAgICBsZXQgSkogPSBwZGZoKGh0bWwsICIuZGVzYyYmVGV4dCIpLnNwbGl0KCLnroDku4vvvJoiKVsxXTsKICAgICAgICAgICAgbGV0IF9kZXNjID0gdGltZTsKICAgICAgICAgICAgVk9ELnZvZF9uYW1lID0gcGRmaChodG1sLCAiLnZ0LXR4dCYmVGV4dCIpOwogICAgICAgICAgICBWT0QudHlwZV9uYW1lID0gcGRmaChodG1sLCAicDplcSgwKSYmVGV4dCIpLnN1YnN0cigwLCA2KTsKICAgICAgICAgICAgVk9ELnZvZF9hcmVhID0gcGRmaChodG1sLCAicDplcSgxKSYmVGV4dCIpOwogICAgICAgICAgICBWT0Qudm9kX2FjdG9yID0gYWN0b3I7CiAgICAgICAgICAgIFZPRC52b2RfZGlyZWN0b3IgPSBkaXJlY3RvcjsKICAgICAgICAgICAgVk9ELnZvZF9yZW1hcmtzID0gX2Rlc2M7CiAgICAgICAgICAgIFZPRC52b2RfcGljID0gX2ltZzsKICAgICAgICAgICAgVk9ELnZvZF9jb250ZW50ID0gSko7CiAgICAgICAgICAgIGlmICghVk9ELnZvZF9uYW1lKSB7CiAgICAgICAgICAgICAgICBWT0Qudm9kX25hbWUgPSBWT0QudHlwZV9uYW1lOwogICAgICAgICAgICB9CiAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICBsb2coIuiOt+WPluW9seeJh+S/oeaBr+WPkeeUn+mUmeivrzoiICsgZS5tZXNzYWdlKQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gZ2V0UmpwZyhpbWdVcmwsIHhzKSB7CiAgICAgICAgICAgIHhzID0geHMgfHwgMzsKICAgICAgICAgICAgbGV0IHBpY1NpemUgPSAvanBnXy8udGVzdChpbWdVcmwpID8gaW1nVXJsLnNwbGl0KCJqcGdfIilbMV0uc3BsaXQoIi4iKVswXSA6IGZhbHNlOwogICAgICAgICAgICBsZXQgcmpwZyA9IGZhbHNlOwogICAgICAgICAgICBpZiAocGljU2l6ZSkgewogICAgICAgICAgICAgICAgbGV0IGEgPSBwYXJzZUludChwaWNTaXplLnNwbGl0KCJ4IilbMF0pICogeHM7CiAgICAgICAgICAgICAgICBsZXQgYiA9IHBhcnNlSW50KHBpY1NpemUuc3BsaXQoIngiKVsxXSkgKiB4czsKICAgICAgICAgICAgICAgIHJqcGcgPSBhICsgIngiICsgYiArICIuanBnIgogICAgICAgICAgICB9CiAgICAgICAgICAgIGxldCBpbWcgPSAvanBnXy8udGVzdChpbWdVcmwpICYmIHJqcGcgPyBpbWdVcmwucmVwbGFjZShpbWdVcmwuc3BsaXQoImpwZ18iKVsxXSwgcmpwZykgOiBpbWdVcmw7CiAgICAgICAgICAgIHJldHVybiBpbWcKICAgICAgICB9CgogICAgICAgIGlmIChqc29uLmRhdGEudG90YWwgPT09IDEgJiYganNvbi5kYXRhLmxpc3QubGVuZ3RoID09PSAxKSB7CiAgICAgICAgICAgIGxldCBkYXRhID0ganNvbi5kYXRhLmxpc3RbMF07CiAgICAgICAgICAgIGxldCB1cmwgPSAiaHR0cHM6Ly93d3cubWd0di5jb20iICsgZGF0YS51cmw7CiAgICAgICAgICAgIGQucHVzaCh7CiAgICAgICAgICAgICAgICB0aXRsZTogZGF0YS50NCwKICAgICAgICAgICAgICAgIGRlc2M6IGRhdGEudDIsCiAgICAgICAgICAgICAgICBwaWNfdXJsOiBnZXRSanBnKGRhdGEuaW1nKSwKICAgICAgICAgICAgICAgIHVybDogdXJsCiAgICAgICAgICAgIH0pCiAgICAgICAgfSBlbHNlIGlmIChqc29uLmRhdGEubGlzdC5sZW5ndGggPiAxKSB7CiAgICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IGpzb24uZGF0YS50b3RhbF9wYWdlOyBpKyspIHsKICAgICAgICAgICAgICAgIGlmIChpID4gMSkgewogICAgICAgICAgICAgICAgICAgIGpzb24gPSBKU09OLnBhcnNlKGZldGNoKGlucHV0LnJlcGxhY2UoInBhZ2U9MSIsICJwYWdlPSIgKyBpKSwge30pKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAganNvbi5kYXRhLmxpc3QuZm9yRWFjaChmdW5jdGlvbihkYXRhKSB7CiAgICAgICAgICAgICAgICAgICAgbGV0IHVybCA9ICJodHRwczovL3d3dy5tZ3R2LmNvbSIgKyBkYXRhLnVybDsKICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc0ludGFjdCA9PSAiMSIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBkYXRhLnQ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogZGF0YS50MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpY191cmw6IGdldFJqcGcoZGF0YS5pbWcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiB1cmwKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcHJpbnQoaW5wdXQgKyAi5pqC5peg54mH5rqQIikKICAgICAgICB9CiAgICAgICAgVk9ELnZvZF9wbGF5X2Zyb20gPSAibWd0diI7CiAgICAgICAgVk9ELnZvZF9wbGF5X3VybCA9IGQubWFwKGZ1bmN0aW9uKGl0KSB7CiAgICAgICAgICAgIHJldHVybiBpdC50aXRsZSArICIkIiArIGl0LnVybAogICAgICAgIH0pLmpvaW4oIiMiKTsKICAgICAgICBzZXRSZXN1bHQoZCk7CiAgICB9KSwKCiAgICDmkJzntKI6ICRqcy50b1N0cmluZygoKSA9PiB7CiAgICAgICAgZmV0Y2hfcGFyYW1zLmhlYWRlcnMuUmVmZXJlciA9ICJodHRwczovL3d3dy5tZ3R2LmNvbSI7CiAgICAgICAgZmV0Y2hfcGFyYW1zLmhlYWRlcnNbIlVzZXItQWdlbnQiXSA9IE1PQklMRV9VQTsKICAgICAgICBsZXQgZCA9IFtdOwogICAgICAgIGxldCBodG1sID0gcmVxdWVzdChpbnB1dCk7CiAgICAgICAgbGV0IGpzb24gPSBKU09OLnBhcnNlKGh0bWwpOwogICAgICAgIGpzb24uZGF0YS5jb250ZW50cy5mb3JFYWNoKGZ1bmN0aW9uKGRhdGEpIHsKICAgICAgICAgICAgaWYgKGRhdGEudHlwZSAmJiBkYXRhLnR5cGUgPT0gJ21lZGlhJykgewogICAgICAgICAgICAgICAgbGV0IGl0ZW0gPSBkYXRhLmRhdGFbMF07CiAgICAgICAgICAgICAgICBsZXQgZGVzYyA9IGl0ZW0uZGVzYy5qb2luKCcsJyk7CiAgICAgICAgICAgICAgICBsZXQgZnljbGFzcyA9ICcnOwogICAgICAgICAgICAgICAgaWYgKGl0ZW0uc291cmNlID09PSAiaW1nbyIpIHsKICAgICAgICAgICAgICAgICAgICBsZXQgaW1nID0gaXRlbS5pbWcgPyBpdGVtLmltZyA6ICcnOwogICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZ5Y2xhc3MgPSBpdGVtLnJwdC5tYXRjaCgvaWR4PSguKj8pJi8pWzFdICsgJyQnOwogICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbG9nKGUubWVzc2FnZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGZ5Y2xhc3MgPSAnJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgbG9nKGZ5Y2xhc3MpOwogICAgICAgICAgICAgICAgICAgIGQucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLnJlcGxhY2UoLzxCPnw8XC9CPi9nLCAnJyksCiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogaW1nLAogICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiAnJywKICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogZGVzYywKICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBmeWNsYXNzICsgaXRlbS51cmwubWF0Y2goLy4qXC8oLio/KVwuaHRtbC8pWzFdCiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIHNldFJlc3VsdChkKTsKICAgIH0pLAp9 \ No newline at end of file diff --git a/潇洒/js/MS.js b/潇洒/js/MS.js new file mode 100644 index 0000000..9ec24f9 --- /dev/null +++ b/潇洒/js/MS.js @@ -0,0 +1 @@ +dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+exs+aQnCcsCiAgICBob3N0OiAnaHR0cHM6Ly9taXNvc28uY2MvJywKICAgIGhvc3RKczogJycsCiAgICBoZWFkZXJzOiB7CiAgICAgICAgJ1VzZXItQWdlbnQnOiAnTW96aWxsYS81LjAgKExpbnV4OyBBbmRyb2lkIDExOyBQaXhlbCA1KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvOTAuMC40NDMwLjkxIE1vYmlsZSBTYWZhcmkvNTM3LjM2JywKICAgIH0sCiAgICDnvJbnoIE6ICd1dGYtOCcsCiAgICB0aW1lb3V0OiA1MDAwLAogICAgdXJsOiAnaHR0cHM6Ly9taXNvc28uY2Mvc2VhcmNoP3E9ZnljbGFzcyZmb3JtYXQ9dmlkZW8mcGFnZT1meXBhZ2UnLAogICAgZmlsdGVyX3VybDogJycsCiAgICBkZXRhaWxVcmw6ICcnLAogICAgc2VhcmNoVXJsOiAnaHR0cHM6Ly9taXNvc28uY2Mvc2VhcmNoP3E9KiomZm9ybWF0PXZpZGVvJnBhZ2U9ZnlwYWdlJywKICAgIHNlYXJjaGFibGU6IDEsCiAgICBxdWlja1NlYXJjaDogMSwKICAgIGZpbHRlcmFibGU6IDEsCiAgICBjbGFzc19uYW1lOiAnJywKICAgIGNsYXNzX3VybDogJycsCiAgICBwcm94eV9ydWxlOiAnJywKICAgIHNuaWZmZXI6IGZhbHNlLAogICAgaXNWaWRlbzogJycsCiAgICBwbGF5X3BhcnNlOiB0cnVlLAogICAgcGFyc2VfdXJsOiAnJywKICAgIGxhenk6ICJqczpcbiAgICAgICAgaW5wdXQgPSAncHVzaDovLycgKyBpbnB1dDtcbiAgICAiLAogICAgbGltaXQ6IDksCiAgICBkb3VibGU6IGZhbHNlLAogICAgLy8g5o6o6I2QOiAnKicsCiAgICDkuIDnuqc6ICdqczpcbiAgICAgICAgbGV0IGh0bWwgPSBmZXRjaChpbnB1dCk7XG4gICAgICAgIGxldCBsaXN0ID0gcGRmYShodG1sLCAiYm9keSYmLnNlbWktc3BhY2UtbWVkaXVtLXZlcnRpY2FsIik7XG4gICAgICAgIFZPRFMgPSBsaXN0Lm1hcCh4ID0+IHtcbiAgICAgICAgICAgIGxldCByZW1hcmtzID0gcGRmaCh4LCAiZGl2JiZpbWcmJmFsdCIpO1xuICAgICAgICAgICAgLy8g6L+H5ruk5o6J5YyF5ZCrIui/hembt+S6keebmCLnmoTlhoXlrrlcbiAgICAgICAgICAgIGlmKHJlbWFya3MuaW5jbHVkZXMoIui/hembt+S6keebmCIpKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdm9kX25hbWU6IHBkZmgoeCwgImRpdiYmYSYmdGl0bGUiKSxcbiAgICAgICAgICAgICAgICB2b2RfcGljOiBcJ2h0dHBzOi8vaXMyLXNzbC5tenN0YXRpYy5jb20vaW1hZ2UvdGh1bWIvUHVycGxlMTIzL3Y0LzQ5LzI1Lzk3LzQ5MjU5Nzc1LTFhNmItYmE2Mi0zYzI4LWIyN2JmNjcxMmFkZS9zb3VyY2UvMTAyNHgxMDI0YmIuanBnXCcsXG4gICAgICAgICAgICAgICAgdm9kX3JlbWFya3M6IHJlbWFya3MsXG4gICAgICAgICAgICAgICAgdm9kX2NvbnRlbnQ6IHJlbWFya3MsXG4gICAgICAgICAgICAgICAgdm9kX2lkOiBwZGZoKHgsICJkaXYmJmEmJmhyZWYiKVxuICAgICAgICAgICAgfVxuICAgICAgICB9KS5maWx0ZXIoeCA9PiB4ICE9PSBudWxsKTtcbiAgICAnLAogICAg5LqM57qnOiB7CiAgICAgICAgdGl0bGU6ICdoMSYmVGV4dCcsCiAgICAgICAgaW1nOiAnaW1nJiZzcmMnLAogICAgICAgIGRlc2M6ICcuY2FyZC10ZXh0OmVxKDIpJiZUZXh0Ozs7OycsCiAgICAgICAgY29udGVudDogJ2JvZHkmJi5zZW1pLXNwYWNlLWxvb3NlLXZlcnRpY2FsJiZhJiZocmVmJywKICAgICAgICB0YWJzOiAianM6VEFCUyA9IFsn57Gz5pCcJ10iLAogICAgICAgIGxpc3RzOiAianM6XG4gICAgICAgICAgICBMSVNUUyA9IFtdO1xuICAgICAgICAgICAgbGV0IGxpc3RzMSA9IHBkZmEoaHRtbCwgJ2JvZHkmJi5zZW1pLXNwYWNlLWxvb3NlLXZlcnRpY2FsJykubWFwKGl0ID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgX3R0ID0gcGRmaChpdCwgJ3NwYW4mJnRpdGxlJyk7XG4gICAgICAgICAgICAgICAgbGV0IF91dSA9IHBkZmgoaXQsICdhJiZocmVmJyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF90dCArICckJyArIF91dTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgTElTVFMucHVzaChsaXN0czEpO1xuICAgICAgICAiLAogICAgfSwKICAgIOaQnOe0ojogJ2pzOlxuICAgICAgICBsZXQgaHRtbCA9IGZldGNoKGlucHV0KTtcbiAgICAgICAgbGV0IGxpc3QgPSBwZGZhKGh0bWwsICJib2R5JiYuc2VtaS1zcGFjZS1tZWRpdW0tdmVydGljYWwiKTtcbiAgICAgICAgVk9EUyA9IGxpc3QubWFwKHggPT4ge1xuICAgICAgICAgICAgbGV0IHJlbWFya3MgPSBwZGZoKHgsICJkaXYmJmltZyYmYWx0Iik7XG4gICAgICAgICAgICAvLyDov4fmu6TmjonljIXlkKsi6L+F6Zu35LqR55uYIueahOWGheWuuVxuICAgICAgICAgICAgaWYocmVtYXJrcy5pbmNsdWRlcygi6L+F6Zu35LqR55uYIikpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB2b2RfbmFtZTogcGRmaCh4LCAiZGl2JiZhJiZ0aXRsZSIpLFxuICAgICAgICAgICAgICAgIHZvZF9waWM6IFwnaHR0cHM6Ly9pczItc3NsLm16c3RhdGljLmNvbS9pbWFnZS90aHVtYi9QdXJwbGUxMjMvdjQvNDkvMjUvOTcvNDkyNTk3NzUtMWE2Yi1iYTYyLTNjMjgtYjI3YmY2NzEyYWRlL3NvdXJjZS8xMDI0eDEwMjRiYi5qcGdcJyxcbiAgICAgICAgICAgICAgICB2b2RfcmVtYXJrczogcmVtYXJrcyxcbiAgICAgICAgICAgICAgICB2b2RfY29udGVudDogcmVtYXJrcyxcbiAgICAgICAgICAgICAgICB2b2RfaWQ6IHBkZmgoeCwgImRpdiYmYSYmaHJlZiIpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLmZpbHRlcih4ID0+IHggIT09IG51bGwpO1xuICAgICcsCiAgICBjYXRlX2V4Y2x1ZGU6ICfpppbpobV855WZ6KiAfEFQUHzkuIvovb186LWE6K6vfOaWsOmXu3zliqjmgIEnLAogICAgdGFiX2V4Y2x1ZGU6ICfnjJzkvaB85Zac5qyifOS4i+i9vXzliafmg4V85qacfOivhOiuuicsCiAgICDnsbvlnos6ICflvbHop4YnLAogICAgaG9tZVVybDogJ2h0dHBzOi8vbWlzb3NvLmNjLycsCiAgICDkuoznuqforr/pl67liY06ICcnLAogICAgZW5jb2Rpbmc6ICd1dGYtOCcsCiAgICBzZWFyY2hfZW5jb2Rpbmc6ICcnLAogICAg5Zu+54mH5p2l5rqQOiAnJywKICAgIOWbvueJh+abv+aNojogJycsCiAgICBwbGF5X2pzb246IFtdLAogICAgcGFnZWNvdW50OiB7fSwKICAgIHRhYl9yZW1vdmU6IFtdLAogICAgdGFiX29yZGVyOiBbXSwKICAgIHRhYl9yZW5hbWU6IHt9LAp9 \ No newline at end of file diff --git a/潇洒/js/NTDM.js b/潇洒/js/NTDM.js new file mode 100644 index 0000000..9abe665 --- /dev/null +++ b/潇洒/js/NTDM.js @@ -0,0 +1 @@ +Ly8gaHR0cDovL3d3dy5udGRtLnR2CnZhciBydWxlID0gewogICAgdGl0bGU6ICdOVOWKqOa8qycsCiAgICBob3N0OiAnaHR0cDovL3d3dy5udGRtOC5jb20nLAogICAgaG9tZVVybDogJy90eXBlL3JpYmVuLmh0bWwnLAogICAgLy8gdXJsOicvc2hvdy9meWNsYXNzLS0tLS0tLS1meXBhZ2UtLS0uaHRtbCcsCiAgICB1cmw6ICcvc2hvdy9meWNsYXNzZnlmaWx0ZXIuaHRtbCcsCiAgICBmaWx0ZXJhYmxlOiAxLCAvL+aYr+WQpuWQr+eUqOWIhuexu+etm+mAiSwKICAgIGZpbHRlcl91cmw6ICctLXt7ZmwuYnl9fS17e2ZsLmNsYXNzfX0tLXt7ZmwubGV0dGVyfX0tLS1meXBhZ2UtLS17e2ZsLnllYXJ9fScsCiAgICBmaWx0ZXI6IHsKICAgICAgICAicmliZW4iOiBbewogICAgICAgICAgICAia2V5IjogInllYXIiLAogICAgICAgICAgICAibmFtZSI6ICLlubTku73vvJoiLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOoIiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyNSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDI1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDI0IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjMiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyMyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMiIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDIyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIxIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjAiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyMCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxOSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE5IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE4IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTciLAogICAgICAgICAgICAgICAgInYiOiAiMjAxNyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNiIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE2IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE1IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTQiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxNCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxMyIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDEzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDEyIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTEiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxMCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDEwIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA5IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDgiLAogICAgICAgICAgICAgICAgInYiOiAiMjAwOCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwNyIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDA3IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA2IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDUiLAogICAgICAgICAgICAgICAgInYiOiAiMjAwNSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwNCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDA0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDAzIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDIiLAogICAgICAgICAgICAgICAgInYiOiAiMjAwMiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwMSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDAxIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDAw5Lul5YmNIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDDku6XliY0iCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogImNsYXNzIiwKICAgICAgICAgICAgIm5hbWUiOiAi57G75Z6L77yaIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqCIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaQnueskSIsCiAgICAgICAgICAgICAgICAidiI6ICLmkJ7nrJEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIui/kOWKqCIsCiAgICAgICAgICAgICAgICAidiI6ICLov5DliqgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWKseW/lyIsCiAgICAgICAgICAgICAgICAidiI6ICLlirHlv5ciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIueDreihgCIsCiAgICAgICAgICAgICAgICAidiI6ICLng63ooYAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaImOaWlyIsCiAgICAgICAgICAgICAgICAidiI6ICLmiJjmlpciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuernuaKgCIsCiAgICAgICAgICAgICAgICAidiI6ICLnq57mioAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuagoeWbrSIsCiAgICAgICAgICAgICAgICAidiI6ICLmoKHlm60iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIumdkuaYpSIsCiAgICAgICAgICAgICAgICAidiI6ICLpnZLmmKUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIueIseaDhSIsCiAgICAgICAgICAgICAgICAidiI6ICLniLHmg4UiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWGkumZqSIsCiAgICAgICAgICAgICAgICAidiI6ICLlhpLpmakiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWQjuWuqyIsCiAgICAgICAgICAgICAgICAidiI6ICLlkI7lrqsiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIueZvuWQiCIsCiAgICAgICAgICAgICAgICAidiI6ICLnmb7lkIgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuayu+aEiCIsCiAgICAgICAgICAgICAgICAidiI6ICLmsrvmhIgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuiQneiOiSIsCiAgICAgICAgICAgICAgICAidiI6ICLokJ3ojokiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIumtlOazlSIsCiAgICAgICAgICAgICAgICAidiI6ICLprZTms5UiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaCrOeWkSIsCiAgICAgICAgICAgICAgICAidiI6ICLmgqznlpEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaOqOeQhiIsCiAgICAgICAgICAgICAgICAidiI6ICLmjqjnkIYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWlh+W5uyIsCiAgICAgICAgICAgICAgICAidiI6ICLlpYflubsiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuenkeW5uyIsCiAgICAgICAgICAgICAgICAidiI6ICLnp5HlubsiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIua4uOaIjyIsCiAgICAgICAgICAgICAgICAidiI6ICLmuLjmiI8iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuelnumtlCIsCiAgICAgICAgICAgICAgICAidiI6ICLnpZ7prZQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaBkOaAliIsCiAgICAgICAgICAgICAgICAidiI6ICLmgZDmgJYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuihgOiFpSIsCiAgICAgICAgICAgICAgICAidiI6ICLooYDohaUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuacuuaImCIsCiAgICAgICAgICAgICAgICAidiI6ICLmnLrmiJgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaImOS6iSIsCiAgICAgICAgICAgICAgICAidiI6ICLmiJjkuokiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIueKr+e9qiIsCiAgICAgICAgICAgICAgICAidiI6ICLniq/nvaoiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWOhuWPsiIsCiAgICAgICAgICAgICAgICAidiI6ICLljoblj7IiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuekvuS8miIsCiAgICAgICAgICAgICAgICAidiI6ICLnpL7kvJoiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuiBjOWcuiIsCiAgICAgICAgICAgICAgICAidiI6ICLogYzlnLoiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWJp+aDhSIsCiAgICAgICAgICAgICAgICAidiI6ICLliafmg4UiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuS8quWomCIsCiAgICAgICAgICAgICAgICAidiI6ICLkvKrlqJgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuiAvee+jiIsCiAgICAgICAgICAgICAgICAidiI6ICLogL3nvo4iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuerpeW5tCIsCiAgICAgICAgICAgICAgICAidiI6ICLnq6XlubQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaVmeiCsiIsCiAgICAgICAgICAgICAgICAidiI6ICLmlZnogrIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuS6suWtkCIsCiAgICAgICAgICAgICAgICAidiI6ICLkurLlrZAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuecn+S6uiIsCiAgICAgICAgICAgICAgICAidiI6ICLnnJ/kuroiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuatjOiIniIsCiAgICAgICAgICAgICAgICAidiI6ICLmrYzoiJ4iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuiCieeVqiIsCiAgICAgICAgICAgICAgICAidiI6ICLogonnlaoiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIue+juWwkeWlsyIsCiAgICAgICAgICAgICAgICAidiI6ICLnvo7lsJHlpbMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIui9u+Wwj+ivtCIsCiAgICAgICAgICAgICAgICAidiI6ICLovbvlsI/or7QiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWQuOihgOmsvCIsCiAgICAgICAgICAgICAgICAidiI6ICLlkLjooYDprLwiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWls+aAp+WQkSIsCiAgICAgICAgICAgICAgICAidiI6ICLlpbPmgKflkJEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuazoemdoueVqiIsCiAgICAgICAgICAgICAgICAidiI6ICLms6HpnaLnlaoiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuasouS5kOWQkSIsCiAgICAgICAgICAgICAgICAidiI6ICLmrKLkuZDlkJEiCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogImxldHRlciIsCiAgICAgICAgICAgICJuYW1lIjogIuWtl+avje+8miIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlhajpg6giLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJBIiwKICAgICAgICAgICAgICAgICJ2IjogIkEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkIiLAogICAgICAgICAgICAgICAgInYiOiAiQiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiQyIsCiAgICAgICAgICAgICAgICAidiI6ICJDIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJEIiwKICAgICAgICAgICAgICAgICJ2IjogIkQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkUiLAogICAgICAgICAgICAgICAgInYiOiAiRSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiRiIsCiAgICAgICAgICAgICAgICAidiI6ICJGIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJHIiwKICAgICAgICAgICAgICAgICJ2IjogIkciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkgiLAogICAgICAgICAgICAgICAgInYiOiAiSCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiSSIsCiAgICAgICAgICAgICAgICAidiI6ICJJIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJKIiwKICAgICAgICAgICAgICAgICJ2IjogIkoiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIksiLAogICAgICAgICAgICAgICAgInYiOiAiSyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiTCIsCiAgICAgICAgICAgICAgICAidiI6ICJMIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJNIiwKICAgICAgICAgICAgICAgICJ2IjogIk0iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIk4iLAogICAgICAgICAgICAgICAgInYiOiAiTiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiTyIsCiAgICAgICAgICAgICAgICAidiI6ICJPIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJQIiwKICAgICAgICAgICAgICAgICJ2IjogIlAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIlEiLAogICAgICAgICAgICAgICAgInYiOiAiUSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiUiIsCiAgICAgICAgICAgICAgICAidiI6ICJSIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJTIiwKICAgICAgICAgICAgICAgICJ2IjogIlMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIlQiLAogICAgICAgICAgICAgICAgInYiOiAiVCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiVSIsCiAgICAgICAgICAgICAgICAidiI6ICJVIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJWIiwKICAgICAgICAgICAgICAgICJ2IjogIlYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIlciLAogICAgICAgICAgICAgICAgInYiOiAiVyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiWCIsCiAgICAgICAgICAgICAgICAidiI6ICJYIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJZIiwKICAgICAgICAgICAgICAgICJ2IjogIlkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIloiLAogICAgICAgICAgICAgICAgInYiOiAiWiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMH45IiwKICAgICAgICAgICAgICAgICJ2IjogIjB+OSIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAiYnkiLAogICAgICAgICAgICAibmFtZSI6ICLmjpLluo/vvJoiLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5pu05paw5pe26Ze0IiwKICAgICAgICAgICAgICAgICJ2IjogInRpbWUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuS6uuawlCIsCiAgICAgICAgICAgICAgICAidiI6ICJoaXRzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLor4TliIYiLAogICAgICAgICAgICAgICAgInYiOiAic2NvcmUiCiAgICAgICAgICAgIH1dCiAgICAgICAgfV0sCiAgICAgICAgInpob25nZ3VvIjogW3sKICAgICAgICAgICAgImtleSI6ICJ5ZWFyIiwKICAgICAgICAgICAgIm5hbWUiOiAi5bm05Lu977yaIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqCIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjUiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyNSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyNCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDI0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIzIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjIiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyMiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDIxIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIwIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTkiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxOSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxOCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE4IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE3IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTYiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxNiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE0IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTMiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxMyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxMiIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDEyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDExIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTAiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxMCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwOSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDA5IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA4IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDciLAogICAgICAgICAgICAgICAgInYiOiAiMjAwNyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwNiIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDA2IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA1IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDQiLAogICAgICAgICAgICAgICAgInYiOiAiMjAwNCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwMyIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDAzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDAyIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDEiLAogICAgICAgICAgICAgICAgInYiOiAiMjAwMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwMOS7peWJjSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDAw5Lul5YmNIgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJjbGFzcyIsCiAgICAgICAgICAgICJuYW1lIjogIuexu+Wei++8miIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlhajpg6giLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmkJ7nrJEiLAogICAgICAgICAgICAgICAgInYiOiAi5pCe56yRIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLov5DliqgiLAogICAgICAgICAgICAgICAgInYiOiAi6L+Q5YqoIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlirHlv5ciLAogICAgICAgICAgICAgICAgInYiOiAi5Yqx5b+XIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLng63ooYAiLAogICAgICAgICAgICAgICAgInYiOiAi54Ot6KGAIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmiJjmlpciLAogICAgICAgICAgICAgICAgInYiOiAi5oiY5paXIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnq57mioAiLAogICAgICAgICAgICAgICAgInYiOiAi56ue5oqAIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmoKHlm60iLAogICAgICAgICAgICAgICAgInYiOiAi5qCh5ZutIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLpnZLmmKUiLAogICAgICAgICAgICAgICAgInYiOiAi6Z2S5pilIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLniLHmg4UiLAogICAgICAgICAgICAgICAgInYiOiAi54ix5oOFIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlhpLpmakiLAogICAgICAgICAgICAgICAgInYiOiAi5YaS6ZmpIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlkI7lrqsiLAogICAgICAgICAgICAgICAgInYiOiAi5ZCO5a6rIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnmb7lkIgiLAogICAgICAgICAgICAgICAgInYiOiAi55m+5ZCIIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmsrvmhIgiLAogICAgICAgICAgICAgICAgInYiOiAi5rK75oSIIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLokJ3ojokiLAogICAgICAgICAgICAgICAgInYiOiAi6JCd6I6JIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLprZTms5UiLAogICAgICAgICAgICAgICAgInYiOiAi6a2U5rOVIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmgqznlpEiLAogICAgICAgICAgICAgICAgInYiOiAi5oKs55aRIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmjqjnkIYiLAogICAgICAgICAgICAgICAgInYiOiAi5o6o55CGIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlpYflubsiLAogICAgICAgICAgICAgICAgInYiOiAi5aWH5bm7IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnp5HlubsiLAogICAgICAgICAgICAgICAgInYiOiAi56eR5bm7IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmuLjmiI8iLAogICAgICAgICAgICAgICAgInYiOiAi5ri45oiPIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnpZ7prZQiLAogICAgICAgICAgICAgICAgInYiOiAi56We6a2UIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmgZDmgJYiLAogICAgICAgICAgICAgICAgInYiOiAi5oGQ5oCWIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLooYDohaUiLAogICAgICAgICAgICAgICAgInYiOiAi6KGA6IWlIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmnLrmiJgiLAogICAgICAgICAgICAgICAgInYiOiAi5py65oiYIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmiJjkuokiLAogICAgICAgICAgICAgICAgInYiOiAi5oiY5LqJIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLniq/nvaoiLAogICAgICAgICAgICAgICAgInYiOiAi54qv572qIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLljoblj7IiLAogICAgICAgICAgICAgICAgInYiOiAi5Y6G5Y+yIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnpL7kvJoiLAogICAgICAgICAgICAgICAgInYiOiAi56S+5LyaIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLogYzlnLoiLAogICAgICAgICAgICAgICAgInYiOiAi6IGM5Zy6IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLliafmg4UiLAogICAgICAgICAgICAgICAgInYiOiAi5Ymn5oOFIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLkvKrlqJgiLAogICAgICAgICAgICAgICAgInYiOiAi5Lyq5aiYIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLogL3nvo4iLAogICAgICAgICAgICAgICAgInYiOiAi6IC9576OIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnq6XlubQiLAogICAgICAgICAgICAgICAgInYiOiAi56ul5bm0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmlZnogrIiLAogICAgICAgICAgICAgICAgInYiOiAi5pWZ6IKyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLkurLlrZAiLAogICAgICAgICAgICAgICAgInYiOiAi5Lqy5a2QIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnnJ/kuroiLAogICAgICAgICAgICAgICAgInYiOiAi55yf5Lq6IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmrYzoiJ4iLAogICAgICAgICAgICAgICAgInYiOiAi5q2M6IieIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLogonnlaoiLAogICAgICAgICAgICAgICAgInYiOiAi6IKJ55WqIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnvo7lsJHlpbMiLAogICAgICAgICAgICAgICAgInYiOiAi576O5bCR5aWzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLovbvlsI/or7QiLAogICAgICAgICAgICAgICAgInYiOiAi6L275bCP6K+0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlkLjooYDprLwiLAogICAgICAgICAgICAgICAgInYiOiAi5ZC46KGA6ay8IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlpbPmgKflkJEiLAogICAgICAgICAgICAgICAgInYiOiAi5aWz5oCn5ZCRIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLms6HpnaLnlaoiLAogICAgICAgICAgICAgICAgInYiOiAi5rOh6Z2i55WqIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmrKLkuZDlkJEiLAogICAgICAgICAgICAgICAgInYiOiAi5qyi5LmQ5ZCRIgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJsZXR0ZXIiLAogICAgICAgICAgICAibmFtZSI6ICLlrZfmr43vvJoiLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOoIiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiQSIsCiAgICAgICAgICAgICAgICAidiI6ICJBIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJCIiwKICAgICAgICAgICAgICAgICJ2IjogIkIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkMiLAogICAgICAgICAgICAgICAgInYiOiAiQyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiRCIsCiAgICAgICAgICAgICAgICAidiI6ICJEIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJFIiwKICAgICAgICAgICAgICAgICJ2IjogIkUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkYiLAogICAgICAgICAgICAgICAgInYiOiAiRiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiRyIsCiAgICAgICAgICAgICAgICAidiI6ICJHIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJIIiwKICAgICAgICAgICAgICAgICJ2IjogIkgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkkiLAogICAgICAgICAgICAgICAgInYiOiAiSSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiSiIsCiAgICAgICAgICAgICAgICAidiI6ICJKIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJLIiwKICAgICAgICAgICAgICAgICJ2IjogIksiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkwiLAogICAgICAgICAgICAgICAgInYiOiAiTCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiTSIsCiAgICAgICAgICAgICAgICAidiI6ICJNIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJOIiwKICAgICAgICAgICAgICAgICJ2IjogIk4iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIk8iLAogICAgICAgICAgICAgICAgInYiOiAiTyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiUCIsCiAgICAgICAgICAgICAgICAidiI6ICJQIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJRIiwKICAgICAgICAgICAgICAgICJ2IjogIlEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIlIiLAogICAgICAgICAgICAgICAgInYiOiAiUiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiUyIsCiAgICAgICAgICAgICAgICAidiI6ICJTIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJUIiwKICAgICAgICAgICAgICAgICJ2IjogIlQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIlUiLAogICAgICAgICAgICAgICAgInYiOiAiVSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiViIsCiAgICAgICAgICAgICAgICAidiI6ICJWIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJXIiwKICAgICAgICAgICAgICAgICJ2IjogIlciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIlgiLAogICAgICAgICAgICAgICAgInYiOiAiWCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiWSIsCiAgICAgICAgICAgICAgICAidiI6ICJZIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJaIiwKICAgICAgICAgICAgICAgICJ2IjogIloiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjB+OSIsCiAgICAgICAgICAgICAgICAidiI6ICIwfjkiCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogImJ5IiwKICAgICAgICAgICAgIm5hbWUiOiAi5o6S5bqP77yaIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuabtOaWsOaXtumXtCIsCiAgICAgICAgICAgICAgICAidiI6ICJ0aW1lIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLkurrmsJQiLAogICAgICAgICAgICAgICAgInYiOiAiaGl0cyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6K+E5YiGIiwKICAgICAgICAgICAgICAgICJ2IjogInNjb3JlIgogICAgICAgICAgICB9XQogICAgICAgIH1dLAogICAgICAgICJvbWVpIjogW3sKICAgICAgICAgICAgImtleSI6ICJ5ZWFyIiwKICAgICAgICAgICAgIm5hbWUiOiAi5bm05Lu977yaIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqCIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjUiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyNSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyNCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDI0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIzIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjIiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyMiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDIxIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIwIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTkiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxOSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxOCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE4IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE3IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTYiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxNiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE0IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTMiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxMyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxMiIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDEyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDExIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTAiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxMCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwOSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDA5IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA4IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDciLAogICAgICAgICAgICAgICAgInYiOiAiMjAwNyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwNiIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDA2IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA1IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDQiLAogICAgICAgICAgICAgICAgInYiOiAiMjAwNCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwMyIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDAzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDAyIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMDIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDEiLAogICAgICAgICAgICAgICAgInYiOiAiMjAwMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwMOS7peWJjSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDAw5Lul5YmNIgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJjbGFzcyIsCiAgICAgICAgICAgICJuYW1lIjogIuexu+Wei++8miIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlhajpg6giLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmkJ7nrJEiLAogICAgICAgICAgICAgICAgInYiOiAi5pCe56yRIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLov5DliqgiLAogICAgICAgICAgICAgICAgInYiOiAi6L+Q5YqoIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlirHlv5ciLAogICAgICAgICAgICAgICAgInYiOiAi5Yqx5b+XIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLng63ooYAiLAogICAgICAgICAgICAgICAgInYiOiAi54Ot6KGAIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmiJjmlpciLAogICAgICAgICAgICAgICAgInYiOiAi5oiY5paXIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnq57mioAiLAogICAgICAgICAgICAgICAgInYiOiAi56ue5oqAIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmoKHlm60iLAogICAgICAgICAgICAgICAgInYiOiAi5qCh5ZutIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLpnZLmmKUiLAogICAgICAgICAgICAgICAgInYiOiAi6Z2S5pilIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLniLHmg4UiLAogICAgICAgICAgICAgICAgInYiOiAi54ix5oOFIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlhpLpmakiLAogICAgICAgICAgICAgICAgInYiOiAi5YaS6ZmpIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlkI7lrqsiLAogICAgICAgICAgICAgICAgInYiOiAi5ZCO5a6rIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnmb7lkIgiLAogICAgICAgICAgICAgICAgInYiOiAi55m+5ZCIIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmsrvmhIgiLAogICAgICAgICAgICAgICAgInYiOiAi5rK75oSIIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLokJ3ojokiLAogICAgICAgICAgICAgICAgInYiOiAi6JCd6I6JIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLprZTms5UiLAogICAgICAgICAgICAgICAgInYiOiAi6a2U5rOVIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmgqznlpEiLAogICAgICAgICAgICAgICAgInYiOiAi5oKs55aRIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmjqjnkIYiLAogICAgICAgICAgICAgICAgInYiOiAi5o6o55CGIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlpYflubsiLAogICAgICAgICAgICAgICAgInYiOiAi5aWH5bm7IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnp5HlubsiLAogICAgICAgICAgICAgICAgInYiOiAi56eR5bm7IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmuLjmiI8iLAogICAgICAgICAgICAgICAgInYiOiAi5ri45oiPIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnpZ7prZQiLAogICAgICAgICAgICAgICAgInYiOiAi56We6a2UIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmgZDmgJYiLAogICAgICAgICAgICAgICAgInYiOiAi5oGQ5oCWIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLooYDohaUiLAogICAgICAgICAgICAgICAgInYiOiAi6KGA6IWlIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmnLrmiJgiLAogICAgICAgICAgICAgICAgInYiOiAi5py65oiYIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmiJjkuokiLAogICAgICAgICAgICAgICAgInYiOiAi5oiY5LqJIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLniq/nvaoiLAogICAgICAgICAgICAgICAgInYiOiAi54qv572qIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLljoblj7IiLAogICAgICAgICAgICAgICAgInYiOiAi5Y6G5Y+yIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnpL7kvJoiLAogICAgICAgICAgICAgICAgInYiOiAi56S+5LyaIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLogYzlnLoiLAogICAgICAgICAgICAgICAgInYiOiAi6IGM5Zy6IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLliafmg4UiLAogICAgICAgICAgICAgICAgInYiOiAi5Ymn5oOFIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLkvKrlqJgiLAogICAgICAgICAgICAgICAgInYiOiAi5Lyq5aiYIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLogL3nvo4iLAogICAgICAgICAgICAgICAgInYiOiAi6IC9576OIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnq6XlubQiLAogICAgICAgICAgICAgICAgInYiOiAi56ul5bm0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmlZnogrIiLAogICAgICAgICAgICAgICAgInYiOiAi5pWZ6IKyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLkurLlrZAiLAogICAgICAgICAgICAgICAgInYiOiAi5Lqy5a2QIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnnJ/kuroiLAogICAgICAgICAgICAgICAgInYiOiAi55yf5Lq6IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmrYzoiJ4iLAogICAgICAgICAgICAgICAgInYiOiAi5q2M6IieIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLogonnlaoiLAogICAgICAgICAgICAgICAgInYiOiAi6IKJ55WqIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnvo7lsJHlpbMiLAogICAgICAgICAgICAgICAgInYiOiAi576O5bCR5aWzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLovbvlsI/or7QiLAogICAgICAgICAgICAgICAgInYiOiAi6L275bCP6K+0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlkLjooYDprLwiLAogICAgICAgICAgICAgICAgInYiOiAi5ZC46KGA6ay8IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlpbPmgKflkJEiLAogICAgICAgICAgICAgICAgInYiOiAi5aWz5oCn5ZCRIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLms6HpnaLnlaoiLAogICAgICAgICAgICAgICAgInYiOiAi5rOh6Z2i55WqIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmrKLkuZDlkJEiLAogICAgICAgICAgICAgICAgInYiOiAi5qyi5LmQ5ZCRIgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJsZXR0ZXIiLAogICAgICAgICAgICAibmFtZSI6ICLlrZfmr43vvJoiLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOoIiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiQSIsCiAgICAgICAgICAgICAgICAidiI6ICJBIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJCIiwKICAgICAgICAgICAgICAgICJ2IjogIkIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkMiLAogICAgICAgICAgICAgICAgInYiOiAiQyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiRCIsCiAgICAgICAgICAgICAgICAidiI6ICJEIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJFIiwKICAgICAgICAgICAgICAgICJ2IjogIkUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkYiLAogICAgICAgICAgICAgICAgInYiOiAiRiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiRyIsCiAgICAgICAgICAgICAgICAidiI6ICJHIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJIIiwKICAgICAgICAgICAgICAgICJ2IjogIkgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkkiLAogICAgICAgICAgICAgICAgInYiOiAiSSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiSiIsCiAgICAgICAgICAgICAgICAidiI6ICJKIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJLIiwKICAgICAgICAgICAgICAgICJ2IjogIksiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkwiLAogICAgICAgICAgICAgICAgInYiOiAiTCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiTSIsCiAgICAgICAgICAgICAgICAidiI6ICJNIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJOIiwKICAgICAgICAgICAgICAgICJ2IjogIk4iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIk8iLAogICAgICAgICAgICAgICAgInYiOiAiTyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiUCIsCiAgICAgICAgICAgICAgICAidiI6ICJQIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJRIiwKICAgICAgICAgICAgICAgICJ2IjogIlEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIlIiLAogICAgICAgICAgICAgICAgInYiOiAiUiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiUyIsCiAgICAgICAgICAgICAgICAidiI6ICJTIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJUIiwKICAgICAgICAgICAgICAgICJ2IjogIlQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIlUiLAogICAgICAgICAgICAgICAgInYiOiAiVSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiViIsCiAgICAgICAgICAgICAgICAidiI6ICJWIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJXIiwKICAgICAgICAgICAgICAgICJ2IjogIlciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIlgiLAogICAgICAgICAgICAgICAgInYiOiAiWCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiWSIsCiAgICAgICAgICAgICAgICAidiI6ICJZIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJaIiwKICAgICAgICAgICAgICAgICJ2IjogIloiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjB+OSIsCiAgICAgICAgICAgICAgICAidiI6ICIwfjkiCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogImJ5IiwKICAgICAgICAgICAgIm5hbWUiOiAi5o6S5bqP77yaIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuabtOaWsOaXtumXtCIsCiAgICAgICAgICAgICAgICAidiI6ICJ0aW1lIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLkurrmsJQiLAogICAgICAgICAgICAgICAgInYiOiAiaGl0cyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6K+E5YiGIiwKICAgICAgICAgICAgICAgICJ2IjogInNjb3JlIgogICAgICAgICAgICB9XQogICAgICAgIH1dCiAgICB9LAogICAgc2VhcmNoVXJsOiAnL3NlYXJjaC8qKi0tLS0tLS0tLS1meXBhZ2UtLS0uaHRtbCcsCiAgICBzZWFyY2hhYmxlOiAyLCAvL+aYr+WQpuWQr+eUqOWFqOWxgOaQnOe0oiwKICAgIHF1aWNrU2VhcmNoOiAwLCAvL+aYr+WQpuWQr+eUqOW/q+mAn+aQnOe0oiwKICAgIGhlYWRlcnM6IHsgLy/nvZHnq5nnmoTor7fmsYLlpLQs5a6M5pW05pSv5oyB5omA5pyJ55qELOW4uOW4pnVh5ZKMY29va2llcwogICAgICAgICdVc2VyLUFnZW50JzogJ01PQklMRV9VQScsCiAgICB9LAogICAgY2xhc3NfcGFyc2U6ICcuc2VhcmNoLXRhZyBsaTthJiZUZXh0O2EmJmhyZWY7LiovKFxcdyspLmh0bWwnLAogICAgcGxheV9wYXJzZTogdHJ1ZSwKICAgIGRldGFpbFVybDogJycsCiAgICBsYXp5OiAiIiwKICAgIGxpbWl0OiA2LAogICAg5o6o6I2QOiAnKicsCiAgICDkuIDnuqc6ICcuYmxvY2tjb250ZW50MSYmLmJsb2NrZGlmMjtpbWcmJmFsdDtpbWcmJnNyYzsubmV3bmFtZSYmVGV4dDthJiZocmVmJywKICAgIOS6jOe6p+iuv+mXruWJjTogJycsCiAgICDkuoznuqc6IHsKICAgICAgICAidGl0bGUiOiAiaDQmJlRleHQ7LmRldGFpbF9pbWZvcm1fdmFsdWU6ZXEoNikmJlRleHQiLAogICAgICAgICJpbWciOiAiLnBvc3RlciYmc3JjIiwKICAgICAgICAiZGVzYyI6ICIuZGV0YWlsX2ltZm9ybV9rdjplcSgwKSYmVGV4dDsuZGV0YWlsX2ltZm9ybV92YWx1ZTplcSg1KSYmVGV4dDsuZGV0YWlsX2ltZm9ybV92YWx1ZTplcSgyKSYmVGV4dDsuZGV0YWlsX2ltZm9ybV9rdjplcSgwKSYmVGV4dDsuZGV0YWlsX2ltZm9ybV9rdjplcSgzKSYmVGV4dCIsCiAgICAgICAgImNvbnRlbnQiOiAiLmRldGFpbF9pbWZvcm1fZGVzY19wcmUmJlRleHQiLAogICAgICAgICJ0YWJzIjogIiNtZW51MCYmbGkiLAogICAgICAgICJsaXN0cyI6ICIubW92dXJsOmVxKCNpZCkmJmxpIgogICAgfSwKICAgIOaQnOe0ojogJyonLAp9 \ No newline at end of file diff --git a/潇洒/js/NT动漫.js b/潇洒/js/NT动漫.js deleted file mode 100644 index 4dde948..0000000 --- a/潇洒/js/NT动漫.js +++ /dev/null @@ -1,1013 +0,0 @@ -// http://www.ntdm.tv -var rule = { - title: 'NT动漫', - host: 'http://www.ntdm8.com', - homeUrl: '/type/riben.html', - // url:'/show/fyclass--------fypage---.html', - url: '/show/fyclassfyfilter.html', - filterable: 1, //是否启用分类筛选, - filter_url: '--{{fl.by}}-{{fl.class}}--{{fl.letter}}---fypage---{{fl.year}}', - filter: { - "riben": [{ - "key": "year", - "name": "年份:", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "2025", - "v": "2025" - }, { - "n": "2024", - "v": "2024" - }, { - "n": "2023", - "v": "2023" - }, { - "n": "2022", - "v": "2022" - }, { - "n": "2021", - "v": "2021" - }, { - "n": "2020", - "v": "2020" - }, { - "n": "2019", - "v": "2019" - }, { - "n": "2018", - "v": "2018" - }, { - "n": "2017", - "v": "2017" - }, { - "n": "2016", - "v": "2016" - }, { - "n": "2015", - "v": "2015" - }, { - "n": "2014", - "v": "2014" - }, { - "n": "2013", - "v": "2013" - }, { - "n": "2012", - "v": "2012" - }, { - "n": "2011", - "v": "2011" - }, { - "n": "2010", - "v": "2010" - }, { - "n": "2009", - "v": "2009" - }, { - "n": "2008", - "v": "2008" - }, { - "n": "2007", - "v": "2007" - }, { - "n": "2006", - "v": "2006" - }, { - "n": "2005", - "v": "2005" - }, { - "n": "2004", - "v": "2004" - }, { - "n": "2003", - "v": "2003" - }, { - "n": "2002", - "v": "2002" - }, { - "n": "2001", - "v": "2001" - }, { - "n": "2000以前", - "v": "2000以前" - }] - }, { - "key": "class", - "name": "类型:", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "搞笑", - "v": "搞笑" - }, { - "n": "运动", - "v": "运动" - }, { - "n": "励志", - "v": "励志" - }, { - "n": "热血", - "v": "热血" - }, { - "n": "战斗", - "v": "战斗" - }, { - "n": "竞技", - "v": "竞技" - }, { - "n": "校园", - "v": "校园" - }, { - "n": "青春", - "v": "青春" - }, { - "n": "爱情", - "v": "爱情" - }, { - "n": "冒险", - "v": "冒险" - }, { - "n": "后宫", - "v": "后宫" - }, { - "n": "百合", - "v": "百合" - }, { - "n": "治愈", - "v": "治愈" - }, { - "n": "萝莉", - "v": "萝莉" - }, { - "n": "魔法", - "v": "魔法" - }, { - "n": "悬疑", - "v": "悬疑" - }, { - "n": "推理", - "v": "推理" - }, { - "n": "奇幻", - "v": "奇幻" - }, { - "n": "科幻", - "v": "科幻" - }, { - "n": "游戏", - "v": "游戏" - }, { - "n": "神魔", - "v": "神魔" - }, { - "n": "恐怖", - "v": "恐怖" - }, { - "n": "血腥", - "v": "血腥" - }, { - "n": "机战", - "v": "机战" - }, { - "n": "战争", - "v": "战争" - }, { - "n": "犯罪", - "v": "犯罪" - }, { - "n": "历史", - "v": "历史" - }, { - "n": "社会", - "v": "社会" - }, { - "n": "职场", - "v": "职场" - }, { - "n": "剧情", - "v": "剧情" - }, { - "n": "伪娘", - "v": "伪娘" - }, { - "n": "耽美", - "v": "耽美" - }, { - "n": "童年", - "v": "童年" - }, { - "n": "教育", - "v": "教育" - }, { - "n": "亲子", - "v": "亲子" - }, { - "n": "真人", - "v": "真人" - }, { - "n": "歌舞", - "v": "歌舞" - }, { - "n": "肉番", - "v": "肉番" - }, { - "n": "美少女", - "v": "美少女" - }, { - "n": "轻小说", - "v": "轻小说" - }, { - "n": "吸血鬼", - "v": "吸血鬼" - }, { - "n": "女性向", - "v": "女性向" - }, { - "n": "泡面番", - "v": "泡面番" - }, { - "n": "欢乐向", - "v": "欢乐向" - }] - }, { - "key": "letter", - "name": "字母:", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "A", - "v": "A" - }, { - "n": "B", - "v": "B" - }, { - "n": "C", - "v": "C" - }, { - "n": "D", - "v": "D" - }, { - "n": "E", - "v": "E" - }, { - "n": "F", - "v": "F" - }, { - "n": "G", - "v": "G" - }, { - "n": "H", - "v": "H" - }, { - "n": "I", - "v": "I" - }, { - "n": "J", - "v": "J" - }, { - "n": "K", - "v": "K" - }, { - "n": "L", - "v": "L" - }, { - "n": "M", - "v": "M" - }, { - "n": "N", - "v": "N" - }, { - "n": "O", - "v": "O" - }, { - "n": "P", - "v": "P" - }, { - "n": "Q", - "v": "Q" - }, { - "n": "R", - "v": "R" - }, { - "n": "S", - "v": "S" - }, { - "n": "T", - "v": "T" - }, { - "n": "U", - "v": "U" - }, { - "n": "V", - "v": "V" - }, { - "n": "W", - "v": "W" - }, { - "n": "X", - "v": "X" - }, { - "n": "Y", - "v": "Y" - }, { - "n": "Z", - "v": "Z" - }, { - "n": "0~9", - "v": "0~9" - }] - }, { - "key": "by", - "name": "排序:", - "value": [{ - "n": "更新时间", - "v": "time" - }, { - "n": "人气", - "v": "hits" - }, { - "n": "评分", - "v": "score" - }] - }], - "zhongguo": [{ - "key": "year", - "name": "年份:", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "2025", - "v": "2025" - }, { - "n": "2024", - "v": "2024" - }, { - "n": "2023", - "v": "2023" - }, { - "n": "2022", - "v": "2022" - }, { - "n": "2021", - "v": "2021" - }, { - "n": "2020", - "v": "2020" - }, { - "n": "2019", - "v": "2019" - }, { - "n": "2018", - "v": "2018" - }, { - "n": "2017", - "v": "2017" - }, { - "n": "2016", - "v": "2016" - }, { - "n": "2015", - "v": "2015" - }, { - "n": "2014", - "v": "2014" - }, { - "n": "2013", - "v": "2013" - }, { - "n": "2012", - "v": "2012" - }, { - "n": "2011", - "v": "2011" - }, { - "n": "2010", - "v": "2010" - }, { - "n": "2009", - "v": "2009" - }, { - "n": "2008", - "v": "2008" - }, { - "n": "2007", - "v": "2007" - }, { - "n": "2006", - "v": "2006" - }, { - "n": "2005", - "v": "2005" - }, { - "n": "2004", - "v": "2004" - }, { - "n": "2003", - "v": "2003" - }, { - "n": "2002", - "v": "2002" - }, { - "n": "2001", - "v": "2001" - }, { - "n": "2000以前", - "v": "2000以前" - }] - }, { - "key": "class", - "name": "类型:", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "搞笑", - "v": "搞笑" - }, { - "n": "运动", - "v": "运动" - }, { - "n": "励志", - "v": "励志" - }, { - "n": "热血", - "v": "热血" - }, { - "n": "战斗", - "v": "战斗" - }, { - "n": "竞技", - "v": "竞技" - }, { - "n": "校园", - "v": "校园" - }, { - "n": "青春", - "v": "青春" - }, { - "n": "爱情", - "v": "爱情" - }, { - "n": "冒险", - "v": "冒险" - }, { - "n": "后宫", - "v": "后宫" - }, { - "n": "百合", - "v": "百合" - }, { - "n": "治愈", - "v": "治愈" - }, { - "n": "萝莉", - "v": "萝莉" - }, { - "n": "魔法", - "v": "魔法" - }, { - "n": "悬疑", - "v": "悬疑" - }, { - "n": "推理", - "v": "推理" - }, { - "n": "奇幻", - "v": "奇幻" - }, { - "n": "科幻", - "v": "科幻" - }, { - "n": "游戏", - "v": "游戏" - }, { - "n": "神魔", - "v": "神魔" - }, { - "n": "恐怖", - "v": "恐怖" - }, { - "n": "血腥", - "v": "血腥" - }, { - "n": "机战", - "v": "机战" - }, { - "n": "战争", - "v": "战争" - }, { - "n": "犯罪", - "v": "犯罪" - }, { - "n": "历史", - "v": "历史" - }, { - "n": "社会", - "v": "社会" - }, { - "n": "职场", - "v": "职场" - }, { - "n": "剧情", - "v": "剧情" - }, { - "n": "伪娘", - "v": "伪娘" - }, { - "n": "耽美", - "v": "耽美" - }, { - "n": "童年", - "v": "童年" - }, { - "n": "教育", - "v": "教育" - }, { - "n": "亲子", - "v": "亲子" - }, { - "n": "真人", - "v": "真人" - }, { - "n": "歌舞", - "v": "歌舞" - }, { - "n": "肉番", - "v": "肉番" - }, { - "n": "美少女", - "v": "美少女" - }, { - "n": "轻小说", - "v": "轻小说" - }, { - "n": "吸血鬼", - "v": "吸血鬼" - }, { - "n": "女性向", - "v": "女性向" - }, { - "n": "泡面番", - "v": "泡面番" - }, { - "n": "欢乐向", - "v": "欢乐向" - }] - }, { - "key": "letter", - "name": "字母:", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "A", - "v": "A" - }, { - "n": "B", - "v": "B" - }, { - "n": "C", - "v": "C" - }, { - "n": "D", - "v": "D" - }, { - "n": "E", - "v": "E" - }, { - "n": "F", - "v": "F" - }, { - "n": "G", - "v": "G" - }, { - "n": "H", - "v": "H" - }, { - "n": "I", - "v": "I" - }, { - "n": "J", - "v": "J" - }, { - "n": "K", - "v": "K" - }, { - "n": "L", - "v": "L" - }, { - "n": "M", - "v": "M" - }, { - "n": "N", - "v": "N" - }, { - "n": "O", - "v": "O" - }, { - "n": "P", - "v": "P" - }, { - "n": "Q", - "v": "Q" - }, { - "n": "R", - "v": "R" - }, { - "n": "S", - "v": "S" - }, { - "n": "T", - "v": "T" - }, { - "n": "U", - "v": "U" - }, { - "n": "V", - "v": "V" - }, { - "n": "W", - "v": "W" - }, { - "n": "X", - "v": "X" - }, { - "n": "Y", - "v": "Y" - }, { - "n": "Z", - "v": "Z" - }, { - "n": "0~9", - "v": "0~9" - }] - }, { - "key": "by", - "name": "排序:", - "value": [{ - "n": "更新时间", - "v": "time" - }, { - "n": "人气", - "v": "hits" - }, { - "n": "评分", - "v": "score" - }] - }], - "omei": [{ - "key": "year", - "name": "年份:", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "2025", - "v": "2025" - }, { - "n": "2024", - "v": "2024" - }, { - "n": "2023", - "v": "2023" - }, { - "n": "2022", - "v": "2022" - }, { - "n": "2021", - "v": "2021" - }, { - "n": "2020", - "v": "2020" - }, { - "n": "2019", - "v": "2019" - }, { - "n": "2018", - "v": "2018" - }, { - "n": "2017", - "v": "2017" - }, { - "n": "2016", - "v": "2016" - }, { - "n": "2015", - "v": "2015" - }, { - "n": "2014", - "v": "2014" - }, { - "n": "2013", - "v": "2013" - }, { - "n": "2012", - "v": "2012" - }, { - "n": "2011", - "v": "2011" - }, { - "n": "2010", - "v": "2010" - }, { - "n": "2009", - "v": "2009" - }, { - "n": "2008", - "v": "2008" - }, { - "n": "2007", - "v": "2007" - }, { - "n": "2006", - "v": "2006" - }, { - "n": "2005", - "v": "2005" - }, { - "n": "2004", - "v": "2004" - }, { - "n": "2003", - "v": "2003" - }, { - "n": "2002", - "v": "2002" - }, { - "n": "2001", - "v": "2001" - }, { - "n": "2000以前", - "v": "2000以前" - }] - }, { - "key": "class", - "name": "类型:", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "搞笑", - "v": "搞笑" - }, { - "n": "运动", - "v": "运动" - }, { - "n": "励志", - "v": "励志" - }, { - "n": "热血", - "v": "热血" - }, { - "n": "战斗", - "v": "战斗" - }, { - "n": "竞技", - "v": "竞技" - }, { - "n": "校园", - "v": "校园" - }, { - "n": "青春", - "v": "青春" - }, { - "n": "爱情", - "v": "爱情" - }, { - "n": "冒险", - "v": "冒险" - }, { - "n": "后宫", - "v": "后宫" - }, { - "n": "百合", - "v": "百合" - }, { - "n": "治愈", - "v": "治愈" - }, { - "n": "萝莉", - "v": "萝莉" - }, { - "n": "魔法", - "v": "魔法" - }, { - "n": "悬疑", - "v": "悬疑" - }, { - "n": "推理", - "v": "推理" - }, { - "n": "奇幻", - "v": "奇幻" - }, { - "n": "科幻", - "v": "科幻" - }, { - "n": "游戏", - "v": "游戏" - }, { - "n": "神魔", - "v": "神魔" - }, { - "n": "恐怖", - "v": "恐怖" - }, { - "n": "血腥", - "v": "血腥" - }, { - "n": "机战", - "v": "机战" - }, { - "n": "战争", - "v": "战争" - }, { - "n": "犯罪", - "v": "犯罪" - }, { - "n": "历史", - "v": "历史" - }, { - "n": "社会", - "v": "社会" - }, { - "n": "职场", - "v": "职场" - }, { - "n": "剧情", - "v": "剧情" - }, { - "n": "伪娘", - "v": "伪娘" - }, { - "n": "耽美", - "v": "耽美" - }, { - "n": "童年", - "v": "童年" - }, { - "n": "教育", - "v": "教育" - }, { - "n": "亲子", - "v": "亲子" - }, { - "n": "真人", - "v": "真人" - }, { - "n": "歌舞", - "v": "歌舞" - }, { - "n": "肉番", - "v": "肉番" - }, { - "n": "美少女", - "v": "美少女" - }, { - "n": "轻小说", - "v": "轻小说" - }, { - "n": "吸血鬼", - "v": "吸血鬼" - }, { - "n": "女性向", - "v": "女性向" - }, { - "n": "泡面番", - "v": "泡面番" - }, { - "n": "欢乐向", - "v": "欢乐向" - }] - }, { - "key": "letter", - "name": "字母:", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "A", - "v": "A" - }, { - "n": "B", - "v": "B" - }, { - "n": "C", - "v": "C" - }, { - "n": "D", - "v": "D" - }, { - "n": "E", - "v": "E" - }, { - "n": "F", - "v": "F" - }, { - "n": "G", - "v": "G" - }, { - "n": "H", - "v": "H" - }, { - "n": "I", - "v": "I" - }, { - "n": "J", - "v": "J" - }, { - "n": "K", - "v": "K" - }, { - "n": "L", - "v": "L" - }, { - "n": "M", - "v": "M" - }, { - "n": "N", - "v": "N" - }, { - "n": "O", - "v": "O" - }, { - "n": "P", - "v": "P" - }, { - "n": "Q", - "v": "Q" - }, { - "n": "R", - "v": "R" - }, { - "n": "S", - "v": "S" - }, { - "n": "T", - "v": "T" - }, { - "n": "U", - "v": "U" - }, { - "n": "V", - "v": "V" - }, { - "n": "W", - "v": "W" - }, { - "n": "X", - "v": "X" - }, { - "n": "Y", - "v": "Y" - }, { - "n": "Z", - "v": "Z" - }, { - "n": "0~9", - "v": "0~9" - }] - }, { - "key": "by", - "name": "排序:", - "value": [{ - "n": "更新时间", - "v": "time" - }, { - "n": "人气", - "v": "hits" - }, { - "n": "评分", - "v": "score" - }] - }] - }, - searchUrl: '/search/**----------fypage---.html', - searchable: 2, //是否启用全局搜索, - quickSearch: 0, //是否启用快速搜索, - headers: { //网站的请求头,完整支持所有的,常带ua和cookies - 'User-Agent': 'MOBILE_UA', - }, - class_parse: '.search-tag li;a&&Text;a&&href;.*/(\\w+).html', - play_parse: true, - detailUrl: '', - lazy: "", - limit: 6, - 推荐: '*', - 一级: '.blockcontent1&&.blockdif2;img&&alt;img&&src;.newname&&Text;a&&href', - 二级访问前: '', - 二级: { - "title": "h4&&Text;.detail_imform_value:eq(6)&&Text", - "img": ".poster&&src", - "desc": ".detail_imform_kv:eq(0)&&Text;.detail_imform_value:eq(5)&&Text;.detail_imform_value:eq(2)&&Text;.detail_imform_kv:eq(0)&&Text;.detail_imform_kv:eq(3)&&Text", - "content": ".detail_imform_desc_pre&&Text", - "tabs": "#menu0&&li", - "lists": ".movurl:eq(#id)&&li" - }, - 搜索: '*', -} \ No newline at end of file diff --git a/潇洒/js/NyaFun.js b/潇洒/js/NyaFun.js deleted file mode 100644 index 16b21a2..0000000 --- a/潇洒/js/NyaFun.js +++ /dev/null @@ -1,13 +0,0 @@ -muban.短视2.二级.img = '.detail-pic&&img&&data-src'; -var rule = { - title: 'NyaFun', - 模板:'短视2', - host: 'https://www.nyafun.net', - homeUrl:'/map.html', - url: '/index.php/api/vod#type=fyclass&page=fypage', - class_name:'番剧&剧场', - class_url:'2&1', - detailUrl:'/bangumi/fyid.html', - 推荐:'.border-box .public-list-box;a&&title;.lazy&&data-src;.public-list-prb&&Text;a&&href', - double: false, // 推荐内容是否双层定位 -} \ No newline at end of file diff --git a/潇洒/js/QKB.js b/潇洒/js/QKB.js new file mode 100644 index 0000000..54ab080 --- /dev/null +++ b/潇洒/js/QKB.js @@ -0,0 +1 @@ +bXViYW4udmZlZC7kuoznuqcudGl0bGUgPSAnaDEmJlRleHQ7LmZlZC1jb2wtbWQzLS1zcGFuOmVxKDApJiZUZXh0JzsKbXViYW4udmZlZC7kuoznuqcuZGVzYyA9ICcuZmVkLWNvbC1tZDM6ZXEoMykmJlRleHQ7OzsuZmVkLWNvbC1tZDY6ZXEoMCkmJlRleHQ7LmZlZC1jb2wtbWQ2LS1zcGFuOmVxKDEpJiZUZXh0JzsKdmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+WOu+eci+WQpycsCiAgICDmqKHmnb86ICd2ZmVkJywKICAgIGhvc3Q6ICdodHRwczovL3d3dy5rOWRtLmNvbScsCiAgICAvLyB1cmw6ICcvaW5kZXgucGhwL3ZvZC9zaG93L2lkL2Z5Y2xhc3MvcGFnZS9meXBhZ2UuaHRtbCcsCiAgICB1cmw6ICcvaW5kZXgucGhwL3ZvZC9zaG93L2lkL2Z5Y2xhc3NmeWZpbHRlci5odG1sJywKICAgIGZpbHRlcmFibGU6IDEsIC8v5piv5ZCm5ZCv55So5YiG57G7562b6YCJLAogICAgZmlsdGVyX3VybDogJ3t7ZmwuYXJlYX19e3tmbC5ieX19e3tmbC5jbGFzc319L3BhZ2UvZnlwYWdle3tmbC55ZWFyfX0nLAogICAgZmlsdGVyOiB7CiAgICAgICAgIjMzIjogW3sKICAgICAgICAgICAgImtleSI6ICJjbGFzcyIsCiAgICAgICAgICAgICJuYW1lIjogIuexu+WeiyIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlhajpg6giLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmkJ7nrJEiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+aQnueskSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi57uP5YW4IiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/nu4/lhbgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIueDreihgCIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv54Ot6KGAIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlgqzms6oiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+WCrOazqiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5rK75oSIIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/msrvmhIgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIueMjuWlhyIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv54yO5aWHIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlirHlv5ciLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+WKseW/lyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5oiY5paXIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/miJjmlpciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWQjuWuqyIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv5ZCO5a6rIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmnLrmiJgiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+acuuaImCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5oGL54ixIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/mgYvniLEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIueZvuWQiCIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv55m+5ZCIIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnp5HlubsiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+enkeW5uyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5aWH5bm7IiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/lpYflubsiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaOqOeQhiIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv5o6o55CGIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmoKHlm60iLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+agoeWbrSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6L+Q5YqoIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/ov5DliqgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIumtlOazlSIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv6a2U5rOVIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLljoblj7IiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+WOhuWPsiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5Lyq5aiYIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/kvKrlqJgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIue+juWwkeWlsyIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv576O5bCR5aWzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLokJ3ojokiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+iQneiOiSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5Lqy5a2QIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/kurLlrZAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIumdkuaYpSIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv6Z2S5pilIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlhpLpmakiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+WGkumZqSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi56ue5oqAIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/nq57mioAiCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogInllYXIiLAogICAgICAgICAgICAibmFtZSI6ICLlubTku6MiLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOoIiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyNSIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDI1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDI0IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMjQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjMiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAyMyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMiIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDIyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIxIiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMjEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjAiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAyMCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxOSIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDE5IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE4IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMTgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTciLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAxNyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNiIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDE2IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE1IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMTUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTQiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAxNCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxMyIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDEzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDEyIiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMTIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTEiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAxMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxMCIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDEwIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA5IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMDkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDgiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAwOCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwNyIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDA3IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA2IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMDYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDUiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAwNSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwNCIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDA0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDAzIiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMDMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDIiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAwMiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwMSIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDAxIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDAwIiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMDAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjE5OTkiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMTk5OSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMTk5OCIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8xOTk4IgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJieSIsCiAgICAgICAgICAgICJuYW1lIjogIuaOkuW6jyIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLml7bpl7QiLAogICAgICAgICAgICAgICAgInYiOiAiL2J5L3RpbWUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuS6uuawlCIsCiAgICAgICAgICAgICAgICAidiI6ICIvYnkvaGl0cyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6K+E5YiGIiwKICAgICAgICAgICAgICAgICJ2IjogIi9ieS9zY29yZSIKICAgICAgICAgICAgfV0KICAgICAgICB9XSwKICAgICAgICAiMjEiOiBbewogICAgICAgICAgICAia2V5IjogImNsYXNzIiwKICAgICAgICAgICAgIm5hbWUiOiAi57G75Z6LIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqCIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaQnueskSIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv5pCe56yRIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnu4/lhbgiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+e7j+WFuCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi54Ot6KGAIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/ng63ooYAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWCrOazqiIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv5YKs5rOqIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmsrvmhIgiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+ayu+aEiCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi54yO5aWHIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/njI7lpYciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWKseW/lyIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv5Yqx5b+XIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmiJjmlpciLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+aImOaWlyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5ZCO5a6rIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/lkI7lrqsiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuacuuaImCIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv5py65oiYIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmgYvniLEiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+aBi+eIsSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi55m+5ZCIIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/nmb7lkIgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuenkeW5uyIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv56eR5bm7IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlpYflubsiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+Wlh+W5uyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5o6o55CGIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/mjqjnkIYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuagoeWbrSIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv5qCh5ZutIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLov5DliqgiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+i/kOWKqCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6a2U5rOVIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/prZTms5UiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWOhuWPsiIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv5Y6G5Y+yIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLkvKrlqJgiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+S8quWomCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi576O5bCR5aWzIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/nvo7lsJHlpbMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuiQneiOiSIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv6JCd6I6JIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLkurLlrZAiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+S6suWtkCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6Z2S5pilIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/pnZLmmKUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWGkumZqSIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv5YaS6ZmpIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnq57mioAiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+ernuaKgCIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAiYXJlYSIsCiAgICAgICAgICAgICJuYW1lIjogIuWcsOWMuiIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlhajpg6giLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlpKfpmYYiLAogICAgICAgICAgICAgICAgInYiOiAiL2FyZWEv5aSn6ZmGIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnvo7lm70iLAogICAgICAgICAgICAgICAgInYiOiAiL2FyZWEv576O5Zu9IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLpn6nlm70iLAogICAgICAgICAgICAgICAgInYiOiAiL2FyZWEv6Z+p5Zu9IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLml6XmnKwiLAogICAgICAgICAgICAgICAgInYiOiAiL2FyZWEv5pel5pysIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLms7Dlm70iLAogICAgICAgICAgICAgICAgInYiOiAiL2FyZWEv5rOw5Zu9IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmlrDliqDlnaEiLAogICAgICAgICAgICAgICAgInYiOiAiL2FyZWEv5paw5Yqg5Z2hIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLpqazmnaXopb/kupoiLAogICAgICAgICAgICAgICAgInYiOiAiL2FyZWEv6ams5p2l6KW/5LqaIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLljbDluqYiLAogICAgICAgICAgICAgICAgInYiOiAiL2FyZWEv5Y2w5bqmIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLoi7Hlm70iLAogICAgICAgICAgICAgICAgInYiOiAiL2FyZWEv6Iux5Zu9IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLms5Xlm70iLAogICAgICAgICAgICAgICAgInYiOiAiL2FyZWEv5rOV5Zu9IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLliqDmi7/lpKciLAogICAgICAgICAgICAgICAgInYiOiAiL2FyZWEv5Yqg5ou/5aSnIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLopb/nj63niZkiLAogICAgICAgICAgICAgICAgInYiOiAiL2FyZWEv6KW/54+t54mZIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLkv4TnvZfmlq8iLAogICAgICAgICAgICAgICAgInYiOiAiL2FyZWEv5L+E572X5pavIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlhbblroMiLAogICAgICAgICAgICAgICAgInYiOiAiL2FyZWEv5YW25a6DIgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJ5ZWFyIiwKICAgICAgICAgICAgIm5hbWUiOiAi5bm05LujIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqCIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjUiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAyNSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyNCIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDI0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIzIiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMjMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjIiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAyMiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMSIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDIxIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIwIiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMjAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTkiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAxOSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxOCIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDE4IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE3IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMTciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTYiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAxNiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNSIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDE1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE0IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMTQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTMiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAxMyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxMiIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDEyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDExIiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMTEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTAiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAxMCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwOSIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDA5IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA4IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMDgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDciLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAwNyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwNiIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDA2IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA1IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMDUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDQiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAwNCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwMyIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDAzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDAyIiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMDIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDEiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAwMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwMCIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDAwIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIxOTk5IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzE5OTkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjE5OTgiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMTk5OCIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAiYnkiLAogICAgICAgICAgICAibmFtZSI6ICLmjpLluo8iLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5pe26Ze0IiwKICAgICAgICAgICAgICAgICJ2IjogIi9ieS90aW1lIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLkurrmsJQiLAogICAgICAgICAgICAgICAgInYiOiAiL2J5L2hpdHMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuivhOWIhiIsCiAgICAgICAgICAgICAgICAidiI6ICIvYnkvc2NvcmUiCiAgICAgICAgICAgIH1dCiAgICAgICAgfV0sCiAgICAgICAgIjUwIjogW3sKICAgICAgICAgICAgImtleSI6ICJjbGFzcyIsCiAgICAgICAgICAgICJuYW1lIjogIuexu+WeiyIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlhajpg6giLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmkJ7nrJEiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+aQnueskSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi57uP5YW4IiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/nu4/lhbgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIueDreihgCIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv54Ot6KGAIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlgqzms6oiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+WCrOazqiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5rK75oSIIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/msrvmhIgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIueMjuWlhyIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv54yO5aWHIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlirHlv5ciLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+WKseW/lyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5oiY5paXIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/miJjmlpciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWQjuWuqyIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv5ZCO5a6rIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmnLrmiJgiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+acuuaImCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5oGL54ixIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/mgYvniLEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIueZvuWQiCIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv55m+5ZCIIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnp5HlubsiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+enkeW5uyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5aWH5bm7IiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/lpYflubsiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaOqOeQhiIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv5o6o55CGIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmoKHlm60iLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+agoeWbrSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6L+Q5YqoIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/ov5DliqgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIumtlOazlSIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv6a2U5rOVIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLljoblj7IiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+WOhuWPsiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5Lyq5aiYIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/kvKrlqJgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIue+juWwkeWlsyIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv576O5bCR5aWzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLokJ3ojokiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+iQneiOiSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5Lqy5a2QIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/kurLlrZAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIumdkuaYpSIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv6Z2S5pilIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlhpLpmakiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+WGkumZqSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi56ue5oqAIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/nq57mioAiCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogImFyZWEiLAogICAgICAgICAgICAibmFtZSI6ICLlnLDljLoiLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOoIiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5aSn6ZmGIiwKICAgICAgICAgICAgICAgICJ2IjogIi9hcmVhL+Wkp+mZhiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi576O5Zu9IiwKICAgICAgICAgICAgICAgICJ2IjogIi9hcmVhL+e+juWbvSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6Z+p5Zu9IiwKICAgICAgICAgICAgICAgICJ2IjogIi9hcmVhL+mfqeWbvSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pel5pysIiwKICAgICAgICAgICAgICAgICJ2IjogIi9hcmVhL+aXpeacrCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5rOw5Zu9IiwKICAgICAgICAgICAgICAgICJ2IjogIi9hcmVhL+azsOWbvSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5paw5Yqg5Z2hIiwKICAgICAgICAgICAgICAgICJ2IjogIi9hcmVhL+aWsOWKoOWdoSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6ams5p2l6KW/5LqaIiwKICAgICAgICAgICAgICAgICJ2IjogIi9hcmVhL+mprOadpeilv+S6miIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5Y2w5bqmIiwKICAgICAgICAgICAgICAgICJ2IjogIi9hcmVhL+WNsOW6piIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6Iux5Zu9IiwKICAgICAgICAgICAgICAgICJ2IjogIi9hcmVhL+iLseWbvSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5rOV5Zu9IiwKICAgICAgICAgICAgICAgICJ2IjogIi9hcmVhL+azleWbvSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5Yqg5ou/5aSnIiwKICAgICAgICAgICAgICAgICJ2IjogIi9hcmVhL+WKoOaLv+WkpyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6KW/54+t54mZIiwKICAgICAgICAgICAgICAgICJ2IjogIi9hcmVhL+ilv+ePreeJmSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5L+E572X5pavIiwKICAgICAgICAgICAgICAgICJ2IjogIi9hcmVhL+S/hOe9l+aWryIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5YW25a6DIiwKICAgICAgICAgICAgICAgICJ2IjogIi9hcmVhL+WFtuWugyIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAieWVhciIsCiAgICAgICAgICAgICJuYW1lIjogIuW5tOS7oyIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlhajpg6giLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDI1IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMjUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjQiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAyNCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMyIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDIzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIyIiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMjIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjEiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAyMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMCIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDIwIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE5IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMTkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTgiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAxOCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNyIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDE3IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE2IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMTYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTUiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAxNSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNCIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDE0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDEzIiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMTMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTIiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAxMiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxMSIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDExIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDEwIiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMTAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDkiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAwOSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwOCIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDA4IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA3IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMDciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDYiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAwNiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwNSIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDA1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA0IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMDQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDMiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAwMyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwMiIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDAyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDAxIiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMDEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDAiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAwMCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMTk5OSIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8xOTk5IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIxOTk4IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzE5OTgiCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogImJ5IiwKICAgICAgICAgICAgIm5hbWUiOiAi5o6S5bqPIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuaXtumXtCIsCiAgICAgICAgICAgICAgICAidiI6ICIvYnkvdGltZSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5Lq65rCUIiwKICAgICAgICAgICAgICAgICJ2IjogIi9ieS9oaXRzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLor4TliIYiLAogICAgICAgICAgICAgICAgInYiOiAiL2J5L3Njb3JlIgogICAgICAgICAgICB9XQogICAgICAgIH1dLAogICAgICAgICIyNCI6IFt7CiAgICAgICAgICAgICJrZXkiOiAiY2xhc3MiLAogICAgICAgICAgICAibmFtZSI6ICLnsbvlnosiLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOoIiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pCe56yRIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/mkJ7nrJEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIue7j+WFuCIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv57uP5YW4IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLng63ooYAiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+eDreihgCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5YKs5rOqIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/lgqzms6oiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuayu+aEiCIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv5rK75oSIIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnjI7lpYciLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+eMjuWlhyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5Yqx5b+XIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/lirHlv5ciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaImOaWlyIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv5oiY5paXIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlkI7lrqsiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+WQjuWuqyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5py65oiYIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/mnLrmiJgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaBi+eIsSIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv5oGL54ixIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnmb7lkIgiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+eZvuWQiCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi56eR5bm7IiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/np5HlubsiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWlh+W5uyIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv5aWH5bm7IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmjqjnkIYiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+aOqOeQhiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5qCh5ZutIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/moKHlm60iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIui/kOWKqCIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv6L+Q5YqoIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLprZTms5UiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+mtlOazlSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5Y6G5Y+yIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/ljoblj7IiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuS8quWomCIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv5Lyq5aiYIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnvo7lsJHlpbMiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+e+juWwkeWlsyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6JCd6I6JIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/okJ3ojokiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuS6suWtkCIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv5Lqy5a2QIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLpnZLmmKUiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+mdkuaYpSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5YaS6ZmpIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/lhpLpmakiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuernuaKgCIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv56ue5oqAIgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJhcmVhIiwKICAgICAgICAgICAgIm5hbWUiOiAi5Zyw5Yy6IiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqCIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWkp+mZhiIsCiAgICAgICAgICAgICAgICAidiI6ICIvYXJlYS/lpKfpmYYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIue+juWbvSIsCiAgICAgICAgICAgICAgICAidiI6ICIvYXJlYS/nvo7lm70iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIumfqeWbvSIsCiAgICAgICAgICAgICAgICAidiI6ICIvYXJlYS/pn6nlm70iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaXpeacrCIsCiAgICAgICAgICAgICAgICAidiI6ICIvYXJlYS/ml6XmnKwiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuazsOWbvSIsCiAgICAgICAgICAgICAgICAidiI6ICIvYXJlYS/ms7Dlm70iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaWsOWKoOWdoSIsCiAgICAgICAgICAgICAgICAidiI6ICIvYXJlYS/mlrDliqDlnaEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIumprOadpeilv+S6miIsCiAgICAgICAgICAgICAgICAidiI6ICIvYXJlYS/pqazmnaXopb/kupoiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWNsOW6piIsCiAgICAgICAgICAgICAgICAidiI6ICIvYXJlYS/ljbDluqYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuiLseWbvSIsCiAgICAgICAgICAgICAgICAidiI6ICIvYXJlYS/oi7Hlm70iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuazleWbvSIsCiAgICAgICAgICAgICAgICAidiI6ICIvYXJlYS/ms5Xlm70iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWKoOaLv+WkpyIsCiAgICAgICAgICAgICAgICAidiI6ICIvYXJlYS/liqDmi7/lpKciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuilv+ePreeJmSIsCiAgICAgICAgICAgICAgICAidiI6ICIvYXJlYS/opb/nj63niZkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuS/hOe9l+aWryIsCiAgICAgICAgICAgICAgICAidiI6ICIvYXJlYS/kv4TnvZfmlq8iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWFtuWugyIsCiAgICAgICAgICAgICAgICAidiI6ICIvYXJlYS/lhbblroMiCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogInllYXIiLAogICAgICAgICAgICAibmFtZSI6ICLlubTku6MiLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOoIiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyNSIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDI1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDI0IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMjQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjMiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAyMyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMiIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDIyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIxIiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMjEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjAiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAyMCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxOSIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDE5IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE4IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMTgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTciLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAxNyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNiIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDE2IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE1IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMTUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTQiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAxNCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxMyIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDEzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDEyIiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMTIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTEiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAxMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxMCIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDEwIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA5IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMDkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDgiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAwOCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwNyIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDA3IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA2IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMDYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDUiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAwNSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwNCIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDA0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDAzIiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMDMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDIiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAwMiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwMSIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDAxIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDAwIiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMDAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjE5OTkiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMTk5OSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMTk5OCIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8xOTk4IgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJieSIsCiAgICAgICAgICAgICJuYW1lIjogIuaOkuW6jyIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLml7bpl7QiLAogICAgICAgICAgICAgICAgInYiOiAiL2J5L3RpbWUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuS6uuawlCIsCiAgICAgICAgICAgICAgICAidiI6ICIvYnkvaGl0cyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6K+E5YiGIiwKICAgICAgICAgICAgICAgICJ2IjogIi9ieS9zY29yZSIKICAgICAgICAgICAgfV0KICAgICAgICB9XSwKICAgICAgICAiMjIiOiBbewogICAgICAgICAgICAia2V5IjogImNsYXNzIiwKICAgICAgICAgICAgIm5hbWUiOiAi57G75Z6LIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqCIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaQnueskSIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv5pCe56yRIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnu4/lhbgiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+e7j+WFuCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi54Ot6KGAIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/ng63ooYAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWCrOazqiIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv5YKs5rOqIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmsrvmhIgiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+ayu+aEiCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi54yO5aWHIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/njI7lpYciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWKseW/lyIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv5Yqx5b+XIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmiJjmlpciLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+aImOaWlyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5ZCO5a6rIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/lkI7lrqsiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuacuuaImCIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv5py65oiYIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmgYvniLEiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+aBi+eIsSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi55m+5ZCIIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/nmb7lkIgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuenkeW5uyIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv56eR5bm7IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlpYflubsiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+Wlh+W5uyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5o6o55CGIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/mjqjnkIYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuagoeWbrSIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv5qCh5ZutIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLov5DliqgiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+i/kOWKqCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6a2U5rOVIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/prZTms5UiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWOhuWPsiIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv5Y6G5Y+yIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLkvKrlqJgiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+S8quWomCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi576O5bCR5aWzIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/nvo7lsJHlpbMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuiQneiOiSIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv6JCd6I6JIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLkurLlrZAiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+S6suWtkCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6Z2S5pilIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/pnZLmmKUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWGkumZqSIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv5YaS6ZmpIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnq57mioAiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+ernuaKgCIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAiYXJlYSIsCiAgICAgICAgICAgICJuYW1lIjogIuWcsOWMuiIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlhajpg6giLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLml6XmnKwiLAogICAgICAgICAgICAgICAgInYiOiAiL2FyZWEv5pel5pysIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmrKfnvo4iLAogICAgICAgICAgICAgICAgInYiOiAiL2FyZWEv5qyn576OIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlhbbku5YiLAogICAgICAgICAgICAgICAgInYiOiAiL2FyZWEv5YW25LuWIgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJ5ZWFyIiwKICAgICAgICAgICAgIm5hbWUiOiAi5bm05LujIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqCIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjUiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAyNSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyNCIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDI0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIzIiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMjMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjIiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAyMiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMSIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDIxIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIwIiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMjAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTkiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAxOSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxOCIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDE4IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE3IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMTciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTYiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAxNiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNSIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDE1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE0IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMTQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTMiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAxMyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxMiIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDEyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDExIiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMTEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTAiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAxMCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwOSIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDA5IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA4IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMDgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDciLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAwNyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwNiIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDA2IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA1IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMDUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDQiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAwNCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwMyIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDAzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDAyIiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMDIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDEiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAwMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwMCIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDAwIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIxOTk5IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzE5OTkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjE5OTgiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMTk5OCIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAiYnkiLAogICAgICAgICAgICAibmFtZSI6ICLmjpLluo8iLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5pe26Ze0IiwKICAgICAgICAgICAgICAgICJ2IjogIi9ieS90aW1lIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLkurrmsJQiLAogICAgICAgICAgICAgICAgInYiOiAiL2J5L2hpdHMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuivhOWIhiIsCiAgICAgICAgICAgICAgICAidiI6ICIvYnkvc2NvcmUiCiAgICAgICAgICAgIH1dCiAgICAgICAgfV0KICAgIH0sCiAgICBjbGFzc19wYXJzZTogJy5mZWQtcG9wcy1saXN0OmVxKDApJiZsaTpndCgwKTpsdCg2KTthJiZUZXh0O2EmJmhyZWY7LiovKC4qPykuaHRtbCcsCn0= \ No newline at end of file diff --git a/潇洒/js/QMDM.js b/潇洒/js/QMDM.js new file mode 100644 index 0000000..f20effd --- /dev/null +++ b/潇洒/js/QMDM.js @@ -0,0 +1 @@ +dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+Wlh+exs+WKqOa8qycsCiAgICBob3N0OiAnaHR0cDovL3d3dy5xaW1pcWltaS5uZXQnLAogICAgdXJsOiAnL3Nob3cvZnljbGFzc2Z5ZmlsdGVyLmh0bWwnLAogICAgZmlsdGVyYWJsZTogMSwgLy/mmK/lkKblkK/nlKjliIbnsbvnrZvpgIksCiAgICBmaWx0ZXJfdXJsOiAne3tmbC5hcmVhfX17e2ZsLmJ5fX17e2ZsLmNsYXNzfX17e2ZsLmxldHRlcn19L3BhZ2UvZnlwYWdle3tmbC55ZWFyfX0nLAogICAgZmlsdGVyOiB7CiAgICAgICAgInhpbmZhbiI6IFt7CiAgICAgICAgICAgICJrZXkiOiAiY2xhc3MiLAogICAgICAgICAgICAibmFtZSI6ICLnsbvlnosiLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOoIiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5YaS6ZmpIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/lhpLpmakiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIueDreihgCIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv54Ot6KGAIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlpYflubsiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+Wlh+W5uyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5oGL54ixIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/mgYvniLEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuagoeWbrSIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv5qCh5ZutIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlkI7lrqsiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+WQjuWuqyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pCe56yRIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/mkJ7nrJEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuayu+aEiCIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv5rK75oSIIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnpZ7prZQiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+elnumtlCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6a2U5rOVIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/prZTms5UiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIueZvuWQiCIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv55m+5ZCIIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmjqjnkIYiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+aOqOeQhiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi56eR5bm7IiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/np5HlubsiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuernuaKgCIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv56ue5oqAIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmgqznlpEiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+aCrOeWkSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6Z2S5pilIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/pnZLmmKUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaImOS6iSIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv5oiY5LqJIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLokJ3ojokiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+iQneiOiSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6a2U5bm7IiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/prZTlubsiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaImOaWlyIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv5oiY5paXIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLml6XluLgiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+aXpeW4uCIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAiYXJlYSIsCiAgICAgICAgICAgICJuYW1lIjogIuWcsOWMuiIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlhajpg6giLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLml6XmnKwiLAogICAgICAgICAgICAgICAgInYiOiAiL2FyZWEv5pel5pysLyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5aSn6ZmGIiwKICAgICAgICAgICAgICAgICJ2IjogIi9hcmVhL+S4reWbvS8iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuasp+e+jiIsCiAgICAgICAgICAgICAgICAidiI6ICIvYXJlYS/mrKfnvo4vIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLpn6nlm70iLAogICAgICAgICAgICAgICAgInYiOiAiL2FyZWEv6Z+p5Zu9LyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5riv5Y+wIiwKICAgICAgICAgICAgICAgICJ2IjogIi9hcmVhL+a4r+WPsC8iCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogInllYXIiLAogICAgICAgICAgICAibmFtZSI6ICLlubTku70iLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOoIiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyNSIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDI1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDI0IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMjQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjMiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAyMyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMiIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDIyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIxIiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMjEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjAiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAyMCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxOSIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDE5IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE4IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMTgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTciLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAxNyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNiIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDE2IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE1IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMTUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTQiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAxNCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxMyIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDEzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDEyIiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMTIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTEiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAxMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxMCIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDEwIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA5IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMDkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDgiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAwOCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwNyIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDA3IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA2IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMDYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDUiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAwNSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwNCIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDA0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDAzIiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMDMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDIiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAwMiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwMSIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDAxIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDAwIiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMDAiCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogImxldHRlciIsCiAgICAgICAgICAgICJuYW1lIjogIuWtl+avjSIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlrZfmr40iLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJBIiwKICAgICAgICAgICAgICAgICJ2IjogIi9sZXR0ZXIvQSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiQiIsCiAgICAgICAgICAgICAgICAidiI6ICIvbGV0dGVyL0IiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkMiLAogICAgICAgICAgICAgICAgInYiOiAiL2xldHRlci9DIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJEIiwKICAgICAgICAgICAgICAgICJ2IjogIi9sZXR0ZXIvRCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiRSIsCiAgICAgICAgICAgICAgICAidiI6ICIvbGV0dGVyL0UiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkYiLAogICAgICAgICAgICAgICAgInYiOiAiL2xldHRlci9GIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJHIiwKICAgICAgICAgICAgICAgICJ2IjogIi9sZXR0ZXIvRyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiSCIsCiAgICAgICAgICAgICAgICAidiI6ICIvbGV0dGVyL0giCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkkiLAogICAgICAgICAgICAgICAgInYiOiAiL2xldHRlci9JIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJKIiwKICAgICAgICAgICAgICAgICJ2IjogIi9sZXR0ZXIvSiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiSyIsCiAgICAgICAgICAgICAgICAidiI6ICIvbGV0dGVyL0siCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkwiLAogICAgICAgICAgICAgICAgInYiOiAiL2xldHRlci9MIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJNIiwKICAgICAgICAgICAgICAgICJ2IjogIi9sZXR0ZXIvTSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiTiIsCiAgICAgICAgICAgICAgICAidiI6ICIvbGV0dGVyL04iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIk8iLAogICAgICAgICAgICAgICAgInYiOiAiL2xldHRlci9PIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJQIiwKICAgICAgICAgICAgICAgICJ2IjogIi9sZXR0ZXIvUCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiUSIsCiAgICAgICAgICAgICAgICAidiI6ICIvbGV0dGVyL1EiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIlIiLAogICAgICAgICAgICAgICAgInYiOiAiL2xldHRlci9SIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJTIiwKICAgICAgICAgICAgICAgICJ2IjogIi9sZXR0ZXIvUyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiVCIsCiAgICAgICAgICAgICAgICAidiI6ICIvbGV0dGVyL1QiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIlUiLAogICAgICAgICAgICAgICAgInYiOiAiL2xldHRlci9VIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJWIiwKICAgICAgICAgICAgICAgICJ2IjogIi9sZXR0ZXIvViIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiVyIsCiAgICAgICAgICAgICAgICAidiI6ICIvbGV0dGVyL1ciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIlgiLAogICAgICAgICAgICAgICAgInYiOiAiL2xldHRlci9YIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJZIiwKICAgICAgICAgICAgICAgICJ2IjogIi9sZXR0ZXIvWSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiWiIsCiAgICAgICAgICAgICAgICAidiI6ICIvbGV0dGVyL1oiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjAtOSIsCiAgICAgICAgICAgICAgICAidiI6ICIvbGV0dGVyLzAtOSIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAiYnkiLAogICAgICAgICAgICAibmFtZSI6ICLmjpLluo8iLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5pe26Ze0IiwKICAgICAgICAgICAgICAgICJ2IjogIi9ieS90aW1lIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLkurrmsJQiLAogICAgICAgICAgICAgICAgInYiOiAiL2J5L2hpdHMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuivhOWIhiIsCiAgICAgICAgICAgICAgICAidiI6ICIvYnkvc2NvcmUiCiAgICAgICAgICAgIH1dCiAgICAgICAgfV0sCiAgICAgICAgInJpbWFuIjogW3sKICAgICAgICAgICAgImtleSI6ICJjbGFzcyIsCiAgICAgICAgICAgICJuYW1lIjogIuexu+WeiyIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlhajpg6giLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlhpLpmakiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+WGkumZqSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi54Ot6KGAIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/ng63ooYAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWlh+W5uyIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv5aWH5bm7IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmgYvniLEiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+aBi+eIsSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5qCh5ZutIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/moKHlm60iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWQjuWuqyIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv5ZCO5a6rIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmkJ7nrJEiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+aQnueskSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5rK75oSIIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/msrvmhIgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuelnumtlCIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv56We6a2UIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLprZTms5UiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+mtlOazlSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi55m+5ZCIIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/nmb7lkIgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaOqOeQhiIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv5o6o55CGIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnp5HlubsiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+enkeW5uyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi56ue5oqAIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/nq57mioAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaCrOeWkSIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv5oKs55aRIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLpnZLmmKUiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+mdkuaYpSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5oiY5LqJIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/miJjkuokiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuiQneiOiSIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv6JCd6I6JIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLprZTlubsiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+mtlOW5uyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5oiY5paXIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/miJjmlpciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaXpeW4uCIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv5pel5bi4IgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJhcmVhIiwKICAgICAgICAgICAgIm5hbWUiOiAi5Zyw5Yy6IiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqCIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaXpeacrCIsCiAgICAgICAgICAgICAgICAidiI6ICIvYXJlYS/ml6XmnKwvIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlpKfpmYYiLAogICAgICAgICAgICAgICAgInYiOiAiL2FyZWEv5Lit5Zu9LyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5qyn576OIiwKICAgICAgICAgICAgICAgICJ2IjogIi9hcmVhL+asp+e+ji8iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIumfqeWbvSIsCiAgICAgICAgICAgICAgICAidiI6ICIvYXJlYS/pn6nlm70vIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmuK/lj7AiLAogICAgICAgICAgICAgICAgInYiOiAiL2FyZWEv5riv5Y+wLyIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAieWVhciIsCiAgICAgICAgICAgICJuYW1lIjogIuW5tOS7vSIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlhajpg6giLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDI1IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMjUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjQiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAyNCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMyIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDIzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIyIiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMjIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjEiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAyMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMCIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDIwIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE5IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMTkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTgiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAxOCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNyIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDE3IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE2IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMTYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTUiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAxNSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNCIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDE0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDEzIiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMTMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTIiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAxMiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxMSIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDExIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDEwIiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMTAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDkiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAwOSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwOCIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDA4IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA3IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMDciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDYiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAwNiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwNSIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDA1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA0IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMDQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDMiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAwMyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwMiIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDAyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDAxIiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMDEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDAiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAwMCIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAibGV0dGVyIiwKICAgICAgICAgICAgIm5hbWUiOiAi5a2X5q+NIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWtl+avjSIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkEiLAogICAgICAgICAgICAgICAgInYiOiAiL2xldHRlci9BIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJCIiwKICAgICAgICAgICAgICAgICJ2IjogIi9sZXR0ZXIvQiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiQyIsCiAgICAgICAgICAgICAgICAidiI6ICIvbGV0dGVyL0MiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkQiLAogICAgICAgICAgICAgICAgInYiOiAiL2xldHRlci9EIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJFIiwKICAgICAgICAgICAgICAgICJ2IjogIi9sZXR0ZXIvRSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiRiIsCiAgICAgICAgICAgICAgICAidiI6ICIvbGV0dGVyL0YiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkciLAogICAgICAgICAgICAgICAgInYiOiAiL2xldHRlci9HIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJIIiwKICAgICAgICAgICAgICAgICJ2IjogIi9sZXR0ZXIvSCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiSSIsCiAgICAgICAgICAgICAgICAidiI6ICIvbGV0dGVyL0kiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkoiLAogICAgICAgICAgICAgICAgInYiOiAiL2xldHRlci9KIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJLIiwKICAgICAgICAgICAgICAgICJ2IjogIi9sZXR0ZXIvSyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiTCIsCiAgICAgICAgICAgICAgICAidiI6ICIvbGV0dGVyL0wiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIk0iLAogICAgICAgICAgICAgICAgInYiOiAiL2xldHRlci9NIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJOIiwKICAgICAgICAgICAgICAgICJ2IjogIi9sZXR0ZXIvTiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiTyIsCiAgICAgICAgICAgICAgICAidiI6ICIvbGV0dGVyL08iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIlAiLAogICAgICAgICAgICAgICAgInYiOiAiL2xldHRlci9QIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJRIiwKICAgICAgICAgICAgICAgICJ2IjogIi9sZXR0ZXIvUSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiUiIsCiAgICAgICAgICAgICAgICAidiI6ICIvbGV0dGVyL1IiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIlMiLAogICAgICAgICAgICAgICAgInYiOiAiL2xldHRlci9TIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJUIiwKICAgICAgICAgICAgICAgICJ2IjogIi9sZXR0ZXIvVCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiVSIsCiAgICAgICAgICAgICAgICAidiI6ICIvbGV0dGVyL1UiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIlYiLAogICAgICAgICAgICAgICAgInYiOiAiL2xldHRlci9WIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJXIiwKICAgICAgICAgICAgICAgICJ2IjogIi9sZXR0ZXIvVyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiWCIsCiAgICAgICAgICAgICAgICAidiI6ICIvbGV0dGVyL1giCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIlkiLAogICAgICAgICAgICAgICAgInYiOiAiL2xldHRlci9ZIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJaIiwKICAgICAgICAgICAgICAgICJ2IjogIi9sZXR0ZXIvWiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMC05IiwKICAgICAgICAgICAgICAgICJ2IjogIi9sZXR0ZXIvMC05IgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJieSIsCiAgICAgICAgICAgICJuYW1lIjogIuaOkuW6jyIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLml7bpl7QiLAogICAgICAgICAgICAgICAgInYiOiAiL2J5L3RpbWUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuS6uuawlCIsCiAgICAgICAgICAgICAgICAidiI6ICIvYnkvaGl0cyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6K+E5YiGIiwKICAgICAgICAgICAgICAgICJ2IjogIi9ieS9zY29yZSIKICAgICAgICAgICAgfV0KICAgICAgICB9XSwKICAgICAgICAiZ3VvbWFuIjogW3sKICAgICAgICAgICAgImtleSI6ICJjbGFzcyIsCiAgICAgICAgICAgICJuYW1lIjogIuexu+WeiyIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlhajpg6giLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlhpLpmakiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+WGkumZqSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi54Ot6KGAIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/ng63ooYAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWlh+W5uyIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv5aWH5bm7IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmgYvniLEiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+aBi+eIsSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5qCh5ZutIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/moKHlm60iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWQjuWuqyIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv5ZCO5a6rIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmkJ7nrJEiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+aQnueskSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5rK75oSIIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/msrvmhIgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuelnumtlCIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv56We6a2UIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLprZTms5UiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+mtlOazlSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi55m+5ZCIIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/nmb7lkIgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaOqOeQhiIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv5o6o55CGIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnp5HlubsiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+enkeW5uyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi56ue5oqAIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/nq57mioAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaCrOeWkSIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv5oKs55aRIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLpnZLmmKUiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+mdkuaYpSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5oiY5LqJIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/miJjkuokiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuiQneiOiSIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv6JCd6I6JIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLprZTlubsiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+mtlOW5uyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5oiY5paXIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/miJjmlpciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaXpeW4uCIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv5pel5bi4IgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJhcmVhIiwKICAgICAgICAgICAgIm5hbWUiOiAi5Zyw5Yy6IiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqCIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaXpeacrCIsCiAgICAgICAgICAgICAgICAidiI6ICIvYXJlYS/ml6XmnKwvIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlpKfpmYYiLAogICAgICAgICAgICAgICAgInYiOiAiL2FyZWEv5Lit5Zu9LyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5qyn576OIiwKICAgICAgICAgICAgICAgICJ2IjogIi9hcmVhL+asp+e+ji8iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIumfqeWbvSIsCiAgICAgICAgICAgICAgICAidiI6ICIvYXJlYS/pn6nlm70vIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmuK/lj7AiLAogICAgICAgICAgICAgICAgInYiOiAiL2FyZWEv5riv5Y+wLyIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAieWVhciIsCiAgICAgICAgICAgICJuYW1lIjogIuW5tOS7vSIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlhajpg6giLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDI1IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMjUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjQiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAyNCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMyIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDIzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIyIiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMjIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjEiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAyMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMCIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDIwIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE5IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMTkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTgiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAxOCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNyIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDE3IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE2IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMTYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTUiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAxNSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNCIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDE0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDEzIiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMTMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTIiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAxMiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxMSIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDExIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDEwIiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMTAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDkiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAwOSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwOCIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDA4IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA3IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMDciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDYiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAwNiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwNSIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDA1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA0IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMDQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDMiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAwMyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwMiIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDAyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDAxIiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMDEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDAiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAwMCIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAibGV0dGVyIiwKICAgICAgICAgICAgIm5hbWUiOiAi5a2X5q+NIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWtl+avjSIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkEiLAogICAgICAgICAgICAgICAgInYiOiAiL2xldHRlci9BIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJCIiwKICAgICAgICAgICAgICAgICJ2IjogIi9sZXR0ZXIvQiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiQyIsCiAgICAgICAgICAgICAgICAidiI6ICIvbGV0dGVyL0MiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkQiLAogICAgICAgICAgICAgICAgInYiOiAiL2xldHRlci9EIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJFIiwKICAgICAgICAgICAgICAgICJ2IjogIi9sZXR0ZXIvRSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiRiIsCiAgICAgICAgICAgICAgICAidiI6ICIvbGV0dGVyL0YiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkciLAogICAgICAgICAgICAgICAgInYiOiAiL2xldHRlci9HIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJIIiwKICAgICAgICAgICAgICAgICJ2IjogIi9sZXR0ZXIvSCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiSSIsCiAgICAgICAgICAgICAgICAidiI6ICIvbGV0dGVyL0kiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkoiLAogICAgICAgICAgICAgICAgInYiOiAiL2xldHRlci9KIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJLIiwKICAgICAgICAgICAgICAgICJ2IjogIi9sZXR0ZXIvSyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiTCIsCiAgICAgICAgICAgICAgICAidiI6ICIvbGV0dGVyL0wiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIk0iLAogICAgICAgICAgICAgICAgInYiOiAiL2xldHRlci9NIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJOIiwKICAgICAgICAgICAgICAgICJ2IjogIi9sZXR0ZXIvTiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiTyIsCiAgICAgICAgICAgICAgICAidiI6ICIvbGV0dGVyL08iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIlAiLAogICAgICAgICAgICAgICAgInYiOiAiL2xldHRlci9QIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJRIiwKICAgICAgICAgICAgICAgICJ2IjogIi9sZXR0ZXIvUSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiUiIsCiAgICAgICAgICAgICAgICAidiI6ICIvbGV0dGVyL1IiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIlMiLAogICAgICAgICAgICAgICAgInYiOiAiL2xldHRlci9TIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJUIiwKICAgICAgICAgICAgICAgICJ2IjogIi9sZXR0ZXIvVCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiVSIsCiAgICAgICAgICAgICAgICAidiI6ICIvbGV0dGVyL1UiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIlYiLAogICAgICAgICAgICAgICAgInYiOiAiL2xldHRlci9WIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJXIiwKICAgICAgICAgICAgICAgICJ2IjogIi9sZXR0ZXIvVyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiWCIsCiAgICAgICAgICAgICAgICAidiI6ICIvbGV0dGVyL1giCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIlkiLAogICAgICAgICAgICAgICAgInYiOiAiL2xldHRlci9ZIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJaIiwKICAgICAgICAgICAgICAgICJ2IjogIi9sZXR0ZXIvWiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMC05IiwKICAgICAgICAgICAgICAgICJ2IjogIi9sZXR0ZXIvMC05IgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJieSIsCiAgICAgICAgICAgICJuYW1lIjogIuaOkuW6jyIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLml7bpl7QiLAogICAgICAgICAgICAgICAgInYiOiAiL2J5L3RpbWUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuS6uuawlCIsCiAgICAgICAgICAgICAgICAidiI6ICIvYnkvaGl0cyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6K+E5YiGIiwKICAgICAgICAgICAgICAgICJ2IjogIi9ieS9zY29yZSIKICAgICAgICAgICAgfV0KICAgICAgICB9XSwKICAgICAgICAiamNkbSI6IFt7CiAgICAgICAgICAgICJrZXkiOiAiY2xhc3MiLAogICAgICAgICAgICAibmFtZSI6ICLnsbvlnosiLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOoIiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5YaS6ZmpIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/lhpLpmakiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIueDreihgCIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv54Ot6KGAIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlpYflubsiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+Wlh+W5uyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5oGL54ixIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/mgYvniLEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuagoeWbrSIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv5qCh5ZutIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlkI7lrqsiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+WQjuWuqyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pCe56yRIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/mkJ7nrJEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuayu+aEiCIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv5rK75oSIIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnpZ7prZQiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+elnumtlCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6a2U5rOVIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/prZTms5UiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIueZvuWQiCIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv55m+5ZCIIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmjqjnkIYiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+aOqOeQhiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi56eR5bm7IiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/np5HlubsiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuernuaKgCIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv56ue5oqAIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmgqznlpEiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+aCrOeWkSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6Z2S5pilIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/pnZLmmKUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaImOS6iSIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv5oiY5LqJIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLokJ3ojokiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+iQneiOiSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6a2U5bm7IiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/prZTlubsiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaImOaWlyIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv5oiY5paXIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLml6XluLgiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+aXpeW4uCIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAiYXJlYSIsCiAgICAgICAgICAgICJuYW1lIjogIuWcsOWMuiIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlhajpg6giLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLml6XmnKwiLAogICAgICAgICAgICAgICAgInYiOiAiL2FyZWEv5pel5pysLyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5aSn6ZmGIiwKICAgICAgICAgICAgICAgICJ2IjogIi9hcmVhL+S4reWbvS8iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuasp+e+jiIsCiAgICAgICAgICAgICAgICAidiI6ICIvYXJlYS/mrKfnvo4vIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLpn6nlm70iLAogICAgICAgICAgICAgICAgInYiOiAiL2FyZWEv6Z+p5Zu9LyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5riv5Y+wIiwKICAgICAgICAgICAgICAgICJ2IjogIi9hcmVhL+a4r+WPsC8iCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogInllYXIiLAogICAgICAgICAgICAibmFtZSI6ICLlubTku70iLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOoIiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyNSIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDI1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDI0IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMjQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjMiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAyMyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMiIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDIyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIxIiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMjEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjAiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAyMCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxOSIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDE5IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE4IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMTgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTciLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAxNyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNiIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDE2IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE1IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMTUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTQiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAxNCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxMyIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDEzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDEyIiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMTIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTEiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAxMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxMCIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDEwIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA5IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMDkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDgiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAwOCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwNyIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDA3IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA2IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMDYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDUiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAwNSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwNCIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDA0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDAzIiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMDMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDIiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAwMiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwMSIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDAxIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDAwIiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMDAiCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogImxldHRlciIsCiAgICAgICAgICAgICJuYW1lIjogIuWtl+avjSIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlrZfmr40iLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJBIiwKICAgICAgICAgICAgICAgICJ2IjogIi9sZXR0ZXIvQSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiQiIsCiAgICAgICAgICAgICAgICAidiI6ICIvbGV0dGVyL0IiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkMiLAogICAgICAgICAgICAgICAgInYiOiAiL2xldHRlci9DIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJEIiwKICAgICAgICAgICAgICAgICJ2IjogIi9sZXR0ZXIvRCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiRSIsCiAgICAgICAgICAgICAgICAidiI6ICIvbGV0dGVyL0UiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkYiLAogICAgICAgICAgICAgICAgInYiOiAiL2xldHRlci9GIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJHIiwKICAgICAgICAgICAgICAgICJ2IjogIi9sZXR0ZXIvRyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiSCIsCiAgICAgICAgICAgICAgICAidiI6ICIvbGV0dGVyL0giCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkkiLAogICAgICAgICAgICAgICAgInYiOiAiL2xldHRlci9JIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJKIiwKICAgICAgICAgICAgICAgICJ2IjogIi9sZXR0ZXIvSiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiSyIsCiAgICAgICAgICAgICAgICAidiI6ICIvbGV0dGVyL0siCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkwiLAogICAgICAgICAgICAgICAgInYiOiAiL2xldHRlci9MIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJNIiwKICAgICAgICAgICAgICAgICJ2IjogIi9sZXR0ZXIvTSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiTiIsCiAgICAgICAgICAgICAgICAidiI6ICIvbGV0dGVyL04iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIk8iLAogICAgICAgICAgICAgICAgInYiOiAiL2xldHRlci9PIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJQIiwKICAgICAgICAgICAgICAgICJ2IjogIi9sZXR0ZXIvUCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiUSIsCiAgICAgICAgICAgICAgICAidiI6ICIvbGV0dGVyL1EiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIlIiLAogICAgICAgICAgICAgICAgInYiOiAiL2xldHRlci9SIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJTIiwKICAgICAgICAgICAgICAgICJ2IjogIi9sZXR0ZXIvUyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiVCIsCiAgICAgICAgICAgICAgICAidiI6ICIvbGV0dGVyL1QiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIlUiLAogICAgICAgICAgICAgICAgInYiOiAiL2xldHRlci9VIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJWIiwKICAgICAgICAgICAgICAgICJ2IjogIi9sZXR0ZXIvViIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiVyIsCiAgICAgICAgICAgICAgICAidiI6ICIvbGV0dGVyL1ciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIlgiLAogICAgICAgICAgICAgICAgInYiOiAiL2xldHRlci9YIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJZIiwKICAgICAgICAgICAgICAgICJ2IjogIi9sZXR0ZXIvWSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiWiIsCiAgICAgICAgICAgICAgICAidiI6ICIvbGV0dGVyL1oiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjAtOSIsCiAgICAgICAgICAgICAgICAidiI6ICIvbGV0dGVyLzAtOSIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAiYnkiLAogICAgICAgICAgICAibmFtZSI6ICLmjpLluo8iLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5pe26Ze0IiwKICAgICAgICAgICAgICAgICJ2IjogIi9ieS90aW1lIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLkurrmsJQiLAogICAgICAgICAgICAgICAgInYiOiAiL2J5L2hpdHMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuivhOWIhiIsCiAgICAgICAgICAgICAgICAidiI6ICIvYnkvc2NvcmUiCiAgICAgICAgICAgIH1dCiAgICAgICAgfV0KICAgIH0sCiAgICBzZWFyY2hhYmxlOiAyLCAvL+aYr+WQpuWQr+eUqOWFqOWxgOaQnOe0oiwKICAgIGhlYWRlcnM6IHsgLy/nvZHnq5nnmoTor7fmsYLlpLQs5a6M5pW05pSv5oyB5omA5pyJ55qELOW4uOW4pnVh5ZKMY29va2llcwogICAgICAgICdVc2VyLUFnZW50JzogJ1BDX1VBJywKICAgIH0sCiAgICBjbGFzc19wYXJzZTogJyNuYXYgbGk7YSYmVGV4dDthJiZocmVmOy4qLyhcXHcrKS5odG1sJywKICAgIGNhdGVfZXhjbHVkZTogJ+eVque7hOS4k+mimHzmnIDov5Hmm7TmlrAnLAogICAgcGxheV9wYXJzZTogdHJ1ZSwKICAgIGxhenk6IGBqczoKCQl2YXIgaHRtbCA9IEpTT04ucGFyc2UocmVxdWVzdChpbnB1dCkubWF0Y2goL3IgcGxheWVyXy4qPz0oLio/KTwvKVsxXSk7CgkJdmFyIHVybCA9IGh0bWwudXJsOwoJCWlmIChodG1sLmVuY3J5cHQgPT0gJzEnKSB7CgkJCXVybCA9IHVuZXNjYXBlKHVybCkKCQl9IGVsc2UgaWYgKGh0bWwuZW5jcnlwdCA9PSAnMicpIHsKCQkJdXJsID0gdW5lc2NhcGUoYmFzZTY0RGVjb2RlKHVybCkpCgkJfQoJCWlmICgvXFwubTN1OHxcXC5tcDQvLnRlc3QodXJsKSkgewoJCQlpbnB1dCA9IHsKCQkJCWp4OiAwLAoJCQkJdXJsOiB1cmwsCgkJCQlwYXJzZTogMAoJCQl9CgkJfSBlbHNlIHsKCQkJaW5wdXQKCQl9CglgLAogICAgbGltaXQ6IDYsCiAgICDmjqjojZA6ICcqOyo7KjsudGV4dCYmVGV4dDsqJywKICAgIOS4gOe6pzogJy5pbWctbGlzdCBsaTthJiZ0aXRsZTtpbWcmJnNyYztpJiZUZXh0O2EmJmhyZWYnLAogICAg5LqM57qnOiB7CiAgICAgICAgInRpdGxlIjogImgxJiZUZXh0O2RsLmZuLWxlZnQ6ZXEoMykmJlRleHQiLAogICAgICAgICJpbWciOiAiLmRldGFpbC1waWMmJmltZyYmc3JjIiwKICAgICAgICAiZGVzYyI6ICJkbC5mbi1sZWZ0OmVxKDIpJiZUZXh0Ozs7Lm55emh1eS0tZHQmJlRleHQ7LmZuLXJpZ2h0OmVxKDApLS1kdCYmVGV4dCIsCiAgICAgICAgImNvbnRlbnQiOiAiLnRqdXFpbmcmJlRleHQiLAogICAgICAgICJ0YWJzIjogIi5kb3duLXRpdGxlIGgyIiwKICAgICAgICAibGlzdHMiOiAiLnZpZGVvX2xpc3Q6ZXEoI2lkKSBhIgogICAgfSwKICAgIHNlYXJjaFVybDogJy9pbmRleC5waHAvYWpheC9zdWdnZXN0P21pZD0xJndkPSoqJmxpbWl0PTUwJywKICAgIGRldGFpbFVybDogJy9kZXRhaWwvZnlpZC5odG1sJywgLy/pnZ7lv4Xloass5LqM57qn6K+m5oOF5ou85o6l6ZO+5o6lCiAgICDmkJzntKI6ICdqc29uOmxpc3Q7bmFtZTtwaWM7O2lkJywKfQ== \ No newline at end of file diff --git a/潇洒/js/全盘.js b/潇洒/js/QP.js similarity index 66% rename from 潇洒/js/全盘.js rename to 潇洒/js/QP.js index aefdd85..3509e7e 100644 --- a/潇洒/js/全盘.js +++ b/潇洒/js/QP.js @@ -10,7 +10,7 @@ var rule = { url: 'https://so.yuneu.com/search?q=fyclass&format=video&page=fypage', filter_url: '', detailUrl: '', - searchUrl: 'https://so.yuneu.com/search?q=**&format=video&exact=true&page=fypage', + searchUrl: 'https://so.yuneu.com/search?q=**&format=video&page=fypage', searchable: 1, quickSearch: 1, filterable: 1, @@ -25,7 +25,7 @@ var rule = { limit: 9, double: false, // 推荐: '*', - 一级: 'js:\n let html = fetch(input);\n let list = pdfa(html, "body&&.semi-space-medium-vertical");\n VODS = list.map(x => {\n let remarks = pdfh(x, "div&&img&&alt");\n // 过滤掉包含"迅雷云盘"的内容\n if(remarks.includes("迅雷云盘") || remarks.includes("115") || remarks.includes("阿里")) return null;\n return {\n vod_name: pdfh(x, "div&&a&&title"),\n vod_pic: \'https://img0.baidu.com/it/u=2841223652,2325996620&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500\',\n vod_remarks: remarks,\n vod_content: remarks,\n vod_id: pdfh(x, "div&&a&&href")\n }\n }).filter(x => x !== null);\n ', + 一级: 'js:\n let html = fetch(input);\n let list = pdfa(html, "body&&.semi-space-medium-vertical");\n VODS = list.map(x => {\n let remarks = pdfh(x, "div&&img&&alt");\n // 过滤掉包含"迅雷云盘"的内容\n if(remarks.includes("迅雷云盘")) return null;\n return {\n vod_name: pdfh(x, "div&&a&&title"),\n vod_pic: \'https://img0.baidu.com/it/u=2841223652,2325996620&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500\',\n vod_remarks: remarks,\n vod_content: remarks,\n vod_id: pdfh(x, "div&&a&&href")\n }\n }).filter(x => x !== null);\n ', 二级: { title: 'h1&&Text', img: 'img&&src', @@ -34,7 +34,7 @@ var rule = { tabs: "js:TABS = ['全盘搜']", lists: "js:\n LISTS = [];\n let lists1 = pdfa(html, 'body&&.semi-space-loose-vertical').map(it => {\n let _tt = pdfh(it, 'span&&title');\n let _uu = pdfh(it, 'a&&href');\n return _tt + '$' + _uu;\n });\n LISTS.push(lists1);\n ", }, - 搜索: 'js:\n let html = fetch(input);\n let list = pdfa(html, "body&&.semi-space-medium-vertical");\n VODS = list.map(x => {\n let remarks = pdfh(x, "div&&img&&alt");\n // 过滤掉包含"迅雷云盘"的内容\n if(remarks.includes("迅雷云盘") || remarks.includes("115") || remarks.includes("阿里")) return null;\n return {\n vod_name: pdfh(x, "div&&a&&title"),\n vod_pic: \'https://img0.baidu.com/it/u=2841223652,2325996620&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500\',\n vod_remarks: remarks,\n vod_content: remarks,\n vod_id: pdfh(x, "div&&a&&href")\n }\n }).filter(x => x !== null);\n ', + 搜索: 'js:\n let html = fetch(input);\n let list = pdfa(html, "body&&.semi-space-medium-vertical");\n VODS = list.map(x => {\n let remarks = pdfh(x, "div&&img&&alt");\n // 过滤掉包含"迅雷云盘"的内容\n if(remarks.includes("迅雷云盘")) return null;\n return {\n vod_name: pdfh(x, "div&&a&&title"),\n vod_pic: \'https://img0.baidu.com/it/u=2841223652,2325996620&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500\',\n vod_remarks: remarks,\n vod_content: remarks,\n vod_id: pdfh(x, "div&&a&&href")\n }\n }).filter(x => x !== null);\n ', cate_exclude: '首页|留言|APP|下载|资讯|新闻|动态', tab_exclude: '猜你|喜欢|下载|剧情|榜|评论', 类型: '影视', diff --git a/潇洒/js/人人分享站.js b/潇洒/js/RR.js similarity index 100% rename from 潇洒/js/人人分享站.js rename to 潇洒/js/RR.js diff --git a/潇洒/js/人人电影网.js b/潇洒/js/RRDYW.js similarity index 100% rename from 潇洒/js/人人电影网.js rename to 潇洒/js/RRDYW.js diff --git a/潇洒/js/SX.js b/潇洒/js/SX.js new file mode 100644 index 0000000..7d06c85 --- /dev/null +++ b/潇洒/js/SX.js @@ -0,0 +1 @@ +dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+WPjOWtkOaYnycsCiAgICBob3N0OiAnaHR0cHM6Ly8xLnN0YXIyLmNuJywKICAgIGhvc3RKczogJycsCiAgICBoZWFkZXJzOiB7CiAgICAgICAgJ1VzZXItQWdlbnQnOiAnTW96aWxsYS81LjAgKExpbnV4OyBBbmRyb2lkIDExOyBQaXhlbCA1KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvOTAuMC40NDMwLjkxIE1vYmlsZSBTYWZhcmkvNTM3LjM2JywKICAgIH0sCiAgICDnvJbnoIE6ICd1dGYtOCcsCiAgICB0aW1lb3V0OiA1MDAwLAogICAgdXJsOiAnaHR0cHM6Ly8xLnN0YXIyLmNuL2Z5Y2xhc3MvJywKICAgIGZpbHRlcl91cmw6ICcnLAogICAgZGV0YWlsVXJsOiAnJywKICAgIHNlYXJjaFVybDogJ2h0dHBzOi8vMS5zdGFyMi5jbi9zZWFyY2gvP2tleXdvcmQ9KionLAogICAgc2VhcmNoYWJsZTogMSwKICAgIHF1aWNrU2VhcmNoOiAxLAogICAgZmlsdGVyYWJsZTogMSwKICAgIGNsYXNzX25hbWU6ICfnn63liacm5Zu95YmnJue7vOiJuibnlLXlvbEm6Z+p5pelJuiLsee+jiblpJbliacm5Yqo5ryrJywKICAgIGNsYXNzX3VybDogJ2RqJmp1Jnp5Jm12JnJoJnltJndqJmRtJywKICAgIHByb3h5X3J1bGU6ICcnLAogICAgc25pZmZlcjogZmFsc2UsCiAgICBpc1ZpZGVvOiAnJywKICAgIHBsYXlfcGFyc2U6IHRydWUsCiAgICBwYXJzZV91cmw6ICcnLAogICAgbGF6eTogImpzOlxuICAgICAgICBpbnB1dCA9ICdwdXNoOi8vJyArIGlucHV0O1xuICAgICIsCiAgICBsaW1pdDogOSwKICAgIGRvdWJsZTogZmFsc2UsCiAgICDmjqjojZA6ICcqJywKICAgIOS4gOe6pzogJ2pzOlxuICAgICAgICBsZXQgaHRtbCA9IGZldGNoKGlucHV0KTtcbiAgICAgICAgbGV0IGxpc3QgPSBwZGZhKGh0bWwsICIuZXJ4LWxpc3QmJmxpIik7XG4gICAgICAgIFZPRFMgPSBsaXN0Lm1hcCh4ID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdm9kX25hbWU6IHBkZmgoeCwgImEmJlRleHQiKSxcbiAgICAgICAgICAgICAgICB2b2RfcGljOiBcJ2h0dHBzOi8vZnMtaW0ta2VmdS43bW9vci1mczEuY29tL2x5LzRkMmMzZjAwLTdkNGMtMTFlNS1hZjE1LTQxYmY2M2FlNGVhMC8xNzQ2MjY5ODI3MTIwLzEuanBlZ1wnLFxuICAgICAgICAgICAgICAgIHZvZF9yZW1hcmtzOiBwZGZoKHgsICJhJiZUZXh0IiksXG4gICAgICAgICAgICAgICAgdm9kX2NvbnRlbnQ6IHBkZmgoeCwgImEmJlRleHQiKSxcbiAgICAgICAgICAgICAgICB2b2RfaWQ6IHBkZmgoeCwgImEmJmhyZWYiKVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAnLAogICAg5LqM57qnOiB7CiAgICAgICAgdGl0bGU6ICdoMSYmVGV4dCcsCiAgICAgICAgaW1nOiAnaHR0cHM6Ly9mcy1pbS1rZWZ1Ljdtb29yLWZzMS5jb20vbHkvNGQyYzNmMDAtN2Q0Yy0xMWU1LWFmMTUtNDFiZjYzYWU0ZWEwLzE3NDYyNjk4MjcxMjAvMS5qcGVnJywKICAgICAgICBkZXNjOiAnLmNhcmQtdGV4dDplcSgyKSYmVGV4dDs7OzsnLAogICAgICAgIGNvbnRlbnQ6ICcuY2FyZC10ZXh0OmVxKDApJiZUZXh0JywKICAgICAgICB0YWJzOiAianM6VEFCUyA9IFsn5Y+M5pifJ10iLAogICAgICAgIGxpc3RzOiAianM6XG4gICAgICAgICAgICBMSVNUUyA9IFtdO1xuICAgICAgICAgICAgbGV0IGxpc3RzMSA9IHBkZmEoaHRtbCwgJy5kbGlwcC1jb250LWJkJykubWFwKGl0ID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgX3R0ID0gcGRmaChpdCwgJ2EmJlRleHQnKTtcbiAgICAgICAgICAgICAgICBsZXQgX3V1ID0gcGRmaChpdCwgJ2EmJmhyZWYnKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gX3R0ICsgJyQnICsgX3V1O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBMSVNUUy5wdXNoKGxpc3RzMSk7XG4gICAgICAgICIsCiAgICB9LAogICAg5pCc57SiOiAnanM6XG4gICAgICAgIGxldCBodG1sID0gZmV0Y2goaW5wdXQpO1xuICAgICAgICBsZXQgbGlzdCA9IHBkZmEoaHRtbCwgIi5lcngtbGlzdCYmbGkiKTtcbiAgICAgICAgVk9EUyA9IGxpc3QubWFwKHggPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB2b2RfbmFtZTogcGRmaCh4LCAiYSYmVGV4dCIpLFxuICAgICAgICAgICAgICAgIHZvZF9waWM6IFwnaHR0cHM6Ly9mcy1pbS1rZWZ1Ljdtb29yLWZzMS5jb20vbHkvNGQyYzNmMDAtN2Q0Yy0xMWU1LWFmMTUtNDFiZjYzYWU0ZWEwLzE3NDYyNjk4MjcxMjAvMS5qcGVnXCcsIFxuICAgICAgICAgICAgICAgIHZvZF9yZW1hcmtzOiBwZGZoKHgsICJhJiZUZXh0IiksXG4gICAgICAgICAgICAgICAgdm9kX2NvbnRlbnQ6IHBkZmgoeCwgImEmJlRleHQiKSxcbiAgICAgICAgICAgICAgICB2b2RfaWQ6IHBkZmgoeCwgImEmJmhyZWYiKVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAnLAogICAgY2F0ZV9leGNsdWRlOiAn6aaW6aG1fOeVmeiogHxBUFB85LiL6L29fOi1hOiur3zmlrDpl7t85Yqo5oCBJywKICAgIHRhYl9leGNsdWRlOiAn54yc5L2gfOWWnOasonzkuIvovb185Ymn5oOFfOamnHzor4TorronLAogICAg57G75Z6LOiAn5b2x6KeGJywKICAgIGhvbWVVcmw6ICdodHRwczovLzEuc3RhcjIuY24nLAogICAg5LqM57qn6K6/6Zeu5YmNOiAnJywKICAgIGVuY29kaW5nOiAndXRmLTgnLAogICAgc2VhcmNoX2VuY29kaW5nOiAnJywKICAgIOWbvueJh+adpea6kDogJycsCiAgICDlm77niYfmm7/mjaI6ICcnLAogICAgcGxheV9qc29uOiBbXSwKICAgIHBhZ2Vjb3VudDoge30sCiAgICB0YWJfcmVtb3ZlOiBbXSwKICAgIHRhYl9vcmRlcjogW10sCiAgICB0YWJfcmVuYW1lOiB7fSwKfQ== \ No newline at end of file diff --git a/潇洒/js/TT.js b/潇洒/js/TT.js new file mode 100644 index 0000000..167e5b9 --- /dev/null +++ b/潇洒/js/TT.js @@ -0,0 +1 @@ +dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+ebmOaQnOWkqeWggicsCiAgICBob3N0OiAnaHR0cHM6Ly9wYW5zb3R0LmNvbS8nLAogICAgaG9zdEpzOiAnJywKICAgIGhlYWRlcnM6IHsKICAgICAgICAnVXNlci1BZ2VudCc6ICdNb3ppbGxhLzUuMCAoTGludXg7IEFuZHJvaWQgMTE7IFBpeGVsIDUpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS85MC4wLjQ0MzAuOTEgTW9iaWxlIFNhZmFyaS81MzcuMzYnLAogICAgfSwKICAgIOe8lueggTogJ3V0Zi04JywKICAgIHRpbWVvdXQ6IDUwMDAsCiAgICB1cmw6ICdodHRwczovL3BhbnNvdHQuY29tL3NlYXJjaD9xPWZ5Y2xhc3MmZm9ybWF0PXZpZGVvJnBhZ2U9ZnlwYWdlJywKICAgIGZpbHRlcl91cmw6ICcnLAogICAgZGV0YWlsVXJsOiAnJywKICAgIHNlYXJjaFVybDogJ2h0dHBzOi8vcGFuc290dC5jb20vc2VhcmNoP3E9KiomZm9ybWF0PXZpZGVvJmV4YWN0PXRydWUmcGFnZT1meXBhZ2UnLAogICAgc2VhcmNoYWJsZTogMSwKICAgIHF1aWNrU2VhcmNoOiAxLAogICAgZmlsdGVyYWJsZTogMSwKICAgIGNsYXNzX25hbWU6ICfliafpm4Ym55S15b2xJuefreWJpybliqjmvKsm57u86Im6JywKICAgIGNsYXNzX3VybDogJ+WJp+mbhibnlLXlvbEm55+t572R5YmnJuWKqOa8qybnu7zoibonLAogICAgcHJveHlfcnVsZTogJycsCiAgICBzbmlmZmVyOiBmYWxzZSwKICAgIGlzVmlkZW86ICcnLAogICAgcGxheV9wYXJzZTogdHJ1ZSwKICAgIHBhcnNlX3VybDogJycsCiAgICBsYXp5OiAianM6XG4gICAgICAgIGlucHV0ID0gJ3B1c2g6Ly8nICsgaW5wdXQ7XG4gICAgIiwKICAgIGxpbWl0OiA5LAogICAgZG91YmxlOiBmYWxzZSwKICAgIC8vIOaOqOiNkDogJyonLAogICAg5LiA57qnOiAnanM6XG4gICAgICAgIGxldCBodG1sID0gZmV0Y2goaW5wdXQpO1xuICAgICAgICBsZXQgbGlzdCA9IHBkZmEoaHRtbCwgImJvZHkmJi5zZW1pLXNwYWNlLW1lZGl1bS12ZXJ0aWNhbCIpO1xuICAgICAgICBWT0RTID0gbGlzdC5tYXAoeCA9PiB7XG4gICAgICAgICAgICBsZXQgcmVtYXJrcyA9IHBkZmgoeCwgImRpdiYmaW1nJiZhbHQiKTtcbiAgICAgICAgICAgIC8vIOi/h+a7pOaOieWMheWQqyLov4Xpm7fkupHnm5gi5oiWIjExNSLnmoTlhoXlrrlcbiAgICAgICAgICAgIGlmKHJlbWFya3MuaW5jbHVkZXMoIui/hembt+S6keebmCIpIHx8IHJlbWFya3MuaW5jbHVkZXMoIjExNSIpIHx8IHJlbWFya3MuaW5jbHVkZXMoIumYv+mHjCIpKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdm9kX25hbWU6IHBkZmgoeCwgImRpdiYmYSYmdGl0bGUiKSxcbiAgICAgICAgICAgICAgICB2b2RfcGljOiBcJ1wnLFxuICAgICAgICAgICAgICAgIHZvZF9yZW1hcmtzOiByZW1hcmtzLFxuICAgICAgICAgICAgICAgIHZvZF9jb250ZW50OiByZW1hcmtzLFxuICAgICAgICAgICAgICAgIHZvZF9pZDogcGRmaCh4LCAiZGl2JiZhJiZocmVmIilcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkuZmlsdGVyKHggPT4geCAhPT0gbnVsbCk7XG4gICAgJywKICAgIOS6jOe6pzogewogICAgICAgIHRpdGxlOiAnaDEmJlRleHQnLAogICAgICAgIGltZzogJ2ltZyYmc3JjJywKICAgICAgICBkZXNjOiAnLmNhcmQtdGV4dDplcSgyKSYmVGV4dDs7OzsnLAogICAgICAgIGNvbnRlbnQ6ICdib2R5JiYuc2VtaS1zcGFjZS1sb29zZS12ZXJ0aWNhbCYmYSYmaHJlZicsCiAgICAgICAgdGFiczogImpzOlRBQlMgPSBbJ+WkqeWggiddIiwKICAgICAgICBsaXN0czogImpzOlxuICAgICAgICAgICAgTElTVFMgPSBbXTtcbiAgICAgICAgICAgIGxldCBsaXN0czEgPSBwZGZhKGh0bWwsICdib2R5JiYuc2VtaS1zcGFjZS1sb29zZS12ZXJ0aWNhbCcpLm1hcChpdCA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IF90dCA9IHBkZmgoaXQsICdzcGFuJiZ0aXRsZScpO1xuICAgICAgICAgICAgICAgIGxldCBfdXUgPSBwZGZoKGl0LCAnYSYmaHJlZicpO1xuICAgICAgICAgICAgICAgIHJldHVybiBfdHQgKyAnJCcgKyBfdXU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIExJU1RTLnB1c2gobGlzdHMxKTtcbiAgICAgICAgIiwKICAgIH0sCiAgICDmkJzntKI6ICdqczpcbiAgICAgICAgbGV0IGh0bWwgPSBmZXRjaChpbnB1dCk7XG4gICAgICAgIGxldCBsaXN0ID0gcGRmYShodG1sLCAiYm9keSYmLnNlbWktc3BhY2UtbWVkaXVtLXZlcnRpY2FsIik7XG4gICAgICAgIFZPRFMgPSBsaXN0Lm1hcCh4ID0+IHtcbiAgICAgICAgICAgIGxldCByZW1hcmtzID0gcGRmaCh4LCAiZGl2JiZpbWcmJmFsdCIpO1xuICAgICAgICAgICAgLy8g6L+H5ruk5o6J5YyF5ZCrIui/hembt+S6keebmCLmiJYiMTE1IueahOWGheWuuVxuICAgICAgICAgICAgaWYocmVtYXJrcy5pbmNsdWRlcygi6L+F6Zu35LqR55uYIikgfHwgcmVtYXJrcy5pbmNsdWRlcygiMTE1IikgfHwgcmVtYXJrcy5pbmNsdWRlcygi6Zi/6YeMIikpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB2b2RfbmFtZTogcGRmaCh4LCAiZGl2JiZhJiZ0aXRsZSIpLFxuICAgICAgICAgICAgICAgIHZvZF9waWM6IFwnXCcsXG4gICAgICAgICAgICAgICAgdm9kX3JlbWFya3M6IHJlbWFya3MsXG4gICAgICAgICAgICAgICAgdm9kX2NvbnRlbnQ6IHJlbWFya3MsXG4gICAgICAgICAgICAgICAgdm9kX2lkOiBwZGZoKHgsICJkaXYmJmEmJmhyZWYiKVxuICAgICAgICAgICAgfVxuICAgICAgICB9KS5maWx0ZXIoeCA9PiB4ICE9PSBudWxsKTtcbiAgICAnLAogICAgY2F0ZV9leGNsdWRlOiAn6aaW6aG1fOeVmeiogHxBUFB85LiL6L29fOi1hOiur3zmlrDpl7t85Yqo5oCBJywKICAgIHRhYl9leGNsdWRlOiAn54yc5L2gfOWWnOasonzkuIvovb185Ymn5oOFfOamnHzor4TorronLAogICAg57G75Z6LOiAn5b2x6KeGJywKICAgIGhvbWVVcmw6ICdodHRwczovL3BhbnNvdHQuY29tLycsCiAgICDkuoznuqforr/pl67liY06ICcnLAogICAgZW5jb2Rpbmc6ICd1dGYtOCcsCiAgICBzZWFyY2hfZW5jb2Rpbmc6ICcnLAogICAg5Zu+54mH5p2l5rqQOiAnJywKICAgIOWbvueJh+abv+aNojogJycsCiAgICBwbGF5X2pzb246IFtdLAogICAgcGFnZWNvdW50OiB7fSwKICAgIHRhYl9yZW1vdmU6IFtdLAogICAgdGFiX29yZGVyOiBbXSwKICAgIHRhYl9yZW5hbWU6IHt9LAp9 \ No newline at end of file diff --git a/潇洒/js/TXSP.js b/潇洒/js/TXSP.js new file mode 100644 index 0000000..aaa6050 --- /dev/null +++ b/潇洒/js/TXSP.js @@ -0,0 +1 @@ +Z2xvYmFsVGhpcy52b2QxID0gZnVuY3Rpb24oaWRzKSB7CiAgICBsZXQgaHRtbDEgPSByZXF1ZXN0KCdodHRwczovL3BiYWNjZXNzLnZpZGVvLnFxLmNvbS90cnBjLnZpZGVvc2VhcmNoLm1vYmlsZV9zZWFyY2guTXVsdGlUZXJtaW5hbFNlYXJjaC9NYlNlYXJjaD92cGxhdGZvcm09MicsIHsKICAgICAgICBib2R5OiB7CiAgICAgICAgICAgICJ2ZXJzaW9uIjogIjI1MDQyMjAxIiwKICAgICAgICAgICAgImNsaWVudFR5cGUiOiAxLAogICAgICAgICAgICAiZmlsdGVyVmFsdWUiOiAiIiwKICAgICAgICAgICAgInV1aWQiOiAiQjFFNTA4NDctRDI1Ri00QzRCLUJCQTAtMzZGMDA5MzQ4N0Y2IiwKICAgICAgICAgICAgInJldHJ5IjogMCwKICAgICAgICAgICAgInF1ZXJ5IjogaWRzLAogICAgICAgICAgICAicGFnZW51bSI6IDAsCiAgICAgICAgICAgICJpc1ByZWZldGNoIjogdHJ1ZSwKICAgICAgICAgICAgInBhZ2VzaXplIjogMzAsCiAgICAgICAgICAgICJxdWVyeUZyb20iOiAwLAogICAgICAgICAgICAic2VhcmNoRGF0YWtleSI6ICIiLAogICAgICAgICAgICAidHJhbnNJbmZvIjogIiIsCiAgICAgICAgICAgICJpc25lZWRRYyI6IHRydWUsCiAgICAgICAgICAgICJwcmVRaWQiOiAiIiwKICAgICAgICAgICAgImFkQ2xpZW50SW5mbyI6ICIiLAogICAgICAgICAgICAiZXh0cmFJbmZvIjogewogICAgICAgICAgICAgICAgImlzTmV3TWFya0xhYmVsIjogIjEiLAogICAgICAgICAgICAgICAgIm11bHRpX3Rlcm1pbmFsX3BjIjogIjEiLAogICAgICAgICAgICAgICAgInRoZW1lVHlwZSI6ICIxIiwKICAgICAgICAgICAgICAgICJzdWdSZWxhdGVkSWRzIjogInt9IiwKICAgICAgICAgICAgICAgICJhcHBWZXJzaW9uIjogIiIKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgaGVhZGVyczogewogICAgICAgICAgICAnVXNlci1BZ2VudCc6ICdNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvOTguMC40NzU4LjEzOSBTYWZhcmkvNTM3LjM2JywKICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJywKICAgICAgICAgICAgJ29yaWdpbic6ICdodHRwczovL3YucXEuY29tJywKICAgICAgICAgICAgJ3JlZmVyZXInOiAnaHR0cHM6Ly92LnFxLmNvbS8nCiAgICAgICAgfSwKICAgICAgICAnbWV0aG9kJzogJ1BPU1QnCiAgICB9LCB0cnVlKTsKICAgIHJldHVybiBodG1sMTsKfQp2YXIgcnVsZSA9IHsKICAgIHRpdGxlOiAn6IW+5LqR6am+6Zu+W+WumF0nLAogICAgaG9zdDogJ2h0dHBzOi8vdi4lNzElNzEuY29tJywKICAgIC8vIGhvbWVVcmw6ICcveC9idS9wYWdlc2hlZXQvbGlzdD9fYWxsPTEmYXBwZW5kPTEmY2hhbm5lbD1jaG9pY2UmbGlzdHBhZ2U9MSZvZmZzZXQ9MCZwYWdlc2l6ZT0yMSZpYXJlYT0tMSZzb3J0PTE4JywKICAgIGhvbWVVcmw6ICcveC9idS9wYWdlc2hlZXQvbGlzdD9fYWxsPTEmYXBwZW5kPTEmY2hhbm5lbD1jYXJ0b29uJmxpc3RwYWdlPTEmb2Zmc2V0PTAmcGFnZXNpemU9MjEmaWFyZWE9LTEmc29ydD0xOCcsCiAgICBkZXRhaWxVcmw6ICdodHRwczovL25vZGUudmlkZW8uJTcxJTcxLmNvbS94L2FwaS9mbG9hdF92aW5mbzI/Y2lkPWZ5aWQnLAogICAgc2VhcmNoVXJsOiAnL3gvc2VhcmNoLz9xPSoqJnN0YWc9ZnlwYWdlJywKICAgIHNlYXJjaFVybDogJ2h0dHBzOi8vcGJhY2Nlc3MudmlkZW8uJTcxJTcxLmNvbS90cnBjLnZpZGVvc2VhcmNoLnNtYXJ0Ym94U2VydmVyLkh0dHBSb3VudFJlY2FsbC9TbWFydGJveD9xdWVyeT0qKiZhcHBJRD0zMTcyJmFwcEtleT1sR2hGSVBlRDNIc085eEVwJnBhZ2VOdW09KGZ5cGFnZS0xKSZwYWdlU2l6ZT0xMCcsCiAgICBzZWFyY2hVcmw6ICcqKicsCiAgICBzZWFyY2hhYmxlOiAyLAogICAgZmlsdGVyYWJsZTogMSwKICAgIG11bHRpOiAxLAogICAgLy8gdXJsOicvY2hhbm5lbC9meWNsYXNzP2xpc3RwYWdlPWZ5cGFnZSZjaGFubmVsPWZ5Y2xhc3Mmc29ydD0xOCZfYWxsPTEnLAogICAgdXJsOiAnL3gvYnUvcGFnZXNoZWV0L2xpc3Q/X2FsbD0xJmFwcGVuZD0xJmNoYW5uZWw9ZnljbGFzcyZsaXN0cGFnZT0xJm9mZnNldD0oKGZ5cGFnZS0xKSoyMSkmcGFnZXNpemU9MjEmaWFyZWE9LTEnLAogICAgLy8gZmlsdGVyX3VybDogJ3NvcnQ9e3tmbC5zb3J0IG9yIDE4fX0meWVhcj17e2ZsLnllYXJ9fSZwYXk9e3tmbC5wYXl9fScsCiAgICAvLyBmaWx0ZXJfdXJsOiAnc29ydD17e2ZsLnNvcnQgb3IgNzV9fSZ5ZWFyPXt7ZmwueWVhcn19JnBheT17e2ZsLnBheX19JywKICAgIGZpbHRlcl91cmw6ICdzb3J0PXt7Zmwuc29ydCBvciA3NX19Jml5ZWFyPXt7ZmwuaXllYXJ9fSZ5ZWFyPXt7ZmwueWVhcn19Jml0eXBlPXt7ZmwudHlwZX19JmlmZWF0dXJlPXt7ZmwuZmVhdHVyZX19JmlhcmVhPXt7ZmwuYXJlYX19Jml0cmFpbGVyPXt7ZmwuaXRyYWlsZXJ9fSZnZW5kZXI9e3tmbC5zZXh9fScsCiAgICAvLyBmaWx0ZXI6ICdINHNJQUFBQUFBQUFBKzJVelVyRFFCQ0EzMlhPRVpMVUpyR3ZJajBzYWFEQk5pc3hCa0lKQ0czRmk0b2VwSWczRVFvaWVxaUgrdk0yM1pxK2hSdWFaTFo0Y2U5ejIvbG1kMmQyK05nUitIMGUrZ0YwRGtkd0ZHVFFnUk1lSjJCQXhJYVN3dnJxVm54Y3l6aGxnOVB0dHFqRUQyYy80NWNTeThEeUlEY2F2cjU3cS9sQnc4WFRkL0U2cWJuVDhNM3pURnljNzJSdEMvSnVtZCsyYzh3eTdLWjRueFNMNVo5dXhIUytHYytyODNzV1ZwMWVWdHRsNERsdWsxaDkzWXViV1pWd2R1cGxBWXV4b0ZndVZwK1AveTVvbS9aKy9ZeHlxZkFXOHBiS2JlUzJ5aTNrTy9lYnlFMkZ5MW5YWEJtN0REemtuc3BkNUs3S0hlU095dHZJMitYQXVnWWtLV2xEMm1ock0rUnBTQjhPbWFOdlRzcmlNRWd5Y29mYzBYYkhaM0hDZVVUdWtEdjY3dlREUVkvTUlYTzB6ZWx4bjVNNEpJNm1PUGt2Z3N3U0VwZ1BBQUE9JywKICAgIGZpbHRlcjogewogICAgICAgICJjaG9pY2UiOiBbewogICAgICAgICAgICAia2V5IjogInNvcnQiLAogICAgICAgICAgICAibmFtZSI6ICLmjpLluo8iLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5pyA54OtIiwKICAgICAgICAgICAgICAgICJ2IjogIjc1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmnIDmlrAiLAogICAgICAgICAgICAgICAgInYiOiAiODMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWlveivhCIsCiAgICAgICAgICAgICAgICAidiI6ICI4MSIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAiaXllYXIiLAogICAgICAgICAgICAibmFtZSI6ICLlubTku6MiLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOoIiwKICAgICAgICAgICAgICAgICJ2IjogIi0xIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDI1IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjQiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyNCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMyIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDIzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIyIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjEiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDIwIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE5IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTgiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxOCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNyIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE3IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE2IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTUiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxNSIKICAgICAgICAgICAgfV0KICAgICAgICB9XSwKICAgICAgICAidHYiOiBbewogICAgICAgICAgICAia2V5IjogInNvcnQiLAogICAgICAgICAgICAibmFtZSI6ICLmjpLluo8iLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5pyA54OtIiwKICAgICAgICAgICAgICAgICJ2IjogIjc1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmnIDmlrAiLAogICAgICAgICAgICAgICAgInYiOiAiNzkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWlveivhCIsCiAgICAgICAgICAgICAgICAidiI6ICIxNiIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAiZmVhdHVyZSIsCiAgICAgICAgICAgICJuYW1lIjogIuexu+WeiyIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlhajpg6giLAogICAgICAgICAgICAgICAgInYiOiAiLTEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIueIseaDhSIsCiAgICAgICAgICAgICAgICAidiI6ICIxIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlj6Too4UiLAogICAgICAgICAgICAgICAgInYiOiAiMiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5oKs55aRIiwKICAgICAgICAgICAgICAgICJ2IjogIjMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIumDveW4giIsCiAgICAgICAgICAgICAgICAidiI6ICI0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlrrbluq0iLAogICAgICAgICAgICAgICAgInYiOiAiNSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5Zac5YmnIiwKICAgICAgICAgICAgICAgICJ2IjogIjYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuS8oOWlhyIsCiAgICAgICAgICAgICAgICAidiI6ICI3IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmrabkvqAiLAogICAgICAgICAgICAgICAgInYiOiAiOCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5Yab5peFIiwKICAgICAgICAgICAgICAgICJ2IjogIjkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuadg+iwiyIsCiAgICAgICAgICAgICAgICAidiI6ICIxMCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6Z2p5ZG9IiwKICAgICAgICAgICAgICAgICJ2IjogIjExIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnjrDlrp4iLAogICAgICAgICAgICAgICAgInYiOiAiMTMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIumdkuaYpSIsCiAgICAgICAgICAgICAgICAidiI6ICIxNCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi54yO5aWHIiwKICAgICAgICAgICAgICAgICJ2IjogIjE1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnp5HlubsiLAogICAgICAgICAgICAgICAgInYiOiAiMTYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuernuaKgCIsCiAgICAgICAgICAgICAgICAidiI6ICIxNyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi546E5bm7IiwKICAgICAgICAgICAgICAgICJ2IjogIjE4IgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJpeWVhciIsCiAgICAgICAgICAgICJuYW1lIjogIuW5tOS7oyIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlhajpg6giLAogICAgICAgICAgICAgICAgInYiOiAiLTEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjUiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyNSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyNCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDI0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIzIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjIiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyMiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDIxIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIwIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTkiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxOSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxOCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE4IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE3IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTYiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxNiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE1IgogICAgICAgICAgICB9XQogICAgICAgIH1dLAogICAgICAgICJtb3ZpZSI6IFt7CiAgICAgICAgICAgICJrZXkiOiAic29ydCIsCiAgICAgICAgICAgICJuYW1lIjogIuaOkuW6jyIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLmnIDng60iLAogICAgICAgICAgICAgICAgInYiOiAiNzUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuacgOaWsCIsCiAgICAgICAgICAgICAgICAidiI6ICI4MyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5aW96K+EIiwKICAgICAgICAgICAgICAgICJ2IjogIjgxIgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJ0eXBlIiwKICAgICAgICAgICAgIm5hbWUiOiAi57G75Z6LIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqCIsCiAgICAgICAgICAgICAgICAidiI6ICItMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi54qv572qIiwKICAgICAgICAgICAgICAgICJ2IjogIjQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWKseW/lyIsCiAgICAgICAgICAgICAgICAidiI6ICIyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLllpzliaciLAogICAgICAgICAgICAgICAgInYiOiAiMTAwMDA0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLng63ooYAiLAogICAgICAgICAgICAgICAgInYiOiAiMTAwMDYxIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmgqznlpEiLAogICAgICAgICAgICAgICAgInYiOiAiMTAwMDA5IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLniLHmg4UiLAogICAgICAgICAgICAgICAgInYiOiAiMTAwMDA1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnp5HlubsiLAogICAgICAgICAgICAgICAgInYiOiAiMTAwMDEyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmgZDmgJYiLAogICAgICAgICAgICAgICAgInYiOiAiMTAwMDEwIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLliqjnlLsiLAogICAgICAgICAgICAgICAgInYiOiAiMTAwMDE1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmiJjkuokiLAogICAgICAgICAgICAgICAgInYiOiAiMTAwMDA2IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlrrbluq0iLAogICAgICAgICAgICAgICAgInYiOiAiMTAwMDE3IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLliafmg4UiLAogICAgICAgICAgICAgICAgInYiOiAiMTAwMDIyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlpYflubsiLAogICAgICAgICAgICAgICAgInYiOiAiMTAwMDE2IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmrabkvqAiLAogICAgICAgICAgICAgICAgInYiOiAiMTAwMDExIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLljoblj7IiLAogICAgICAgICAgICAgICAgInYiOiAiMTAwMDIxIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLogIHniYciLAogICAgICAgICAgICAgICAgInYiOiAiMTAwMDEzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLopb/pg6giLAogICAgICAgICAgICAgICAgInYiOiAiMyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6K6w5b2V54mHIiwKICAgICAgICAgICAgICAgICJ2IjogIjEwMDAyMCIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAieWVhciIsCiAgICAgICAgICAgICJuYW1lIjogIuW5tOS7oyIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlhajpg6giLAogICAgICAgICAgICAgICAgInYiOiAiLTEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjUiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyNSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyNCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDI0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIzIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjIiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyMiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDIxIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIwIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTkiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxOSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxOCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE4IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE3IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTYiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxNiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE1IgogICAgICAgICAgICB9XQogICAgICAgIH1dLAogICAgICAgICJ2YXJpZXR5IjogW3sKICAgICAgICAgICAgImtleSI6ICJzb3J0IiwKICAgICAgICAgICAgIm5hbWUiOiAi5o6S5bqPIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuacgOeDrSIsCiAgICAgICAgICAgICAgICAidiI6ICI3NSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pyA5pawIiwKICAgICAgICAgICAgICAgICJ2IjogIjIzIgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJpeWVhciIsCiAgICAgICAgICAgICJuYW1lIjogIuW5tOS7oyIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlhajpg6giLAogICAgICAgICAgICAgICAgInYiOiAiLTEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjUiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyNSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyNCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDI0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIzIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjIiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyMiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDIxIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIwIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTkiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxOSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxOCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE4IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE3IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTYiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxNiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE1IgogICAgICAgICAgICB9XQogICAgICAgIH1dLAogICAgICAgICJjYXJ0b29uIjogW3sKICAgICAgICAgICAgImtleSI6ICJzb3J0IiwKICAgICAgICAgICAgIm5hbWUiOiAi5o6S5bqPIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuacgOeDrSIsCiAgICAgICAgICAgICAgICAidiI6ICI3NSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pyA5pawIiwKICAgICAgICAgICAgICAgICJ2IjogIjgzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlpb3or4QiLAogICAgICAgICAgICAgICAgInYiOiAiODEiCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogImFyZWEiLAogICAgICAgICAgICAibmFtZSI6ICLlnLDljLoiLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOoIiwKICAgICAgICAgICAgICAgICJ2IjogIi0xIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlhoXlnLAiLAogICAgICAgICAgICAgICAgInYiOiAiMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pel5pysIiwKICAgICAgICAgICAgICAgICJ2IjogIjIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuasp+e+jiIsCiAgICAgICAgICAgICAgICAidiI6ICIzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlhbbku5YiLAogICAgICAgICAgICAgICAgInYiOiAiNCIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAidHlwZSIsCiAgICAgICAgICAgICJuYW1lIjogIuexu+WeiyIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlhajpg6giLAogICAgICAgICAgICAgICAgInYiOiAiLTEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIueOhOW5uyIsCiAgICAgICAgICAgICAgICAidiI6ICI5IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnp5HlubsiLAogICAgICAgICAgICAgICAgInYiOiAiNCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5q2m5L6gIiwKICAgICAgICAgICAgICAgICJ2IjogIjEzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlhpLpmakiLAogICAgICAgICAgICAgICAgInYiOiAiMyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5oiY5paXIiwKICAgICAgICAgICAgICAgICJ2IjogIjUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaQnueskSIsCiAgICAgICAgICAgICAgICAidiI6ICIxIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmgYvniLEiLAogICAgICAgICAgICAgICAgInYiOiAiNyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6a2U5bm7IiwKICAgICAgICAgICAgICAgICJ2IjogIjYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuernuaKgCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5oKs55aRIiwKICAgICAgICAgICAgICAgICJ2IjogIjE3IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLml6XluLgiLAogICAgICAgICAgICAgICAgInYiOiAiMTUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuagoeWbrSIsCiAgICAgICAgICAgICAgICAidiI6ICIxNiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi55yf5Lq6IiwKICAgICAgICAgICAgICAgICJ2IjogIjE4IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmjqjnkIYiLAogICAgICAgICAgICAgICAgInYiOiAiMTQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWOhuWPsiIsCiAgICAgICAgICAgICAgICAidiI6ICIxOSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi57uP5YW4IiwKICAgICAgICAgICAgICAgICJ2IjogIjMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWFtuS7liIsCiAgICAgICAgICAgICAgICAidiI6ICIxMiIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAiaXllYXIiLAogICAgICAgICAgICAibmFtZSI6ICLlubTku6MiLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOoIiwKICAgICAgICAgICAgICAgICJ2IjogIi0xIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDI1IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjQiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyNCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMyIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDIzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIyIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjEiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDIwIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE5IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTgiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxOCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNyIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE3IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE2IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTUiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxNSIKICAgICAgICAgICAgfV0KICAgICAgICB9XSwKICAgICAgICAiY2hpbGQiOiBbewogICAgICAgICAgICAia2V5IjogInNvcnQiLAogICAgICAgICAgICAibmFtZSI6ICLmjpLluo8iLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5pyA54OtIiwKICAgICAgICAgICAgICAgICJ2IjogIjc1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmnIDmlrAiLAogICAgICAgICAgICAgICAgInYiOiAiNzYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWlveivhCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMCIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAic2V4IiwKICAgICAgICAgICAgIm5hbWUiOiAi5oCn5YirIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqCIsCiAgICAgICAgICAgICAgICAidiI6ICItMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5aWz5a2pIiwKICAgICAgICAgICAgICAgICJ2IjogIjEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIueUt+WtqSIsCiAgICAgICAgICAgICAgICAidiI6ICIyIgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJhcmVhIiwKICAgICAgICAgICAgIm5hbWUiOiAi5Zyw5Yy6IiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqCIsCiAgICAgICAgICAgICAgICAidiI6ICItMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5YaF5ZywIiwKICAgICAgICAgICAgICAgICJ2IjogIjMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaXpeacrCIsCiAgICAgICAgICAgICAgICAidiI6ICIyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlhbbku5YiLAogICAgICAgICAgICAgICAgInYiOiAiMSIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAiaXllYXIiLAogICAgICAgICAgICAibmFtZSI6ICLlubTpvoTmrrUiLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOoIiwKICAgICAgICAgICAgICAgICJ2IjogIi0xIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIwLTPlsoEiLAogICAgICAgICAgICAgICAgInYiOiAiMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiNC025bKBIiwKICAgICAgICAgICAgICAgICJ2IjogIjIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjctOeWygSIsCiAgICAgICAgICAgICAgICAidiI6ICIzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIxMOWygeS7peS4iiIsCiAgICAgICAgICAgICAgICAidiI6ICI0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlhajlubTpvoTmrrUiLAogICAgICAgICAgICAgICAgInYiOiAiNyIKICAgICAgICAgICAgfV0KICAgICAgICB9XSwKICAgICAgICAiZG9jbyI6IFt7CiAgICAgICAgICAgICJrZXkiOiAic29ydCIsCiAgICAgICAgICAgICJuYW1lIjogIuaOkuW6jyIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLmnIDng60iLAogICAgICAgICAgICAgICAgInYiOiAiNzUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuacgOaWsCIsCiAgICAgICAgICAgICAgICAidiI6ICI3NCIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAiaXRyYWlsZXIiLAogICAgICAgICAgICAibmFtZSI6ICLlh7rlk4HmlrkiLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOoIiwKICAgICAgICAgICAgICAgICJ2IjogIi0xIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJCQkMiLAogICAgICAgICAgICAgICAgInYiOiAiMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5Zu95a625Zyw55CGIiwKICAgICAgICAgICAgICAgICJ2IjogIjQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkhCTyIsCiAgICAgICAgICAgICAgICAidiI6ICIzMTc1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJOSEsiLAogICAgICAgICAgICAgICAgInYiOiAiMiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5Y6G5Y+y6aKR6YGTIiwKICAgICAgICAgICAgICAgICJ2IjogIjciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIklUViIsCiAgICAgICAgICAgICAgICAidiI6ICIzNTMwIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmjqLntKLpopHpgZMiLAogICAgICAgICAgICAgICAgInYiOiAiMzE3NCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiWkRGIiwKICAgICAgICAgICAgICAgICJ2IjogIjMxNzYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuiFvuiur+iHquWItiIsCiAgICAgICAgICAgICAgICAidiI6ICIxNSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5ZCI5L2c5py65p6EIiwKICAgICAgICAgICAgICAgICJ2IjogIjYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWFtuS7liIsCiAgICAgICAgICAgICAgICAidiI6ICI1IgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJ0eXBlIiwKICAgICAgICAgICAgIm5hbWUiOiAi57G75Z6LIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqCIsCiAgICAgICAgICAgICAgICAidiI6ICItMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6Ieq54S2IiwKICAgICAgICAgICAgICAgICJ2IjogIjQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIue+jumjnyIsCiAgICAgICAgICAgICAgICAidiI6ICIxMCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi56S+5LyaIiwKICAgICAgICAgICAgICAgICJ2IjogIjMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuS6uuaWhyIsCiAgICAgICAgICAgICAgICAidiI6ICI2IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLljoblj7IiLAogICAgICAgICAgICAgICAgInYiOiAiMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5Yab5LqLIiwKICAgICAgICAgICAgICAgICJ2IjogIjIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuenkeaKgCIsCiAgICAgICAgICAgICAgICAidiI6ICI4IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLotKLnu48iLAogICAgICAgICAgICAgICAgInYiOiAiMTQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaOoumZqSIsCiAgICAgICAgICAgICAgICAidiI6ICIxNSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi572q5qGIIiwKICAgICAgICAgICAgICAgICJ2IjogIjciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuernuaKgCIsCiAgICAgICAgICAgICAgICAidiI6ICIxMiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5peF5ri4IiwKICAgICAgICAgICAgICAgICJ2IjogIjExIgogICAgICAgICAgICB9XQogICAgICAgIH1dCiAgICB9LAogICAgaGVhZGVyczogewogICAgICAgICdVc2VyLUFnZW50JzogJ1BDX1VBJwogICAgfSwKICAgIHRpbWVvdXQ6IDUwMDAsCiAgICAvLyBjbGFzc19wYXJzZTonLnNpdGVfY2hhbm5lbCBhO2EmJlRleHQ7YSYmaHJlZjtjaGFubmVsLyguKiknLAogICAgY2F0ZV9leGNsdWRlOiAn5Lya5ZGYfOa4uOaIj3zlhajpg6gnLAogICAgLy8gY2xhc3NfbmFtZTogJ+eyvumAiSbnlLXop4bliacm55S15b2xJue7vOiJuibliqjmvKsm5bCR5YS/Jue6quW9leeJhycsCiAgICAvLyBjbGFzc191cmw6ICdjaG9pY2UmdHYmbW92aWUmdmFyaWV0eSZjYXJ0b29uJmNoaWxkJmRvY28nLAogICAgY2xhc3NfbmFtZTogJ+eyvumAiSbnlLXlvbEm55S16KeG5YmnJue7vOiJuibliqjmvKsm5bCR5YS/Jue6quW9leeJhycsCiAgICBjbGFzc191cmw6ICdjaG9pY2UmbW92aWUmdHYmdmFyaWV0eSZjYXJ0b29uJmNoaWxkJmRvY28nLAogICAgbGltaXQ6IDIwLAogICAgLy8gcGxheV9wYXJzZTp0cnVlLAogICAgLy8g5omL5Yqo6LCD55So6Kej5p6Q6K+35rGCanNvbueahHVybCzmraRsYXp55LiN5pa55L6/CiAgICBwbGF5X3BhcnNlOiB0cnVlLAogICAgbGF6eTogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICB0cnkgewogICAgICAgICAgICBsZXQgYXBpID0gImh0dHA6Ly8xMjcuMC4wLjE6OTk3OC9wcm94eT9kbz1zZWFjaGRhbm11JmdvPWdldHVzZXJqeCZ1cmw9IiArIGlucHV0LnNwbGl0KCI/IilbMF07CiAgICAgICAgICAgIGNvbnNvbGUubG9nKGFwaSk7CiAgICAgICAgICAgIGxldCByZXNwb25zZSA9IGZldGNoKGFwaSwgewogICAgICAgICAgICAgICAgbWV0aG9kOiAnZ2V0JywKICAgICAgICAgICAgICAgIGhlYWRlcnM6IHsKICAgICAgICAgICAgICAgICAgICAnVXNlci1BZ2VudCc6ICdva2h0dHAvMy4xNC45JywKICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CgogICAgICAgICAgICBsZXQgYmF0YSA9IEpTT04ucGFyc2UocmVzcG9uc2UpOwogICAgICAgICAgICBsb2coYmF0YSkKICAgICAgICAgICAgaWYgKGJhdGEudXJsLmluY2x1ZGVzKCJodHRwIikpIHsKICAgICAgICAgICAgICAgIGlucHV0ID0gewogICAgICAgICAgICAgICAgICAgIGhlYWRlcjogewogICAgICAgICAgICAgICAgICAgICAgICAnVXNlci1BZ2VudCc6ICIiCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBwYXJzZTogMCwKICAgICAgICAgICAgICAgICAgICB1cmw6IGJhdGEudXJsLAogICAgICAgICAgICAgICAgICAgIGp4OiAwLAogICAgICAgICAgICAgICAgICAgIGRhbm1ha3U6ICdodHRwOi8vMTI3LjAuMC4xOjk5NzgvcHJveHk/ZG89ZGFubXUmc2l0ZT1qcyZ1cmw9aHR0cDovL2RtLnF4cTYuY29tL3p5L2FwaS5waHA/dXJsPScgKyBpbnB1dC5zcGxpdCgiPyIpWzBdCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9IGVsc2UgewoKICAgICAgICAgICAgICAgIGlucHV0ID0gewogICAgICAgICAgICAgICAgICAgIGhlYWRlcjogewogICAgICAgICAgICAgICAgICAgICAgICAnVXNlci1BZ2VudCc6ICIiCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBwYXJzZTogMCwKICAgICAgICAgICAgICAgICAgICB1cmw6IGlucHV0LnNwbGl0KCI/IilbMF0sCiAgICAgICAgICAgICAgICAgICAgang6IDEsCiAgICAgICAgICAgICAgICAgICAgZGFubWFrdTogJ2h0dHA6Ly8xMjcuMC4wLjE6OTk3OC9wcm94eT9kbz1kYW5tdSZzaXRlPWpzJnVybD1odHRwOi8vZG0ucXhxNi5jb20venkvYXBpLnBocD91cmw9JyArIGlucHV0LnNwbGl0KCI/IilbMF0KICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICB9IGNhdGNoIHsKICAgICAgICAgICAgaW5wdXQgPSB7CiAgICAgICAgICAgICAgICBoZWFkZXI6IHsKICAgICAgICAgICAgICAgICAgICAnVXNlci1BZ2VudCc6ICIiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgcGFyc2U6IDAsCiAgICAgICAgICAgICAgICB1cmw6IGlucHV0LnNwbGl0KCI/IilbMF0sCiAgICAgICAgICAgICAgICBqeDogMSwKICAgICAgICAgICAgICAgIGRhbm1ha3U6ICdodHRwOi8vMTI3LjAuMC4xOjk5NzgvcHJveHk/ZG89ZGFubXUmc2l0ZT1qcyZ1cmw9aHR0cDovL2RtLnF4cTYuY29tL3p5L2FwaS5waHA/dXJsPScgKyBpbnB1dC5zcGxpdCgiPyIpWzBdCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfSksCiAgICDmjqjojZA6ICcubGlzdF9pdGVtO2ltZyYmYWx0O2ltZyYmc3JjO2EmJlRleHQ7YSYmZGF0YS1mbG9hdCcsCiAgICDkuIDnuqc6ICcubGlzdF9pdGVtO2ltZyYmYWx0O2ltZyYmc3JjO2EmJlRleHQ7YSYmZGF0YS1mbG9hdCcsCiAgICDkuoznuqc6ICRqcy50b1N0cmluZygoKSA9PiB7CiAgICAgICAgVk9EID0ge307CiAgICAgICAgbGV0IGQgPSBbXTsKICAgICAgICBsZXQgdmlkZW9fbGlzdCA9IFtdOwogICAgICAgIGxldCB2aWRlb19saXN0cyA9IFtdOwogICAgICAgIGxldCBsaXN0ID0gW107CiAgICAgICAgbGV0IFFaT3V0cHV0SnNvbjsKICAgICAgICBsZXQgaHRtbCA9IGZldGNoKGlucHV0LCBmZXRjaF9wYXJhbXMpOwogICAgICAgIGxldCBzb3VyY2VJZCA9IC9nZXRfcGxheXNvdXJjZS8udGVzdChpbnB1dCkgPyBpbnB1dC5tYXRjaCgvaWQ9KFxkKj8pJi8pWzFdIDogaW5wdXQuc3BsaXQoImNpZD0iKVsxXTsKICAgICAgICBsZXQgY2lkID0gc291cmNlSWQ7CiAgICAgICAgbGV0IGRldGFpbFVybCA9ICJodHRwczovL3YuJTcxJTcxLmNvbS9kZXRhaWwvbS8iICsgY2lkICsgIi5odG1sIjsKICAgICAgICBsb2coIuivpuaDhemhtToiICsgZGV0YWlsVXJsKTsKICAgICAgICBwZGZoID0ganNwLnBkZmg7CiAgICAgICAgcGQgPSBqc3AucGQ7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgbGV0IGpzb24gPSBKU09OLnBhcnNlKGh0bWwpOwogICAgICAgICAgICBWT0QgPSB7CiAgICAgICAgICAgICAgICB2b2RfdXJsOiBpbnB1dCwKICAgICAgICAgICAgICAgIHZvZF9uYW1lOiBqc29uLmMudGl0bGUsCiAgICAgICAgICAgICAgICB0eXBlX25hbWU6IGpzb24udHlwLmpvaW4oIiwiKSwKICAgICAgICAgICAgICAgIHZvZF9hY3RvcjoganNvbi5uYW0uam9pbigiLCIpLAogICAgICAgICAgICAgICAgdm9kX3llYXI6IGpzb24uYy55ZWFyLAogICAgICAgICAgICAgICAgdm9kX2NvbnRlbnQ6IGpzb24uYy5kZXNjcmlwdGlvbiwKICAgICAgICAgICAgICAgIHZvZF9yZW1hcmtzOiBqc29uLnJlYywKICAgICAgICAgICAgICAgIHZvZF9waWM6IHVybGpvaW4yKGlucHV0LCBqc29uLmMucGljKQogICAgICAgICAgICB9CiAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICBsb2coIuino+aekOeJh+WQjea1t+aKpeetieWfuuehgOS/oeaBr+WPkeeUn+mUmeivrzoiICsgZS5tZXNzYWdlKQogICAgICAgIH0KICAgICAgICBpZiAoL2dldF9wbGF5c291cmNlLy50ZXN0KGlucHV0KSkgewogICAgICAgICAgICBldmFsKGh0bWwpOwogICAgICAgICAgICBsZXQgaW5kZXhMaXN0ID0gUVpPdXRwdXRKc29uLlBsYXlsaXN0SXRlbS5pbmRleExpc3Q7CiAgICAgICAgICAgIGluZGV4TGlzdC5mb3JFYWNoKGZ1bmN0aW9uKGl0KSB7CiAgICAgICAgICAgICAgICBsZXQgZGF0YVVybCA9ICJodHRwczovL3MudmlkZW8ucXEuY29tL2dldF9wbGF5c291cmNlP2lkPSIgKyBzb3VyY2VJZCArICImcGxhdD0yJnR5cGU9NCZkYXRhX3R5cGU9MyZyYW5nZT0iICsgaXQgKyAiJnZpZGVvX3R5cGU9MTAmcGxuYW1lPXFxJm90eXBlPWpzb24iOwogICAgICAgICAgICAgICAgZXZhbChmZXRjaChkYXRhVXJsLCBmZXRjaF9wYXJhbXMpKTsKICAgICAgICAgICAgICAgIGxldCB2ZGF0YSA9IFFaT3V0cHV0SnNvbi5QbGF5bGlzdEl0ZW0udmlkZW9QbGF5TGlzdDsKICAgICAgICAgICAgICAgIHZkYXRhLmZvckVhY2goZnVuY3Rpb24oaXRlbSkgewogICAgICAgICAgICAgICAgICAgIGQucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICBwaWNfdXJsOiBpdGVtLnBpYywKICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogaXRlbS5lcGlzb2RlX251bWJlciArICJcdFx0XHTmkq3mlL7ph4/vvJoiICsgaXRlbS50aGlyZExpbmUsCiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogaXRlbS5wbGF5VXJsCiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgdmlkZW9fbGlzdHMgPSB2aWRlb19saXN0cy5jb25jYXQodmRhdGEpCiAgICAgICAgICAgIH0pCiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgbGV0IGpzb24gPSBKU09OLnBhcnNlKGh0bWwpOwogICAgICAgICAgICB2aWRlb19saXN0cyA9IGpzb24uYy52aWRlb19pZHM7CiAgICAgICAgICAgIGxldCB1cmwgPSAiaHR0cHM6Ly92LnFxLmNvbS94L2NvdmVyLyIgKyBzb3VyY2VJZCArICIuaHRtbCI7CiAgICAgICAgICAgIGlmICh2aWRlb19saXN0cy5sZW5ndGggPT09IDEpIHsKICAgICAgICAgICAgICAgIGxldCB2aWQgPSB2aWRlb19saXN0c1swXTsKICAgICAgICAgICAgICAgIHVybCA9ICJodHRwczovL3YucXEuY29tL3gvY292ZXIvIiArIGNpZCArICIvIiArIHZpZCArICIuaHRtbCI7CiAgICAgICAgICAgICAgICBkLnB1c2goewogICAgICAgICAgICAgICAgICAgIHRpdGxlOiAi5Zyo57q/5pKt5pS+IiwKICAgICAgICAgICAgICAgICAgICB1cmw6IHVybAogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfSBlbHNlIGlmICh2aWRlb19saXN0cy5sZW5ndGggPiAxKSB7CiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZpZGVvX2xpc3RzLmxlbmd0aDsgaSArPSAzMCkgewogICAgICAgICAgICAgICAgICAgIHZpZGVvX2xpc3QucHVzaCh2aWRlb19saXN0cy5zbGljZShpLCBpICsgMzApKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmlkZW9fbGlzdC5mb3JFYWNoKGZ1bmN0aW9uKGl0LCBpZGV4KSB7CiAgICAgICAgICAgICAgICAgICAgbGV0IG9fdXJsID0gImh0dHBzOi8vdW5pb24udmlkZW8ucXEuY29tL2ZjZ2ktYmluL2RhdGE/b3R5cGU9anNvbiZ0aWQ9MTgwNCZhcHBpZD0yMDAwMTIzOCZhcHBrZXk9NmMwM2JiZTk2NTg0NDhhNCZ1bmlvbl9wbGF0Zm9ybT0xJmlkbGlzdD0iICsgaXQuam9pbigiLCIpOwogICAgICAgICAgICAgICAgICAgIGxldCBvX2h0bWwgPSBmZXRjaChvX3VybCwgZmV0Y2hfcGFyYW1zKTsKICAgICAgICAgICAgICAgICAgICBldmFsKG9faHRtbCk7CiAgICAgICAgICAgICAgICAgICAgUVpPdXRwdXRKc29uLnJlc3VsdHMuZm9yRWFjaChmdW5jdGlvbihpdDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaXQxID0gaXQxLmZpZWxkczsKICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHVybCA9ICJodHRwczovL3YucXEuY29tL3gvY292ZXIvIiArIGNpZCArICIvIiArIGl0MS52aWQgKyAiLmh0bWwiOwogICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0MS50aXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpY191cmw6IGl0MS5waWMxNjB4OTAucmVwbGFjZSgiLzE2MCIsICIiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6IGl0MS52aWRlb19jaGVja3VwX3RpbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHVybCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGl0MS5jYXRlZ29yeV9tYXAgJiYgaXQxLmNhdGVnb3J5X21hcC5sZW5ndGggPiAxID8gaXQxLmNhdGVnb3J5X21hcFsxXSA6ICIiCiAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgbGV0IHlnID0gZC5maWx0ZXIoZnVuY3Rpb24oaXQpIHsKICAgICAgICAgICAgcmV0dXJuIGl0LnR5cGUgJiYgaXQudHlwZSAhPT0gIuato+eJhyIKICAgICAgICB9KTsKICAgICAgICBsZXQgenAgPSBkLmZpbHRlcihmdW5jdGlvbihpdCkgewogICAgICAgICAgICByZXR1cm4gIShpdC50eXBlICYmIGl0LnR5cGUgIT09ICLmraPniYciKQogICAgICAgIH0pOwogICAgICAgIFZPRC52b2RfcGxheV9mcm9tID0geWcubGVuZ3RoIDwgMSA/ICJxcSIgOiAicXEkJCRxcSDpooTlkYrlj4roirHnta4iOwogICAgICAgIFZPRC52b2RfcGxheV91cmwgPSB5Zy5sZW5ndGggPCAxID8gZC5tYXAoZnVuY3Rpb24oaXQpIHsKICAgICAgICAgICAgcmV0dXJuIGl0LnRpdGxlICsgIiQiICsgaXQudXJsCiAgICAgICAgfSkuam9pbigiIyIpIDogW3pwLCB5Z10ubWFwKGZ1bmN0aW9uKGl0KSB7CiAgICAgICAgICAgIHJldHVybiBpdC5tYXAoZnVuY3Rpb24oaXRzKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gaXRzLnRpdGxlICsgIiQiICsgaXRzLnVybAogICAgICAgICAgICB9KS5qb2luKCIjIikKICAgICAgICB9KS5qb2luKCIkJCQiKTsKICAgIH0pLAogICAg5pCc57SiOiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgIGxldCBkID0gW107CiAgICAgICAgcGRmYSA9IGpzcC5wZGZhOwogICAgICAgIHBkZmggPSBqc3AucGRmaDsKICAgICAgICBwZCA9IGpzcC5wZDsKICAgICAgICBsZXQgaHRtbCA9IHJlcXVlc3QoaW5wdXQpOwogICAgICAgIGxldCBiYXNlTGlzdCA9IHBkZmEoaHRtbCwgImJvZHkmJi5yZXN1bHRfaXRlbV92Iik7CiAgICAgICAgbG9nKGJhc2VMaXN0Lmxlbmd0aCk7CiAgICAgICAgYmFzZUxpc3QuZm9yRWFjaChmdW5jdGlvbihpdCkgewogICAgICAgICAgICBsZXQgbG9uZ1RleHQgPSBwZGZoKGl0LCAiLnJlc3VsdF90aXRsZSYmYSYmVGV4dCIpOwogICAgICAgICAgICBsZXQgc2hvcnRUZXh0ID0gcGRmaChpdCwgIi50eXBlJiZUZXh0Iik7CiAgICAgICAgICAgIGxldCBmcm9tVGFnID0gcGRmaChpdCwgIi5yZXN1bHRfc291cmNlJiZUZXh0Iik7CiAgICAgICAgICAgIGxldCBzY29yZSA9IHBkZmgoaXQsICIuZmlndXJlX2luZm8mJlRleHQiKTsKICAgICAgICAgICAgbGV0IGNvbnRlbnQgPSBwZGZoKGl0LCAiLmRlc2NfdGV4dCYmVGV4dCIpOwogICAgICAgICAgICAvLyBsZXQgdXJsID0gcGRmaChpdCwgIi5yZXN1bHRfdGl0bGUmJmEmJmhyZWYiKTsKICAgICAgICAgICAgbGV0IHVybCA9IHBkZmgoaXQsICJkaXYmJnItZGF0YSIpOwogICAgICAgICAgICAvLyBsb2cobG9uZ1RleHQpOwogICAgICAgICAgICAvLyBsb2coc2hvcnRUZXh0KTsKICAgICAgICAgICAgLy8gbG9nKCd1cmw6Jyt1cmwpOwogICAgICAgICAgICBsZXQgaW1nID0gcGQoaXQsICIuZmlndXJlX3BpYyYmc3JjIik7CiAgICAgICAgICAgIHVybCA9ICJodHRwczovL25vZGUudmlkZW8ucXEuY29tL3gvYXBpL2Zsb2F0X3ZpbmZvMj9jaWQ9IiArIHVybC5tYXRjaCgvLipcLyguKj8pXC5odG1sLylbMV07CiAgICAgICAgICAgIGxvZyhzaG9ydFRleHQgKyAifCIgKyB1cmwpOwogICAgICAgICAgICBpZiAoZnJvbVRhZy5tYXRjaCgv6IW+6K6vLykpIHsKICAgICAgICAgICAgICAgIGQucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGxvbmdUZXh0LnNwbGl0KHNob3J0VGV4dClbMF0sCiAgICAgICAgICAgICAgICAgICAgaW1nOiBpbWcsCiAgICAgICAgICAgICAgICAgICAgdXJsOiB1cmwsCiAgICAgICAgICAgICAgICAgICAgY29udGVudDogY29udGVudCwKICAgICAgICAgICAgICAgICAgICBkZXNjOiBzaG9ydFRleHQgKyAiICIgKyBzY29yZQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIHNldFJlc3VsdChkKTsKICAgIH0pLAogICAg5pCc57SiOiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgIGxldCBkID0gW107CiAgICAgICAgbGV0IGh0bWwgPSByZXF1ZXN0KGlucHV0KTsKICAgICAgICBsZXQganNvbiA9IEpTT04ucGFyc2UoaHRtbCk7CiAgICAgICAgaWYgKGpzb24uZGF0YS5zbWFydGJveEl0ZW1MaXN0Lmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgbGV0IGNpZCA9IGpzb24uZGF0YS5zbWFydGJveEl0ZW1MaXN0WzBdLmJhc2ljRG9jLmlkOwogICAgICAgICAgICBsZXQgdXJsID0gJ2h0dHBzOi8vbm9kZS52aWRlby5xcS5jb20veC9hcGkvZmxvYXRfdmluZm8yP2NpZD0nICsgY2lkOwogICAgICAgICAgICBsZXQgaHRtbDEgPSByZXF1ZXN0KHVybCk7CiAgICAgICAgICAgIGxldCBkYXRhID0gSlNPTi5wYXJzZShodG1sMSk7CgogICAgICAgICAgICBkLnB1c2goewogICAgICAgICAgICAgICAgdGl0bGU6IGRhdGEuYy50aXRsZSwKICAgICAgICAgICAgICAgIGltZzogZGF0YS5jLnBpYywKICAgICAgICAgICAgICAgIHVybDogdXJsLAogICAgICAgICAgICAgICAgY29udGVudDogZGF0YS5jLmRlc2NyaXB0aW9uLAogICAgICAgICAgICAgICAgZGVzYzogZGF0YS5yZWMKICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICAgIHNldFJlc3VsdChkKTsKICAgIH0pLAogICAg5pCc57SiOiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgIGxldCBkID0gW107CiAgICAgICAgbGV0IG1hbWUgPSAoaW5wdXQuc3BsaXQoIi8iKVszXSk7CiAgICAgICAgbGV0IGh0bWwgPSB2b2QxKGlucHV0LnNwbGl0KCIvIilbM10pOwogICAgICAgIGxldCBqc29uID0gSlNPTi5wYXJzZShodG1sKTsKCiAgICAgICAgbGV0IGxpc3QgPSBqc29uLmRhdGEubm9ybWFsTGlzdC5pdGVtTGlzdDsKICAgICAgICBjb25zb2xlLmxvZyhqc29uKTsKICAgICAgICBsb2cobGlzdFswXS52aWRlb0luZm8udGl0bGUpOwogICAgICAgIGxpc3QuZm9yRWFjaChmdW5jdGlvbihpdCkgewogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgaWYgKGl0LmRvYy5pZC5sZW5ndGggPiAxMSkgewogICAgICAgICAgICAgICAgICAgIGQucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdC52aWRlb0luZm8udGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogaXQudmlkZW9JbmZvLmltZ1VybCwKICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBpdC5kb2MuaWQsCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnRlbnQ6ICIiLAogICAgICAgICAgICAgICAgICAgICAgICAvL2Rlc2M6ICJkYXRhLnJlYyIKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBjYXRjaCB7CgogICAgICAgICAgICB9CgogICAgICAgIH0pOwogICAgICAgIGxldCBsaXN0MiA9IGpzb24uZGF0YS5hcmVhQm94TGlzdFswXS5pdGVtTGlzdDsKICAgICAgICBsaXN0Mi5mb3JFYWNoKGZ1bmN0aW9uKGl0KSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICBpZiAoaXQuZG9jLmlkLmxlbmd0aCA+IDExICYmIGl0LnZpZGVvSW5mby50aXRsZS5tYXRjaChtYW1lKSkgewogICAgICAgICAgICAgICAgICAgIGQucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdC52aWRlb0luZm8udGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogaXQudmlkZW9JbmZvLmltZ1VybCwKICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBpdC5kb2MuaWQsCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnRlbnQ6ICIiLAogICAgICAgICAgICAgICAgICAgICAgICAvL2Rlc2M6ICJkYXRhLnJlYyIKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBjYXRjaCB7CgogICAgICAgICAgICB9CgogICAgICAgIH0pOwogICAgICAgIHNldFJlc3VsdChkKTsKICAgIH0pCn0= \ No newline at end of file diff --git a/潇洒/js/校长.js b/潇洒/js/XZ.js similarity index 99% rename from 潇洒/js/校长.js rename to 潇洒/js/XZ.js index e5ceea9..c42e054 100644 --- a/潇洒/js/校长.js +++ b/潇洒/js/XZ.js @@ -1,6 +1,6 @@ var rule = { title: '校长影视[云盘]', - host: 'https://xzyshd.com', + host: 'https://xzys.fun', homeUrl: '/', url: '/fyclass.html?page=fypage', filter_url: '{{fl.class}}', diff --git a/潇洒/js/YKSP.js b/潇洒/js/YKSP.js new file mode 100644 index 0000000..6a62137 --- /dev/null +++ b/潇洒/js/YKSP.js @@ -0,0 +1 @@ +dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+S8mOmFt1vlrphdJywKICAgIGhvc3Q6ICdodHRwczovL3d3dy4lNzklNmYlNzUlNmIlNzUuY29tJywKICAgIGhvbWVVcmw6ICcnLAogICAgc2VhcmNoVXJsOiAnaHR0cHM6Ly9zZWFyY2guJTc5JTZmJTc1JTZiJTc1LmNvbS9hcGkvc2VhcmNoP3BnPWZ5cGFnZSZrZXl3b3JkPSoqJywKICAgIHNlYXJjaGFibGU6IDIsCiAgICBxdWlja1NlYXJjaDogMCwKICAgIGZpbHRlcmFibGU6IDEsCiAgICBtdWx0aTogMSwKICAgIHVybDogJy9jYXRlZ29yeS9kYXRhP29wdGlvblJlZnJlc2g9MSZwYWdlTm89ZnlwYWdlJnBhcmFtcz1meWZpbHRlcicsCiAgICBmaWx0ZXJfdXJsOiAne3tmbH19JywKICAgIGZpbHRlcjogewogICAgICAgICLnlLXop4bliaciOiBbewogICAgICAgICAgICAia2V5IjogIm1haW5fYXJlYSIsCiAgICAgICAgICAgICJuYW1lIjogIuWFqOmDqOWcsOWMuiIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlhajpg6jlnLDljLoiLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlhoXlnLDliaciLAogICAgICAgICAgICAgICAgInYiOiAi5Lit5Zu95YaF5ZywIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmuK/liaciLAogICAgICAgICAgICAgICAgInYiOiAi5Lit5Zu96aaZ5rivIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlj7DliaciLAogICAgICAgICAgICAgICAgInYiOiAi5Lit5Zu95Y+w5rm+IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLpn6nliaciLAogICAgICAgICAgICAgICAgInYiOiAi6Z+p5Zu9IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnvo7liaciLAogICAgICAgICAgICAgICAgInYiOiAi576O5Zu9IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLoi7HliaciLAogICAgICAgICAgICAgICAgInYiOiAi6Iux5Zu9IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLml6XliaciLAogICAgICAgICAgICAgICAgInYiOiAi5pel5pysIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLms7DliaciLAogICAgICAgICAgICAgICAgInYiOiAi5rOw5Zu9IgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJ0YWdzIiwKICAgICAgICAgICAgIm5hbWUiOiAi5YWo6YOo57G75Z6LIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqOexu+WeiyIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIumdkuaYpSIsCiAgICAgICAgICAgICAgICAidiI6ICLpnZLmmKUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWPpOijhSIsCiAgICAgICAgICAgICAgICAidiI6ICLlj6Too4UiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIueIseaDhSIsCiAgICAgICAgICAgICAgICAidiI6ICLniLHmg4UiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIumDveW4giIsCiAgICAgICAgICAgICAgICAidiI6ICLpg73luIIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWWnOWJpyIsCiAgICAgICAgICAgICAgICAidiI6ICLllpzliacs5pCe56yRIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmiJjkuokiLAogICAgICAgICAgICAgICAgInYiOiAi5oiY5LqJIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlhpvml4UiLAogICAgICAgICAgICAgICAgInYiOiAi5Yab5peFIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLosI3miJgiLAogICAgICAgICAgICAgICAgInYiOiAi6LCN5oiYIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlgbblg48iLAogICAgICAgICAgICAgICAgInYiOiAi5YG25YOPIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLorabljKoiLAogICAgICAgICAgICAgICAgInYiOiAi6K2m5YyqIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlhpLpmakiLAogICAgICAgICAgICAgICAgInYiOiAi5YaS6ZmpIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnqb/otooiLAogICAgICAgICAgICAgICAgInYiOiAi56m/6LaKIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLku5nkvqAiLAogICAgICAgICAgICAgICAgInYiOiAi5LuZ5L6gIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmrabkvqAiLAogICAgICAgICAgICAgICAgInYiOiAi5q2m5L6gIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmgqznlpEiLAogICAgICAgICAgICAgICAgInYiOiAi5oKs55aRIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnvarmoYgiLAogICAgICAgICAgICAgICAgInYiOiAi572q5qGIIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlrrbluq0iLAogICAgICAgICAgICAgICAgInYiOiAi5a625bqtIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLljoblj7IiLAogICAgICAgICAgICAgICAgInYiOiAi5Y6G5Y+yIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlubTku6MiLAogICAgICAgICAgICAgICAgInYiOiAi5bm05LujIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlhpzmnZEiLAogICAgICAgICAgICAgICAgInYiOiAi5Yac5p2RIgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJ5ZWFyIiwKICAgICAgICAgICAgIm5hbWUiOiAi5YWo6YOo5bm05Lu9IiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqOW5tOS7vSIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjUiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyNSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyNCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDI0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIzIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjIiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyMiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDIxIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIwIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTkiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxOSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxOCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE4IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE3IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTYiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxNiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE0LTIwMTEiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxMS0yMDE0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmm7Tml6kiLAogICAgICAgICAgICAgICAgInYiOiAiLTIwMTAiCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogInN0YXR1cyIsCiAgICAgICAgICAgICJuYW1lIjogIuWFqOmDqOinhOagvCIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlhajpg6jop4TmoLwiLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlhajnvZHni6zmkq0iLAogICAgICAgICAgICAgICAgInYiOiAiMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5LyY6YW36Ieq5Yi2IiwKICAgICAgICAgICAgICAgICJ2IjogIjIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuW3suWujOe7kyIsCiAgICAgICAgICAgICAgICAidiI6ICIzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLljbPlsIbkuIrnur8iLAogICAgICAgICAgICAgICAgInYiOiAiNCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi55+t5YmnIiwKICAgICAgICAgICAgICAgICJ2IjogIjUiCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogInBheV90eXBlIiwKICAgICAgICAgICAgIm5hbWUiOiAi5LuY6LS557G75Z6LIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuS7mOi0ueexu+WeiyIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWFjei0uSIsCiAgICAgICAgICAgICAgICAidiI6ICIwIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJWSVAiLAogICAgICAgICAgICAgICAgInYiOiAiMiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5LuY6LS5IiwKICAgICAgICAgICAgICAgICJ2IjogIjEiCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogInNvcnQiLAogICAgICAgICAgICAibmFtZSI6ICLnu7zlkIjmjpLluo8iLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi57u85ZCI5o6S5bqPIiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi54Ot5bqm5pyA6auYIiwKICAgICAgICAgICAgICAgICJ2IjogIjciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuacgOaWsOS4iue6vyIsCiAgICAgICAgICAgICAgICAidiI6ICIxIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmnIDlpb3or4QiLAogICAgICAgICAgICAgICAgInYiOiAiMyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pyA5aSa5pKt5pS+IiwKICAgICAgICAgICAgICAgICJ2IjogIjIiCiAgICAgICAgICAgIH1dCiAgICAgICAgfV0sCiAgICAgICAgIueUteW9sSI6IFt7CiAgICAgICAgICAgICJrZXkiOiAibWFpbl9hcmVhIiwKICAgICAgICAgICAgIm5hbWUiOiAi5YWo6YOo5Zyw5Yy6IiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqOWcsOWMuiIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWGheWcsCIsCiAgICAgICAgICAgICAgICAidiI6ICLkuK3lm73lhoXlnLAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuS4reWbvemmmea4ryIsCiAgICAgICAgICAgICAgICAidiI6ICLkuK3lm73pppnmuK8iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuS4reWbveWPsOa5viIsCiAgICAgICAgICAgICAgICAidiI6ICLkuK3lm73lj7Dmub4iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIue+juWbvSIsCiAgICAgICAgICAgICAgICAidiI6ICLnvo7lm70iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWNsOW6piIsCiAgICAgICAgICAgICAgICAidiI6ICLljbDluqYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaXpemfqSIsCiAgICAgICAgICAgICAgICAidiI6ICLpn6nlm70s5pel5pysIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLms7Dlm70iLAogICAgICAgICAgICAgICAgInYiOiAi5rOw5Zu9IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmrKfmtLIiLAogICAgICAgICAgICAgICAgInYiOiAi5qyn5rSyIgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJ0YWdzIiwKICAgICAgICAgICAgIm5hbWUiOiAi5YWo6YOo57G75Z6LIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqOexu+WeiyIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWWnOWJpyIsCiAgICAgICAgICAgICAgICAidiI6ICLllpzliacs5pCe56yRIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLliqjkvZwiLAogICAgICAgICAgICAgICAgInYiOiAi5Yqo5L2cIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmgKrlhb0iLAogICAgICAgICAgICAgICAgInYiOiAi5oCq5YW9IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmiJjkuokiLAogICAgICAgICAgICAgICAgInYiOiAi5oiY5LqJIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLniLHmg4UiLAogICAgICAgICAgICAgICAgInYiOiAi54ix5oOFIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmgqznlpEiLAogICAgICAgICAgICAgICAgInYiOiAi5oKs55aRIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmrabkvqAiLAogICAgICAgICAgICAgICAgInYiOiAi5q2m5L6gIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlpYflubsiLAogICAgICAgICAgICAgICAgInYiOiAi5aWH5bm7IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnp5HlubsiLAogICAgICAgICAgICAgICAgInYiOiAi56eR5bm7IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlhpLpmakiLAogICAgICAgICAgICAgICAgInYiOiAi5YaS6ZmpIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLorabljKoiLAogICAgICAgICAgICAgICAgInYiOiAi6K2m5YyqIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLliqjnlLsiLAogICAgICAgICAgICAgICAgInYiOiAi5Yqo55S7IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmg4rmgpoiLAogICAgICAgICAgICAgICAgInYiOiAi5oOK5oKaIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLniq/nvaoiLAogICAgICAgICAgICAgICAgInYiOiAi54qv572qIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmgZDmgJYiLAogICAgICAgICAgICAgICAgInYiOiAi5oGQ5oCWIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLliafmg4UiLAogICAgICAgICAgICAgICAgInYiOiAi5Ymn5oOFIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLljoblj7IiLAogICAgICAgICAgICAgICAgInYiOiAi5Y6G5Y+yIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnuqrlvZXniYciLAogICAgICAgICAgICAgICAgInYiOiAi57qq5b2V54mHIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLkvKDorrAiLAogICAgICAgICAgICAgICAgInYiOiAi5Lyg6K6wIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmrYzoiJ4iLAogICAgICAgICAgICAgICAgInYiOiAi5q2M6IieIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnn63niYciLAogICAgICAgICAgICAgICAgInYiOiAi55+t54mHIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlhbbku5YiLAogICAgICAgICAgICAgICAgInYiOiAi5YW25LuWIgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJzb3VyY2UiLAogICAgICAgICAgICAibmFtZSI6ICLlhajpg6jop4TmoLwiLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOo6KeE5qC8IiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6Zmi57q/IiwKICAgICAgICAgICAgICAgICJ2IjogIjEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIue9kee7nOeUteW9sSIsCiAgICAgICAgICAgICAgICAidiI6ICIwIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLni6zmkq0iLAogICAgICAgICAgICAgICAgInYiOiAiMiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6auY5riF5L+u5aSNIiwKICAgICAgICAgICAgICAgICJ2IjogIjMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjEwODBQIiwKICAgICAgICAgICAgICAgICJ2IjogIjQiCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogInllYXIiLAogICAgICAgICAgICAibmFtZSI6ICLlhajpg6jlubTku70iLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOo5bm05Lu9IiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyNSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDI1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDI0IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjMiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyMyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMiIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDIyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIxIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjAiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyMCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxOSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE5IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE4IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTciLAogICAgICAgICAgICAgICAgInYiOiAiMjAxNyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNiIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE2IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE1IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTQtMjAxMCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDEwLTIwMTQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMDktMjAwMCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDAwLTIwMDkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjkw5bm05LujIiwKICAgICAgICAgICAgICAgICJ2IjogIjE5OTAtMTk5OSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiODDlubTku6MiLAogICAgICAgICAgICAgICAgInYiOiAiMTk4MC0xOTg5IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICI3MOW5tOS7oyIsCiAgICAgICAgICAgICAgICAidiI6ICIxOTcwLTE5NzkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuabtOaXqSIsCiAgICAgICAgICAgICAgICAidiI6ICItMTk2OSIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAicGF5X3R5cGUiLAogICAgICAgICAgICAibmFtZSI6ICLku5jotLnnsbvlnosiLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5LuY6LS557G75Z6LIiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5YWN6LS5IiwKICAgICAgICAgICAgICAgICJ2IjogIjAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuS8muWRmCIsCiAgICAgICAgICAgICAgICAidiI6ICIyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLngrnmkq0iLAogICAgICAgICAgICAgICAgInYiOiAiMSIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAic29ydCIsCiAgICAgICAgICAgICJuYW1lIjogIue7vOWQiOaOkuW6jyIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLnu7zlkIjmjpLluo8iLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLng63luqbmnIDpq5giLAogICAgICAgICAgICAgICAgInYiOiAiNyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pyA5aSa5pKt5pS+IiwKICAgICAgICAgICAgICAgICJ2IjogIjIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuacgOaWsOS4iue6vyIsCiAgICAgICAgICAgICAgICAidiI6ICIxIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmnIDlpb3or4QiLAogICAgICAgICAgICAgICAgInYiOiAiMyIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAidGFnX2xhYmVsX25hbWUiLAogICAgICAgICAgICAibmFtZSI6ICLkuLrkvaDmjqjojZAiLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5Li65L2g5o6o6I2QIiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6auY5YiG5b+F55yLIiwKICAgICAgICAgICAgICAgICJ2IjogIumrmOWIhuW/heeciyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5Y2W5bqn55S15b2xIiwKICAgICAgICAgICAgICAgICJ2IjogIuWNluW6p+eUteW9sSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5bCP6K+05pS557yWIiwKICAgICAgICAgICAgICAgICJ2IjogIuWwj+ivtOaUuee8liIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6ZOB6KGA56Gs5rGJIiwKICAgICAgICAgICAgICAgICJ2IjogIumTgeihgOehrOaxiSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6KeG5pWI5aSn54mHIiwKICAgICAgICAgICAgICAgICJ2IjogIuinhuaViOWkp+eJhyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5ryr55S75pS557yWIiwKICAgICAgICAgICAgICAgICJ2IjogIua8q+eUu+aUuee8liIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi57ud5Zyw5rGC55SfIiwKICAgICAgICAgICAgICAgICJ2IjogIue7neWcsOaxgueUnyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi55yf5Lq655yf5LqL5pS557yWIiwKICAgICAgICAgICAgICAgICJ2IjogIuecn+S6uuecn+S6i+aUuee8liIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6IyD5LyfIiwKICAgICAgICAgICAgICAgICJ2IjogIuiMg+S8nyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi54Gr54iG5p6q5oiYIiwKICAgICAgICAgICAgICAgICJ2IjogIueBq+eIhuaequaImCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5b2x5Y+y57uP5YW4IiwKICAgICAgICAgICAgICAgICJ2IjogIuW9seWPsue7j+WFuCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5ouv5pWR5LiW55WMIiwKICAgICAgICAgICAgICAgICJ2IjogIuaLr+aVkeS4lueVjCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5LiH6IycIiwKICAgICAgICAgICAgICAgICJ2IjogIuS4h+iMnCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6ams5oCd57qvIiwKICAgICAgICAgICAgICAgICJ2IjogIumprOaAnee6ryIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi546L5L+K5YevIiwKICAgICAgICAgICAgICAgICJ2IjogIueOi+S/iuWHryIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6LGq5Y2O6Zi15a65IiwKICAgICAgICAgICAgICAgICJ2IjogIuixquWNjumYteWuuSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5p2O546JIiwKICAgICAgICAgICAgICAgICJ2IjogIuadjueOiSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5peg5Y6Y5aS05Zac5YmnIiwKICAgICAgICAgICAgICAgICJ2IjogIuaXoOWOmOWktOWWnOWJpyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6LaF6IO95YqbIiwKICAgICAgICAgICAgICAgICJ2IjogIui2heiDveWKmyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5qyi5Zac5pCt5qGjIiwKICAgICAgICAgICAgICAgICJ2IjogIuasouWWnOaQreahoyIKICAgICAgICAgICAgfV0KICAgICAgICB9XSwKICAgICAgICAi57u86Im6IjogW3sKICAgICAgICAgICAgImtleSI6ICJtYWluX2FyZWEiLAogICAgICAgICAgICAibmFtZSI6ICLlhajpg6jlnLDljLoiLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOo5Zyw5Yy6IiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5YaF5ZywIiwKICAgICAgICAgICAgICAgICJ2IjogIuS4reWbveWGheWcsCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5Lit5Zu95Y+w5rm+IiwKICAgICAgICAgICAgICAgICJ2IjogIuS4reWbveWPsOa5viIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi576O5Zu9IiwKICAgICAgICAgICAgICAgICJ2IjogIue+juWbvSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6Iux5Zu9IiwKICAgICAgICAgICAgICAgICJ2IjogIuiLseWbvSIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAidGFncyIsCiAgICAgICAgICAgICJuYW1lIjogIuWFqOmDqOexu+WeiyIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlhajpg6jnsbvlnosiLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlgbblg48iLAogICAgICAgICAgICAgICAgInYiOiAi5YG25YOPIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLoiJ7ouYgiLAogICAgICAgICAgICAgICAgInYiOiAi6Iie6LmIIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLpn7PkuZAiLAogICAgICAgICAgICAgICAgInYiOiAi6Z+z5LmQIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmg4XmhJ8iLAogICAgICAgICAgICAgICAgInYiOiAi5oOF5oSfIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLllpzliaciLAogICAgICAgICAgICAgICAgInYiOiAi5Zac5YmnLOaQnueskSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5L2T6IKyIiwKICAgICAgICAgICAgICAgICJ2IjogIuS9k+iCsiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5ri45oiPIiwKICAgICAgICAgICAgICAgICJ2IjogIua4uOaIjyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi55u45aOwIiwKICAgICAgICAgICAgICAgICJ2IjogIuebuOWjsCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5ama5oGLIiwKICAgICAgICAgICAgICAgICJ2IjogIuWpmuaBiyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pe25bCaIiwKICAgICAgICAgICAgICAgICJ2IjogIuaXtuWwmiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pma5LyaIiwKICAgICAgICAgICAgICAgICJ2IjogIuaZmuS8miIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5piO5pif6K6/6LCIIiwKICAgICAgICAgICAgICAgICJ2IjogIuaYjuaYn+iuv+iwiCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5Lqy5a2QIiwKICAgICAgICAgICAgICAgICJ2IjogIuS6suWtkCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi55Sf5rS7IiwKICAgICAgICAgICAgICAgICJ2IjogIueUn+a0uyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5paH5YyWIiwKICAgICAgICAgICAgICAgICJ2IjogIuaWh+WMliIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi576O6aOfIiwKICAgICAgICAgICAgICAgICJ2IjogIue+jumjnyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5peF5ri4IiwKICAgICAgICAgICAgICAgICJ2IjogIuaXhea4uCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi55uK5pm6IiwKICAgICAgICAgICAgICAgICJ2IjogIuebiuaZuiIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAieWVhciIsCiAgICAgICAgICAgICJuYW1lIjogIuWFqOmDqOW5tOS7vSIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlhajpg6jlubTku70iLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDI1IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjQiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyNCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMyIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDIzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIyIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjEiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDIwIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE5IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTgiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxOCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNyIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE3IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE2IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTUiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxNSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNC0yMDExIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTEtMjAxNCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pu05pepIiwKICAgICAgICAgICAgICAgICJ2IjogIi0yMDEwIgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJzdGF0dXMiLAogICAgICAgICAgICAibmFtZSI6ICLlhajpg6jop4TmoLwiLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOo6KeE5qC8IiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5LyY6YW36Ieq5Yi2IiwKICAgICAgICAgICAgICAgICJ2IjogIjIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuS8mOmFt+eLrOaSrSIsCiAgICAgICAgICAgICAgICAidiI6ICIxIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnlLXop4bnu7zoiboiLAogICAgICAgICAgICAgICAgInYiOiAiNiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5bey5a6M57uTIiwKICAgICAgICAgICAgICAgICJ2IjogIjMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWNs+WwhuS4iue6vyIsCiAgICAgICAgICAgICAgICAidiI6ICI0IgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJwYXlfdHlwZSIsCiAgICAgICAgICAgICJuYW1lIjogIuS7mOi0ueexu+WeiyIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLku5jotLnnsbvlnosiLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlhY3otLkiLAogICAgICAgICAgICAgICAgInYiOiAiMCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiVklQIiwKICAgICAgICAgICAgICAgICJ2IjogIjIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuS7mOi0uSIsCiAgICAgICAgICAgICAgICAidiI6ICIxIgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJzb3J0IiwKICAgICAgICAgICAgIm5hbWUiOiAi54Ot5bqm5pyA6auYIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIueDreW6puacgOmrmCIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuacgOaWsOabtOaWsCIsCiAgICAgICAgICAgICAgICAidiI6ICI4IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmnIDov5HlvIDmkq0iLAogICAgICAgICAgICAgICAgInYiOiAiOSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pyA5aSa6K+E6K66IiwKICAgICAgICAgICAgICAgICJ2IjogIjQiCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogInRhZ19sYWJlbF9uYW1lIiwKICAgICAgICAgICAgIm5hbWUiOiAi5Li65L2g5o6o6I2QIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuS4uuS9oOaOqOiNkCIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuiInuWPsOernua8lCIsCiAgICAgICAgICAgICAgICAidiI6ICLoiJ7lj7Dnq57mvJQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWImOmbqOaYlSIsCiAgICAgICAgICAgICAgICAidiI6ICLliJjpm6jmmJUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIueOi+S4gOWNmiIsCiAgICAgICAgICAgICAgICAidiI6ICLnjovkuIDljZoiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIumfqeW6miIsCiAgICAgICAgICAgICAgICAidiI6ICLpn6nlupoiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuadjuaJv+mTiSIsCiAgICAgICAgICAgICAgICAidiI6ICLmnY7mib/pk4kiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaIt+WkluernuaKgCIsCiAgICAgICAgICAgICAgICAidiI6ICLmiLflpJbnq57mioAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIua1meaxn+WNq+inhiIsCiAgICAgICAgICAgICAgICAidiI6ICLmtZnmsZ/ljavop4YiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuS4nOaWueWNq+inhiIsCiAgICAgICAgICAgICAgICAidiI6ICLkuJzmlrnljavop4YiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWys+S6kem5jyIsCiAgICAgICAgICAgICAgICAidiI6ICLlsrPkupHpuY8iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIueOi+i/hSIsCiAgICAgICAgICAgICAgICAidiI6ICLnjovov4UiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuadqOi/qiIsCiAgICAgICAgICAgICAgICAidiI6ICLmnajov6oiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuadqOi2hei2iiIsCiAgICAgICAgICAgICAgICAidiI6ICLmnajotoXotooiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIum7hOaYjuaYiiIsCiAgICAgICAgICAgICAgICAidiI6ICLpu4TmmI7mmIoiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIumDreS6rOmjniIsCiAgICAgICAgICAgICAgICAidiI6ICLpg63kuqzpo54iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuasp+mYs+WonOWonCIsCiAgICAgICAgICAgICAgICAidiI6ICLmrKfpmLPlqJzlqJwiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuW+t+S6keekviIsCiAgICAgICAgICAgICAgICAidiI6ICLlvrfkupHnpL4iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIumDkeaBuiIsCiAgICAgICAgICAgICAgICAidiI6ICLpg5HmgboiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWNjuWwkSIsCiAgICAgICAgICAgICAgICAidiI6ICLljY7lsJEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIumDreW+t+e6siIsCiAgICAgICAgICAgICAgICAidiI6ICLpg63lvrfnurIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIui0vueOsiIsCiAgICAgICAgICAgICAgICAidiI6ICLotL7njrIiCiAgICAgICAgICAgIH1dCiAgICAgICAgfV0sCiAgICAgICAgIuWKqOa8qyI6IFt7CiAgICAgICAgICAgICJrZXkiOiAic29ydCIsCiAgICAgICAgICAgICJuYW1lIjogIue7vOWQiOaOkuW6jyIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLnu7zlkIjmjpLluo8iLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmnIDlpJrmkq3mlL4iLAogICAgICAgICAgICAgICAgInYiOiAiMiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pyA5aW96K+EIiwKICAgICAgICAgICAgICAgICJ2IjogIjMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuacgOaWsOS4iue6vyIsCiAgICAgICAgICAgICAgICAidiI6ICIxIgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJtYWluX2FyZWEiLAogICAgICAgICAgICAibmFtZSI6ICLlhajpg6jlnLDljLoiLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOo5Zyw5Yy6IiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5YaF5ZywIiwKICAgICAgICAgICAgICAgICJ2IjogIuS4reWbveWGheWcsCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pel5pysIiwKICAgICAgICAgICAgICAgICJ2IjogIuaXpeacrCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi576O5Zu9IiwKICAgICAgICAgICAgICAgICJ2IjogIue+juWbvSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5Lit5Zu95Y+w5rm+IiwKICAgICAgICAgICAgICAgICJ2IjogIuS4reWbveWPsOa5viIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5YW25LuWIiwKICAgICAgICAgICAgICAgICJ2IjogIuWFtuS7liIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAidGFncyIsCiAgICAgICAgICAgICJuYW1lIjogIuWFqOmDqOexu+WeiyIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlhajpg6jnsbvlnosiLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLng63ooYAiLAogICAgICAgICAgICAgICAgInYiOiAi54Ot6KGALOaImOaWlyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5Yqx5b+XIiwKICAgICAgICAgICAgICAgICJ2IjogIuWKseW/lyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi546E5bm7IiwKICAgICAgICAgICAgICAgICJ2IjogIueOhOW5uyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5Y+k6aOOIiwKICAgICAgICAgICAgICAgICJ2IjogIuWOhuWPsizlj6Tpo44iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaBi+eIsSIsCiAgICAgICAgICAgICAgICAidiI6ICLmgYvniLEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIumdkuaYpSIsCiAgICAgICAgICAgICAgICAidiI6ICLpnZLmmKUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuagoeWbrSIsCiAgICAgICAgICAgICAgICAidiI6ICLmoKHlm60iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIui/kOWKqCIsCiAgICAgICAgICAgICAgICAidiI6ICLnpL7lm6Is6L+Q5YqoIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnp5HlubsiLAogICAgICAgICAgICAgICAgInYiOiAi56eR5bm7IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlhpLpmakiLAogICAgICAgICAgICAgICAgInYiOiAi5YaS6ZmpIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLprZTms5UiLAogICAgICAgICAgICAgICAgInYiOiAi6a2U5rOVIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLml6XluLgiLAogICAgICAgICAgICAgICAgInYiOiAi5pel5bi4IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmsrvmhIgiLAogICAgICAgICAgICAgICAgInYiOiAi5rK75oSIIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmnLrmiJgiLAogICAgICAgICAgICAgICAgInYiOiAi5py65oiYIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmjqjnkIYiLAogICAgICAgICAgICAgICAgInYiOiAi5o6o55CGIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLpg73luIIiLAogICAgICAgICAgICAgICAgInYiOiAi6YO95biCIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlsI/or7TmlLkiLAogICAgICAgICAgICAgICAgInYiOiAi5bCP6K+05pS557yWIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmuLjmiI/mlLkiLAogICAgICAgICAgICAgICAgInYiOiAi5ri45oiP5pS557yWIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmvKvnlLvmlLkiLAogICAgICAgICAgICAgICAgInYiOiAi5ryr55S75pS557yWIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLliqjmgIHmvKsiLAogICAgICAgICAgICAgICAgInYiOiAi5Yqo5oCB5ryr55S7IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnibnmkYQiLAogICAgICAgICAgICAgICAgInYiOiAi54m55pGEIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLluIPooovmiI8iLAogICAgICAgICAgICAgICAgInYiOiAi5biD6KKL5oiPIgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJjb21wbGV0ZWQiLAogICAgICAgICAgICAibmFtZSI6ICLov57ovb3mg4XlhrUiLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi6L+e6L295oOF5Ya1IiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pu05paw5LitIiwKICAgICAgICAgICAgICAgICJ2IjogIjAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuW3suWujOe7kyIsCiAgICAgICAgICAgICAgICAidiI6ICIxIgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJwYXlfdHlwZSIsCiAgICAgICAgICAgICJuYW1lIjogIuS7mOi0ueexu+WeiyIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLku5jotLnnsbvlnosiLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlhY3otLkiLAogICAgICAgICAgICAgICAgInYiOiAiMCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5Lya5ZGYIiwKICAgICAgICAgICAgICAgICJ2IjogIjIiCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogInllYXIiLAogICAgICAgICAgICAibmFtZSI6ICLlhajpg6jlubTku70iLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOo5bm05Lu9IiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyNSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDI1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDI0IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjMiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyMyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMiIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDIyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIxIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjAiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyMCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxOSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE5IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE4IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTciLAogICAgICAgICAgICAgICAgInYiOiAiMjAxNyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNiIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE2IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE1IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTQiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxNCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxMyIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDEzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDEyIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTEiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMDDlubTku6MiLAogICAgICAgICAgICAgICAgInYiOiAiMjAwMC0yMDEwIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmm7Tml6kiLAogICAgICAgICAgICAgICAgInYiOiAiLTE5OTkiCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogInRhZ19sYWJlbF9uYW1lIiwKICAgICAgICAgICAgIm5hbWUiOiAi5Li65L2g5o6o6I2QIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuS4uuS9oOaOqOiNkCIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjNE5Yqo55S7IiwKICAgICAgICAgICAgICAgICJ2IjogIjNE5Yqo55S7IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmkJ7nrJHml6XluLgiLAogICAgICAgICAgICAgICAgInYiOiAi5pCe56yR5pel5bi4IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlpKfnlLfkuLsiLAogICAgICAgICAgICAgICAgInYiOiAi5aSn55S35Li7IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLpq5jnh4MiLAogICAgICAgICAgICAgICAgInYiOiAi6auY54eDIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLokIzns7siLAogICAgICAgICAgICAgICAgInYiOiAi6JCM57O7IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLkv67nnJ8iLAogICAgICAgICAgICAgICAgInYiOiAi5L+u55yfIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmgIDml6ciLAogICAgICAgICAgICAgICAgInYiOiAi5oCA5penIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLotoXnuqfoi7Hpm4QiLAogICAgICAgICAgICAgICAgInYiOiAi6LaF57qn6Iux6ZuEIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmsLTmoJHlpYjlpYgiLAogICAgICAgICAgICAgICAgInYiOiAi5rC05qCR5aWI5aWIIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlvKDmnbAiLAogICAgICAgICAgICAgICAgInYiOiAi5byg5p2wIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnn7PnlLDlvbAiLAogICAgICAgICAgICAgICAgInYiOiAi55+z55Sw5b2wIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlrojmiqTlnLDnkIMiLAogICAgICAgICAgICAgICAgInYiOiAi5a6I5oqk5Zyw55CDIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlnIbosLciLAogICAgICAgICAgICAgICAgInYiOiAi5ZyG6LC3IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlsbHmlrAiLAogICAgICAgICAgICAgICAgInYiOiAi5bGx5pawIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlpI3ku4ciLAogICAgICAgICAgICAgICAgInYiOiAi5aSN5LuHIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlup/mn7TpgIbooq0iLAogICAgICAgICAgICAgICAgInYiOiAi5bqf5p+06YCG6KKtIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLkvqbmjqIiLAogICAgICAgICAgICAgICAgInYiOiAi5L6m5o6iIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLml6DljpjlpLQiLAogICAgICAgICAgICAgICAgInYiOiAi5peg5Y6Y5aS0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLpnZLlsbHliJrmmIwiLAogICAgICAgICAgICAgICAgInYiOiAi6Z2S5bGx5Yia5piMIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmgqznlpEiLAogICAgICAgICAgICAgICAgInYiOiAi5oKs55aRIgogICAgICAgICAgICB9XQogICAgICAgIH1dLAogICAgICAgICLlsJHlhL8iOiBbewogICAgICAgICAgICAia2V5IjogIm1haW5fYXJlYSIsCiAgICAgICAgICAgICJuYW1lIjogIuWFqOmDqOWcsOWMuiIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlhajpg6jlnLDljLoiLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLkuK3lm70iLAogICAgICAgICAgICAgICAgInYiOiAi5Lit5Zu9LOmmmea4ryzlj7Dmub4iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIue+juWbvSIsCiAgICAgICAgICAgICAgICAidiI6ICLnvo7lm70iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuiLseWbvSIsCiAgICAgICAgICAgICAgICAidiI6ICLoi7Hlm70iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWFtuS7luWbveWutiIsCiAgICAgICAgICAgICAgICAidiI6ICLlhbbku5YiCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogInNob3dfbGFiZWxfdHlwZSIsCiAgICAgICAgICAgICJuYW1lIjogIuWFqOmDqOexu+WeiyIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlhajpg6jnsbvlnosiLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLliqjnlLsiLAogICAgICAgICAgICAgICAgInYiOiAi5Yqo55S7IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlhL/mrYwiLAogICAgICAgICAgICAgICAgInYiOiAi5YS/5q2MIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnjqnlhbciLAogICAgICAgICAgICAgICAgInYiOiAi546p5YW3IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLliqjnlLvnlLXlvbEiLAogICAgICAgICAgICAgICAgInYiOiAi55S15b2xIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnu5jmnKzmlYXkuosiLAogICAgICAgICAgICAgICAgInYiOiAi57uY5pys5pWF5LqLIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnnJ/kuroiLAogICAgICAgICAgICAgICAgInYiOiAi55yf5Lq6IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlsJHlhL/nu7zoiboiLAogICAgICAgICAgICAgICAgInYiOiAi5bCR5YS/57u86Im6IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLkurLlrZAiLAogICAgICAgICAgICAgICAgInYiOiAi5Lqy5a2QIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmjqLntKLnuqrlrp4iLAogICAgICAgICAgICAgICAgInYiOiAi5o6i57Si57qq5a6eIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLpn7PpopEiLAogICAgICAgICAgICAgICAgInYiOiAi6Z+z6aKRIgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJjaGlsZF90YWdzIiwKICAgICAgICAgICAgIm5hbWUiOiAi5YWo6YOo5YiG57G7IiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqOWIhuexuyIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuebiuaZuiIsCiAgICAgICAgICAgICAgICAidiI6ICLnm4rmmboiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWGkumZqSIsCiAgICAgICAgICAgICAgICAidiI6ICLlhpLpmakiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuW5vem7mCIsCiAgICAgICAgICAgICAgICAidiI6ICLlub3pu5giCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuacuueUsiIsCiAgICAgICAgICAgICAgICAidiI6ICLmnLrnlLIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWFrOS4u+mtlOazlSIsCiAgICAgICAgICAgICAgICAidiI6ICLlhazkuLss6a2U5rOVIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLkuqTpgJrlt6XlhbciLAogICAgICAgICAgICAgICAgInYiOiAi5Lqk6YCa5bel5YW3IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmgZDpvpkiLAogICAgICAgICAgICAgICAgInYiOiAi5oGQ6b6ZIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLliqjniakiLAogICAgICAgICAgICAgICAgInYiOiAi5Yqo54mpIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlirHlv5ciLAogICAgICAgICAgICAgICAgInYiOiAi5Yqx5b+XIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlj4vmg4UiLAogICAgICAgICAgICAgICAgInYiOiAi5Y+L5oOFIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmiJjmlpciLAogICAgICAgICAgICAgICAgInYiOiAi5oiY5paXIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmoKHlm60iLAogICAgICAgICAgICAgICAgInYiOiAi5qCh5ZutIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmraPkuYkiLAogICAgICAgICAgICAgICAgInYiOiAi5q2j5LmJIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLng63ooYAiLAogICAgICAgICAgICAgICAgInYiOiAi54Ot6KGAIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnp5HlubsiLAogICAgICAgICAgICAgICAgInYiOiAi56eR5bm7IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnq6Xor50iLAogICAgICAgICAgICAgICAgInYiOiAi56ul6K+dIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLov5DliqgiLAogICAgICAgICAgICAgICAgInYiOiAi6L+Q5YqoIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLkuJPms6jlipsiLAogICAgICAgICAgICAgICAgInYiOiAi5LiT5rOo5YqbIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLliJvpgKDlipsiLAogICAgICAgICAgICAgICAgInYiOiAi5Yib6YCg5YqbIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmg7PosaHlipsiLAogICAgICAgICAgICAgICAgInYiOiAi5oOz6LGh5YqbIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnp5Hmma4iLAogICAgICAgICAgICAgICAgInYiOiAi56eR5pmuIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmg4XllYYiLAogICAgICAgICAgICAgICAgInYiOiAi5oOF5ZWGIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmgJ3nu7TpgLvovpEiLAogICAgICAgICAgICAgICAgInYiOiAi5oCd57u06YC76L6RIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlhbTotqPln7nlhbsiLAogICAgICAgICAgICAgICAgInYiOiAi5YW06Laj5Z+55YW7IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLor63mlociLAogICAgICAgICAgICAgICAgInYiOiAi6K+t5paHIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLoi7Hor60iLAogICAgICAgICAgICAgICAgInYiOiAi6Iux6K+tIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmlbDlraYiLAogICAgICAgICAgICAgICAgInYiOiAi5pWw5a2mIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLor77nqIvovoXlr7wiLAogICAgICAgICAgICAgICAgInYiOiAi6K++56iL6L6F5a+8IgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJhZ2UiLAogICAgICAgICAgICAibmFtZSI6ICLlhajpg6jlubTpvoQiLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOo5bm06b6EIiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMC0y5bKBIiwKICAgICAgICAgICAgICAgICJ2IjogIjAtMiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMy005bKBIiwKICAgICAgICAgICAgICAgICJ2IjogIjMtNCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiNS025bKBIiwKICAgICAgICAgICAgICAgICJ2IjogIjUtNiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiN+WygeS7peS4iiIsCiAgICAgICAgICAgICAgICAidiI6ICI3LSIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAicGF5X3R5cGUiLAogICAgICAgICAgICAibmFtZSI6ICLku5jotLnnsbvlnosiLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5LuY6LS557G75Z6LIiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5YWN6LS5IiwKICAgICAgICAgICAgICAgICJ2IjogIjAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuS7mOi0uSIsCiAgICAgICAgICAgICAgICAidiI6ICIxIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJWSVAiLAogICAgICAgICAgICAgICAgInYiOiAiMiIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAic29ydCIsCiAgICAgICAgICAgICJuYW1lIjogIue7vOWQiOaOkuW6jyIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLnu7zlkIjmjpLluo8iLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmnIDmlrDkuIrnur8iLAogICAgICAgICAgICAgICAgInYiOiAiMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pyA5aSa5pKt5pS+IiwKICAgICAgICAgICAgICAgICJ2IjogIjIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuacgOWkmuivhOiuuiIsCiAgICAgICAgICAgICAgICAidiI6ICI0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmnIDlpJrmlLbol48iLAogICAgICAgICAgICAgICAgInYiOiAiNSIKICAgICAgICAgICAgfV0KICAgICAgICB9XSwKICAgICAgICAi57qq5b2V54mHIjogW3sKICAgICAgICAgICAgImtleSI6ICJ0YWdzIiwKICAgICAgICAgICAgIm5hbWUiOiAi5YWo6YOo57G75Z6LIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqOexu+WeiyIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIue+jumjnyIsCiAgICAgICAgICAgICAgICAidiI6ICLnvo7po58iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuiHqueEtiIsCiAgICAgICAgICAgICAgICAidiI6ICLoh6rnhLYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWOhuWPsiIsCiAgICAgICAgICAgICAgICAidiI6ICLljoblj7IiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaOoumZqSIsCiAgICAgICAgICAgICAgICAidiI6ICLmjqLpmakiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWGm+S6iyIsCiAgICAgICAgICAgICAgICAidiI6ICLlhpvkuosiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuS6uueJqSIsCiAgICAgICAgICAgICAgICAidiI6ICLkurrniakiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWuh+WumSIsCiAgICAgICAgICAgICAgICAidiI6ICLlroflrpkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWIkeS+piIsCiAgICAgICAgICAgICAgICAidiI6ICLliJHkvqYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuekvuS8miIsCiAgICAgICAgICAgICAgICAidiI6ICLnpL7kvJoiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuenkeaKgCIsCiAgICAgICAgICAgICAgICAidiI6ICLnp5HmioAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaXhea4uCIsCiAgICAgICAgICAgICAgICAidiI6ICLml4XmuLgiCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogImNvbXBhbnkiLAogICAgICAgICAgICAibmFtZSI6ICLlhajpg6jlh7rlk4EiLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOo5Ye65ZOBIiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiQkJDIiwKICAgICAgICAgICAgICAgICJ2IjogImJiYyxicml0aXNoIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlpK7op4YiLAogICAgICAgICAgICAgICAgInYiOiAi5aSu6KeGLOS4reWkrueUteinhuWPsCxjY3R2LOS4reWbveW5v+aSreeUteW9seeUteinhuiKguebruS6pOaYk+S4reW/gyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5Zu95a625Zyw55CGIiwKICAgICAgICAgICAgICAgICJ2IjogIuWbveWutuWcsOeQhiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiTG92ZSBOYXR1cmUiLAogICAgICAgICAgICAgICAgInYiOiAibG92ZSBuYXR1cmUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIkxHSSIsCiAgICAgICAgICAgICAgICAidiI6ICJsb29raW5nIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJBJkUiLAogICAgICAgICAgICAgICAgInYiOiAiYWUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIk9URiIsCiAgICAgICAgICAgICAgICAidiI6ICJmZW5jZSIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAieWVhciIsCiAgICAgICAgICAgICJuYW1lIjogIuWFqOmDqOW5tOS7vSIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlhajpg6jlubTku70iLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDI1IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjQiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyNCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMyIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDIzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIyIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjEiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMCIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDIwIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE5IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTgiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxOCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNyIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE3IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE2IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTUiLAogICAgICAgICAgICAgICAgInYiOiAiMjAxNSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNC0yMDExIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTEtMjAxNCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pu05pepIiwKICAgICAgICAgICAgICAgICJ2IjogIi0yMDEwIgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJwYXlfdHlwZSIsCiAgICAgICAgICAgICJuYW1lIjogIuS7mOi0ueexu+WeiyIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLku5jotLnnsbvlnosiLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlhY3otLkiLAogICAgICAgICAgICAgICAgInYiOiAiMCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5Lya5ZGYIiwKICAgICAgICAgICAgICAgICJ2IjogIjIiCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogInNvcnQiLAogICAgICAgICAgICAibmFtZSI6ICLng63luqbmnIDpq5giLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi54Ot5bqm5pyA6auYIiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi57u85ZCI5o6S5bqPIiwKICAgICAgICAgICAgICAgICJ2IjogIjAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuacgOaWsOS4iue6vyIsCiAgICAgICAgICAgICAgICAidiI6ICIxIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmnIDlpb3or4QiLAogICAgICAgICAgICAgICAgInYiOiAiMyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pyA5aSa5pS26JePIiwKICAgICAgICAgICAgICAgICJ2IjogIjUiCiAgICAgICAgICAgIH1dCiAgICAgICAgfV0sCiAgICAgICAgIuaWh+WMliI6IFt7CiAgICAgICAgICAgICJrZXkiOiAidGFncyIsCiAgICAgICAgICAgICJuYW1lIjogIuWFqOmDqOexu+WeiyIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlhajpg6jnsbvlnosiLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLosIjor50iLAogICAgICAgICAgICAgICAgInYiOiAi6LCI6K+dIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLohLHlj6Pnp4AiLAogICAgICAgICAgICAgICAgInYiOiAi6ISx5Y+j56eAIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLorr/osIgiLAogICAgICAgICAgICAgICAgInYiOiAi6K6/6LCIIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLorrLluqforrrlnZsiLAogICAgICAgICAgICAgICAgInYiOiAi6K6y5bqn6K665Z2bIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmiI/mm7Lmm7LoiboiLAogICAgICAgICAgICAgICAgInYiOiAi5oiP5puyLOabsuiJuiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6Iie5Y+w5YmnIiwKICAgICAgICAgICAgICAgICJ2IjogIuiInuWPsOWJpyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5paH5a2mIiwKICAgICAgICAgICAgICAgICJ2IjogIuaWh+WtpiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5Zu95a2mIiwKICAgICAgICAgICAgICAgICJ2IjogIuWbveWtpiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6Im65pyvIiwKICAgICAgICAgICAgICAgICJ2IjogIuiJuuacryIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5Z+56K6t6K++56iLIiwKICAgICAgICAgICAgICAgICJ2IjogIuWfueiureivvueoiyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pyJ5aOw5LmmIiwKICAgICAgICAgICAgICAgICJ2IjogIuacieWjsOS5piIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAicGVvcGxlIiwKICAgICAgICAgICAgIm5hbWUiOiAi5paH5YyW5aSn5ZKWIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuaWh+WMluWkp+WSliIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIueqpuaWh+a2myIsCiAgICAgICAgICAgICAgICAidiI6ICLnqqbmlofmtpsiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIumprOacqumDvSIsCiAgICAgICAgICAgICAgICAidiI6ICLpqazmnKrpg70iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIueZveWyqeadviIsCiAgICAgICAgICAgICAgICAidiI6ICLnmb3lsqnmnb4iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaiheavhSIsCiAgICAgICAgICAgICAgICAidiI6ICLmooXmr4UiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIumZiOmygeixqyIsCiAgICAgICAgICAgICAgICAidiI6ICLpmYjpsoHosasiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaoiueZuyIsCiAgICAgICAgICAgICAgICAidiI6ICLmqIrnmbsiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIue9l+aMr+WuhyIsCiAgICAgICAgICAgICAgICAidiI6ICLnvZfmjK/lrociCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuiSi+aWueiInyIsCiAgICAgICAgICAgICAgICAidiI6ICLokovmlrnoiJ8iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWFtuS7liIsCiAgICAgICAgICAgICAgICAidiI6ICLlhbbku5YiCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogInllYXIiLAogICAgICAgICAgICAibmFtZSI6ICLlhajpg6jlubTku70iLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOo5bm05Lu9IiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyNSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDI1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDI0IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjMiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyMyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMiIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDIyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIxIiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMjEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjAiLAogICAgICAgICAgICAgICAgInYiOiAiMjAyMCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxOSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE5IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE4IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTciLAogICAgICAgICAgICAgICAgInYiOiAiMjAxNyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNiIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDE2IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE1IiwKICAgICAgICAgICAgICAgICJ2IjogIjIwMTUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTQtMjAxMSIsCiAgICAgICAgICAgICAgICAidiI6ICIyMDExLTIwMTQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuabtOaXqSIsCiAgICAgICAgICAgICAgICAidiI6ICItMjAxMCIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAicGF5X3R5cGUiLAogICAgICAgICAgICAibmFtZSI6ICLku5jotLnnsbvlnosiLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5LuY6LS557G75Z6LIiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5YWN6LS5IiwKICAgICAgICAgICAgICAgICJ2IjogIjAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuS8muWRmCIsCiAgICAgICAgICAgICAgICAidiI6ICIyIgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJzb3J0IiwKICAgICAgICAgICAgIm5hbWUiOiAi54Ot5bqm5pyA6auYIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIueDreW6puacgOmrmCIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIue7vOWQiOaOkuW6jyIsCiAgICAgICAgICAgICAgICAidiI6ICIwIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmnIDmlrDkuIrnur8iLAogICAgICAgICAgICAgICAgInYiOiAiMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pyA5aW96K+EIiwKICAgICAgICAgICAgICAgICJ2IjogIjMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuacgOWkmuaUtuiXjyIsCiAgICAgICAgICAgICAgICAidiI6ICI1IgogICAgICAgICAgICB9XQogICAgICAgIH1dLAogICAgICAgICLkurLlrZAiOiBbewogICAgICAgICAgICAia2V5IjogInFpbnppX2dlbnJlIiwKICAgICAgICAgICAgIm5hbWUiOiAi5YWo6YOo57G75Z6LIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqOexu+WeiyIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWtleS6pyIsCiAgICAgICAgICAgICAgICAidiI6ICLlrZXkuqciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuiCsuWEv+efpeivhiIsCiAgICAgICAgICAgICAgICAidiI6ICLogrLlhL/nn6Xor4Ys6IKy5YS/6L6+5Lq6LOiCsuWEv+S4k+WutizniLjniLjogrLlhL8s6ZqU5Luj6IKy5YS/LOiCsuWEv+aYjuaYnyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5aW954mp56eN6I2JIiwKICAgICAgICAgICAgICAgICJ2IjogIuavjeWptOeUqOWTgSzmtYvor4Qs5q+N5am055So5ZOB56eN6I2JIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnvo7po58iLAogICAgICAgICAgICAgICAgInYiOiAi5YS/56ul576O6aOfLOi+hemjnyzlrZXmnJ/ppa7po58iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaJi+W3pURJWSIsCiAgICAgICAgICAgICAgICAidiI6ICLmiYvlt6VkaXkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaVmeiCsuinguW/tSIsCiAgICAgICAgICAgICAgICAidiI6ICLmlZnogrLop4Llv7UiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuS6suWtkOe7vOiJuiIsCiAgICAgICAgICAgICAgICAidiI6ICLkurLlrZDnu7zoiboiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuS6suWtkOS6kuWKqCIsCiAgICAgICAgICAgICAgICAidiI6ICLkurLlrZDml4XmuLgs5Lqy5a2Q5ri45oiPLOS6suWtkOmYheivuyznjqnlhbcs5pep5pWZLOWQr+iSmSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6JCM5aiDIiwKICAgICAgICAgICAgICAgICJ2IjogIuiQjOWogyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pCe56yRIiwKICAgICAgICAgICAgICAgICJ2IjogIuaQnueskSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi576O5aaGIiwKICAgICAgICAgICAgICAgICJ2IjogIue+juWmhiIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAicHJlZ25hbmN5X3N0YWdlIiwKICAgICAgICAgICAgIm5hbWUiOiAi5YWo6YOo6Zi25q61IiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqOmYtuautSIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWkh+WtlSIsCiAgICAgICAgICAgICAgICAidiI6ICLlpIflrZUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWtleaXqeacnyIsCiAgICAgICAgICAgICAgICAidiI6ICLlrZXml6kiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWtleS4reacnyIsCiAgICAgICAgICAgICAgICAidiI6ICLlrZXkuK0iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWtleaZmuacnyIsCiAgICAgICAgICAgICAgICAidiI6ICLlrZXmmZoiCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogInNob3dfbGFiZWxfYmFieV9hZ2UiLAogICAgICAgICAgICAibmFtZSI6ICLlhajpg6jliIbpvoQiLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOo5YiG6b6EIiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMC0x5bKBIiwKICAgICAgICAgICAgICAgICJ2IjogIjAtMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMS0z5bKBIiwKICAgICAgICAgICAgICAgICJ2IjogIjEtMyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMy025bKBIiwKICAgICAgICAgICAgICAgICJ2IjogIjMtNiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiNuWygSsiLAogICAgICAgICAgICAgICAgInYiOiAiNi0iCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogInBheV90eXBlIiwKICAgICAgICAgICAgIm5hbWUiOiAi5YWo6YOoIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqCIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWFjei0uSIsCiAgICAgICAgICAgICAgICAidiI6ICIwIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLkvJrlkZjlhY3otLkiLAogICAgICAgICAgICAgICAgInYiOiAiMiIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAic29ydCIsCiAgICAgICAgICAgICJuYW1lIjogIueDreW6puacgOmrmCIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLng63luqbmnIDpq5giLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnu7zlkIjmjpLluo8iLAogICAgICAgICAgICAgICAgInYiOiAiMCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pyA5paw5LiK57q/IiwKICAgICAgICAgICAgICAgICJ2IjogIjEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuacgOWkmuaSreaUviIsCiAgICAgICAgICAgICAgICAidiI6ICIyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmnIDlpJror4TorroiLAogICAgICAgICAgICAgICAgInYiOiAiMyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pyA5aSa5pS26JePIiwKICAgICAgICAgICAgICAgICJ2IjogIjUiCiAgICAgICAgICAgIH1dCiAgICAgICAgfV0sCiAgICAgICAgIuaVmeiCsiI6IFt7CiAgICAgICAgICAgICJrZXkiOiAidGFncyIsCiAgICAgICAgICAgICJuYW1lIjogIuWFqOmDqOexu+WeiyIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlhajpg6jnsbvlnosiLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlhazlvIDor74iLAogICAgICAgICAgICAgICAgInYiOiAi5YWs5byA6K++IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlkI3kurrlkI3lmLQiLAogICAgICAgICAgICAgICAgInYiOiAi5ZCN5Lq65ZCN5Zi0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmlofljJYiLAogICAgICAgICAgICAgICAgInYiOiAi5paH5YyWIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLoibrmnK8iLAogICAgICAgICAgICAgICAgInYiOiAi6Im65pyvIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLkvKbnkIbnpL7kvJoiLAogICAgICAgICAgICAgICAgInYiOiAi5Lym55CG56S+5LyaIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnkIblt6UiLAogICAgICAgICAgICAgICAgInYiOiAi55CG5belIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLljoblj7IiLAogICAgICAgICAgICAgICAgInYiOiAi5Y6G5Y+yIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlv4PnkIblraYiLAogICAgICAgICAgICAgICAgInYiOiAi5b+D55CG5a2mIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnu4/mtY4iLAogICAgICAgICAgICAgICAgInYiOiAi57uP5rWOIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnrqHnkIblraYiLAogICAgICAgICAgICAgICAgInYiOiAi566h55CG5a2mIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlpJbor60iLAogICAgICAgICAgICAgICAgInYiOiAi5aSW6K+tIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLms5XlvosiLAogICAgICAgICAgICAgICAgInYiOiAi5rOV5b6LIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLorqHnrpfmnLoiLAogICAgICAgICAgICAgICAgInYiOiAi6K6h566X5py6IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlk7LlraYiLAogICAgICAgICAgICAgICAgInYiOiAi5ZOy5a2mIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLogYzkuJrln7norq0iLAogICAgICAgICAgICAgICAgInYiOiAi6IGM5Lia5Z+56K6tIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlrrbluq3mlZnogrIiLAogICAgICAgICAgICAgICAgInYiOiAi5a625bqt5pWZ6IKyIgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJjb21wYW55IiwKICAgICAgICAgICAgIm5hbWUiOiAi5YWo6YOo5Ye65ZOBIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqOWHuuWTgSIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIlRFRCIsCiAgICAgICAgICAgICAgICAidiI6ICJ0ZWQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuiAtumygeWkp+WtpiIsCiAgICAgICAgICAgICAgICAidiI6ICLogLbpsoHlpKflraYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWTiOS9m+Wkp+WtpiIsCiAgICAgICAgICAgICAgICAidiI6ICLlk4jkvZvlpKflraYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaWr+Wdpuemj+Wkp+WtpiIsCiAgICAgICAgICAgICAgICAidiI6ICLmlq/lnabnpo/lpKflraYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIum6u+ecgeeQhuW3peWtpumZoiIsCiAgICAgICAgICAgICAgICAidiI6ICLpurvnnIHnkIblt6XlrabpmaIiCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogInBheV90eXBlIiwKICAgICAgICAgICAgIm5hbWUiOiAi5YWo6YOo6IqC55uuIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqOiKguebriIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWFjei0uSIsCiAgICAgICAgICAgICAgICAidiI6ICIwIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLku5jotLkiLAogICAgICAgICAgICAgICAgInYiOiAiMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiVklQIiwKICAgICAgICAgICAgICAgICJ2IjogIjIiCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogInNvcnQiLAogICAgICAgICAgICAibmFtZSI6ICLnu7zlkIjmjpLluo8iLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi57u85ZCI5o6S5bqPIiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pyA5aSa5pKt5pS+IiwKICAgICAgICAgICAgICAgICJ2IjogIjIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuacgOWkmuaUtuiXjyIsCiAgICAgICAgICAgICAgICAidiI6ICI1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmnIDlpb3or4QiLAogICAgICAgICAgICAgICAgInYiOiAiMyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pyA5paw5LiK57q/IiwKICAgICAgICAgICAgICAgICJ2IjogIjEiCiAgICAgICAgICAgIH1dCiAgICAgICAgfV0sCiAgICAgICAgIuaQnueskSI6IFt7CiAgICAgICAgICAgICJrZXkiOiAiZGl2aXNpb24iLAogICAgICAgICAgICAibmFtZSI6ICLlhajpg6jkuJPljLoiLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOo5LiT5Yy6IiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMTA4MFAiLAogICAgICAgICAgICAgICAgInYiOiAiMyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi54us5pKtIiwKICAgICAgICAgICAgICAgICJ2IjogIjYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWFjei0uSIsCiAgICAgICAgICAgICAgICAidiI6ICI1IgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJzb3J0IiwKICAgICAgICAgICAgIm5hbWUiOiAi57u85ZCI5o6S5bqPIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIue7vOWQiOaOkuW6jyIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuacgOWkmuaSreaUviIsCiAgICAgICAgICAgICAgICAidiI6ICIyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmnIDlpb3or4QiLAogICAgICAgICAgICAgICAgInYiOiAiMyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pyA5paw5LiK57q/IiwKICAgICAgICAgICAgICAgICJ2IjogIjEiCiAgICAgICAgICAgIH1dCiAgICAgICAgfV0sCiAgICAgICAgIueUn+a0uyI6IFt7CiAgICAgICAgICAgICJrZXkiOiAiZGl2aXNpb24iLAogICAgICAgICAgICAibmFtZSI6ICLlhajpg6jkuJPljLoiLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOo5LiT5Yy6IiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMTA4MFAiLAogICAgICAgICAgICAgICAgInYiOiAiMyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi54us5pKtIiwKICAgICAgICAgICAgICAgICJ2IjogIjYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIlZJUCIsCiAgICAgICAgICAgICAgICAidiI6ICI0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlhY3otLkiLAogICAgICAgICAgICAgICAgInYiOiAiNSIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAic29ydCIsCiAgICAgICAgICAgICJuYW1lIjogIue7vOWQiOaOkuW6jyIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLnu7zlkIjmjpLluo8iLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmnIDlpJrmkq3mlL4iLAogICAgICAgICAgICAgICAgInYiOiAiMiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pyA5aW96K+EIiwKICAgICAgICAgICAgICAgICJ2IjogIjMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuacgOaWsOS4iue6vyIsCiAgICAgICAgICAgICAgICAidiI6ICIxIgogICAgICAgICAgICB9XQogICAgICAgIH1dLAogICAgICAgICLkvZPogrIiOiBbewogICAgICAgICAgICAia2V5IjogImRpdmlzaW9uIiwKICAgICAgICAgICAgIm5hbWUiOiAi5YWo6YOo5LiT5Yy6IiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqOS4k+WMuiIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjEwODBQIiwKICAgICAgICAgICAgICAgICJ2IjogIjMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIueLrOaSrSIsCiAgICAgICAgICAgICAgICAidiI6ICI2IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJWSVAiLAogICAgICAgICAgICAgICAgInYiOiAiNCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5YWN6LS5IiwKICAgICAgICAgICAgICAgICJ2IjogIjUiCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogInRhZ3MiLAogICAgICAgICAgICAibmFtZSI6ICLlhajpg6jnsbvlnosiLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOo57G75Z6LIiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi56+u55CDIiwKICAgICAgICAgICAgICAgICJ2IjogIuevrueQgyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6Laz55CDIiwKICAgICAgICAgICAgICAgICJ2IjogIui2s+eQgyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5Y+w55CDIiwKICAgICAgICAgICAgICAgICJ2IjogIuWPsOeQgyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiQ0JBIiwKICAgICAgICAgICAgICAgICJ2IjogIkNCQSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6ZKT6bG8IiwKICAgICAgICAgICAgICAgICJ2IjogIumSk+mxvCIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAic29ydCIsCiAgICAgICAgICAgICJuYW1lIjogIue7vOWQiOaOkuW6jyIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLnu7zlkIjmjpLluo8iLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmnIDlpJrmkq3mlL4iLAogICAgICAgICAgICAgICAgInYiOiAiMiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pyA5aW96K+EIiwKICAgICAgICAgICAgICAgICJ2IjogIjMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuacgOaWsOS4iue6vyIsCiAgICAgICAgICAgICAgICAidiI6ICIxIgogICAgICAgICAgICB9XQogICAgICAgIH1dLAogICAgICAgICLpn7PkuZAiOiBbewogICAgICAgICAgICAia2V5IjogImRpdmlzaW9uIiwKICAgICAgICAgICAgIm5hbWUiOiAi5YWo6YOo5LiT5Yy6IiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqOS4k+WMuiIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjEwODBQIiwKICAgICAgICAgICAgICAgICJ2IjogIjMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIueLrOaSrSIsCiAgICAgICAgICAgICAgICAidiI6ICI2IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlhY3otLkiLAogICAgICAgICAgICAgICAgInYiOiAiNSIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAibWFpbl9hcmVhIiwKICAgICAgICAgICAgIm5hbWUiOiAi5YWo6YOo5Zyw5Yy6IiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqOWcsOWMuiIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuS4reWbvSIsCiAgICAgICAgICAgICAgICAidiI6ICLkuK3lm70iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuS4reWbveWPsOa5viIsCiAgICAgICAgICAgICAgICAidiI6ICLkuK3lm73lj7Dmub4iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuS4reWbvemmmea4ryIsCiAgICAgICAgICAgICAgICAidiI6ICLkuK3lm73pppnmuK8iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIue+juWbvSIsCiAgICAgICAgICAgICAgICAidiI6ICLnvo7lm70iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWFtuS7liIsCiAgICAgICAgICAgICAgICAidiI6ICLlhbbku5YiCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogIm11c2ljX3Nob3dfdHlwZSIsCiAgICAgICAgICAgICJuYW1lIjogIuWFqOmDqOexu+WeiyIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlhajpg6jnsbvlnosiLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmvJTllLHkvJoiLAogICAgICAgICAgICAgICAgInYiOiAi5ryU5ZSx5LyaIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJsaXZl546w5Zy6IiwKICAgICAgICAgICAgICAgICJ2IjogImxpdmXnjrDlnLoiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIumigeWlluWFuOekvCIsCiAgICAgICAgICAgICAgICAidiI6ICLpooHlpZblhbjnpLwiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuiInui5iCIsCiAgICAgICAgICAgICAgICAidiI6ICLoiJ7ouYgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuW9seinhuWOn+WjsCIsCiAgICAgICAgICAgICAgICAidiI6ICLlvbHop4bljp/lo7AiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIumfs+S5kOi+vuS6uiIsCiAgICAgICAgICAgICAgICAidiI6ICLpn7PkuZDovr7kuroiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIumfs+S5kOaVmeWtpiIsCiAgICAgICAgICAgICAgICAidiI6ICLpn7PkuZDmlZnlraYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIumfs+S5kOe6quW9leeJhyIsCiAgICAgICAgICAgICAgICAidiI6ICLpn7PkuZDnuqrlvZXniYciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIumfs+S5kG12IiwKICAgICAgICAgICAgICAgICJ2IjogIumfs+S5kG12IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLpn7PkuZDoh6rliLYiLAogICAgICAgICAgICAgICAgInYiOiAi6Z+z5LmQ6Ieq5Yi2IgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJzb3J0IiwKICAgICAgICAgICAgIm5hbWUiOiAi57u85ZCI5o6S5bqPIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIue7vOWQiOaOkuW6jyIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuacgOWkmuaSreaUviIsCiAgICAgICAgICAgICAgICAidiI6ICIyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmnIDlpb3or4QiLAogICAgICAgICAgICAgICAgInYiOiAiMyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pyA5paw5LiK57q/IiwKICAgICAgICAgICAgICAgICJ2IjogIjEiCiAgICAgICAgICAgIH1dCiAgICAgICAgfV0sCiAgICAgICAgIua4uOaIjyI6IFt7CiAgICAgICAgICAgICJrZXkiOiAiZGl2aXNpb24iLAogICAgICAgICAgICAibmFtZSI6ICLlhajpg6jkuJPljLoiLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOo5LiT5Yy6IiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMTA4MFAiLAogICAgICAgICAgICAgICAgInYiOiAiMyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi54us5pKtIiwKICAgICAgICAgICAgICAgICJ2IjogIjYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIlZJUCIsCiAgICAgICAgICAgICAgICAidiI6ICI0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlhY3otLkiLAogICAgICAgICAgICAgICAgInYiOiAiNSIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAiZ2FtZV9icmFuZCIsCiAgICAgICAgICAgICJuYW1lIjogIuWFqOmDqOiKguebriIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlhajpg6joioLnm64iLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnjovogIXojaPogIAiLAogICAgICAgICAgICAgICAgInYiOiAi546L6ICF6I2j6ICAIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlkozlubPnsr7oi7EiLAogICAgICAgICAgICAgICAgInYiOiAi5ZKM5bmz57K+6IuxIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnu53lnLDmsYLnlJ8iLAogICAgICAgICAgICAgICAgInYiOiAi57ud5Zyw5rGC55SfIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLov7fkvaDkuJbnlYwiLAogICAgICAgICAgICAgICAgInYiOiAi6L+35L2g5LiW55WMIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmiJHnmoTkuJbnlYwiLAogICAgICAgICAgICAgICAgInYiOiAi5oiR55qE5LiW55WMIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmpI3nianlpKfmiJjlg7XlsLgiLAogICAgICAgICAgICAgICAgInYiOiAi5qSN54mp5aSn5oiY5YO15bC4IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmlrnoiJ/nlJ/lrZjov5vljJYiLAogICAgICAgICAgICAgICAgInYiOiAi5pa56Iif55Sf5a2Y6L+b5YyWIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnrKzkupTkurrmoLwiLAogICAgICAgICAgICAgICAgInYiOiAi56ys5LqU5Lq65qC8IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnjKvlkozogIHpvKAiLAogICAgICAgICAgICAgICAgInYiOiAi54yr5ZKM6ICB6bygIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLpppnogqDmtL7lr7kiLAogICAgICAgICAgICAgICAgInYiOiAi6aaZ6IKg5rS+5a+5IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnqb/otorngavnur8iLAogICAgICAgICAgICAgICAgInYiOiAi56m/6LaK54Gr57q/IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLoi7Hpm4TogZTnm58iLAogICAgICAgICAgICAgICAgInYiOiAi6Iux6ZuE6IGU55ufIgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJ0YWdzIiwKICAgICAgICAgICAgIm5hbWUiOiAi5YWo6YOo57G75Z6LIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqOexu+WeiyIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIui1hOiuryIsCiAgICAgICAgICAgICAgICAidiI6ICLotYTorq8iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuino+ivtCIsCiAgICAgICAgICAgICAgICAidiI6ICLop6Por7QiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuS4u+aSrSIsCiAgICAgICAgICAgICAgICAidiI6ICLkuLvmkq0iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaymeebkiIsCiAgICAgICAgICAgICAgICAidiI6ICLmspnnm5IiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuebiuaZuiIsCiAgICAgICAgICAgICAgICAidiI6ICLnm4rmmboiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIueUn+WtmCIsCiAgICAgICAgICAgICAgICAidiI6ICLnlJ/lrZgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIueUteWtkOernuaKgCIsCiAgICAgICAgICAgICAgICAidiI6ICLnlLXlrZDnq57mioAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWNleacuuS4u+acuiIsCiAgICAgICAgICAgICAgICAidiI6ICLljZXmnLrkuLvmnLoiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuecn+S6uuengCIsCiAgICAgICAgICAgICAgICAidiI6ICLnnJ/kurrnp4AiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWKqOeUuyIsCiAgICAgICAgICAgICAgICAidiI6ICLliqjnlLsiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuebmOeCuSIsCiAgICAgICAgICAgICAgICAidiI6ICLnm5jngrkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIua4uOaIj+aWh+WMliIsCiAgICAgICAgICAgICAgICAidiI6ICLmuLjmiI/mlofljJYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIua4uOaIj+iKguebriIsCiAgICAgICAgICAgICAgICAidiI6ICLmuLjmiI/oioLnm64iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuivhOa1iyIsCiAgICAgICAgICAgICAgICAidiI6ICLor4TmtYsiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWwhOWHuyIsCiAgICAgICAgICAgICAgICAidiI6ICLlsITlh7siCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuetlueVpSIsCiAgICAgICAgICAgICAgICAidiI6ICLnrZbnlaUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWGkumZqSIsCiAgICAgICAgICAgICAgICAidiI6ICLlhpLpmakiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWNs+aXtuaImOeVpSIsCiAgICAgICAgICAgICAgICAidiI6ICLljbPml7bmiJjnlaUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWNoeeJjCIsCiAgICAgICAgICAgICAgICAidiI6ICLljaHniYwiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuinkuiJsuaJrua8lCIsCiAgICAgICAgICAgICAgICAidiI6ICLop5LoibI+5omu5ryUIgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJzb3J0IiwKICAgICAgICAgICAgIm5hbWUiOiAi57u85ZCI5o6S5bqPIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIue7vOWQiOaOkuW6jyIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuacgOWkmuaSreaUviIsCiAgICAgICAgICAgICAgICAidiI6ICIyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmnIDlpb3or4QiLAogICAgICAgICAgICAgICAgInYiOiAiMyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pyA5paw5LiK57q/IiwKICAgICAgICAgICAgICAgICJ2IjogIjEiCiAgICAgICAgICAgIH1dCiAgICAgICAgfV0KICAgIH0sCiAgICBoZWFkZXJzOiB7CiAgICAgICAgJ1VzZXItQWdlbnQnOiAnUENfVUEnLAogICAgICAgICdDb29raWUnOiAnY25hPVZ2TnZHWDNlMHl3Q0FhdlZFWGxuQTJiZzsgX195c3VpZD0xNjI2Njc2MjI4MzQ1UmwxOyBfX2F5ZnQ9MTY1MjQzNDA0ODY0NzsgX19hcnljaWQ9ZG0tMS0wMDsgX19hcmNtcz1kbS0xLTAwOyBfX2F5dnN0cD04NTsgX19hcnB2aWQ9MTY2NzIwNDAyMzEwMGNXV2RnTS0xNjY3MjA0MDIzMTEyOyBfX2F5c2NudD0xMDsgX19heXBzdHA9NjA7IGlzZz1CQndjcXh2dmszQnhrV1FHdWdiTHBVU2Y3VHJPbGNDX1U3R0FqX1lkZllmdlFiekxIcVlHVDRIZ3A2bTVUdmdYOyB0ZnN0az1jM0pPQnlZVUgyMGlsVnVjTE9oaDBwQ3RFNDBsWmZHYy1QakxITExmdVg3U1dOeUFpUXZrZU1Cc0l3N1BXREMuLjsgbD1lQlFndVMtUGpkSkZHSlQtQk9md291cnphNzdPU0lSQV91UHphTmJNaU9DUE9iMUI1VXhmVzZ5SHA0VDZDM0dWaHNHSlIzcnAydW1IQmVZQnFRZC1ueHZPRjhxbVNWRG1uJywKICAgICAgICAnUmVmZXJlcic6ICdodHRwczovL3d3dy55b3VrdS5jb20nLAogICAgfSwKICAgIHRpbWVvdXQ6IDUwMDAsCiAgICBjbGFzc19uYW1lOiAn55S16KeG5YmnJueUteW9sSbnu7zoibom5Yqo5ryrJuWwkeWEvybnuqrlvZXniYcm5paH5YyWJuS6suWtkCbmlZnogrIm5pCe56yRJueUn+a0uybkvZPogrIm6Z+z5LmQJua4uOaIjycsCiAgICBjbGFzc191cmw6ICfnlLXop4bliacm55S15b2xJue7vOiJuibliqjmvKsm5bCR5YS/Jue6quW9leeJhybmlofljJYm5Lqy5a2QJuaVmeiCsibmkJ7nrJEm55Sf5rS7JuS9k+iCsibpn7PkuZAm5ri45oiPJywKICAgIGxpbWl0OiAyMCwKICAgIHBsYXlfcGFyc2U6IHRydWUsCiAgICBsYXp5OiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGxldCBhcGkgPSAiIiArIGlucHV0LnNwbGl0KCI/IilbMF07CiAgICAgICAgICAgIGNvbnNvbGUubG9nKGFwaSk7CiAgICAgICAgICAgIGxldCByZXNwb25zZSA9IGZldGNoKGFwaSwgewogICAgICAgICAgICAgICAgbWV0aG9kOiAnZ2V0JywKICAgICAgICAgICAgICAgIGhlYWRlcnM6IHsKICAgICAgICAgICAgICAgICAgICAnVXNlci1BZ2VudCc6ICdva2h0dHAvMy4xNC45JywKICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGxldCBiYXRhID0gSlNPTi5wYXJzZShyZXNwb25zZSk7CiAgICAgICAgICAgIGlmIChiYXRhLnVybC5pbmNsdWRlcygiaHR0cCIpKSB7CiAgICAgICAgICAgICAgICBpbnB1dCA9IHsKICAgICAgICAgICAgICAgICAgICBwYXJzZTogMCwKICAgICAgICAgICAgICAgICAgICB1cmw6IGJhdGEudXJsLAogICAgICAgICAgICAgICAgICAgIGp4OiAwLAogICAgICAgICAgICAgICAgICAgIGRhbm1ha3U6ICJodHRwOi8vMTI3LjAuMC4xOjk5NzgvcHJveHk/ZG89ZGFubXUmc2l0ZT1qcyZ1cmw9aHR0cDovL2RtLnF4cTYuY29tL3p5L2FwaS5waHA/dXJsPSIgKyBpbnB1dC5zcGxpdCgiPyIpWzBdCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaW5wdXQgPSB7CiAgICAgICAgICAgICAgICAgICAgcGFyc2U6IDAsCiAgICAgICAgICAgICAgICAgICAgdXJsOiBpbnB1dC5zcGxpdCgiPyIpWzBdLAogICAgICAgICAgICAgICAgICAgIGp4OiAxLAogICAgICAgICAgICAgICAgICAgIGRhbm1ha3U6ICJodHRwOi8vMTI3LjAuMC4xOjk5NzgvcHJveHk/ZG89ZGFubXUmc2l0ZT1qcyZ1cmw9aHR0cDovL2RtLnF4cTYuY29tL3p5L2FwaS5waHA/dXJsPSIgKyBpbnB1dC5zcGxpdCgiPyIpWzBdCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgfSBjYXRjaCB7CiAgICAgICAgICAgIGlucHV0ID0gewogICAgICAgICAgICAgICAgcGFyc2U6IDAsCiAgICAgICAgICAgICAgICB1cmw6IGlucHV0LnNwbGl0KCI/IilbMF0sCiAgICAgICAgICAgICAgICBqeDogMSwKICAgICAgICAgICAgICAgIGRhbm1ha3U6ICJodHRwOi8vMTI3LjAuMC4xOjk5NzgvcHJveHk/ZG89ZGFubXUmc2l0ZT1qcyZ1cmw9aHR0cDovL2RtLnF4cTYuY29tL3p5L2FwaS5waHA/dXJsPSIgKyBpbnB1dC5zcGxpdCgiPyIpWzBdCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfSksCiAgICDkuIDnuqc6ICRqcy50b1N0cmluZygoKSA9PiB7CiAgICAgICAgbGV0IGQgPSBbXTsKICAgICAgICBNWV9GTC50eXBlID0gTVlfQ0FURTsKICAgICAgICBsZXQgZmwgPSBzdHJpbmdpZnkoTVlfRkwpOwogICAgICAgIGZsID0gZW5jb2RlVXJsKGZsKTsKICAgICAgICBpbnB1dCA9IGlucHV0LnNwbGl0KCJ7IilbMF0gKyBmbDsKICAgICAgICBpZiAoTVlfUEFHRSA+IDEpIHsKICAgICAgICAgICAgbGV0IG9sZF9zZXNzaW9uID0gZ2V0SXRlbSgieWtfc2Vzc2lvbl8iICsgTVlfQ0FURSwgInt9Iik7CiAgICAgICAgICAgIGlmIChNWV9QQUdFID09PSAyKSB7CiAgICAgICAgICAgICAgICBpbnB1dCA9IGlucHV0LnJlcGxhY2UoIm9wdGlvblJlZnJlc2g9MSIsICJzZXNzaW9uPSIgKyBlbmNvZGVVcmwob2xkX3Nlc3Npb24pKQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaW5wdXQgPSBpbnB1dC5yZXBsYWNlKCJvcHRpb25SZWZyZXNoPTEiLCAic2Vzc2lvbj0iICsgZW5jb2RlVXJsKG9sZF9zZXNzaW9uKSkKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBsZXQgaHRtbCA9IGZldGNoKGlucHV0LCBmZXRjaF9wYXJhbXMpOwogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGh0bWwgPSBKU09OLnBhcnNlKGh0bWwpOwogICAgICAgICAgICBsZXQgbGlzdHMgPSBodG1sLmRhdGEuZmlsdGVyRGF0YS5saXN0RGF0YTsKICAgICAgICAgICAgbGV0IHNlc3Npb24gPSBodG1sLmRhdGEuZmlsdGVyRGF0YS5zZXNzaW9uOwogICAgICAgICAgICBzZXNzaW9uID0gc3RyaW5naWZ5KHNlc3Npb24pOwogICAgICAgICAgICBpZiAoc2Vzc2lvbiAhPT0gZ2V0SXRlbSgieWtfc2Vzc2lvbl8iICsgTVlfQ0FURSwgInt9IikpIHsKICAgICAgICAgICAgICAgIHNldEl0ZW0oInlrX3Nlc3Npb25fIiArIE1ZX0NBVEUsIHNlc3Npb24pCiAgICAgICAgICAgIH0KICAgICAgICAgICAgbGlzdHMuZm9yRWFjaChmdW5jdGlvbihpdCkgewogICAgICAgICAgICAgICAgbGV0IHZpZDsKICAgICAgICAgICAgICAgIGlmIChpdC52aWRlb0xpbmsuaW5jbHVkZXMoImlkXyIpKSB7CiAgICAgICAgICAgICAgICAgICAgdmlkID0gaXQudmlkZW9MaW5rLnNwbGl0KCJpZF8iKVsxXS5zcGxpdCgiLmh0bWwiKVswXQogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB2aWQgPSAibXNlYXJjaDoiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBkLnB1c2goewogICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdC50aXRsZSwKICAgICAgICAgICAgICAgICAgICBpbWc6IGl0LmltZywKICAgICAgICAgICAgICAgICAgICBkZXNjOiBpdC5zdW1tYXJ5LAogICAgICAgICAgICAgICAgICAgIHVybDogImh0dHBzOi8vc2VhcmNoLnlvdWt1LmNvbS9hcGkvc2VhcmNoP2FwcFNjZW5lPXNob3dfZXBpc29kZSZzaG93SWRzPSIgKyB2aWQsCiAgICAgICAgICAgICAgICAgICAgY29udGVudDogaXQuc3ViVGl0bGUKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0pCiAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICBsb2coIuS4gOe6p+WIl+ihqOino+aekOWPkeeUn+mUmeivrzoiICsgZS5tZXNzYWdlKQogICAgICAgIH0KICAgICAgICBzZXRSZXN1bHQoZCk7CiAgICB9KSwKICAgIOS6jOe6pzogJGpzLnRvU3RyaW5nKCgpID0+IHsKICAgICAgICB2YXIgZCA9IFtdOwogICAgICAgIFZPRCA9IHt9OwogICAgICAgIGxldCBodG1sID0gcmVxdWVzdChpbnB1dCk7CiAgICAgICAgbGV0IGpzb24gPSBKU09OLnBhcnNlKGh0bWwpOwogICAgICAgIGlmICgva2V5d29yZC8udGVzdChpbnB1dCkpIHsKICAgICAgICAgICAgaW5wdXQgPSAiaHR0cHM6Ly9zZWFyY2gueW91a3UuY29tL2FwaS9zZWFyY2g/YXBwU2NlbmU9c2hvd19lcGlzb2RlJnNob3dJZHM9IiArIGpzb24ucGFnZUNvbXBvbmVudExpc3RbMF0uY29tbW9uRGF0YS5zaG93SWQ7CiAgICAgICAgICAgIGpzb24gPSBKU09OLnBhcnNlKGZldGNoKE1ZX1VSTCwgZmV0Y2hfcGFyYW1zKSkKICAgICAgICB9CiAgICAgICAgbGV0IHZpZGVvX2xpc3RzID0ganNvbi5zZXJpc2VzTGlzdDsKICAgICAgICB2YXIgbmFtZSA9IGpzb24uc291cmNlTmFtZTsKICAgICAgICBpZiAoL+S8mOmFty8udGVzdChuYW1lKSAmJiB2aWRlb19saXN0cy5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgIGxldCBvdXJsID0gImh0dHBzOi8vdi55b3VrdS5jb20vdl9zaG93L2lkXyIgKyB2aWRlb19saXN0c1swXS52aWRlb0lkICsgIi5odG1sIjsKICAgICAgICAgICAgbGV0IF9pbWcgPSB2aWRlb19saXN0c1swXS50aHVtYlVybDsKICAgICAgICAgICAgbGV0IGh0bWwgPSBmZXRjaChvdXJsLCB7CiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7CiAgICAgICAgICAgICAgICAgICAgUmVmZXJlcjogImh0dHBzOi8vdi55b3VrdS5jb20vIiwKICAgICAgICAgICAgICAgICAgICAiVXNlci1BZ2VudCI6IFBDX1VBCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBsZXQganNvbiA9IC9fX0lOSVRJQUxfREFUQV9fLy50ZXN0KGh0bWwpID8gaHRtbC5zcGxpdCgid2luZG93Ll9fSU5JVElBTF9EQVRBX18gPSIpWzFdLnNwbGl0KCI7IilbMF0gOiAie30iOwogICAgICAgICAgICBpZiAoanNvbiA9PT0gInt9IikgewogICAgICAgICAgICAgICAgbG9nKCLop6blj5HkuobkvJjphbfkurrmnLrpqozor4EiKTsKICAgICAgICAgICAgICAgIFZPRC52b2RfcmVtYXJrcyA9IG91cmw7CiAgICAgICAgICAgICAgICBWT0Qudm9kX3BpYyA9IF9pbWc7CiAgICAgICAgICAgICAgICBWT0Qudm9kX25hbWUgPSB2aWRlb19saXN0c1swXS50aXRsZS5yZXBsYWNlKC8oXGQrKS9nLCAiIik7CiAgICAgICAgICAgICAgICBWT0Qudm9kX2NvbnRlbnQgPSAi6Kem5Y+R5LqG5LyY6YW35Lq65py66aqM6K+BLOacrOasoeacquiOt+WPluivpuaDhSzkvYbkuI3lvbHlk43mkq3mlL4oIiArIG91cmwgKyAiKSIKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAganNvbiA9IEpTT04ucGFyc2UoanNvbik7CiAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGEgPSBqc29uLmRhdGEuZGF0YTsKICAgICAgICAgICAgICAgICAgICBsZXQgZGF0YV9leHRyYSA9IGRhdGEuZGF0YS5leHRyYTsKICAgICAgICAgICAgICAgICAgICBsZXQgaW1nID0gZGF0YV9leHRyYS5zaG93SW1nVjsKICAgICAgICAgICAgICAgICAgICBsZXQgbW9kZWwgPSBqc29uLmRhdGEubW9kZWw7CiAgICAgICAgICAgICAgICAgICAgbGV0IG0gPSBtb2RlbC5kZXRhaWwuZGF0YS5ub2Rlc1swXS5ub2Rlc1swXS5ub2Rlc1swXS5kYXRhOwogICAgICAgICAgICAgICAgICAgIGxldCBfdHlwZSA9IG0uc2hvd0dlbnJlOwogICAgICAgICAgICAgICAgICAgIGxldCBfZGVzYyA9IG0udXBkYXRlSW5mbyB8fCBtLnN1YnRpdGxlOwogICAgICAgICAgICAgICAgICAgIGxldCBKSiA9IG0uZGVzYzsKICAgICAgICAgICAgICAgICAgICBsZXQgX3RpdGxlID0gbS5pbnRyb1RpdGxlOwogICAgICAgICAgICAgICAgICAgIFZPRC52b2RfcGljID0gaW1nOwogICAgICAgICAgICAgICAgICAgIFZPRC52b2RfbmFtZSA9IF90aXRsZTsKICAgICAgICAgICAgICAgICAgICBWT0Qudm9kX3R5cGUgPSBfdHlwZTsKICAgICAgICAgICAgICAgICAgICBWT0Qudm9kX3JlbWFya3MgPSBfZGVzYzsKICAgICAgICAgICAgICAgICAgICBWT0Qudm9kX2NvbnRlbnQgPSBKSgogICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAgICAgIGxvZygi5rW35oql5riy5p+T5Y+R55Sf6ZSZ6K+vOiIgKyBlLm1lc3NhZ2UpOwogICAgICAgICAgICAgICAgICAgIHByaW50KGpzb24pOwogICAgICAgICAgICAgICAgICAgIFZPRC52b2RfcmVtYXJrcyA9IG5hbWUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoIS/kvJjphbcvLnRlc3QobmFtZSkpIHsKICAgICAgICAgICAgVk9ELnZvZF9jb250ZW50ID0gIumdnuiHquWutuaSreaUvua6kCzmmoLml6Dop4bpopHnroDku4vlj4rmtbfmiqUiOwogICAgICAgICAgICBWT0Qudm9kX3JlbWFya3MgPSBuYW1lCiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBhZGhlYWQodXJsKSB7CiAgICAgICAgICAgIHJldHVybiB1cmxlbmNvZGUodXJsKQogICAgICAgIH0KCiAgICAgICAgcGxheV91cmwgPSBwbGF5X3VybC5yZXBsYWNlKCImcGxheV91cmw9IiwgIiZ0eXBlPWpzb24mcGxheV91cmw9Iik7CiAgICAgICAgdmlkZW9fbGlzdHMuZm9yRWFjaChmdW5jdGlvbihpdCkgewogICAgICAgICAgICBsZXQgdXJsID0gImh0dHBzOi8vdi55b3VrdS5jb20vdl9zaG93L2lkXyIgKyBpdC52aWRlb0lkICsgIi5odG1sIjsKICAgICAgICAgICAgaWYgKGl0LnRodW1iVXJsKSB7CiAgICAgICAgICAgICAgICBkLnB1c2goewogICAgICAgICAgICAgICAgICAgIGRlc2M6IGl0LnNob3dWaWRlb1N0YWdlID8gaXQuc2hvd1ZpZGVvU3RhZ2UucmVwbGFjZSgi5pyfIiwgIumbhiIpIDogaXQuZGlzcGxheU5hbWUsCiAgICAgICAgICAgICAgICAgICAgcGljX3VybDogaXQudGh1bWJVcmwsCiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0LnRpdGxlLAogICAgICAgICAgICAgICAgICAgIHVybDogcGxheV91cmwgKyBhZGhlYWQodXJsKQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfSBlbHNlIGlmIChuYW1lICE9PSAi5LyY6YW3IikgewogICAgICAgICAgICAgICAgZC5wdXNoKHsKICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXQuZGlzcGxheU5hbWUgPyBpdC5kaXNwbGF5TmFtZSA6IGl0LnRpdGxlLAogICAgICAgICAgICAgICAgICAgIHVybDogcGxheV91cmwgKyBhZGhlYWQoaXQudXJsKQogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIFZPRC52b2RfcGxheV9mcm9tID0gbmFtZTsKICAgICAgICBWT0Qudm9kX3BsYXlfdXJsID0gZC5tYXAoZnVuY3Rpb24oaXQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBpdC50aXRsZSArICIkIiArIGl0LnVybAogICAgICAgICAgICB9KQogICAgICAgICAgICAuam9pbigiIyIpOwogICAgfSksCgogICAg5pCc57SiOiAkanMudG9TdHJpbmcoKCkgPT4gewogICAgICAgIHZhciBkID0gW107CiAgICAgICAgbGV0IGh0bWwgPSByZXF1ZXN0KGlucHV0KTsKICAgICAgICBsZXQganNvbiA9IEpTT04ucGFyc2UoaHRtbCk7CiAgICAgICAganNvbi5wYWdlQ29tcG9uZW50TGlzdC5mb3JFYWNoKGZ1bmN0aW9uKGl0KSB7CiAgICAgICAgICAgIGlmIChpdC5oYXNPd25Qcm9wZXJ0eSgiY29tbW9uRGF0YSIpKSB7CiAgICAgICAgICAgICAgICBpdCA9IGl0LmNvbW1vbkRhdGE7CiAgICAgICAgICAgICAgICBkLnB1c2goewogICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdC50aXRsZURUTy5kaXNwbGF5TmFtZSwKICAgICAgICAgICAgICAgICAgICBpbWc6IGl0LnBvc3RlckRUTy52VGh1bWJVcmwsCiAgICAgICAgICAgICAgICAgICAgZGVzYzogaXQuc3RyaXBlQm90dG9tLAogICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGl0LnVwZGF0ZU5vdGljZSArICIgIiArIGl0LmZlYXR1cmUsCiAgICAgICAgICAgICAgICAgICAgdXJsOiAiaHR0cHM6Ly9zZWFyY2gueW91a3UuY29tL2FwaS9zZWFyY2g/YXBwU2NlbmU9c2hvd19lcGlzb2RlJnNob3dJZHM9IiArIGl0LnNob3dJZCArICImYXBwQ2FsbGVyPWg1IgogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIHNldFJlc3VsdChkKQogICAgfSksCn0= \ No newline at end of file diff --git a/潇洒/js/YSJ.js b/潇洒/js/YSJ.js new file mode 100644 index 0000000..22a4088 --- /dev/null +++ b/潇洒/js/YSJ.js @@ -0,0 +1 @@ +dmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+W8guS4lueVjOWKqOa8qycsCiAgICBob3N0OiAnaHR0cHM6Ly93d3cuZG1taWt1LmNvbS8nLAogICAgaG9tZVVybDogJy9pbmRleC5waHAvdm9kL3Nob3cvaWQvMjIuaHRtbCcsCiAgICAvLyB1cmw6Jy9pbmRleC5waHAvdm9kL3Nob3cvY2xhc3MvZnljbGFzcy9pZC8yMC9wYWdlL2Z5cGFnZS5odG1sJywKICAgIHVybDogJy9pbmRleC5waHAvdm9kL3Nob3cvZnljbGFzc2Z5ZmlsdGVyLmh0bWwnLAogICAgZmlsdGVyYWJsZTogMSwKICAgIGZpbHRlcl91cmw6ICd7e2ZsLnR5cGV9fS9pZC8yMC9wYWdlL2Z5cGFnZXt7ZmwueWVhcn19JywKICAgIGZpbHRlcjogewogICAgICAgICJhcmVhL+aXpeacrCI6IFt7CiAgICAgICAgICAgICJrZXkiOiAidHlwZSIsCiAgICAgICAgICAgICJuYW1lIjogIuexu+WeiyIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlhajpg6giLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICJPVkEiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL09WQSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5Ymn5Zy654mIIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/liaflnLrniYgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaXoOS/riIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3MvQkTml6Dkv64iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuiQneiOiSIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv6JCd6I6JIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlrablnJIiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+WtpuWckiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5ZCO5a6rIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/lkI7lrqsiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaBi+eIsSIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv5oGL54ixIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLng63ooYAiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+eDreihgCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi56We6a2UIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/npZ7prZQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWlh+W5uyIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv5aWH5bm7IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmsrvmhIgiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+ayu+aEiCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pCe56yRIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/mkJ7nrJEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIueZvuWQiCIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv55m+5ZCIIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlhpLpmakiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+WGkumZqSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6a2U5rOVIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/prZTms5UiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuacuuaImCIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv5py65oiYIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmiJjkuokiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+aImOS6iSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi54qv572qIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/niq/nvaoiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaCrOeWkSIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv5oKs55aRIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmjqjnkIYiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+aOqOeQhiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi56eR5bm7IiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/np5HlubsiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuernuaKgCIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv56ue5oqAIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLov5DliqgiLAogICAgICAgICAgICAgICAgInYiOiAiL2NsYXNzL+i/kOWKqCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6IC9576OIiwKICAgICAgICAgICAgICAgICJ2IjogIi9jbGFzcy/ogL3nvo4iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWFtuS7liIsCiAgICAgICAgICAgICAgICAidiI6ICIvY2xhc3Mv5YW25LuWIgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJ5ZWFyIiwKICAgICAgICAgICAgIm5hbWUiOiAi5bm05Lu9IiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqCIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjUiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAyNSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyNCIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDI0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIzIiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMjMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjIiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAyMiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMSIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDIxIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIwIiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMjAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTkiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAxOSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxOCIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDE4IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE3IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMTciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTYiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAxNiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNSIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDE1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE0IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMTQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTMiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAxMyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxMiIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDEyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDExIiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMTEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTAiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAxMCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwOSIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDA5IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA4IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMDgiCiAgICAgICAgICAgIH1dCiAgICAgICAgfV0sCiAgICAgICAgImFyZWEv5Lit5ZyLIjogW3sKICAgICAgICAgICAgImtleSI6ICJ5ZWFyIiwKICAgICAgICAgICAgIm5hbWUiOiAi5bm05Lu9IiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqCIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjUiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAyNSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyNCIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDI0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIzIiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMjMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjIiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAyMiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMSIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDIxIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIwIiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMjAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTkiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAxOSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxOCIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDE4IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE3IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMTciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTYiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAxNiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNSIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDE1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE0IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMTQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTMiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAxMyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxMiIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDEyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDExIiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMTEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTAiLAogICAgICAgICAgICAgICAgInYiOiAiL3llYXIvMjAxMCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAwOSIsCiAgICAgICAgICAgICAgICAidiI6ICIveWVhci8yMDA5IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDA4IiwKICAgICAgICAgICAgICAgICJ2IjogIi95ZWFyLzIwMDgiCiAgICAgICAgICAgIH1dCiAgICAgICAgfV0KICAgIH0sCiAgICBzZWFyY2hVcmw6ICcvaW5kZXgucGhwL3ZvZC9zZWFyY2gvcGFnZS9meXBhZ2Uvd2QvKiouaHRtbCcsCiAgICBzZWFyY2hhYmxlOiAyLAogICAgcXVpY2tTZWFyY2g6IDAsCiAgICBoZWFkZXJzOiB7CiAgICAgICAgJ1VzZXItQWdlbnQnOiAnTU9CSUxFX1VBJwogICAgfSwKICAgIHRpbWVvdXQ6IDUwMDAsIC8v572R56uZ55qE5YWo5bGA6K+35rGC6LaF5pe2LOm7mOiupOaYrzMwMDDmr6vnp5IKICAgIGNsYXNzX25hbWU6ICfml6XmvKsm5Zu95ryrJywKICAgIGNsYXNzX3VybDogJ2FyZWEv5pel5pysJmFyZWEv5Lit5ZyLJywKICAgIHBsYXlfcGFyc2U6IHRydWUsCiAgICBsYXp5OiBganM6CiAgICAgICAgdmFyIGh0bWwgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQpLm1hdGNoKC9yIHBsYXllcl8uKj89KC4qPyk8LylbMV0pOwogICAgICAgIHZhciB1cmwgPSBodG1sLnVybDsKICAgICAgICB2YXIgZnJvbSA9IGh0bWwuZnJvbTsKICAgICAgICBpZiAoaHRtbC5lbmNyeXB0ID09ICcxJykgewogICAgICAgICAgICB1cmwgPSB1bmVzY2FwZSh1cmwpCiAgICAgICAgfSBlbHNlIGlmIChodG1sLmVuY3J5cHQgPT0gJzInKSB7CiAgICAgICAgICAgIHVybCA9IHVuZXNjYXBlKGJhc2U2NERlY29kZSh1cmwpKQogICAgICAgIH0KICAgICAgICBpZiAoL20zdTh8bXA0Ly50ZXN0KHVybCkpIHsKICAgICAgICAgICAgaW5wdXQgPSB1cmwKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB2YXIgTWFjUGxheWVyQ29uZmlnPXt9OwogICAgICAgICAgICBldmFsKGZldGNoKEhPU1QgKyAiL3N0YXRpYy9qcy9wbGF5ZXJjb25maWcuanMiKS5yZXBsYWNlKCd2YXIgTWFjJywnTWFjJykpOwogICAgICAgICAgICB2YXIganggPSBNYWNQbGF5ZXJDb25maWcucGxheWVyX2xpc3RbZnJvbV0ucGFyc2U7CiAgICAgICAgICAgIGlmIChqeCA9PSAnJykgewogICAgICAgICAgICAgICAganggPSBNYWNQbGF5ZXJDb25maWcucGFyc2UKICAgICAgICAgICAgfTsKICAgICAgICAgICAgaWYgKGp4LnN0YXJ0c1dpdGgoIi8iKSkgewogICAgICAgICAgICAgICAganggPSAiaHR0cHM6IiArIGp4OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlucHV0PXsKICAgICAgICAgICAgICAgIGp4OjAsCiAgICAgICAgICAgICAgICB1cmw6angrdXJsLAogICAgICAgICAgICAgICAgcGFyc2U6MSwKICAgICAgICAgICAgICAgIGhlYWRlcjogSlNPTi5zdHJpbmdpZnkoewogICAgICAgICAgICAgICAgICAgICdyZWZlcmVyJzogSE9TVAogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIGAsCiAgICBsaW1pdDogNiwKICAgIC8vIOWbvueJh+adpea6kDonQFJlZmVyZXI9aHR0cHM6Ly9hcGkuZG91YmFuLmNvbS9AVXNlci1BZ2VudD1Nb3ppbGxhLzUuMCUyMChXaW5kb3dzJTIwTlQlMjAxMC4wOyUyMFdpbjY0OyUyMHg2NCklMjBBcHBsZVdlYktpdC81MzcuMzYlMjAoS0hUTUwsJTIwbGlrZSUyMEdlY2tvKSUyMENocm9tZS8xMTMuMC4wLjAlMjBTYWZhcmkvNTM3LjM2JywKICAgIOaOqOiNkDogJyonLAogICAg5LiA57qnOiAnLnZvZGxpc3Rfd2kmJmxpOy5sYXp5bG9hZCYmdGl0bGU7Lmxhenlsb2FkJiZkYXRhLW9yaWdpbmFsOy5waWNfdGV4dCYmVGV4dDthJiZocmVmJywKICAgIOS6jOe6pzogewogICAgICAgICJ0aXRsZSI6ICJoMiYmVGV4dDtsaS5kYXRhLS1zcGFuOmVxKDApJiZUZXh0IiwKICAgICAgICAiaW1nIjogIi5sYXp5bG9hZCYmZGF0YS1vcmlnaW5hbCIsCiAgICAgICAgImRlc2MiOiAibGkuZGF0YS0tc3BhbjplcSgxKSYmVGV4dDs7O2xpLmRhdGEtLXNwYW46ZXEoMikmJlRleHQ7bGkuZGF0YS0tc3BhbjplcSgzKSYmVGV4dCIsCiAgICAgICAgImNvbnRlbnQiOiAiLmZ1bGxfdGV4dCYmc3BhbiYmVGV4dCIsCiAgICAgICAgInRhYnMiOiBganM6CiAgICAgICAgICAgIFRBQlMgPSBbXTsKICAgICAgICAgICAgbGV0IHRhYnMgPSBwZGZhKGh0bWwsICcjTnVtVGFiJiZhJyk7CiAgICAgICAgICAgIHRhYnMuZm9yRWFjaCgoaXQpID0+IHsKICAgICAgICAgICAgICAgIFRBQlMucHVzaChwZGZoKGl0LCAnYSYmYWx0JykpCiAgICAgICAgICAgIH0pOwogICAgICAgIGAsCiAgICAgICAgLy8gImxpc3RzIjogIi5jb250ZW50X3BsYXlsaXN0Om5vdCgubGlzdF9zY3JvbGwpOmVxKCNpZCkgYSIKICAgICAgICAibGlzdHMiOiAiZGl2LnBsYXlsaXN0X2Z1bGw6ZXEoI2lkKSBsaSIKICAgIH0sCiAgICDmkJzntKI6ICdsaS5zZWFyY2hsaXN0X2l0ZW07KjsqOyo7KicsCn0= \ No newline at end of file diff --git a/潇洒/js/YXDM.js b/潇洒/js/YXDM.js new file mode 100644 index 0000000..614a1c6 --- /dev/null +++ b/潇洒/js/YXDM.js @@ -0,0 +1 @@ +Ly8g5Y+R5biD6aG1IGh0dHBzOi8vYWNnZmFucy5vcmcvcHViLmh0bWwKdmFyIHJ1bGUgPSB7CiAgICB0aXRsZTogJ+aAoeiQseWKqOa8qycsCiAgICAvLyBob3N0OidodHRwczovL3d3dy55eGRtbG92ZS5jb20nLAogICAgaG9zdDogJ2h0dHBzOi8vYWNnZmFucy5vcmcvcHViLmh0bWwnLAogICAgaG9zdEpzOiAncHJpbnQoSE9TVCk7bGV0IGh0bWw9cmVxdWVzdChIT1NULHtoZWFkZXJzOnsiVXNlci1BZ2VudCI6UENfVUF9fSk7bGV0IHNyYyA9IGpzcC5wZGZoKGh0bWwsInA6ZXEoMCkmJmEmJlRleHQiKTtwcmludChzcmMpO0hPU1Q9c3JjJywgLy/nvZHpobXln5/lkI3moLnliqjmgIHmipPlj5Zqc+S7o+eggeOAgumAmui/h0hPU1Q96LWL5YC8CiAgICAvLyB1cmw6Jy9jYXRlZ29yeS5odG1sP2NoYW5uZWw9MTcmemhvbmdsZWk9ZnljbGFzcyZvcmRlcmJ5PXB1YmRhdGUmdG90YWxyZXN1bHQ9Mjk5OSZwYWdlbm89ZnlwYWdlJywKICAgIHVybDogJy9jYXRlZ29yeS5odG1sP2NoYW5uZWw9MTcmemhvbmdsZWk9ZnljbGFzc2Z5ZmlsdGVyJnBhZ2Vubz1meXBhZ2UnLAogICAgZmlsdGVyYWJsZTogMSwgLy/mmK/lkKblkK/nlKjliIbnsbvnrZvpgIksCiAgICBmaWx0ZXJfdXJsOiAnJnt7ZmwuYnkgb3IgIm9yZGVyYnk9cHViZGF0ZSJ9fSZ7e2ZsLnllYXJ9fSZ7e2ZsLmFyZWF9fSZ7e2ZsLnN0YX19Jnt7ZmwuY2xhc3N9fScsCiAgICBmaWx0ZXI6IHsKICAgICAgICAiVFYiOiBbewogICAgICAgICAgICAia2V5IjogInN0YSIsCiAgICAgICAgICAgICJuYW1lIjogIui/m+W6piIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlhajpg6giLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLov57ovb3kuK0iLAogICAgICAgICAgICAgICAgInYiOiAic3RhdHVzPei/nui9veS4rSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5bey5a6M57uTIiwKICAgICAgICAgICAgICAgICJ2IjogInN0YXR1cz3lt7Llroznu5MiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuacquaSreaUviIsCiAgICAgICAgICAgICAgICAidiI6ICJzdGF0dXM95pyq5pKt5pS+IgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJhcmVhIiwKICAgICAgICAgICAgIm5hbWUiOiAi5Zyw5Yy6IiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqCIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaXpeacrCIsCiAgICAgICAgICAgICAgICAidiI6ICJhcmVhPeaXpeacrCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5Lit5Zu9IiwKICAgICAgICAgICAgICAgICJ2IjogImFyZWE95Lit5Zu9IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmrKfnvo4iLAogICAgICAgICAgICAgICAgInYiOiAiYXJlYT3mrKfnvo4iCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogInllYXIiLAogICAgICAgICAgICAibmFtZSI6ICLlubTku70iLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOoIiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyNSIsCiAgICAgICAgICAgICAgICAidiI6ICJ5ZWFyPTIwMjUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjQiLAogICAgICAgICAgICAgICAgInYiOiAieWVhcj0yMDI0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIzIiwKICAgICAgICAgICAgICAgICJ2IjogInllYXI9MjAyMyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMiIsCiAgICAgICAgICAgICAgICAidiI6ICJ5ZWFyPTIwMjIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjEiLAogICAgICAgICAgICAgICAgInYiOiAieWVhcj0yMDIxIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIwIiwKICAgICAgICAgICAgICAgICJ2IjogInllYXI9MjAyMCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxOSIsCiAgICAgICAgICAgICAgICAidiI6ICJ5ZWFyPTIwMTkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTgiLAogICAgICAgICAgICAgICAgInYiOiAieWVhcj0yMDE4IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE3IiwKICAgICAgICAgICAgICAgICJ2IjogInllYXI9MjAxNyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNiIsCiAgICAgICAgICAgICAgICAidiI6ICJ5ZWFyPTIwMTYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTUiLAogICAgICAgICAgICAgICAgInYiOiAieWVhcj0yMDE1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE0IiwKICAgICAgICAgICAgICAgICJ2IjogInllYXI9MjAxNCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxMyIsCiAgICAgICAgICAgICAgICAidiI6ICJ5ZWFyPTIwMTMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTIiLAogICAgICAgICAgICAgICAgInYiOiAieWVhcj0yMDEyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDExIiwKICAgICAgICAgICAgICAgICJ2IjogInllYXI9MjAxMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxMCIsCiAgICAgICAgICAgICAgICAidiI6ICJ5ZWFyPTIwMTAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuabtOaXqSIsCiAgICAgICAgICAgICAgICAidiI6ICJ5ZWFyPTIwMTDliY0iCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogImNsYXNzIiwKICAgICAgICAgICAgIm5hbWUiOiAi5Ymn5oOFIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqCIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWGkumZqSIsCiAgICAgICAgICAgICAgICAidiI6ICJqcWx4PeWGkumZqSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi54Ot6KGAIiwKICAgICAgICAgICAgICAgICJ2IjogImpxbHg954Ot6KGAIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLniLHmg4UiLAogICAgICAgICAgICAgICAgInYiOiAianFseD3niLHmg4UiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaQnueskSIsCiAgICAgICAgICAgICAgICAidiI6ICJqcWx4PeaQnueskSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5ZCO5a6rIiwKICAgICAgICAgICAgICAgICJ2IjogImpxbHg95ZCO5a6rIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmoKHlm60iLAogICAgICAgICAgICAgICAgInYiOiAianFseD3moKHlm60iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuacuuaImCIsCiAgICAgICAgICAgICAgICAidiI6ICJqcWx4PeacuuaImCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5bm75oOzIiwKICAgICAgICAgICAgICAgICJ2IjogImpxbHg95bm75oOzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnp5HlubsiLAogICAgICAgICAgICAgICAgInYiOiAianFseD3np5HlubsiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuernuaKgCIsCiAgICAgICAgICAgICAgICAidiI6ICJqcWx4PeernuaKgCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi55m+5ZCIIiwKICAgICAgICAgICAgICAgICJ2IjogImpxbHg955m+5ZCIIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLogL3nvo4iLAogICAgICAgICAgICAgICAgInYiOiAianFseD3ogL3nvo4iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaCrOeWkSIsCiAgICAgICAgICAgICAgICAidiI6ICJqcWx4PeaCrOeWkSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5Ymn5oOFIiwKICAgICAgICAgICAgICAgICJ2IjogImpxbHg95Ymn5oOFIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmiJjkuokiLAogICAgICAgICAgICAgICAgInYiOiAianFseD3miJjkuokiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaBkOaAliIsCiAgICAgICAgICAgICAgICAidiI6ICJqcWx4PeaBkOaAliIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6L+Q5YqoIiwKICAgICAgICAgICAgICAgICJ2IjogImpxbHg96L+Q5YqoIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLliqjkvZwiLAogICAgICAgICAgICAgICAgInYiOiAianFseD3liqjkvZwiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuerpeivnSIsCiAgICAgICAgICAgICAgICAidiI6ICJqcWx4PeerpeivnSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5Y6G5Y+yIiwKICAgICAgICAgICAgICAgICJ2IjogImpxbHg95Y6G5Y+yIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnnJ/kuroiLAogICAgICAgICAgICAgICAgInYiOiAianFseD3nnJ/kuroiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWls+aAp+WQkSIsCiAgICAgICAgICAgICAgICAidiI6ICJqcWx4PeWls+aAp+WQkSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5rOh6Z2i55WqIiwKICAgICAgICAgICAgICAgICJ2IjogImpxbHg95rOh6Z2i55WqIgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJieSIsCiAgICAgICAgICAgICJuYW1lIjogIuaOkuW6jyIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLml7bpl7QiLAogICAgICAgICAgICAgICAgInYiOiAib3JkZXJieT1wdWJkYXRlIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLng63luqYiLAogICAgICAgICAgICAgICAgInYiOiAib3JkZXJieT1jbGljayIKICAgICAgICAgICAgfV0KICAgICAgICB9XSwKICAgICAgICAi5Ymn5Zy654mIIjogW3sKICAgICAgICAgICAgImtleSI6ICJzdGEiLAogICAgICAgICAgICAibmFtZSI6ICLov5vluqYiLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOoIiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6L+e6L295LitIiwKICAgICAgICAgICAgICAgICJ2IjogInN0YXR1cz3ov57ovb3kuK0iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuW3suWujOe7kyIsCiAgICAgICAgICAgICAgICAidiI6ICJzdGF0dXM95bey5a6M57uTIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmnKrmkq3mlL4iLAogICAgICAgICAgICAgICAgInYiOiAic3RhdHVzPeacquaSreaUviIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAiYXJlYSIsCiAgICAgICAgICAgICJuYW1lIjogIuWcsOWMuiIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlhajpg6giLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLml6XmnKwiLAogICAgICAgICAgICAgICAgInYiOiAiYXJlYT3ml6XmnKwiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuS4reWbvSIsCiAgICAgICAgICAgICAgICAidiI6ICJhcmVhPeS4reWbvSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5qyn576OIiwKICAgICAgICAgICAgICAgICJ2IjogImFyZWE95qyn576OIgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJ5ZWFyIiwKICAgICAgICAgICAgIm5hbWUiOiAi5bm05Lu9IiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqCIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjUiLAogICAgICAgICAgICAgICAgInYiOiAieWVhcj0yMDI1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDI0IiwKICAgICAgICAgICAgICAgICJ2IjogInllYXI9MjAyNCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMyIsCiAgICAgICAgICAgICAgICAidiI6ICJ5ZWFyPTIwMjMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjIiLAogICAgICAgICAgICAgICAgInYiOiAieWVhcj0yMDIyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIxIiwKICAgICAgICAgICAgICAgICJ2IjogInllYXI9MjAyMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMCIsCiAgICAgICAgICAgICAgICAidiI6ICJ5ZWFyPTIwMjAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTkiLAogICAgICAgICAgICAgICAgInYiOiAieWVhcj0yMDE5IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE4IiwKICAgICAgICAgICAgICAgICJ2IjogInllYXI9MjAxOCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNyIsCiAgICAgICAgICAgICAgICAidiI6ICJ5ZWFyPTIwMTciCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTYiLAogICAgICAgICAgICAgICAgInYiOiAieWVhcj0yMDE2IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE1IiwKICAgICAgICAgICAgICAgICJ2IjogInllYXI9MjAxNSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNCIsCiAgICAgICAgICAgICAgICAidiI6ICJ5ZWFyPTIwMTQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTMiLAogICAgICAgICAgICAgICAgInYiOiAieWVhcj0yMDEzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDEyIiwKICAgICAgICAgICAgICAgICJ2IjogInllYXI9MjAxMiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxMSIsCiAgICAgICAgICAgICAgICAidiI6ICJ5ZWFyPTIwMTEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTAiLAogICAgICAgICAgICAgICAgInYiOiAieWVhcj0yMDEwIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmm7Tml6kiLAogICAgICAgICAgICAgICAgInYiOiAieWVhcj0yMDEw5YmNIgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJjbGFzcyIsCiAgICAgICAgICAgICJuYW1lIjogIuWJp+aDhSIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlhajpg6giLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlhpLpmakiLAogICAgICAgICAgICAgICAgInYiOiAianFseD3lhpLpmakiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIueDreihgCIsCiAgICAgICAgICAgICAgICAidiI6ICJqcWx4PeeDreihgCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi54ix5oOFIiwKICAgICAgICAgICAgICAgICJ2IjogImpxbHg954ix5oOFIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmkJ7nrJEiLAogICAgICAgICAgICAgICAgInYiOiAianFseD3mkJ7nrJEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWQjuWuqyIsCiAgICAgICAgICAgICAgICAidiI6ICJqcWx4PeWQjuWuqyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5qCh5ZutIiwKICAgICAgICAgICAgICAgICJ2IjogImpxbHg95qCh5ZutIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmnLrmiJgiLAogICAgICAgICAgICAgICAgInYiOiAianFseD3mnLrmiJgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuW5u+aDsyIsCiAgICAgICAgICAgICAgICAidiI6ICJqcWx4PeW5u+aDsyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi56eR5bm7IiwKICAgICAgICAgICAgICAgICJ2IjogImpxbHg956eR5bm7IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnq57mioAiLAogICAgICAgICAgICAgICAgInYiOiAianFseD3nq57mioAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIueZvuWQiCIsCiAgICAgICAgICAgICAgICAidiI6ICJqcWx4PeeZvuWQiCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6IC9576OIiwKICAgICAgICAgICAgICAgICJ2IjogImpxbHg96IC9576OIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmgqznlpEiLAogICAgICAgICAgICAgICAgInYiOiAianFseD3mgqznlpEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWJp+aDhSIsCiAgICAgICAgICAgICAgICAidiI6ICJqcWx4PeWJp+aDhSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5oiY5LqJIiwKICAgICAgICAgICAgICAgICJ2IjogImpxbHg95oiY5LqJIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmgZDmgJYiLAogICAgICAgICAgICAgICAgInYiOiAianFseD3mgZDmgJYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIui/kOWKqCIsCiAgICAgICAgICAgICAgICAidiI6ICJqcWx4Pei/kOWKqCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5Yqo5L2cIiwKICAgICAgICAgICAgICAgICJ2IjogImpxbHg95Yqo5L2cIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnq6Xor50iLAogICAgICAgICAgICAgICAgInYiOiAianFseD3nq6Xor50iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWOhuWPsiIsCiAgICAgICAgICAgICAgICAidiI6ICJqcWx4PeWOhuWPsiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi55yf5Lq6IiwKICAgICAgICAgICAgICAgICJ2IjogImpxbHg955yf5Lq6IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlpbPmgKflkJEiLAogICAgICAgICAgICAgICAgInYiOiAianFseD3lpbPmgKflkJEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuazoemdoueVqiIsCiAgICAgICAgICAgICAgICAidiI6ICJqcWx4PeazoemdoueVqiIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAiYnkiLAogICAgICAgICAgICAibmFtZSI6ICLmjpLluo8iLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5pe26Ze0IiwKICAgICAgICAgICAgICAgICJ2IjogIm9yZGVyYnk9cHViZGF0ZSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi54Ot5bqmIiwKICAgICAgICAgICAgICAgICJ2IjogIm9yZGVyYnk9Y2xpY2siCiAgICAgICAgICAgIH1dCiAgICAgICAgfV0sCiAgICAgICAgIk9WQSI6IFt7CiAgICAgICAgICAgICJrZXkiOiAic3RhIiwKICAgICAgICAgICAgIm5hbWUiOiAi6L+b5bqmIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqCIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIui/nui9veS4rSIsCiAgICAgICAgICAgICAgICAidiI6ICJzdGF0dXM96L+e6L295LitIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlt7Llroznu5MiLAogICAgICAgICAgICAgICAgInYiOiAic3RhdHVzPeW3suWujOe7kyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pyq5pKt5pS+IiwKICAgICAgICAgICAgICAgICJ2IjogInN0YXR1cz3mnKrmkq3mlL4iCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogImFyZWEiLAogICAgICAgICAgICAibmFtZSI6ICLlnLDljLoiLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOoIiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pel5pysIiwKICAgICAgICAgICAgICAgICJ2IjogImFyZWE95pel5pysIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLkuK3lm70iLAogICAgICAgICAgICAgICAgInYiOiAiYXJlYT3kuK3lm70iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuasp+e+jiIsCiAgICAgICAgICAgICAgICAidiI6ICJhcmVhPeasp+e+jiIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAieWVhciIsCiAgICAgICAgICAgICJuYW1lIjogIuW5tOS7vSIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlhajpg6giLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDI1IiwKICAgICAgICAgICAgICAgICJ2IjogInllYXI9MjAyNSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyNCIsCiAgICAgICAgICAgICAgICAidiI6ICJ5ZWFyPTIwMjQiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjMiLAogICAgICAgICAgICAgICAgInYiOiAieWVhcj0yMDIzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIyIiwKICAgICAgICAgICAgICAgICJ2IjogInllYXI9MjAyMiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMSIsCiAgICAgICAgICAgICAgICAidiI6ICJ5ZWFyPTIwMjEiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjAiLAogICAgICAgICAgICAgICAgInYiOiAieWVhcj0yMDIwIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE5IiwKICAgICAgICAgICAgICAgICJ2IjogInllYXI9MjAxOSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxOCIsCiAgICAgICAgICAgICAgICAidiI6ICJ5ZWFyPTIwMTgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTciLAogICAgICAgICAgICAgICAgInYiOiAieWVhcj0yMDE3IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE2IiwKICAgICAgICAgICAgICAgICJ2IjogInllYXI9MjAxNiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNSIsCiAgICAgICAgICAgICAgICAidiI6ICJ5ZWFyPTIwMTUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTQiLAogICAgICAgICAgICAgICAgInYiOiAieWVhcj0yMDE0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDEzIiwKICAgICAgICAgICAgICAgICJ2IjogInllYXI9MjAxMyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxMiIsCiAgICAgICAgICAgICAgICAidiI6ICJ5ZWFyPTIwMTIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTEiLAogICAgICAgICAgICAgICAgInYiOiAieWVhcj0yMDExIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDEwIiwKICAgICAgICAgICAgICAgICJ2IjogInllYXI9MjAxMCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pu05pepIiwKICAgICAgICAgICAgICAgICJ2IjogInllYXI9MjAxMOWJjSIKICAgICAgICAgICAgfV0KICAgICAgICB9LCB7CiAgICAgICAgICAgICJrZXkiOiAiY2xhc3MiLAogICAgICAgICAgICAibmFtZSI6ICLliafmg4UiLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOoIiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5YaS6ZmpIiwKICAgICAgICAgICAgICAgICJ2IjogImpxbHg95YaS6ZmpIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLng63ooYAiLAogICAgICAgICAgICAgICAgInYiOiAianFseD3ng63ooYAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIueIseaDhSIsCiAgICAgICAgICAgICAgICAidiI6ICJqcWx4PeeIseaDhSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5pCe56yRIiwKICAgICAgICAgICAgICAgICJ2IjogImpxbHg95pCe56yRIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlkI7lrqsiLAogICAgICAgICAgICAgICAgInYiOiAianFseD3lkI7lrqsiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuagoeWbrSIsCiAgICAgICAgICAgICAgICAidiI6ICJqcWx4PeagoeWbrSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5py65oiYIiwKICAgICAgICAgICAgICAgICJ2IjogImpxbHg95py65oiYIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLlubvmg7MiLAogICAgICAgICAgICAgICAgInYiOiAianFseD3lubvmg7MiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuenkeW5uyIsCiAgICAgICAgICAgICAgICAidiI6ICJqcWx4PeenkeW5uyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi56ue5oqAIiwKICAgICAgICAgICAgICAgICJ2IjogImpxbHg956ue5oqAIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnmb7lkIgiLAogICAgICAgICAgICAgICAgInYiOiAianFseD3nmb7lkIgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuiAvee+jiIsCiAgICAgICAgICAgICAgICAidiI6ICJqcWx4PeiAvee+jiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5oKs55aRIiwKICAgICAgICAgICAgICAgICJ2IjogImpxbHg95oKs55aRIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLliafmg4UiLAogICAgICAgICAgICAgICAgInYiOiAianFseD3liafmg4UiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaImOS6iSIsCiAgICAgICAgICAgICAgICAidiI6ICJqcWx4PeaImOS6iSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5oGQ5oCWIiwKICAgICAgICAgICAgICAgICJ2IjogImpxbHg95oGQ5oCWIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLov5DliqgiLAogICAgICAgICAgICAgICAgInYiOiAianFseD3ov5DliqgiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWKqOS9nCIsCiAgICAgICAgICAgICAgICAidiI6ICJqcWx4PeWKqOS9nCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi56ul6K+dIiwKICAgICAgICAgICAgICAgICJ2IjogImpxbHg956ul6K+dIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLljoblj7IiLAogICAgICAgICAgICAgICAgInYiOiAianFseD3ljoblj7IiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuecn+S6uiIsCiAgICAgICAgICAgICAgICAidiI6ICJqcWx4Peecn+S6uiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5aWz5oCn5ZCRIiwKICAgICAgICAgICAgICAgICJ2IjogImpxbHg95aWz5oCn5ZCRIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLms6HpnaLnlaoiLAogICAgICAgICAgICAgICAgInYiOiAianFseD3ms6HpnaLnlaoiCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogImJ5IiwKICAgICAgICAgICAgIm5hbWUiOiAi5o6S5bqPIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuaXtumXtCIsCiAgICAgICAgICAgICAgICAidiI6ICJvcmRlcmJ5PXB1YmRhdGUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIueDreW6piIsCiAgICAgICAgICAgICAgICAidiI6ICJvcmRlcmJ5PWNsaWNrIgogICAgICAgICAgICB9XQogICAgICAgIH1dLAogICAgICAgICLlhbbku5YiOiBbewogICAgICAgICAgICAia2V5IjogInN0YSIsCiAgICAgICAgICAgICJuYW1lIjogIui/m+W6piIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLlhajpg6giLAogICAgICAgICAgICAgICAgInYiOiAiIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLov57ovb3kuK0iLAogICAgICAgICAgICAgICAgInYiOiAic3RhdHVzPei/nui9veS4rSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5bey5a6M57uTIiwKICAgICAgICAgICAgICAgICJ2IjogInN0YXR1cz3lt7Llroznu5MiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuacquaSreaUviIsCiAgICAgICAgICAgICAgICAidiI6ICJzdGF0dXM95pyq5pKt5pS+IgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJhcmVhIiwKICAgICAgICAgICAgIm5hbWUiOiAi5Zyw5Yy6IiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqCIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaXpeacrCIsCiAgICAgICAgICAgICAgICAidiI6ICJhcmVhPeaXpeacrCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5Lit5Zu9IiwKICAgICAgICAgICAgICAgICJ2IjogImFyZWE95Lit5Zu9IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmrKfnvo4iLAogICAgICAgICAgICAgICAgInYiOiAiYXJlYT3mrKfnvo4iCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogInllYXIiLAogICAgICAgICAgICAibmFtZSI6ICLlubTku70iLAogICAgICAgICAgICAidmFsdWUiOiBbewogICAgICAgICAgICAgICAgIm4iOiAi5YWo6YOoIiwKICAgICAgICAgICAgICAgICJ2IjogIiIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyNSIsCiAgICAgICAgICAgICAgICAidiI6ICJ5ZWFyPTIwMjUiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjQiLAogICAgICAgICAgICAgICAgInYiOiAieWVhcj0yMDI0IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIzIiwKICAgICAgICAgICAgICAgICJ2IjogInllYXI9MjAyMyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAyMiIsCiAgICAgICAgICAgICAgICAidiI6ICJ5ZWFyPTIwMjIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMjEiLAogICAgICAgICAgICAgICAgInYiOiAieWVhcj0yMDIxIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDIwIiwKICAgICAgICAgICAgICAgICJ2IjogInllYXI9MjAyMCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxOSIsCiAgICAgICAgICAgICAgICAidiI6ICJ5ZWFyPTIwMTkiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTgiLAogICAgICAgICAgICAgICAgInYiOiAieWVhcj0yMDE4IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE3IiwKICAgICAgICAgICAgICAgICJ2IjogInllYXI9MjAxNyIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxNiIsCiAgICAgICAgICAgICAgICAidiI6ICJ5ZWFyPTIwMTYiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTUiLAogICAgICAgICAgICAgICAgInYiOiAieWVhcj0yMDE1IgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDE0IiwKICAgICAgICAgICAgICAgICJ2IjogInllYXI9MjAxNCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxMyIsCiAgICAgICAgICAgICAgICAidiI6ICJ5ZWFyPTIwMTMiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIjIwMTIiLAogICAgICAgICAgICAgICAgInYiOiAieWVhcj0yMDEyIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICIyMDExIiwKICAgICAgICAgICAgICAgICJ2IjogInllYXI9MjAxMSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAiMjAxMCIsCiAgICAgICAgICAgICAgICAidiI6ICJ5ZWFyPTIwMTAiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuabtOaXqSIsCiAgICAgICAgICAgICAgICAidiI6ICJ5ZWFyPTIwMTDliY0iCiAgICAgICAgICAgIH1dCiAgICAgICAgfSwgewogICAgICAgICAgICAia2V5IjogImNsYXNzIiwKICAgICAgICAgICAgIm5hbWUiOiAi5Ymn5oOFIiwKICAgICAgICAgICAgInZhbHVlIjogW3sKICAgICAgICAgICAgICAgICJuIjogIuWFqOmDqCIsCiAgICAgICAgICAgICAgICAidiI6ICIiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWGkumZqSIsCiAgICAgICAgICAgICAgICAidiI6ICJqcWx4PeWGkumZqSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi54Ot6KGAIiwKICAgICAgICAgICAgICAgICJ2IjogImpxbHg954Ot6KGAIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLniLHmg4UiLAogICAgICAgICAgICAgICAgInYiOiAianFseD3niLHmg4UiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaQnueskSIsCiAgICAgICAgICAgICAgICAidiI6ICJqcWx4PeaQnueskSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5ZCO5a6rIiwKICAgICAgICAgICAgICAgICJ2IjogImpxbHg95ZCO5a6rIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmoKHlm60iLAogICAgICAgICAgICAgICAgInYiOiAianFseD3moKHlm60iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuacuuaImCIsCiAgICAgICAgICAgICAgICAidiI6ICJqcWx4PeacuuaImCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5bm75oOzIiwKICAgICAgICAgICAgICAgICJ2IjogImpxbHg95bm75oOzIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnp5HlubsiLAogICAgICAgICAgICAgICAgInYiOiAianFseD3np5HlubsiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuernuaKgCIsCiAgICAgICAgICAgICAgICAidiI6ICJqcWx4PeernuaKgCIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi55m+5ZCIIiwKICAgICAgICAgICAgICAgICJ2IjogImpxbHg955m+5ZCIIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLogL3nvo4iLAogICAgICAgICAgICAgICAgInYiOiAianFseD3ogL3nvo4iCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaCrOeWkSIsCiAgICAgICAgICAgICAgICAidiI6ICJqcWx4PeaCrOeWkSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5Ymn5oOFIiwKICAgICAgICAgICAgICAgICJ2IjogImpxbHg95Ymn5oOFIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLmiJjkuokiLAogICAgICAgICAgICAgICAgInYiOiAianFseD3miJjkuokiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuaBkOaAliIsCiAgICAgICAgICAgICAgICAidiI6ICJqcWx4PeaBkOaAliIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi6L+Q5YqoIiwKICAgICAgICAgICAgICAgICJ2IjogImpxbHg96L+Q5YqoIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLliqjkvZwiLAogICAgICAgICAgICAgICAgInYiOiAianFseD3liqjkvZwiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuerpeivnSIsCiAgICAgICAgICAgICAgICAidiI6ICJqcWx4PeerpeivnSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5Y6G5Y+yIiwKICAgICAgICAgICAgICAgICJ2IjogImpxbHg95Y6G5Y+yIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLnnJ/kuroiLAogICAgICAgICAgICAgICAgInYiOiAianFseD3nnJ/kuroiCiAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICJuIjogIuWls+aAp+WQkSIsCiAgICAgICAgICAgICAgICAidiI6ICJqcWx4PeWls+aAp+WQkSIKICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgIm4iOiAi5rOh6Z2i55WqIiwKICAgICAgICAgICAgICAgICJ2IjogImpxbHg95rOh6Z2i55WqIgogICAgICAgICAgICB9XQogICAgICAgIH0sIHsKICAgICAgICAgICAgImtleSI6ICJieSIsCiAgICAgICAgICAgICJuYW1lIjogIuaOkuW6jyIsCiAgICAgICAgICAgICJ2YWx1ZSI6IFt7CiAgICAgICAgICAgICAgICAibiI6ICLml7bpl7QiLAogICAgICAgICAgICAgICAgInYiOiAib3JkZXJieT1wdWJkYXRlIgogICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICAgICAibiI6ICLng63luqYiLAogICAgICAgICAgICAgICAgInYiOiAib3JkZXJieT1jbGljayIKICAgICAgICAgICAgfV0KICAgICAgICB9XQogICAgfSwKICAgIC8vIGZpbHRlcl9kZWY6ewogICAgLy8gCVRWOntieTonb3JkZXJieT1wdWJkYXRlJ30sCiAgICAvLyAJ5Ymn5Zy654mIOntieTonb3JkZXJieT1wdWJkYXRlJ30sCiAgICAvLyAJT1ZBOntieTonb3JkZXJieT1wdWJkYXRlJ30sCiAgICAvLyAJ5YW25LuWOntieTonb3JkZXJieT1wdWJkYXRlJ30KICAgIC8vIH0sCiAgICBzZWFyY2hVcmw6ICcvc2VhcmNoLmh0bWw/a2V5d29yZD0qKiZQYWdlTm89ZnlwYWdlJywKICAgIHNlYXJjaGFibGU6IDIsIC8v5piv5ZCm5ZCv55So5YWo5bGA5pCc57SiLAogICAgaGVhZGVyczogeyAvL+e9keermeeahOivt+axguWktCzlrozmlbTmlK/mjIHmiYDmnInnmoQs5bi45bimdWHlkoxjb29raWVzCiAgICAgICAgJ1VzZXItQWdlbnQnOiAnUENfVUEnLAogICAgfSwKICAgIGNsYXNzX25hbWU6ICdUVibliaflnLrniYgmT1ZBJuWFtuS7licsCiAgICBjbGFzc191cmw6ICdUVibliaflnLrniYgmT1ZBJuWFtuS7licsCiAgICBwbGF5X3BhcnNlOiB0cnVlLAogICAgbGF6eTogJycsCiAgICBsaW1pdDogNiwKICAgIC8vIOaOqOiNkDonLmRobmV3LmFkaiBsaTsqOyo7KjsqJywKICAgIOaOqOiNkDogJy5kaG5ldy5hZGogbGk7YSYmdGl0bGU7aW1nJiZzcmM7cDplcSgtMSkmJlRleHQ7YSYmaHJlZicsCiAgICAvLyDkuIDnuqc6Jy5kaG5ldyBsaTthJiZ0aXRsZTtpbWcmJnNyYztwOmVxKC0xKSYmVGV4dDthJiZocmVmJywKICAgIOS4gOe6pzogYGpzOgoJCWxldCBkID0gW107CgkJcGRmaCA9IGpzcC5wZGZoO3BkZmEgPSBqc3AucGRmYTtwZCA9IGpzcC5wZDsKCQlsZXQgaHRtbCA9ICcnOwoJCWxldCB0b3RhbHJlc3VsdCA9IGdldEl0ZW0oInRvdGFscmVzdWx0XyIgKyBNWV9DQVRFLCAnJykKCQlpZiAodG90YWxyZXN1bHQgPT0gJycpIHsKCQkJaHRtbCA9IHJlcXVlc3QoaW5wdXQpOwoJCQl0b3RhbHJlc3VsdCA9IHBkZmgoaHRtbCwgIi5wYWdlaW5mbyYmc3Ryb25nJiZUZXh0Iik7CgkJCXNldEl0ZW0oInRvdGFscmVzdWx0XyIgKyBNWV9DQVRFLCB0b3RhbHJlc3VsdCkKICAgICAgICB9CgkJaW5wdXQgKz0gJyZ0b3RhbHJlc3VsdD0nICsgZ2V0SXRlbSgidG90YWxyZXN1bHRfIiArIE1ZX0NBVEUsICcnKTsKCQlodG1sID0gcmVxdWVzdChpbnB1dCk7CgkJbGV0IGxpc3QgPSBwZGZhKGh0bWwsICIuZGhuZXcmJmxpIik7CgkJbGlzdC5mb3JFYWNoKGl0ID0+IHsKCQkJZC5wdXNoKHsKCQkJCXRpdGxlOiBwZGZoKGl0LCAiYSYmdGl0bGUiKSwKCQkJCWRlc2M6IHBkZmgoaXQsICJwOmVxKC0xKSYmVGV4dCIpLAoJCQkJcGljX3VybDogcGQoaXQsICJpbWcmJnNyYyIpLAoJCQkJdXJsOiBwZChpdCwgImEmJmhyZWYiKQoJCQl9KQoJCX0pOwoJCXNldFJlc3VsdChkKQoJYCwKICAgIOS6jOe6pzogewogICAgICAgICJ0aXRsZSI6ICJoMSYmVGV4dDsuZGh4eCBwOmVxKDQpJiZUZXh0IiwKICAgICAgICAiaW1nIjogIi5hbmltZS1pbWcmJmltZyYmc3JjIiwKICAgICAgICAiZGVzYyI6ICIuaW5mbzEtbGVmdCBsaTplcSgxKSYmVGV4dDsuZGh4eCBwOmVxKDMpJiZUZXh0Oy5kaHh4IHA6ZXEoMikmJlRleHQ7LmluZm8xLWxlZnQgbGk6ZXEoMCkmJlRleHQ7LmluZm8xLWxlZnQgbGk6ZXEoMikmJlRleHQiLAogICAgICAgICJjb250ZW50IjogIi5pbmZvMi0tc3Ryb25nJiZUZXh0IiwKICAgICAgICAidGFicyI6ICIub2wtc2VsZWN0IGxpIiwKICAgICAgICAibGlzdHMiOiAiLm9sLWNvbnRlbnQ6ZXEoI2lkKSBsaSIKICAgIH0sCiAgICAvLyDmkJzntKI6Jyo7KjsqO3A6ZXEoMykmJlRleHQ7KicsCiAgICDmkJzntKI6ICcuZGhuZXcgbGk7YSYmdGl0bGU7aW1nJiZzcmM7cDplcSgzKSYmVGV4dDthJiZocmVmJywKfQ== \ No newline at end of file diff --git a/潇洒/js/alishare.txt b/潇洒/js/alishare.txt deleted file mode 100644 index cd52f13..0000000 --- a/潇洒/js/alishare.txt +++ /dev/null @@ -1,70 +0,0 @@ -[ - { - "share_name": "优品阁", - "share_id": "uWa9gbM3RJ7" - }, - { - "share_name": "阿里1T", - "share_id": "mxAfB6eRgY4" - }, - { - "share_name": "平凡中的", - "share_id": "4ydLxf7VgH7" - }, - { - "share_name": "tacit0924", - "share_id": "DNgnCudf4cD?pwd=6666" - }, - { - "share_name": "黄妈", - "share_id": "4bGRVUdUtct" - }, - { - "share_name": "YYDSVIP", - "share_id": "dieULBdYP3D" - }, - { - "share_name": "优源阁", - "share_id": "RnjUi1urdb2" - }, - { - "share_name": "风流动漫", - "share_id": "WdaaeX7HK44" - }, - { - "share_name": "风流剧集", - "share_id": "kgxWjZsK6bq" - }, - { - "share_name": "xiaaluo", - "share_id": "sg8CdGUwmUr" - }, - { - "share_name": "4K影视", - "share_id": "wHPKUENKFsS" - }, - { - "share_name": "诺兰全集", - "share_id": "gf2GebXnZHh" - }, - { - "share_name": "纪录片", - "share_id": "fSNHaYST47s" - }, - { - "share_name": "掌灯者|港", - "share_id": "wHPKUENKFsS" - }, - { - "share_name": "掌灯者|一", - "share_id": "wHPKUENKFsS" - }, - { - "share_name": "掌灯者|二", - "share_id": "wHPKUENKFsS" - }, - { - "share_name": "掌灯者|三", - "share_id": "wHPKUENKFsS" - } -] \ No newline at end of file diff --git a/潇洒/js/cheerio.min.js b/潇洒/js/cheerio.min.js deleted file mode 100644 index 24acb69..0000000 --- a/潇洒/js/cheerio.min.js +++ /dev/null @@ -1,10945 +0,0 @@ -var e, t = function() { - return t = Object.assign || function(e) { - for (var t, n = 1, r = arguments.length; n < r; n++) - for (var i in t = arguments[n]) Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]); - return e - }, t.apply(this, arguments) - }, - n = { - xml: !1, - decodeEntities: !0 - }, - r = { - _useHtmlParser2: !0, - xmlMode: !0 - }; - -function i(e) { - return (null == e ? void 0 : e.xml) ? "boolean" == typeof e.xml ? r : t(t({}, r), e.xml) : null != e ? e : void 0 -}! function(e) { - e.Root = "root", e.Text = "text", e.Directive = "directive", e.Comment = "comment", e.Script = "script", e.Style = "style", e.Tag = "tag", e.CDATA = "cdata", e.Doctype = "doctype" -}(e || (e = {})); -const s = e.Root, - a = e.Text, - o = e.Directive, - c = e.Comment, - l = e.Script, - h = e.Style, - u = e.Tag, - p = e.CDATA, - f = e.Doctype; -class d { - constructor() { - this.parent = null, this.prev = null, this.next = null, this.startIndex = null, this.endIndex = null - } - get parentNode() { - return this.parent - } - set parentNode(e) { - this.parent = e - } - get previousSibling() { - return this.prev - } - set previousSibling(e) { - this.prev = e - } - get nextSibling() { - return this.next - } - set nextSibling(e) { - this.next = e - } - cloneNode(e = !1) { - return v(this, e) - } -} -class E extends d { - constructor(e) { - super(), this.data = e - } - get nodeValue() { - return this.data - } - set nodeValue(e) { - this.data = e - } -} -class m extends E { - constructor() { - super(...arguments), this.type = e.Text - } - get nodeType() { - return 3 - } -} -class T extends E { - constructor() { - super(...arguments), this.type = e.Comment - } - get nodeType() { - return 8 - } -} -class _ extends E { - constructor(t, n) { - super(n), this.name = t, this.type = e.Directive - } - get nodeType() { - return 1 - } -} -class A extends d { - constructor(e) { - super(), this.children = e - } - get firstChild() { - var e; - return null !== (e = this.children[0]) && void 0 !== e ? e : null - } - get lastChild() { - return this.children.length > 0 ? this.children[this.children.length - 1] : null - } - get childNodes() { - return this.children - } - set childNodes(e) { - this.children = e - } -} -class g extends A { - constructor() { - super(...arguments), this.type = e.CDATA - } - get nodeType() { - return 4 - } -} -class N extends A { - constructor() { - super(...arguments), this.type = e.Root - } - get nodeType() { - return 9 - } -} -class C extends A { - constructor(t, n, r = [], i = ("script" === t ? e.Script : "style" === t ? e.Style : e.Tag)) { - super(r), this.name = t, this.attribs = n, this.type = i - } - get nodeType() { - return 1 - } - get tagName() { - return this.name - } - set tagName(e) { - this.name = e - } - get attributes() { - return Object.keys(this.attribs).map((e => { - var t, n; - return { - name: e, - value: this.attribs[e], - namespace: null === (t = this["x-attribsNamespace"]) || void 0 === t ? void 0 : t[e], - prefix: null === (n = this["x-attribsPrefix"]) || void 0 === n ? void 0 : n[e] - } - })) - } -} - -function I(t) { - return (n = t).type === e.Tag || n.type === e.Script || n.type === e.Style; - var n -} - -function S(t) { - return t.type === e.CDATA -} - -function b(t) { - return t.type === e.Text -} - -function O(t) { - return t.type === e.Comment -} - -function y(t) { - return t.type === e.Directive -} - -function L(t) { - return t.type === e.Root -} - -function k(e) { - return Object.prototype.hasOwnProperty.call(e, "children") -} - -function v(e, t = !1) { - let n; - if (b(e)) n = new m(e.data); - else if (O(e)) n = new T(e.data); - else if (I(e)) { - const r = t ? D(e.children) : [], - i = new C(e.name, { - ...e.attribs - }, r); - r.forEach((e => e.parent = i)), null != e.namespace && (i.namespace = e.namespace), e["x-attribsNamespace"] && (i["x-attribsNamespace"] = { - ...e["x-attribsNamespace"] - }), e["x-attribsPrefix"] && (i["x-attribsPrefix"] = { - ...e["x-attribsPrefix"] - }), n = i - } else if (S(e)) { - const r = t ? D(e.children) : [], - i = new g(r); - r.forEach((e => e.parent = i)), n = i - } else if (L(e)) { - const r = t ? D(e.children) : [], - i = new N(r); - r.forEach((e => e.parent = i)), e["x-mode"] && (i["x-mode"] = e["x-mode"]), n = i - } else { - if (!y(e)) throw new Error(`Not implemented yet: ${e.type}`); - { - const t = new _(e.name, e.data); - null != e["x-name"] && (t["x-name"] = e["x-name"], t["x-publicId"] = e["x-publicId"], t["x-systemId"] = e["x-systemId"]), n = t - } - } - return n.startIndex = e.startIndex, n.endIndex = e.endIndex, null != e.sourceCodeLocation && (n.sourceCodeLocation = e.sourceCodeLocation), n -} - -function D(e) { - const t = e.map((e => v(e, !0))); - for (let e = 1; e < t.length; e++) t[e].prev = t[e - 1], t[e - 1].next = t[e]; - return t -} -const R = { - withStartIndices: !1, - withEndIndices: !1, - xmlMode: !1 -}; -class M { - constructor(e, t, n) { - this.dom = [], this.root = new N(this.dom), this.done = !1, this.tagStack = [this.root], this.lastNode = null, this.parser = null, "function" == typeof t && (n = t, t = R), "object" == typeof e && (t = e, e = void 0), this.callback = null != e ? e : null, this.options = null != t ? t : R, this.elementCB = null != n ? n : null - } - onparserinit(e) { - this.parser = e - } - onreset() { - this.dom = [], this.root = new N(this.dom), this.done = !1, this.tagStack = [this.root], this.lastNode = null, this.parser = null - } - onend() { - this.done || (this.done = !0, this.parser = null, this.handleCallback(null)) - } - onerror(e) { - this.handleCallback(e) - } - onclosetag() { - this.lastNode = null; - const e = this.tagStack.pop(); - this.options.withEndIndices && (e.endIndex = this.parser.endIndex), this.elementCB && this.elementCB(e) - } - onopentag(t, n) { - const r = this.options.xmlMode ? e.Tag : void 0, - i = new C(t, n, void 0, r); - this.addNode(i), this.tagStack.push(i) - } - ontext(t) { - const { - lastNode: n - } = this; - if (n && n.type === e.Text) n.data += t, this.options.withEndIndices && (n.endIndex = this.parser.endIndex); - else { - const e = new m(t); - this.addNode(e), this.lastNode = e - } - } - oncomment(t) { - if (this.lastNode && this.lastNode.type === e.Comment) return void(this.lastNode.data += t); - const n = new T(t); - this.addNode(n), this.lastNode = n - } - oncommentend() { - this.lastNode = null - } - oncdatastart() { - const e = new m(""), - t = new g([e]); - this.addNode(t), e.parent = t, this.lastNode = e - } - oncdataend() { - this.lastNode = null - } - onprocessinginstruction(e, t) { - const n = new _(e, t); - this.addNode(n) - } - handleCallback(e) { - if ("function" == typeof this.callback) this.callback(e, this.dom); - else if (e) throw e - } - addNode(e) { - const t = this.tagStack[this.tagStack.length - 1], - n = t.children[t.children.length - 1]; - this.options.withStartIndices && (e.startIndex = this.parser.startIndex), this.options.withEndIndices && (e.endIndex = this.parser.endIndex), t.children.push(e), n && (e.prev = n, n.next = e), e.parent = t, this.lastNode = null - } -} -const P = /["&'<>$\x80-\uFFFF]/g, - x = new Map([ - [34, """], - [38, "&"], - [39, "'"], - [60, "<"], - [62, ">"] - ]), - w = null != String.prototype.codePointAt ? (e, t) => e.codePointAt(t) : (e, t) => 55296 == (64512 & e.charCodeAt(t)) ? 1024 * (e.charCodeAt(t) - 55296) + e.charCodeAt(t + 1) - 56320 + 65536 : e.charCodeAt(t); - -function B(e) { - let t, n = "", - r = 0; - for (; null !== (t = P.exec(e));) { - const i = t.index, - s = e.charCodeAt(i), - a = x.get(s); - void 0 !== a ? (n += e.substring(r, i) + a, r = i + 1) : (n += `${e.substring(r,i)}&#x${w(e,i).toString(16)};`, r = P.lastIndex += Number(55296 == (64512 & s))) - } - return n + e.substr(r) -} - -function F(e, t) { - return function(n) { - let r, i = 0, - s = ""; - for (; r = e.exec(n);) i !== r.index && (s += n.substring(i, r.index)), s += t.get(r[0].charCodeAt(0)), i = r.index + 1; - return s + n.substring(i) - } -} -const U = F(/["&\u00A0]/g, new Map([ - [34, """], - [38, "&"], - [160, " "] - ])), - H = F(/[&<>\u00A0]/g, new Map([ - [38, "&"], - [60, "<"], - [62, ">"], - [160, " "] - ])), - G = new Map(["altGlyph", "altGlyphDef", "altGlyphItem", "animateColor", "animateMotion", "animateTransform", "clipPath", "feBlend", "feColorMatrix", "feComponentTransfer", "feComposite", "feConvolveMatrix", "feDiffuseLighting", "feDisplacementMap", "feDistantLight", "feDropShadow", "feFlood", "feFuncA", "feFuncB", "feFuncG", "feFuncR", "feGaussianBlur", "feImage", "feMerge", "feMergeNode", "feMorphology", "feOffset", "fePointLight", "feSpecularLighting", "feSpotLight", "feTile", "feTurbulence", "foreignObject", "glyphRef", "linearGradient", "radialGradient", "textPath"].map((e => [e.toLowerCase(), e]))), - Y = new Map(["definitionURL", "attributeName", "attributeType", "baseFrequency", "baseProfile", "calcMode", "clipPathUnits", "diffuseConstant", "edgeMode", "filterUnits", "glyphRef", "gradientTransform", "gradientUnits", "kernelMatrix", "kernelUnitLength", "keyPoints", "keySplines", "keyTimes", "lengthAdjust", "limitingConeAngle", "markerHeight", "markerUnits", "markerWidth", "maskContentUnits", "maskUnits", "numOctaves", "pathLength", "patternContentUnits", "patternTransform", "patternUnits", "pointsAtX", "pointsAtY", "pointsAtZ", "preserveAlpha", "preserveAspectRatio", "primitiveUnits", "refX", "refY", "repeatCount", "repeatDur", "requiredExtensions", "requiredFeatures", "specularConstant", "specularExponent", "spreadMethod", "startOffset", "stdDeviation", "stitchTiles", "surfaceScale", "systemLanguage", "tableValues", "targetX", "targetY", "textLength", "viewBox", "viewTarget", "xChannelSelector", "yChannelSelector", "zoomAndPan"].map((e => [e.toLowerCase(), e]))), - q = new Set(["style", "script", "xmp", "iframe", "noembed", "noframes", "plaintext", "noscript"]); - -function K(e) { - return e.replace(/"/g, """) -} -const j = new Set(["area", "base", "basefont", "br", "col", "command", "embed", "frame", "hr", "img", "input", "isindex", "keygen", "link", "meta", "param", "source", "track", "wbr"]); - -function V(e, t = {}) { - const n = "length" in e ? e : [e]; - let r = ""; - for (let e = 0; e < n.length; e++) r += W(n[e], t); - return r -} - -function W(e, t) { - switch (e.type) { - case s: - return V(e.children, t); - case f: - case o: - return `<${e.data}>`; - case c: - return function(e) { - return `\x3c!--${e.data}--\x3e` - }(e); - case p: - return function(e) { - return `` - }(e); - case l: - case h: - case u: - return function(e, t) { - var n; - "foreign" === t.xmlMode && (e.name = null !== (n = G.get(e.name)) && void 0 !== n ? n : e.name, e.parent && Q.has(e.parent.name) && (t = { - ...t, - xmlMode: !1 - })); - !t.xmlMode && X.has(e.name) && (t = { - ...t, - xmlMode: "foreign" - }); - let r = `<${e.name}`; - const i = function(e, t) { - var n; - if (!e) return; - const r = !1 === (null !== (n = t.encodeEntities) && void 0 !== n ? n : t.decodeEntities) ? K : t.xmlMode || "utf8" !== t.encodeEntities ? B : U; - return Object.keys(e).map((n => { - var i, s; - const a = null !== (i = e[n]) && void 0 !== i ? i : ""; - return "foreign" === t.xmlMode && (n = null !== (s = Y.get(n)) && void 0 !== s ? s : n), t.emptyAttrs || t.xmlMode || "" !== a ? `${n}="${r(a)}"` : n - })).join(" ") - }(e.attribs, t); - i && (r += ` ${i}`); - 0 === e.children.length && (t.xmlMode ? !1 !== t.selfClosingTags : t.selfClosingTags && j.has(e.name)) ? (t.xmlMode || (r += " "), r += "/>") : (r += ">", e.children.length > 0 && (r += V(e.children, t)), !t.xmlMode && j.has(e.name) || (r += ``)); - return r - }(e, t); - case a: - return function(e, t) { - var n; - let r = e.data || ""; - !1 === (null !== (n = t.encodeEntities) && void 0 !== n ? n : t.decodeEntities) || !t.xmlMode && e.parent && q.has(e.parent.name) || (r = t.xmlMode || "utf8" !== t.encodeEntities ? B(r) : H(r)); - return r - }(e, t) - } -} -const Q = new Set(["mi", "mo", "mn", "ms", "mtext", "annotation-xml", "foreignObject", "desc", "title"]), - X = new Set(["svg", "math"]); - -function $(e, t) { - return V(e, t) -} - -function z(e) { - return Array.isArray(e) ? e.map(z).join("") : k(e) && !O(e) ? z(e.children) : b(e) ? e.data : "" -} - -function J(t) { - return Array.isArray(t) ? t.map(J).join("") : k(t) && (t.type === e.Tag || S(t)) ? J(t.children) : b(t) ? t.data : "" -} - -function Z(e) { - return k(e) ? e.children : [] -} - -function ee(e) { - return e.parent || null -} - -function te(e) { - const t = ee(e); - if (null != t) return Z(t); - const n = [e]; - let { - prev: r, - next: i - } = e; - for (; null != r;) n.unshift(r), ({ - prev: r - } = r); - for (; null != i;) n.push(i), ({ - next: i - } = i); - return n -} - -function ne(e) { - let { - next: t - } = e; - for (; null !== t && !I(t);)({ - next: t - } = t); - return t -} - -function re(e) { - let { - prev: t - } = e; - for (; null !== t && !I(t);)({ - prev: t - } = t); - return t -} - -function ie(e) { - if (e.prev && (e.prev.next = e.next), e.next && (e.next.prev = e.prev), e.parent) { - const t = e.parent.children; - t.splice(t.lastIndexOf(e), 1) - } -} - -function se(e, t, n = !0, r = 1 / 0) { - return Array.isArray(t) || (t = [t]), ae(e, t, n, r) -} - -function ae(e, t, n, r) { - const i = []; - for (const s of t) { - if (e(s) && (i.push(s), --r <= 0)) break; - if (n && k(s) && s.children.length > 0) { - const t = ae(e, s.children, n, r); - if (i.push(...t), r -= t.length, r <= 0) break - } - } - return i -} - -function oe(e, t, n = !0) { - let r = null; - for (let i = 0; i < t.length && !r; i++) { - const s = t[i]; - I(s) && (e(s) ? r = s : n && s.children.length > 0 && (r = oe(e, s.children, !0))) - } - return r -} -const ce = { - tag_name: e => "function" == typeof e ? t => I(t) && e(t.name) : "*" === e ? I : t => I(t) && t.name === e, - tag_type: e => "function" == typeof e ? t => e(t.type) : t => t.type === e, - tag_contains: e => "function" == typeof e ? t => b(t) && e(t.data) : t => b(t) && t.data === e -}; - -function le(e, t) { - return "function" == typeof t ? n => I(n) && t(n.attribs[e]) : n => I(n) && n.attribs[e] === t -} - -function he(e, t) { - return n => e(n) || t(n) -} - -function ue(e) { - const t = Object.keys(e).map((t => { - const n = e[t]; - return Object.prototype.hasOwnProperty.call(ce, t) ? ce[t](n) : le(t, n) - })); - return 0 === t.length ? null : t.reduce(he) -} - -function pe(e, t, n = !0, r = 1 / 0) { - return se(ce.tag_name(e), t, n, r) -} -var fe; - -function de(e, t) { - const n = [], - r = []; - if (e === t) return 0; - let i = k(e) ? e : e.parent; - for (; i;) n.unshift(i), i = i.parent; - for (i = k(t) ? t : t.parent; i;) r.unshift(i), i = i.parent; - const s = Math.min(n.length, r.length); - let a = 0; - for (; a < s && n[a] === r[a];) a++; - if (0 === a) return fe.DISCONNECTED; - const o = n[a - 1], - c = o.children, - l = n[a], - h = r[a]; - return c.indexOf(l) > c.indexOf(h) ? o === t ? fe.FOLLOWING | fe.CONTAINED_BY : fe.FOLLOWING : o === e ? fe.PRECEDING | fe.CONTAINS : fe.PRECEDING -} - -function Ee(e) { - return (e = e.filter(((e, t, n) => !n.includes(e, t + 1)))).sort(((e, t) => { - const n = de(e, t); - return n & fe.PRECEDING ? -1 : n & fe.FOLLOWING ? 1 : 0 - })), e -}! function(e) { - e[e.DISCONNECTED = 1] = "DISCONNECTED", e[e.PRECEDING = 2] = "PRECEDING", e[e.FOLLOWING = 4] = "FOLLOWING", e[e.CONTAINS = 8] = "CONTAINS", e[e.CONTAINED_BY = 16] = "CONTAINED_BY" -}(fe || (fe = {})); -const me = ["url", "type", "lang"], - Te = ["fileSize", "bitrate", "framerate", "samplingrate", "channels", "duration", "height", "width"]; - -function _e(e) { - return pe("media:content", e).map((e => { - const { - attribs: t - } = e, n = { - medium: t.medium, - isDefault: !!t.isDefault - }; - for (const e of me) t[e] && (n[e] = t[e]); - for (const e of Te) t[e] && (n[e] = parseInt(t[e], 10)); - return t.expression && (n.expression = t.expression), n - })) -} - -function Ae(e, t) { - return pe(e, t, !0, 1)[0] -} - -function ge(e, t, n = !1) { - return z(pe(e, t, n, 1)).trim() -} - -function Ne(e, t, n, r, i = !1) { - const s = ge(n, r, i); - s && (e[t] = s) -} - -function Ce(e) { - return "rss" === e || "feed" === e || "rdf:RDF" === e -} -var Ie, Se = Object.freeze({ - __proto__: null, - isTag: I, - isCDATA: S, - isText: b, - isComment: O, - isDocument: L, - hasChildren: k, - getOuterHTML: $, - getInnerHTML: function(e, t) { - return k(e) ? e.children.map((e => $(e, t))).join("") : "" - }, - getText: function e(t) { - return Array.isArray(t) ? t.map(e).join("") : I(t) ? "br" === t.name ? "\n" : e(t.children) : S(t) ? e(t.children) : b(t) ? t.data : "" - }, - textContent: z, - innerText: J, - getChildren: Z, - getParent: ee, - getSiblings: te, - getAttributeValue: function(e, t) { - var n; - return null === (n = e.attribs) || void 0 === n ? void 0 : n[t] - }, - hasAttrib: function(e, t) { - return null != e.attribs && Object.prototype.hasOwnProperty.call(e.attribs, t) && null != e.attribs[t] - }, - getName: function(e) { - return e.name - }, - nextElementSibling: ne, - prevElementSibling: re, - removeElement: ie, - replaceElement: function(e, t) { - const n = t.prev = e.prev; - n && (n.next = t); - const r = t.next = e.next; - r && (r.prev = t); - const i = t.parent = e.parent; - if (i) { - const n = i.children; - n[n.lastIndexOf(e)] = t, e.parent = null - } - }, - appendChild: function(e, t) { - if (ie(t), t.next = null, t.parent = e, e.children.push(t) > 1) { - const n = e.children[e.children.length - 2]; - n.next = t, t.prev = n - } else t.prev = null - }, - append: function(e, t) { - ie(t); - const { - parent: n - } = e, r = e.next; - if (t.next = r, t.prev = e, e.next = t, t.parent = n, r) { - if (r.prev = t, n) { - const e = n.children; - e.splice(e.lastIndexOf(r), 0, t) - } - } else n && n.children.push(t) - }, - prependChild: function(e, t) { - if (ie(t), t.parent = e, t.prev = null, 1 !== e.children.unshift(t)) { - const n = e.children[1]; - n.prev = t, t.next = n - } else t.next = null - }, - prepend: function(e, t) { - ie(t); - const { - parent: n - } = e; - if (n) { - const r = n.children; - r.splice(r.indexOf(e), 0, t) - } - e.prev && (e.prev.next = t), t.parent = n, t.prev = e.prev, t.next = e, e.prev = t - }, - filter: se, - find: ae, - findOneChild: function(e, t) { - return t.find(e) - }, - findOne: oe, - existsOne: function e(t, n) { - return n.some((n => I(n) && (t(n) || n.children.length > 0 && e(t, n.children)))) - }, - findAll: function(e, t) { - var n; - const r = [], - i = t.filter(I); - let s; - for (; s = i.shift();) { - const t = null === (n = s.children) || void 0 === n ? void 0 : n.filter(I); - t && t.length > 0 && i.unshift(...t), e(s) && r.push(s) - } - return r - }, - testElement: function(e, t) { - const n = ue(e); - return !n || n(t) - }, - getElements: function(e, t, n, r = 1 / 0) { - const i = ue(e); - return i ? se(i, t, n, r) : [] - }, - getElementById: function(e, t, n = !0) { - return Array.isArray(t) || (t = [t]), oe(le("id", e), t, n) - }, - getElementsByTagName: pe, - getElementsByTagType: function(e, t, n = !0, r = 1 / 0) { - return se(ce.tag_type(e), t, n, r) - }, - removeSubsets: function(e) { - let t = e.length; - for (; --t >= 0;) { - const n = e[t]; - if (t > 0 && e.lastIndexOf(n, t - 1) >= 0) e.splice(t, 1); - else - for (let r = n.parent; r; r = r.parent) - if (e.includes(r)) { - e.splice(t, 1); - break - } - } - return e - }, - get DocumentPosition() { - return fe - }, - compareDocumentPosition: de, - uniqueSort: Ee, - getFeed: function(e) { - const t = Ae(Ce, e); - return t ? "feed" === t.name ? function(e) { - var t; - const n = e.children, - r = { - type: "atom", - items: pe("entry", n).map((e => { - var t; - const { - children: n - } = e, r = { - media: _e(n) - }; - Ne(r, "id", "id", n), Ne(r, "title", "title", n); - const i = null === (t = Ae("link", n)) || void 0 === t ? void 0 : t.attribs.href; - i && (r.link = i); - const s = ge("summary", n) || ge("content", n); - s && (r.description = s); - const a = ge("updated", n); - return a && (r.pubDate = new Date(a)), r - })) - }; - Ne(r, "id", "id", n), Ne(r, "title", "title", n); - const i = null === (t = Ae("link", n)) || void 0 === t ? void 0 : t.attribs.href; - i && (r.link = i); - Ne(r, "description", "subtitle", n); - const s = ge("updated", n); - s && (r.updated = new Date(s)); - return Ne(r, "author", "email", n, !0), r - }(t) : function(e) { - var t, n; - const r = null !== (n = null === (t = Ae("channel", e.children)) || void 0 === t ? void 0 : t.children) && void 0 !== n ? n : [], - i = { - type: e.name.substr(0, 3), - id: "", - items: pe("item", e.children).map((e => { - const { - children: t - } = e, n = { - media: _e(t) - }; - Ne(n, "id", "guid", t), Ne(n, "title", "title", t), Ne(n, "link", "link", t), Ne(n, "description", "description", t); - const r = ge("pubDate", t); - return r && (n.pubDate = new Date(r)), n - })) - }; - Ne(i, "title", "title", r), Ne(i, "link", "link", r), Ne(i, "description", "description", r); - const s = ge("lastBuildDate", r); - s && (i.updated = new Date(s)); - return Ne(i, "author", "managingEditor", r, !0), i - }(t) : null - } - }), - be = "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}; - -function Oe(e) { - if (Object.keys) return Object.keys(e); - var t = []; - for (var n in e) t.push(n); - return t -} - -function ye(e, t) { - if (e.forEach) return e.forEach(t); - for (var n = 0; n < e.length; n++) t(e[n], n, e) -} - -function Le() { - try { - return Object.defineProperty({}, "_", {}), - function(e, t, n) { - Object.defineProperty(e, t, { - writable: !0, - enumerable: !1, - configurable: !0, - value: n - }) - } - } catch (e) { - return function(e, t, n) { - e[t] = n - } - } -} -var ke = ["Array", "Boolean", "Date", "Error", "EvalError", "Function", "Infinity", "JSON", "Math", "NaN", "Number", "Object", "RangeError", "ReferenceError", "RegExp", "String", "SyntaxError", "TypeError", "URIError", "decodeURI", "decodeURIComponent", "encodeURI", "encodeURIComponent", "escape", "eval", "isFinite", "isNaN", "parseFloat", "parseInt", "undefined", "unescape"]; - -function ve() {} - -function De(e) { - if (!(this instanceof De)) return new De(e); - this.code = e -} - -function Re(e) { - if (Me(e)) return e; - var t = new ve; - return "object" == typeof e && ye(Oe(e), (function(n) { - t[n] = e[n] - })), t -} - -function Me(e) { - return e instanceof ve -} -ve.prototype = {}, De.prototype.runInContext = function(e) { - if (!(e instanceof ve)) throw new TypeError("needs a 'context' argument."); - if (be.document) { - var t = be.document.createElement("iframe"); - t.style || (t.style = {}), t.style.display = "none", be.document.body.appendChild(t); - var n = t.contentWindow, - r = n.eval, - i = n.execScript; - !r && i && (i.call(n, "null"), r = n.eval), ye(Oe(e), (function(t) { - n[t] = e[t] - })), ye(ke, (function(t) { - e[t] && (n[t] = e[t]) - })); - var s = Oe(n), - a = r.call(n, this.code); - return ye(Oe(n), (function(t) { - (t in e || -1 === function(e, t) { - if (xe) return e.indexOf(t); - for (var n = 0; n < e.length; ++n) - if (e[n] === t) return n; - return -1 - }(s, t)) && (e[t] = n[t]) - })), ye(ke, (function(t) { - var r, i, s; - t in e || (r = e, i = t, s = n[t], "function" != typeof Ie && (Ie = Le), Ie(r, i, s)) - })), be.document.body.removeChild(t), a - } - return function(e, t) { - var n = Oe(be); - return n.push("with (this.__ctx__){return eval(this.__code__)}"), Function.apply(null, n).apply({ - __code__: e, - __ctx__: t - }) - }(this.code, e) -}, De.prototype.runInThisContext = function() { - return new Function("code", "return eval(code);").call(be, this.code) -}, De.prototype.runInNewContext = function(e) { - var t = Re(e), - n = this.runInContext(t); - return e && ye(Oe(t), (function(n) { - e[n] = t[n] - })), n -}; -var Pe = { - runInContext: function(e, t, n) { - return new De(e).runInContext(t, n) - }, - isContext: Me, - createContext: Re, - createScript: function(e) { - return new De(e) - }, - Script: De, - runInThisContext: function(e, t) { - return new De(e).runInThisContext(t) - }, - runInNewContext: function(e, t, n) { - return new De(e).runInNewContext(t, n) - } - }, - xe = [].indexOf; -const { - hasOwnProperty: we -} = Object.prototype; - -function Be(e, t) { - return (e = e.slice()).push(t), e -} - -function Fe(e, t) { - return (t = t.slice()).unshift(e), t -} -class Ue extends Error { - constructor(e) { - super('JSONPath should not be called with "new" (it prevents return of (unwrapped) scalar values)'), this.avoidNew = !0, this.value = e, this.name = "NewError" - } -} - -function He(e, t, n, r, i) { - if (!(this instanceof He)) try { - return new He(e, t, n, r, i) - } catch (e) { - if (!e.avoidNew) throw e; - return e.value - } - "string" == typeof e && (i = r, r = n, n = t, t = e, e = null); - const s = e && "object" == typeof e; - if (e = e || {}, this.json = e.json || n, this.path = e.path || t, this.resultType = e.resultType || "value", this.flatten = e.flatten || !1, this.wrap = !we.call(e, "wrap") || e.wrap, this.sandbox = e.sandbox || {}, this.preventEval = e.preventEval || !1, this.parent = e.parent || null, this.parentProperty = e.parentProperty || null, this.callback = e.callback || r || null, this.otherTypeCallback = e.otherTypeCallback || i || function() { - throw new TypeError("You must supply an otherTypeCallback callback option with the @other() operator.") - }, !1 !== e.autostart) { - const r = { - path: s ? e.path : t - }; - s ? "json" in e && (r.json = e.json) : r.json = n; - const i = this.evaluate(r); - if (!i || "object" != typeof i) throw new Ue(i); - return i - } -} -He.prototype.evaluate = function(e, t, n, r) { - let i = this.parent, - s = this.parentProperty, - { - flatten: a, - wrap: o - } = this; - if (this.currResultType = this.resultType, this.currPreventEval = this.preventEval, this.currSandbox = this.sandbox, n = n || this.callback, this.currOtherTypeCallback = r || this.otherTypeCallback, t = t || this.json, (e = e || this.path) && "object" == typeof e && !Array.isArray(e)) { - if (!e.path && "" !== e.path) throw new TypeError('You must supply a "path" property when providing an object argument to JSONPath.evaluate().'); - if (!we.call(e, "json")) throw new TypeError('You must supply a "json" property when providing an object argument to JSONPath.evaluate().'); - ({ - json: t - } = e), a = we.call(e, "flatten") ? e.flatten : a, this.currResultType = we.call(e, "resultType") ? e.resultType : this.currResultType, this.currSandbox = we.call(e, "sandbox") ? e.sandbox : this.currSandbox, o = we.call(e, "wrap") ? e.wrap : o, this.currPreventEval = we.call(e, "preventEval") ? e.preventEval : this.currPreventEval, n = we.call(e, "callback") ? e.callback : n, this.currOtherTypeCallback = we.call(e, "otherTypeCallback") ? e.otherTypeCallback : this.currOtherTypeCallback, i = we.call(e, "parent") ? e.parent : i, s = we.call(e, "parentProperty") ? e.parentProperty : s, e = e.path - } - if (i = i || null, s = s || null, Array.isArray(e) && (e = He.toPathString(e)), !e && "" !== e || !t) return; - const c = He.toPathArray(e); - "$" === c[0] && c.length > 1 && c.shift(), this._hasParentSelector = null; - const l = this._trace(c, t, ["$"], i, s, n).filter((function(e) { - return e && !e.isParentSelector - })); - return l.length ? o || 1 !== l.length || l[0].hasArrExpr ? l.reduce(((e, t) => { - const n = this._getPreferredOutput(t); - return a && Array.isArray(n) ? e = e.concat(n) : e.push(n), e - }), []) : this._getPreferredOutput(l[0]) : o ? [] : void 0 -}, He.prototype._getPreferredOutput = function(e) { - const t = this.currResultType; - switch (t) { - case "all": { - const t = Array.isArray(e.path) ? e.path : He.toPathArray(e.path); - return e.pointer = He.toPointer(t), e.path = "string" == typeof e.path ? e.path : He.toPathString(e.path), e - } - case "value": - case "parent": - case "parentProperty": - return e[t]; - case "path": - return He.toPathString(e[t]); - case "pointer": - return He.toPointer(e.path); - default: - throw new TypeError("Unknown result type") - } -}, He.prototype._handleCallback = function(e, t, n) { - if (t) { - const r = this._getPreferredOutput(e); - e.path = "string" == typeof e.path ? e.path : He.toPathString(e.path), t(r, n, e) - } -}, He.prototype._trace = function(e, t, n, r, i, s, a, o) { - let c; - if (!e.length) return c = { - path: n, - value: t, - parent: r, - parentProperty: i, - hasArrExpr: a - }, this._handleCallback(c, s, "value"), c; - const l = e[0], - h = e.slice(1), - u = []; - - function p(e) { - Array.isArray(e) ? e.forEach((e => { - u.push(e) - })) : u.push(e) - } - if (("string" != typeof l || o) && t && we.call(t, l)) p(this._trace(h, t[l], Be(n, l), t, l, s, a)); - else if ("*" === l) this._walk(t, (e => { - p(this._trace(h, t[e], Be(n, e), t, e, s, !0, !0)) - })); - else if (".." === l) p(this._trace(h, t, n, r, i, s, a)), this._walk(t, (r => { - "object" == typeof t[r] && p(this._trace(e.slice(), t[r], Be(n, r), t, r, s, !0)) - })); - else { - if ("^" === l) return this._hasParentSelector = !0, { - path: n.slice(0, -1), - expr: h, - isParentSelector: !0 - }; - if ("~" === l) return c = { - path: Be(n, l), - value: i, - parent: r, - parentProperty: null - }, this._handleCallback(c, s, "property"), c; - if ("$" === l) p(this._trace(h, t, n, null, null, s, a)); - else if (/^(-?\d*):(-?\d*):?(\d*)$/u.test(l)) p(this._slice(l, h, t, n, r, i, s)); - else if (0 === l.indexOf("?(")) { - if (this.currPreventEval) throw new Error("Eval [?(expr)] prevented in JSONPath expression."); - const e = l.replace(/^\?\((.*?)\)$/u, "$1"); - this._walk(t, (a => { - this._eval(e, t[a], a, n, r, i) && p(this._trace(h, t[a], Be(n, a), t, a, s, !0)) - })) - } else if ("(" === l[0]) { - if (this.currPreventEval) throw new Error("Eval [(expr)] prevented in JSONPath expression."); - p(this._trace(Fe(this._eval(l, t, n[n.length - 1], n.slice(0, -1), r, i), h), t, n, r, i, s, a)) - } else if ("@" === l[0]) { - let e = !1; - const a = l.slice(1, -2); - switch (a) { - case "scalar": - t && ["object", "function"].includes(typeof t) || (e = !0); - break; - case "boolean": - case "string": - case "undefined": - case "function": - typeof t === a && (e = !0); - break; - case "integer": - !Number.isFinite(t) || t % 1 || (e = !0); - break; - case "number": - Number.isFinite(t) && (e = !0); - break; - case "nonFinite": - "number" != typeof t || Number.isFinite(t) || (e = !0); - break; - case "object": - t && typeof t === a && (e = !0); - break; - case "array": - Array.isArray(t) && (e = !0); - break; - case "other": - e = this.currOtherTypeCallback(t, n, r, i); - break; - case "null": - null === t && (e = !0); - break; - default: - throw new TypeError("Unknown value type " + a) - } - if (e) return c = { - path: n, - value: t, - parent: r, - parentProperty: i - }, this._handleCallback(c, s, "value"), c - } else if ("`" === l[0] && t && we.call(t, l.slice(1))) { - const e = l.slice(1); - p(this._trace(h, t[e], Be(n, e), t, e, s, a, !0)) - } else if (l.includes(",")) { - const e = l.split(","); - for (const a of e) p(this._trace(Fe(a, h), t, n, r, i, s, !0)) - } else !o && t && we.call(t, l) && p(this._trace(h, t[l], Be(n, l), t, l, s, a, !0)) - } - if (this._hasParentSelector) - for (let e = 0; e < u.length; e++) { - const n = u[e]; - if (n && n.isParentSelector) { - const o = this._trace(n.expr, t, n.path, r, i, s, a); - if (Array.isArray(o)) { - u[e] = o[0]; - const t = o.length; - for (let n = 1; n < t; n++) e++, u.splice(e, 0, o[n]) - } else u[e] = o - } - } - return u -}, He.prototype._walk = function(e, t) { - if (Array.isArray(e)) { - const n = e.length; - for (let e = 0; e < n; e++) t(e) - } else e && "object" == typeof e && Object.keys(e).forEach((e => { - t(e) - })) -}, He.prototype._slice = function(e, t, n, r, i, s, a) { - if (!Array.isArray(n)) return; - const o = n.length, - c = e.split(":"), - l = c[2] && Number.parseInt(c[2]) || 1; - let h = c[0] && Number.parseInt(c[0]) || 0, - u = c[1] && Number.parseInt(c[1]) || o; - h = h < 0 ? Math.max(0, h + o) : Math.min(o, h), u = u < 0 ? Math.max(0, u + o) : Math.min(o, u); - const p = []; - for (let e = h; e < u; e += l) { - this._trace(Fe(e, t), n, r, i, s, a, !0).forEach((e => { - p.push(e) - })) - } - return p -}, He.prototype._eval = function(e, t, n, r, i, s) { - this.currSandbox._$_parentProperty = s, this.currSandbox._$_parent = i, this.currSandbox._$_property = n, this.currSandbox._$_root = this.json, this.currSandbox._$_v = t; - const a = e.includes("@path"); - a && (this.currSandbox._$_path = He.toPathString(r.concat([n]))); - const o = "script:" + e; - if (!He.cache[o]) { - let t = e.replace(/@parentProperty/gu, "_$_parentProperty").replace(/@parent/gu, "_$_parent").replace(/@property/gu, "_$_property").replace(/@root/gu, "_$_root").replace(/@([.\s)[])/gu, "_$_v$1"); - a && (t = t.replace(/@path/gu, "_$_path")), He.cache[o] = new this.vm.Script(t) - } - try { - return He.cache[o].runInNewContext(this.currSandbox) - } catch (t) { - throw new Error("jsonPath: " + t.message + ": " + e) - } -}, He.cache = {}, He.toPathString = function(e) { - const t = e, - n = t.length; - let r = "$"; - for (let e = 1; e < n; e++) /^(~|\^|@.*?\(\))$/u.test(t[e]) || (r += /^[0-9*]+$/u.test(t[e]) ? "[" + t[e] + "]" : "['" + t[e] + "']"); - return r -}, He.toPointer = function(e) { - const t = e, - n = t.length; - let r = ""; - for (let e = 1; e < n; e++) /^(~|\^|@.*?\(\))$/u.test(t[e]) || (r += "/" + t[e].toString().replace(/~/gu, "~0").replace(/\//gu, "~1")); - return r -}, He.toPathArray = function(e) { - const { - cache: t - } = He; - if (t[e]) return t[e].concat(); - const n = [], - r = e.replace(/@(?:null|boolean|number|string|integer|undefined|nonFinite|scalar|array|object|function|other)\(\)/gu, ";$&;").replace(/[['](\??\(.*?\))[\]']/gu, (function(e, t) { - return "[#" + (n.push(t) - 1) + "]" - })).replace(/\[['"]([^'\]]*)['"]\]/gu, (function(e, t) { - return "['" + t.replace(/\./gu, "%@%").replace(/~/gu, "%%@@%%") + "']" - })).replace(/~/gu, ";~;").replace(/['"]?\.['"]?(?![^[]*\])|\[['"]?/gu, ";").replace(/%@%/gu, ".").replace(/%%@@%%/gu, "~").replace(/(?:;)?(\^+)(?:;)?/gu, (function(e, t) { - return ";" + t.split("").join(";") + ";" - })).replace(/;;;|;;/gu, ";..;").replace(/;$|'?\]|'$/gu, ""), - i = r.split(";").map((function(e) { - const t = e.match(/#(\d+)/u); - return t && t[1] ? n[t[1]] : e - })); - return t[e] = i, t[e].concat() -}, He.prototype.vm = Pe; -var Ge = "undefined" != typeof globalThis ? globalThis : "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : {}; - -function Ye() { - throw new Error("Dynamic requires are not currently supported by rollup-plugin-commonjs") -} - -function qe(e) { - return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e -} - -function Ke(e, t) { - return e(t = { - exports: {} - }, t.exports), t.exports -} -var je = Ke((function(e) { - var t = Array.prototype, - n = Object.prototype, - r = { - "&": "&", - '"': """, - "'": "'", - "<": "<", - ">": ">" - }, - i = /[&"'<>]/g, - s = e.exports = {}; - - function a(e, t) { - return n.hasOwnProperty.call(e, t) - } - - function o(e) { - return r[e] - } - - function c(e, t, n) { - var r, i, s; - if (e instanceof Error && (e = (i = e).name + ": " + i.message), Object.setPrototypeOf ? (r = new Error(e), Object.setPrototypeOf(r, c.prototype)) : (r = this, Object.defineProperty(r, "message", { - enumerable: !1, - writable: !0, - value: e - })), Object.defineProperty(r, "name", { - value: "Template render error" - }), Error.captureStackTrace && Error.captureStackTrace(r, this.constructor), i) { - var a = Object.getOwnPropertyDescriptor(i, "stack"); - (s = a && (a.get || function() { - return a.value - })) || (s = function() { - return i.stack - }) - } else { - var o = new Error(e).stack; - s = function() { - return o - } - } - return Object.defineProperty(r, "stack", { - get: function() { - return s.call(r) - } - }), Object.defineProperty(r, "cause", { - value: i - }), r.lineno = t, r.colno = n, r.firstUpdate = !0, r.Update = function(e) { - var t = "(" + (e || "unknown path") + ")"; - return this.firstUpdate && (this.lineno && this.colno ? t += " [Line " + this.lineno + ", Column " + this.colno + "]" : this.lineno && (t += " [Line " + this.lineno + "]")), t += "\n ", this.firstUpdate && (t += " "), this.message = t + (this.message || ""), this.firstUpdate = !1, this - }, r - } - - function l(e) { - return "[object Function]" === n.toString.call(e) - } - - function h(e) { - return "[object Array]" === n.toString.call(e) - } - - function u(e) { - return "[object String]" === n.toString.call(e) - } - - function p(e) { - return "[object Object]" === n.toString.call(e) - } - - function f(e) { - var t = function(e) { - return e ? "string" == typeof e ? e.split(".") : [e] : [] - }(e); - return function(e) { - for (var n = e, r = 0; r < t.length; r++) { - var i = t[r]; - if (!a(n, i)) return; - n = n[i] - } - return n - } - } - - function d(e) { - return Array.prototype.slice.call(e) - } - - function E(e, t, n) { - return Array.prototype.indexOf.call(e || [], t, n) - } - - function m(e) { - var t = []; - for (var n in e) a(e, n) && t.push(n); - return t - } - s.hasOwnProp = a, s._prettifyError = function(e, t, n) { - if (n.Update || (n = new s.TemplateError(n)), n.Update(e), !t) { - var r = n; - (n = new Error(r.message)).name = r.name - } - return n - }, Object.setPrototypeOf ? Object.setPrototypeOf(c.prototype, Error.prototype) : c.prototype = Object.create(Error.prototype, { - constructor: { - value: c - } - }), s.TemplateError = c, s.escape = function(e) { - return e.replace(i, o) - }, s.isFunction = l, s.isArray = h, s.isString = u, s.isObject = p, s.getAttrGetter = f, s.groupBy = function(e, t, n) { - for (var r = {}, i = l(t) ? t : f(t), s = 0; s < e.length; s++) { - var a = e[s], - o = i(a, s); - if (void 0 === o && !0 === n) throw new TypeError('groupby: attribute "' + t + '" resolved to undefined'); - (r[o] || (r[o] = [])).push(a) - } - return r - }, s.toArray = d, s.without = function(e) { - var t = []; - if (!e) return t; - for (var n = e.length, r = d(arguments).slice(1), i = -1; ++i < n;) - 1 === E(r, e[i]) && t.push(e[i]); - return t - }, s.repeat = function(e, t) { - for (var n = "", r = 0; r < t; r++) n += e; - return n - }, s.each = function(e, n, r) { - if (null != e) - if (t.forEach && e.forEach === t.forEach) e.forEach(n, r); - else if (e.length === +e.length) - for (var i = 0, s = e.length; i < s; i++) n.call(r, e[i], i, e) - }, s.map = function(e, n) { - var r = []; - if (null == e) return r; - if (t.map && e.map === t.map) return e.map(n); - for (var i = 0; i < e.length; i++) r[r.length] = n(e[i], i); - return e.length === +e.length && (r.length = e.length), r - }, s.asyncIter = function(e, t, n) { - var r = -1; - ! function i() { - ++r < e.length ? t(e[r], r, i, n) : n() - }() - }, s.asyncFor = function(e, t, n) { - var r = m(e || {}), - i = r.length, - s = -1; - ! function a() { - s++; - var o = r[s]; - s < i ? t(o, e[o], s, i, a) : n() - }() - }, s.indexOf = E, s.keys = m, s._entries = function(e) { - return m(e).map((function(t) { - return [t, e[t]] - })) - }, s._values = function(e) { - return m(e).map((function(t) { - return e[t] - })) - }, s._assign = s.extend = function(e, t) { - return e = e || {}, m(t).forEach((function(n) { - e[n] = t[n] - })), e - }, s.inOperator = function(e, t) { - if (h(t) || u(t)) return -1 !== t.indexOf(e); - if (p(t)) return e in t; - throw new Error('Cannot use "in" operator to search for "' + e + '" in unexpected types.') - } -})); - -function Ve() { - throw new Error("setTimeout has not been defined") -} - -function We() { - throw new Error("clearTimeout has not been defined") -} -var Qe = Ve, - Xe = We; - -function $e(e) { - if (Qe === setTimeout) return setTimeout(e, 0); - if ((Qe === Ve || !Qe) && setTimeout) return Qe = setTimeout, setTimeout(e, 0); - try { - return Qe(e, 0) - } catch (t) { - try { - return Qe.call(null, e, 0) - } catch (t) { - return Qe.call(this, e, 0) - } - } -} -"function" == typeof be.setTimeout && (Qe = setTimeout), "function" == typeof be.clearTimeout && (Xe = clearTimeout); -var ze, Je = [], - Ze = !1, - et = -1; - -function tt() { - Ze && ze && (Ze = !1, ze.length ? Je = ze.concat(Je) : et = -1, Je.length && nt()) -} - -function nt() { - if (!Ze) { - var e = $e(tt); - Ze = !0; - for (var t = Je.length; t;) { - for (ze = Je, Je = []; ++et < t;) ze && ze[et].run(); - et = -1, t = Je.length - } - ze = null, Ze = !1, - function(e) { - if (Xe === clearTimeout) return clearTimeout(e); - if ((Xe === We || !Xe) && clearTimeout) return Xe = clearTimeout, clearTimeout(e); - try { - Xe(e) - } catch (t) { - try { - return Xe.call(null, e) - } catch (t) { - return Xe.call(this, e) - } - } - }(e) - } -} - -function rt(e, t) { - this.fun = e, this.array = t -} -rt.prototype.run = function() { - this.fun.apply(null, this.array) -}; - -function it() {} -var st = it, - at = it, - ot = it, - ct = it, - lt = it, - ht = it, - ut = it; -var pt = be.performance || {}, - ft = pt.now || pt.mozNow || pt.msNow || pt.oNow || pt.webkitNow || function() { - return (new Date).getTime() - }; -var dt = new Date; -var Et = { - nextTick: function(e) { - var t = new Array(arguments.length - 1); - if (arguments.length > 1) - for (var n = 1; n < arguments.length; n++) t[n - 1] = arguments[n]; - Je.push(new rt(e, t)), 1 !== Je.length || Ze || $e(nt) - }, - title: "browser", - browser: !0, - env: {}, - argv: [], - version: "", - versions: {}, - on: st, - addListener: at, - once: ot, - off: ct, - removeListener: lt, - removeAllListeners: ht, - emit: ut, - binding: function(e) { - throw new Error("process.binding is not supported") - }, - cwd: function() { - return "/" - }, - chdir: function(e) { - throw new Error("process.chdir is not supported") - }, - umask: function() { - return 0 - }, - hrtime: function(e) { - var t = .001 * ft.call(pt), - n = Math.floor(t), - r = Math.floor(t % 1 * 1e9); - return e && (n -= e[0], (r -= e[1]) < 0 && (n--, r += 1e9)), [n, r] - }, - platform: "browser", - release: {}, - config: {}, - uptime: function() { - return (new Date - dt) / 1e3 - } -}; - -function mt() {} - -function Tt() { - Tt.init.call(this) -} - -function _t(e) { - return void 0 === e._maxListeners ? Tt.defaultMaxListeners : e._maxListeners -} - -function At(e, t, n) { - if (t) e.call(n); - else - for (var r = e.length, i = yt(e, r), s = 0; s < r; ++s) i[s].call(n) -} - -function gt(e, t, n, r) { - if (t) e.call(n, r); - else - for (var i = e.length, s = yt(e, i), a = 0; a < i; ++a) s[a].call(n, r) -} - -function Nt(e, t, n, r, i) { - if (t) e.call(n, r, i); - else - for (var s = e.length, a = yt(e, s), o = 0; o < s; ++o) a[o].call(n, r, i) -} - -function Ct(e, t, n, r, i, s) { - if (t) e.call(n, r, i, s); - else - for (var a = e.length, o = yt(e, a), c = 0; c < a; ++c) o[c].call(n, r, i, s) -} - -function It(e, t, n, r) { - if (t) e.apply(n, r); - else - for (var i = e.length, s = yt(e, i), a = 0; a < i; ++a) s[a].apply(n, r) -} - -function St(e, t, n, r) { - var i, s, a; - if ("function" != typeof n) throw new TypeError('"listener" argument must be a function'); - if ((s = e._events) ? (s.newListener && (e.emit("newListener", t, n.listener ? n.listener : n), s = e._events), a = s[t]) : (s = e._events = new mt, e._eventsCount = 0), a) { - if ("function" == typeof a ? a = s[t] = r ? [n, a] : [a, n] : r ? a.unshift(n) : a.push(n), !a.warned && (i = _t(e)) && i > 0 && a.length > i) { - a.warned = !0; - var o = new Error("Possible EventEmitter memory leak detected. " + a.length + " " + t + " listeners added. Use emitter.setMaxListeners() to increase limit"); - o.name = "MaxListenersExceededWarning", o.emitter = e, o.type = t, o.count = a.length, - function(e) { - "function" == typeof console.warn ? console.warn(e) : console.log(e) - }(o) - } - } else a = s[t] = n, ++e._eventsCount; - return e -} - -function bt(e, t, n) { - var r = !1; - - function i() { - e.removeListener(t, i), r || (r = !0, n.apply(e, arguments)) - } - return i.listener = n, i -} - -function Ot(e) { - var t = this._events; - if (t) { - var n = t[e]; - if ("function" == typeof n) return 1; - if (n) return n.length - } - return 0 -} - -function yt(e, t) { - for (var n = new Array(t); t--;) n[t] = e[t]; - return n -} - -function Lt() { - var e; - Tt.call(this), this.__emitError = (e = this, function(t) { - e.emit("error", t) - }) -} - -function kt() { - return new Lt -} -mt.prototype = Object.create(null), Tt.EventEmitter = Tt, Tt.usingDomains = !1, Tt.prototype.domain = void 0, Tt.prototype._events = void 0, Tt.prototype._maxListeners = void 0, Tt.defaultMaxListeners = 10, Tt.init = function() { - this.domain = null, Tt.usingDomains && undefined.active, this._events && this._events !== Object.getPrototypeOf(this)._events || (this._events = new mt, this._eventsCount = 0), this._maxListeners = this._maxListeners || void 0 -}, Tt.prototype.setMaxListeners = function(e) { - if ("number" != typeof e || e < 0 || isNaN(e)) throw new TypeError('"n" argument must be a positive number'); - return this._maxListeners = e, this -}, Tt.prototype.getMaxListeners = function() { - return _t(this) -}, Tt.prototype.emit = function(e) { - var t, n, r, i, s, a, o, c = "error" === e; - if (a = this._events) c = c && null == a.error; - else if (!c) return !1; - if (o = this.domain, c) { - if (t = arguments[1], !o) { - if (t instanceof Error) throw t; - var l = new Error('Uncaught, unspecified "error" event. (' + t + ")"); - throw l.context = t, l - } - return t || (t = new Error('Uncaught, unspecified "error" event')), t.domainEmitter = this, t.domain = o, t.domainThrown = !1, o.emit("error", t), !1 - } - if (!(n = a[e])) return !1; - var h = "function" == typeof n; - switch (r = arguments.length) { - case 1: - At(n, h, this); - break; - case 2: - gt(n, h, this, arguments[1]); - break; - case 3: - Nt(n, h, this, arguments[1], arguments[2]); - break; - case 4: - Ct(n, h, this, arguments[1], arguments[2], arguments[3]); - break; - default: - for (i = new Array(r - 1), s = 1; s < r; s++) i[s - 1] = arguments[s]; - It(n, h, this, i) - } - return !0 -}, Tt.prototype.addListener = function(e, t) { - return St(this, e, t, !1) -}, Tt.prototype.on = Tt.prototype.addListener, Tt.prototype.prependListener = function(e, t) { - return St(this, e, t, !0) -}, Tt.prototype.once = function(e, t) { - if ("function" != typeof t) throw new TypeError('"listener" argument must be a function'); - return this.on(e, bt(this, e, t)), this -}, Tt.prototype.prependOnceListener = function(e, t) { - if ("function" != typeof t) throw new TypeError('"listener" argument must be a function'); - return this.prependListener(e, bt(this, e, t)), this -}, Tt.prototype.removeListener = function(e, t) { - var n, r, i, s, a; - if ("function" != typeof t) throw new TypeError('"listener" argument must be a function'); - if (!(r = this._events)) return this; - if (!(n = r[e])) return this; - if (n === t || n.listener && n.listener === t) 0 == --this._eventsCount ? this._events = new mt : (delete r[e], r.removeListener && this.emit("removeListener", e, n.listener || t)); - else if ("function" != typeof n) { - for (i = -1, s = n.length; s-- > 0;) - if (n[s] === t || n[s].listener && n[s].listener === t) { - a = n[s].listener, i = s; - break - } if (i < 0) return this; - if (1 === n.length) { - if (n[0] = void 0, 0 == --this._eventsCount) return this._events = new mt, this; - delete r[e] - } else ! function(e, t) { - for (var n = t, r = n + 1, i = e.length; r < i; n += 1, r += 1) e[n] = e[r]; - e.pop() - }(n, i); - r.removeListener && this.emit("removeListener", e, a || t) - } - return this -}, Tt.prototype.removeAllListeners = function(e) { - var t, n; - if (!(n = this._events)) return this; - if (!n.removeListener) return 0 === arguments.length ? (this._events = new mt, this._eventsCount = 0) : n[e] && (0 == --this._eventsCount ? this._events = new mt : delete n[e]), this; - if (0 === arguments.length) { - for (var r, i = Object.keys(n), s = 0; s < i.length; ++s) "removeListener" !== (r = i[s]) && this.removeAllListeners(r); - return this.removeAllListeners("removeListener"), this._events = new mt, this._eventsCount = 0, this - } - if ("function" == typeof(t = n[e])) this.removeListener(e, t); - else if (t) - do { - this.removeListener(e, t[t.length - 1]) - } while (t[0]); - return this -}, Tt.prototype.listeners = function(e) { - var t, n = this._events; - return n && (t = n[e]) ? "function" == typeof t ? [t.listener || t] : function(e) { - for (var t = new Array(e.length), n = 0; n < t.length; ++n) t[n] = e[n].listener || e[n]; - return t - }(t) : [] -}, Tt.listenerCount = function(e, t) { - return "function" == typeof e.listenerCount ? e.listenerCount(t) : Ot.call(e, t) -}, Tt.prototype.listenerCount = Ot, Tt.prototype.eventNames = function() { - return this._eventsCount > 0 ? Reflect.ownKeys(this._events) : [] -}, ("function" == typeof Object.create ? function(e, t) { - e.super_ = t, e.prototype = Object.create(t.prototype, { - constructor: { - value: e, - enumerable: !1, - writable: !0, - configurable: !0 - } - }) -} : function(e, t) { - e.super_ = t; - var n = function() {}; - n.prototype = t.prototype, e.prototype = new n, e.prototype.constructor = e -})(Lt, Tt), Lt.prototype.add = function(e) { - e.on("error", this.__emitError) -}, Lt.prototype.remove = function(e) { - e.removeListener("error", this.__emitError) -}, Lt.prototype.bind = function(e) { - var t = this.__emitError; - return function() { - var n = Array.prototype.slice.call(arguments); - try { - e.apply(null, n) - } catch (e) { - t(e) - } - } -}, Lt.prototype.intercept = function(e) { - var t = this.__emitError; - return function(n) { - if (n) t(n); - else { - var r = Array.prototype.slice.call(arguments, 1); - try { - e.apply(null, r) - } catch (n) { - t(n) - } - } - } -}, Lt.prototype.run = function(e) { - var t = this.__emitError; - try { - e() - } catch (e) { - t(e) - } - return this -}, Lt.prototype.dispose = function() { - return this.removeAllListeners(), this -}, Lt.prototype.enter = Lt.prototype.exit = function() { - return this -}; -var vt, Dt = { - Domain: Lt, - createDomain: kt, - create: kt - }, - Rt = "function" == typeof setImmediate, - Mt = Pt; - -function Pt(e) { - xt.length || (Ut(), wt = !0), xt[xt.length] = e -} -var xt = [], - wt = !1, - Bt = 0; - -function Ft() { - for (; Bt < xt.length;) { - var e = Bt; - if (Bt += 1, xt[e].call(), Bt > 1024) { - for (var t = 0, n = xt.length - Bt; t < n; t++) xt[t] = xt[t + Bt]; - xt.length -= Bt, Bt = 0 - } - } - xt.length = 0, Bt = 0, wt = !1 -} - -function Ut() { - var e = Et.domain; - e && (vt || (vt = Dt), vt.active = Et.domain = null), wt && Rt ? setImmediate(Ft) : Et.nextTick(Ft), e && (vt.active = Et.domain = e) -} -Pt.requestFlush = Ut; -var Ht = [], - Gt = function(e) { - var t; - t = Ht.length ? Ht.pop() : new Yt; - t.task = e, t.domain = Et.domain, Mt(t) - }; - -function Yt() { - this.task = null, this.domain = null -} -Yt.prototype.call = function() { - this.domain && this.domain.enter(); - var e = !0; - try { - this.task.call(), e = !1, this.domain && this.domain.exit() - } finally { - e && Mt.requestFlush(), this.task = null, this.domain = null, Ht.push(this) - } -}; -var qt = Ke((function(e) { - ! function(t) { - var n = function() { - var e = Array.prototype.slice.call(arguments); - "function" == typeof e[0] && e[0].apply(null, e.splice(1)) - }, - r = function(e) { - "function" == typeof setImmediate ? setImmediate(e) : void 0 !== Et && Et.nextTick ? Et.nextTick(e) : setTimeout(e, 0) - }, - i = Array.isArray || function(e) { - return "[object Array]" === Object.prototype.toString.call(e) - }, - s = function(e, t, s) { - var a = s ? r : n; - if (t = t || function() {}, !i(e)) { - var o = new Error("First argument to waterfall must be an array of functions"); - return t(o) - } - if (!e.length) return t(); - var c = function(e) { - return function(n) { - if (n) t.apply(null, arguments), t = function() {}; - else { - var r = Array.prototype.slice.call(arguments, 1), - i = e.next(); - i ? r.push(c(i)) : r.push(t), a((function() { - e.apply(null, r) - })) - } - } - }; - c(function(e) { - var t = function(n) { - var r = function() { - return e.length && e[n].apply(null, arguments), r.next() - }; - return r.next = function() { - return n < e.length - 1 ? t(n + 1) : null - }, r - }; - return t(0) - }(e))() - }; - e.exports ? e.exports = s : t.waterfall = s - }(Ge) -})); - -function Kt(e, t, n, r) { - return { - type: e, - value: t, - lineno: n, - colno: r - } -} -var jt = function() { - function e(e, t) { - this.str = e, this.index = 0, this.len = e.length, this.lineno = 0, this.colno = 0, this.in_code = !1; - var n = (t = t || {}).tags || {}; - this.tags = { - BLOCK_START: n.blockStart || "{%", - BLOCK_END: n.blockEnd || "%}", - VARIABLE_START: n.variableStart || "{{", - VARIABLE_END: n.variableEnd || "}}", - COMMENT_START: n.commentStart || "{#", - COMMENT_END: n.commentEnd || "#}" - }, this.trimBlocks = !!t.trimBlocks, this.lstripBlocks = !!t.lstripBlocks - } - var t = e.prototype; - return t.nextToken = function() { - var e, t = this.lineno, - n = this.colno; - if (this.in_code) { - var r = this.current(); - if (this.isFinished()) return null; - if ('"' === r || "'" === r) return Kt("string", this._parseString(r), t, n); - if (e = this._extract(" \n\t\r ")) return Kt("whitespace", e, t, n); - if ((e = this._extractString(this.tags.BLOCK_END)) || (e = this._extractString("-" + this.tags.BLOCK_END))) return this.in_code = !1, this.trimBlocks && ("\n" === (r = this.current()) ? this.forward() : "\r" === r && (this.forward(), "\n" === (r = this.current()) ? this.forward() : this.back())), Kt("block-end", e, t, n); - if ((e = this._extractString(this.tags.VARIABLE_END)) || (e = this._extractString("-" + this.tags.VARIABLE_END))) return this.in_code = !1, Kt("variable-end", e, t, n); - if ("r" === r && "/" === this.str.charAt(this.index + 1)) { - this.forwardN(2); - for (var i = ""; !this.isFinished();) { - if ("/" === this.current() && "\\" !== this.previous()) { - this.forward(); - break - } - i += this.current(), this.forward() - } - for (var s = ["g", "i", "m", "y"], a = ""; !this.isFinished();) { - if (!(-1 !== s.indexOf(this.current()))) break; - a += this.current(), this.forward() - } - return Kt("regex", { - body: i, - flags: a - }, t, n) - } - if (-1 !== "()[]{}%*-+~/#,:|.<>=!".indexOf(r)) { - this.forward(); - var o, c = ["==", "===", "!=", "!==", "<=", ">=", "//", "**"], - l = r + this.current(); - switch (-1 !== je.indexOf(c, l) && (this.forward(), r = l, -1 !== je.indexOf(c, l + this.current()) && (r = l + this.current(), this.forward())), r) { - case "(": - o = "left-paren"; - break; - case ")": - o = "right-paren"; - break; - case "[": - o = "left-bracket"; - break; - case "]": - o = "right-bracket"; - break; - case "{": - o = "left-curly"; - break; - case "}": - o = "right-curly"; - break; - case ",": - o = "comma"; - break; - case ":": - o = "colon"; - break; - case "~": - o = "tilde"; - break; - case "|": - o = "pipe"; - break; - default: - o = "operator" - } - return Kt(o, r, t, n) - } - if ((e = this._extractUntil(" \n\t\r ()[]{}%*-+~/#,:|.<>=!")).match(/^[-+]?[0-9]+$/)) return "." === this.current() ? (this.forward(), Kt("float", e + "." + this._extract("0123456789"), t, n)) : Kt("int", e, t, n); - if (e.match(/^(true|false)$/)) return Kt("boolean", e, t, n); - if ("none" === e) return Kt("none", e, t, n); - if ("null" === e) return Kt("none", e, t, n); - if (e) return Kt("symbol", e, t, n); - throw new Error("Unexpected value while parsing: " + e) - } - var h, u = this.tags.BLOCK_START.charAt(0) + this.tags.VARIABLE_START.charAt(0) + this.tags.COMMENT_START.charAt(0) + this.tags.COMMENT_END.charAt(0); - if (this.isFinished()) return null; - if ((e = this._extractString(this.tags.BLOCK_START + "-")) || (e = this._extractString(this.tags.BLOCK_START))) return this.in_code = !0, Kt("block-start", e, t, n); - if ((e = this._extractString(this.tags.VARIABLE_START + "-")) || (e = this._extractString(this.tags.VARIABLE_START))) return this.in_code = !0, Kt("variable-start", e, t, n); - e = ""; - var p = !1; - for (this._matches(this.tags.COMMENT_START) && (p = !0, e = this._extractString(this.tags.COMMENT_START)); null !== (h = this._extractUntil(u));) { - if (e += h, (this._matches(this.tags.BLOCK_START) || this._matches(this.tags.VARIABLE_START) || this._matches(this.tags.COMMENT_START)) && !p) { - if (this.lstripBlocks && this._matches(this.tags.BLOCK_START) && this.colno > 0 && this.colno <= e.length) { - var f = e.slice(-this.colno); - if (/^\s+$/.test(f) && !(e = e.slice(0, -this.colno)).length) return this.nextToken() - } - break - } - if (this._matches(this.tags.COMMENT_END)) { - if (!p) throw new Error("unexpected end of comment"); - e += this._extractString(this.tags.COMMENT_END); - break - } - e += this.current(), this.forward() - } - if (null === h && p) throw new Error("expected end of comment, got end of file"); - return Kt(p ? "comment" : "data", e, t, n) - }, t._parseString = function(e) { - this.forward(); - for (var t = ""; !this.isFinished() && this.current() !== e;) { - var n = this.current(); - if ("\\" === n) { - switch (this.forward(), this.current()) { - case "n": - t += "\n"; - break; - case "t": - t += "\t"; - break; - case "r": - t += "\r"; - break; - default: - t += this.current() - } - this.forward() - } else t += n, this.forward() - } - return this.forward(), t - }, t._matches = function(e) { - return this.index + e.length > this.len ? null : this.str.slice(this.index, this.index + e.length) === e - }, t._extractString = function(e) { - return this._matches(e) ? (this.forwardN(e.length), e) : null - }, t._extractUntil = function(e) { - return this._extractMatching(!0, e || "") - }, t._extract = function(e) { - return this._extractMatching(!1, e) - }, t._extractMatching = function(e, t) { - if (this.isFinished()) return null; - var n = t.indexOf(this.current()); - if (e && -1 === n || !e && -1 !== n) { - var r = this.current(); - this.forward(); - for (var i = t.indexOf(this.current()); - (e && -1 === i || !e && -1 !== i) && !this.isFinished();) r += this.current(), this.forward(), i = t.indexOf(this.current()); - return r - } - return "" - }, t._extractRegex = function(e) { - var t = this.currentStr().match(e); - return t ? (this.forwardN(t[0].length), t) : null - }, t.isFinished = function() { - return this.index >= this.len - }, t.forwardN = function(e) { - for (var t = 0; t < e; t++) this.forward() - }, t.forward = function() { - this.index++, "\n" === this.previous() ? (this.lineno++, this.colno = 0) : this.colno++ - }, t.backN = function(e) { - for (var t = 0; t < e; t++) this.back() - }, t.back = function() { - if (this.index--, "\n" === this.current()) { - this.lineno--; - var e = this.src.lastIndexOf("\n", this.index - 1); - this.colno = -1 === e ? this.index : this.index - e - } else this.colno-- - }, t.current = function() { - return this.isFinished() ? "" : this.str.charAt(this.index) - }, t.currentStr = function() { - return this.isFinished() ? "" : this.str.substr(this.index) - }, t.previous = function() { - return this.str.charAt(this.index - 1) - }, e - }(), - Vt = { - lex: function(e, t) { - return new jt(e, t) - }, - TOKEN_STRING: "string", - TOKEN_WHITESPACE: "whitespace", - TOKEN_DATA: "data", - TOKEN_BLOCK_START: "block-start", - TOKEN_BLOCK_END: "block-end", - TOKEN_VARIABLE_START: "variable-start", - TOKEN_VARIABLE_END: "variable-end", - TOKEN_COMMENT: "comment", - TOKEN_LEFT_PAREN: "left-paren", - TOKEN_RIGHT_PAREN: "right-paren", - TOKEN_LEFT_BRACKET: "left-bracket", - TOKEN_RIGHT_BRACKET: "right-bracket", - TOKEN_LEFT_CURLY: "left-curly", - TOKEN_RIGHT_CURLY: "right-curly", - TOKEN_OPERATOR: "operator", - TOKEN_COMMA: "comma", - TOKEN_COLON: "colon", - TOKEN_TILDE: "tilde", - TOKEN_PIPE: "pipe", - TOKEN_INT: "int", - TOKEN_FLOAT: "float", - TOKEN_BOOLEAN: "boolean", - TOKEN_NONE: "none", - TOKEN_SYMBOL: "symbol", - TOKEN_SPECIAL: "special", - TOKEN_REGEX: "regex" - }; - -function Wt(e, t) { - for (var n = 0; n < t.length; n++) { - var r = t[n]; - r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) - } -} - -function Qt(e, t, n) { - return t && Wt(e.prototype, t), n && Wt(e, n), e -} - -function Xt(e, t) { - e.prototype = Object.create(t.prototype), e.prototype.constructor = e, $t(e, t) -} - -function $t(e, t) { - return $t = Object.setPrototypeOf || function(e, t) { - return e.__proto__ = t, e - }, $t(e, t) -} - -function zt(e, t, n) { - n = n || {}, je.keys(n).forEach((function(t) { - n[t] = function(e, t) { - return "function" != typeof e || "function" != typeof t ? t : function() { - var n = this.parent; - this.parent = e; - var r = t.apply(this, arguments); - return this.parent = n, r - } - }(e.prototype[t], n[t]) - })); - var r = function(e) { - function n() { - return e.apply(this, arguments) || this - } - return Xt(n, e), Qt(n, [{ - key: "typename", - get: function() { - return t - } - }]), n - }(e); - return je._assign(r.prototype, n), r -} -var Jt = function() { - function e() { - this.init.apply(this, arguments) - } - return e.prototype.init = function() {}, e.extend = function(e, t) { - return "object" == typeof e && (t = e, e = "anonymous"), zt(this, e, t) - }, Qt(e, [{ - key: "typename", - get: function() { - return this.constructor.name - } - }]), e - }(), - Zt = function(e) { - function t() { - var t, n; - return (t = n = e.call(this) || this).init.apply(t, arguments), n - } - return Xt(t, e), t.prototype.init = function() {}, t.extend = function(e, t) { - return "object" == typeof e && (t = e, e = "anonymous"), zt(this, e, t) - }, Qt(t, [{ - key: "typename", - get: function() { - return this.constructor.name - } - }]), t - }(Tt), - en = { - Obj: Jt, - EmitterObj: Zt - }; - -function tn(e, t) { - for (var n = 0; n < t.length; n++) { - var r = t[n]; - r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) - } -} - -function nn(e, t, n) { - return t && tn(e.prototype, t), n && tn(e, n), e -} - -function rn(e, t) { - e.prototype = Object.create(t.prototype), e.prototype.constructor = e, sn(e, t) -} - -function sn(e, t) { - return sn = Object.setPrototypeOf || function(e, t) { - return e.__proto__ = t, e - }, sn(e, t) -} - -function an(e, t, n) { - e instanceof t && n.push(e), e instanceof on && e.findAll(t, n) -} -var on = function(e) { - function t() { - return e.apply(this, arguments) || this - } - rn(t, e); - var n = t.prototype; - return n.init = function(e, t) { - for (var n = arguments, r = this, i = arguments.length, s = new Array(i > 2 ? i - 2 : 0), a = 2; a < i; a++) s[a - 2] = arguments[a]; - this.lineno = e, this.colno = t, this.fields.forEach((function(e, t) { - var i = n[t + 2]; - void 0 === i && (i = null), r[e] = i - })) - }, n.findAll = function(e, t) { - var n = this; - return t = t || [], this instanceof ln ? this.children.forEach((function(n) { - return an(n, e, t) - })) : this.fields.forEach((function(r) { - return an(n[r], e, t) - })), t - }, n.iterFields = function(e) { - var t = this; - this.fields.forEach((function(n) { - e(t[n], n) - })) - }, t - }(en.Obj), - cn = function(e) { - function t() { - return e.apply(this, arguments) || this - } - return rn(t, e), nn(t, [{ - key: "typename", - get: function() { - return "Value" - } - }, { - key: "fields", - get: function() { - return ["value"] - } - }]), t - }(on), - ln = function(e) { - function t() { - return e.apply(this, arguments) || this - } - rn(t, e); - var n = t.prototype; - return n.init = function(t, n, r) { - e.prototype.init.call(this, t, n, r || []) - }, n.addChild = function(e) { - this.children.push(e) - }, nn(t, [{ - key: "typename", - get: function() { - return "NodeList" - } - }, { - key: "fields", - get: function() { - return ["children"] - } - }]), t - }(on), - hn = ln.extend("Root"), - un = cn.extend("Literal"), - pn = cn.extend("Symbol"), - fn = ln.extend("Group"), - dn = ln.extend("Array"), - En = on.extend("Pair", { - fields: ["key", "value"] - }), - mn = ln.extend("Dict"), - Tn = on.extend("LookupVal", { - fields: ["target", "val"] - }), - _n = on.extend("If", { - fields: ["cond", "body", "else_"] - }), - An = _n.extend("IfAsync"), - gn = on.extend("InlineIf", { - fields: ["cond", "body", "else_"] - }), - Nn = on.extend("For", { - fields: ["arr", "name", "body", "else_"] - }), - Cn = Nn.extend("AsyncEach"), - In = Nn.extend("AsyncAll"), - Sn = on.extend("Macro", { - fields: ["name", "args", "body"] - }), - bn = Sn.extend("Caller"), - On = on.extend("Import", { - fields: ["template", "target", "withContext"] - }), - yn = function(e) { - function t() { - return e.apply(this, arguments) || this - } - return rn(t, e), t.prototype.init = function(t, n, r, i, s) { - e.prototype.init.call(this, t, n, r, i || new ln, s) - }, nn(t, [{ - key: "typename", - get: function() { - return "FromImport" - } - }, { - key: "fields", - get: function() { - return ["template", "names", "withContext"] - } - }]), t - }(on), - Ln = on.extend("FunCall", { - fields: ["name", "args"] - }), - kn = Ln.extend("Filter"), - vn = kn.extend("FilterAsync", { - fields: ["name", "args", "symbol"] - }), - Dn = mn.extend("KeywordArgs"), - Rn = on.extend("Block", { - fields: ["name", "body"] - }), - Mn = on.extend("Super", { - fields: ["blockName", "symbol"] - }), - Pn = on.extend("TemplateRef", { - fields: ["template"] - }).extend("Extends"), - xn = on.extend("Include", { - fields: ["template", "ignoreMissing"] - }), - wn = on.extend("Set", { - fields: ["targets", "value"] - }), - Bn = on.extend("Switch", { - fields: ["expr", "cases", "default"] - }), - Fn = on.extend("Case", { - fields: ["cond", "body"] - }), - Un = ln.extend("Output"), - Hn = on.extend("Capture", { - fields: ["body"] - }), - Gn = un.extend("TemplateData"), - Yn = on.extend("UnaryOp", { - fields: ["target"] - }), - qn = on.extend("BinOp", { - fields: ["left", "right"] - }), - Kn = qn.extend("In"), - jn = qn.extend("Is"), - Vn = qn.extend("Or"), - Wn = qn.extend("And"), - Qn = Yn.extend("Not"), - Xn = qn.extend("Add"), - $n = qn.extend("Concat"), - zn = qn.extend("Sub"), - Jn = qn.extend("Mul"), - Zn = qn.extend("Div"), - er = qn.extend("FloorDiv"), - tr = qn.extend("Mod"), - nr = qn.extend("Pow"), - rr = Yn.extend("Neg"), - ir = Yn.extend("Pos"), - sr = on.extend("Compare", { - fields: ["expr", "ops"] - }), - ar = on.extend("CompareOperand", { - fields: ["expr", "type"] - }), - or = on.extend("CallExtension", { - init: function(e, t, n, r) { - this.parent(), this.extName = e.__name || e, this.prop = t, this.args = n || new ln, this.contentArgs = r || [], this.autoescape = e.autoescape - }, - fields: ["extName", "prop", "args", "contentArgs"] - }), - cr = or.extend("CallExtensionAsync"); - -function lr(e, t, n) { - var r = e.split("\n"); - r.forEach((function(e, i) { - e && (n && i > 0 || !n) && Et.stdout.write(" ".repeat(t)); - var s = i === r.length - 1 ? "" : "\n"; - Et.stdout.write("" + e + s) - })) -} -var hr = { - Node: on, - Root: hn, - NodeList: ln, - Value: cn, - Literal: un, - Symbol: pn, - Group: fn, - Array: dn, - Pair: En, - Dict: mn, - Output: Un, - Capture: Hn, - TemplateData: Gn, - If: _n, - IfAsync: An, - InlineIf: gn, - For: Nn, - AsyncEach: Cn, - AsyncAll: In, - Macro: Sn, - Caller: bn, - Import: On, - FromImport: yn, - FunCall: Ln, - Filter: kn, - FilterAsync: vn, - KeywordArgs: Dn, - Block: Rn, - Super: Mn, - Extends: Pn, - Include: xn, - Set: wn, - Switch: Bn, - Case: Fn, - LookupVal: Tn, - BinOp: qn, - In: Kn, - Is: jn, - Or: Vn, - And: Wn, - Not: Qn, - Add: Xn, - Concat: $n, - Sub: zn, - Mul: Jn, - Div: Zn, - FloorDiv: er, - Mod: tr, - Pow: nr, - Neg: rr, - Pos: ir, - Compare: sr, - CompareOperand: ar, - CallExtension: or, - CallExtensionAsync: cr, - printNodes: function e(t, n) { - if (n = n || 0, lr(t.typename + ": ", n), t instanceof ln) lr("\n"), t.children.forEach((function(t) { - e(t, n + 2) - })); - else if (t instanceof or) lr(t.extName + "." + t.prop + "\n"), t.args && e(t.args, n + 2), t.contentArgs && t.contentArgs.forEach((function(t) { - e(t, n + 2) - })); - else { - var r = [], - i = null; - t.iterFields((function(e, t) { - e instanceof on ? r.push([t, e]) : (i = i || {})[t] = e - })), i ? lr(JSON.stringify(i, null, 2) + "\n", null, !0) : lr("\n"), r.forEach((function(t) { - var r = t[0], - i = t[1]; - lr("[" + r + "] =>", n + 2), e(i, n + 4) - })) - } - } -}; - -function ur(e, t) { - return ur = Object.setPrototypeOf || function(e, t) { - return e.__proto__ = t, e - }, ur(e, t) -} -hr.Node, hr.Root, hr.NodeList, hr.Value, hr.Literal, hr.Group, hr.Pair, hr.Dict, hr.Output, hr.Capture, hr.TemplateData, hr.If, hr.IfAsync, hr.InlineIf, hr.For, hr.AsyncEach, hr.AsyncAll, hr.Macro, hr.Caller, hr.Import, hr.FromImport, hr.FunCall, hr.Filter, hr.FilterAsync, hr.KeywordArgs, hr.Block, hr.Super, hr.Extends, hr.Include, hr.Switch, hr.Case, hr.LookupVal, hr.BinOp, hr.In, hr.Is, hr.Or, hr.And, hr.Not, hr.Add, hr.Concat, hr.Sub, hr.Mul, hr.Div, hr.FloorDiv, hr.Mod, hr.Pow, hr.Neg, hr.Pos, hr.Compare, hr.CompareOperand, hr.CallExtension, hr.CallExtensionAsync, hr.printNodes; -var pr = function(e) { - var t, n; - - function r() { - return e.apply(this, arguments) || this - } - n = e, (t = r).prototype = Object.create(n.prototype), t.prototype.constructor = t, ur(t, n); - var i = r.prototype; - return i.init = function(e) { - this.tokens = e, this.peeked = null, this.breakOnBlocks = null, this.dropLeadingWhitespace = !1, this.extensions = [] - }, i.nextToken = function(e) { - var t; - if (this.peeked) { - if (e || this.peeked.type !== Vt.TOKEN_WHITESPACE) return t = this.peeked, this.peeked = null, t; - this.peeked = null - } - if (t = this.tokens.nextToken(), !e) - for (; t && t.type === Vt.TOKEN_WHITESPACE;) t = this.tokens.nextToken(); - return t - }, i.peekToken = function() { - return this.peeked = this.peeked || this.nextToken(), this.peeked - }, i.pushToken = function(e) { - if (this.peeked) throw new Error("pushToken: can only push one token on between reads"); - this.peeked = e - }, i.error = function(e, t, n) { - if (void 0 === t || void 0 === n) { - var r = this.peekToken() || {}; - t = r.lineno, n = r.colno - } - return void 0 !== t && (t += 1), void 0 !== n && (n += 1), new je.TemplateError(e, t, n) - }, i.fail = function(e, t, n) { - throw this.error(e, t, n) - }, i.skip = function(e) { - var t = this.nextToken(); - return !(!t || t.type !== e) || (this.pushToken(t), !1) - }, i.expect = function(e) { - var t = this.nextToken(); - return t.type !== e && this.fail("expected " + e + ", got " + t.type, t.lineno, t.colno), t - }, i.skipValue = function(e, t) { - var n = this.nextToken(); - return !(!n || n.type !== e || n.value !== t) || (this.pushToken(n), !1) - }, i.skipSymbol = function(e) { - return this.skipValue(Vt.TOKEN_SYMBOL, e) - }, i.advanceAfterBlockEnd = function(e) { - var t; - return e || ((t = this.peekToken()) || this.fail("unexpected end of file"), t.type !== Vt.TOKEN_SYMBOL && this.fail("advanceAfterBlockEnd: expected symbol token or explicit name to be passed"), e = this.nextToken().value), (t = this.nextToken()) && t.type === Vt.TOKEN_BLOCK_END ? "-" === t.value.charAt(0) && (this.dropLeadingWhitespace = !0) : this.fail("expected block end in " + e + " statement"), t - }, i.advanceAfterVariableEnd = function() { - var e = this.nextToken(); - e && e.type === Vt.TOKEN_VARIABLE_END ? this.dropLeadingWhitespace = "-" === e.value.charAt(e.value.length - this.tokens.tags.VARIABLE_END.length - 1) : (this.pushToken(e), this.fail("expected variable end")) - }, i.parseFor = function() { - var e, t, n = this.peekToken(); - if (this.skipSymbol("for") ? (e = new hr.For(n.lineno, n.colno), t = "endfor") : this.skipSymbol("asyncEach") ? (e = new hr.AsyncEach(n.lineno, n.colno), t = "endeach") : this.skipSymbol("asyncAll") ? (e = new hr.AsyncAll(n.lineno, n.colno), t = "endall") : this.fail("parseFor: expected for{Async}", n.lineno, n.colno), e.name = this.parsePrimary(), e.name instanceof hr.Symbol || this.fail("parseFor: variable name expected for loop"), this.peekToken().type === Vt.TOKEN_COMMA) { - var r = e.name; - for (e.name = new hr.Array(r.lineno, r.colno), e.name.addChild(r); this.skip(Vt.TOKEN_COMMA);) { - var i = this.parsePrimary(); - e.name.addChild(i) - } - } - return this.skipSymbol("in") || this.fail('parseFor: expected "in" keyword for loop', n.lineno, n.colno), e.arr = this.parseExpression(), this.advanceAfterBlockEnd(n.value), e.body = this.parseUntilBlocks(t, "else"), this.skipSymbol("else") && (this.advanceAfterBlockEnd("else"), e.else_ = this.parseUntilBlocks(t)), this.advanceAfterBlockEnd(), e - }, i.parseMacro = function() { - var e = this.peekToken(); - this.skipSymbol("macro") || this.fail("expected macro"); - var t = this.parsePrimary(!0), - n = this.parseSignature(), - r = new hr.Macro(e.lineno, e.colno, t, n); - return this.advanceAfterBlockEnd(e.value), r.body = this.parseUntilBlocks("endmacro"), this.advanceAfterBlockEnd(), r - }, i.parseCall = function() { - var e = this.peekToken(); - this.skipSymbol("call") || this.fail("expected call"); - var t = this.parseSignature(!0) || new hr.NodeList, - n = this.parsePrimary(); - this.advanceAfterBlockEnd(e.value); - var r = this.parseUntilBlocks("endcall"); - this.advanceAfterBlockEnd(); - var i = new hr.Symbol(e.lineno, e.colno, "caller"), - s = new hr.Caller(e.lineno, e.colno, i, t, r), - a = n.args.children; - return a[a.length - 1] instanceof hr.KeywordArgs || a.push(new hr.KeywordArgs), a[a.length - 1].addChild(new hr.Pair(e.lineno, e.colno, i, s)), new hr.Output(e.lineno, e.colno, [n]) - }, i.parseWithContext = function() { - var e = this.peekToken(), - t = null; - return this.skipSymbol("with") ? t = !0 : this.skipSymbol("without") && (t = !1), null !== t && (this.skipSymbol("context") || this.fail("parseFrom: expected context after with/without", e.lineno, e.colno)), t - }, i.parseImport = function() { - var e = this.peekToken(); - this.skipSymbol("import") || this.fail("parseImport: expected import", e.lineno, e.colno); - var t = this.parseExpression(); - this.skipSymbol("as") || this.fail('parseImport: expected "as" keyword', e.lineno, e.colno); - var n = this.parseExpression(), - r = this.parseWithContext(), - i = new hr.Import(e.lineno, e.colno, t, n, r); - return this.advanceAfterBlockEnd(e.value), i - }, i.parseFrom = function() { - var e = this.peekToken(); - this.skipSymbol("from") || this.fail("parseFrom: expected from"); - var t = this.parseExpression(); - this.skipSymbol("import") || this.fail("parseFrom: expected import", e.lineno, e.colno); - for (var n, r = new hr.NodeList;;) { - var i = this.peekToken(); - if (i.type === Vt.TOKEN_BLOCK_END) { - r.children.length || this.fail("parseFrom: Expected at least one import name", e.lineno, e.colno), "-" === i.value.charAt(0) && (this.dropLeadingWhitespace = !0), this.nextToken(); - break - } - r.children.length > 0 && !this.skip(Vt.TOKEN_COMMA) && this.fail("parseFrom: expected comma", e.lineno, e.colno); - var s = this.parsePrimary(); - if ("_" === s.value.charAt(0) && this.fail("parseFrom: names starting with an underscore cannot be imported", s.lineno, s.colno), this.skipSymbol("as")) { - var a = this.parsePrimary(); - r.addChild(new hr.Pair(s.lineno, s.colno, s, a)) - } else r.addChild(s); - n = this.parseWithContext() - } - return new hr.FromImport(e.lineno, e.colno, t, r, n) - }, i.parseBlock = function() { - var e = this.peekToken(); - this.skipSymbol("block") || this.fail("parseBlock: expected block", e.lineno, e.colno); - var t = new hr.Block(e.lineno, e.colno); - t.name = this.parsePrimary(), t.name instanceof hr.Symbol || this.fail("parseBlock: variable name expected", e.lineno, e.colno), this.advanceAfterBlockEnd(e.value), t.body = this.parseUntilBlocks("endblock"), this.skipSymbol("endblock"), this.skipSymbol(t.name.value); - var n = this.peekToken(); - return n || this.fail("parseBlock: expected endblock, got end of file"), this.advanceAfterBlockEnd(n.value), t - }, i.parseExtends = function() { - var e = "extends", - t = this.peekToken(); - this.skipSymbol(e) || this.fail("parseTemplateRef: expected extends"); - var n = new hr.Extends(t.lineno, t.colno); - return n.template = this.parseExpression(), this.advanceAfterBlockEnd(t.value), n - }, i.parseInclude = function() { - var e = "include", - t = this.peekToken(); - this.skipSymbol(e) || this.fail("parseInclude: expected include"); - var n = new hr.Include(t.lineno, t.colno); - return n.template = this.parseExpression(), this.skipSymbol("ignore") && this.skipSymbol("missing") && (n.ignoreMissing = !0), this.advanceAfterBlockEnd(t.value), n - }, i.parseIf = function() { - var e, t = this.peekToken(); - this.skipSymbol("if") || this.skipSymbol("elif") || this.skipSymbol("elseif") ? e = new hr.If(t.lineno, t.colno) : this.skipSymbol("ifAsync") ? e = new hr.IfAsync(t.lineno, t.colno) : this.fail("parseIf: expected if, elif, or elseif", t.lineno, t.colno), e.cond = this.parseExpression(), this.advanceAfterBlockEnd(t.value), e.body = this.parseUntilBlocks("elif", "elseif", "else", "endif"); - var n = this.peekToken(); - switch (n && n.value) { - case "elseif": - case "elif": - e.else_ = this.parseIf(); - break; - case "else": - this.advanceAfterBlockEnd(), e.else_ = this.parseUntilBlocks("endif"), this.advanceAfterBlockEnd(); - break; - case "endif": - e.else_ = null, this.advanceAfterBlockEnd(); - break; - default: - this.fail("parseIf: expected elif, else, or endif, got end of file") - } - return e - }, i.parseSet = function() { - var e = this.peekToken(); - this.skipSymbol("set") || this.fail("parseSet: expected set", e.lineno, e.colno); - for (var t, n = new hr.Set(e.lineno, e.colno, []); - (t = this.parsePrimary()) && (n.targets.push(t), this.skip(Vt.TOKEN_COMMA));); - return this.skipValue(Vt.TOKEN_OPERATOR, "=") ? (n.value = this.parseExpression(), this.advanceAfterBlockEnd(e.value)) : this.skip(Vt.TOKEN_BLOCK_END) ? (n.body = new hr.Capture(e.lineno, e.colno, this.parseUntilBlocks("endset")), n.value = null, this.advanceAfterBlockEnd()) : this.fail("parseSet: expected = or block end in set tag", e.lineno, e.colno), n - }, i.parseSwitch = function() { - var e = "switch", - t = "endswitch", - n = "case", - r = "default", - i = this.peekToken(); - this.skipSymbol(e) || this.skipSymbol(n) || this.skipSymbol(r) || this.fail('parseSwitch: expected "switch," "case" or "default"', i.lineno, i.colno); - var s = this.parseExpression(); - this.advanceAfterBlockEnd(e), this.parseUntilBlocks(n, r, t); - var a, o = this.peekToken(), - c = []; - do { - this.skipSymbol(n); - var l = this.parseExpression(); - this.advanceAfterBlockEnd(e); - var h = this.parseUntilBlocks(n, r, t); - c.push(new hr.Case(o.line, o.col, l, h)), o = this.peekToken() - } while (o && o.value === n); - switch (o.value) { - case r: - this.advanceAfterBlockEnd(), a = this.parseUntilBlocks(t), this.advanceAfterBlockEnd(); - break; - case t: - this.advanceAfterBlockEnd(); - break; - default: - this.fail('parseSwitch: expected "case," "default" or "endswitch," got EOF.') - } - return new hr.Switch(i.lineno, i.colno, s, c, a) - }, i.parseStatement = function() { - var e = this.peekToken(); - if (e.type !== Vt.TOKEN_SYMBOL && this.fail("tag name expected", e.lineno, e.colno), this.breakOnBlocks && -1 !== je.indexOf(this.breakOnBlocks, e.value)) return null; - switch (e.value) { - case "raw": - return this.parseRaw(); - case "verbatim": - return this.parseRaw("verbatim"); - case "if": - case "ifAsync": - return this.parseIf(); - case "for": - case "asyncEach": - case "asyncAll": - return this.parseFor(); - case "block": - return this.parseBlock(); - case "extends": - return this.parseExtends(); - case "include": - return this.parseInclude(); - case "set": - return this.parseSet(); - case "macro": - return this.parseMacro(); - case "call": - return this.parseCall(); - case "import": - return this.parseImport(); - case "from": - return this.parseFrom(); - case "filter": - return this.parseFilterStatement(); - case "switch": - return this.parseSwitch(); - default: - if (this.extensions.length) - for (var t = 0; t < this.extensions.length; t++) { - var n = this.extensions[t]; - if (-1 !== je.indexOf(n.tags || [], e.value)) return n.parse(this, hr, Vt) - } - this.fail("unknown block tag: " + e.value, e.lineno, e.colno) - } - }, i.parseRaw = function(e) { - for (var t = "end" + (e = e || "raw"), n = new RegExp("([\\s\\S]*?){%\\s*(" + e + "|" + t + ")\\s*(?=%})%}"), r = 1, i = "", s = null, a = this.advanceAfterBlockEnd(); - (s = this.tokens._extractRegex(n)) && r > 0;) { - var o = s[0], - c = s[1], - l = s[2]; - l === e ? r += 1 : l === t && (r -= 1), 0 === r ? (i += c, this.tokens.backN(o.length - c.length)) : i += o - } - return new hr.Output(a.lineno, a.colno, [new hr.TemplateData(a.lineno, a.colno, i)]) - }, i.parsePostfix = function(e) { - for (var t, n = this.peekToken(); n;) { - if (n.type === Vt.TOKEN_LEFT_PAREN) e = new hr.FunCall(n.lineno, n.colno, e, this.parseSignature()); - else if (n.type === Vt.TOKEN_LEFT_BRACKET)(t = this.parseAggregate()).children.length > 1 && this.fail("invalid index"), e = new hr.LookupVal(n.lineno, n.colno, e, t.children[0]); - else { - if (n.type !== Vt.TOKEN_OPERATOR || "." !== n.value) break; - this.nextToken(); - var r = this.nextToken(); - r.type !== Vt.TOKEN_SYMBOL && this.fail("expected name as lookup value, got " + r.value, r.lineno, r.colno), t = new hr.Literal(r.lineno, r.colno, r.value), e = new hr.LookupVal(n.lineno, n.colno, e, t) - } - n = this.peekToken() - } - return e - }, i.parseExpression = function() { - return this.parseInlineIf() - }, i.parseInlineIf = function() { - var e = this.parseOr(); - if (this.skipSymbol("if")) { - var t = this.parseOr(), - n = e; - (e = new hr.InlineIf(e.lineno, e.colno)).body = n, e.cond = t, this.skipSymbol("else") ? e.else_ = this.parseOr() : e.else_ = null - } - return e - }, i.parseOr = function() { - for (var e = this.parseAnd(); this.skipSymbol("or");) { - var t = this.parseAnd(); - e = new hr.Or(e.lineno, e.colno, e, t) - } - return e - }, i.parseAnd = function() { - for (var e = this.parseNot(); this.skipSymbol("and");) { - var t = this.parseNot(); - e = new hr.And(e.lineno, e.colno, e, t) - } - return e - }, i.parseNot = function() { - var e = this.peekToken(); - return this.skipSymbol("not") ? new hr.Not(e.lineno, e.colno, this.parseNot()) : this.parseIn() - }, i.parseIn = function() { - for (var e = this.parseIs();;) { - var t = this.nextToken(); - if (!t) break; - var n = t.type === Vt.TOKEN_SYMBOL && "not" === t.value; - if (n || this.pushToken(t), !this.skipSymbol("in")) { - n && this.pushToken(t); - break - } - var r = this.parseIs(); - e = new hr.In(e.lineno, e.colno, e, r), n && (e = new hr.Not(e.lineno, e.colno, e)) - } - return e - }, i.parseIs = function() { - var e = this.parseCompare(); - if (this.skipSymbol("is")) { - var t = this.skipSymbol("not"), - n = this.parseCompare(); - e = new hr.Is(e.lineno, e.colno, e, n), t && (e = new hr.Not(e.lineno, e.colno, e)) - } - return e - }, i.parseCompare = function() { - for (var e = ["==", "===", "!=", "!==", "<", ">", "<=", ">="], t = this.parseConcat(), n = [];;) { - var r = this.nextToken(); - if (!r) break; - if (-1 === e.indexOf(r.value)) { - this.pushToken(r); - break - } - n.push(new hr.CompareOperand(r.lineno, r.colno, this.parseConcat(), r.value)) - } - return n.length ? new hr.Compare(n[0].lineno, n[0].colno, t, n) : t - }, i.parseConcat = function() { - for (var e = this.parseAdd(); this.skipValue(Vt.TOKEN_TILDE, "~");) { - var t = this.parseAdd(); - e = new hr.Concat(e.lineno, e.colno, e, t) - } - return e - }, i.parseAdd = function() { - for (var e = this.parseSub(); this.skipValue(Vt.TOKEN_OPERATOR, "+");) { - var t = this.parseSub(); - e = new hr.Add(e.lineno, e.colno, e, t) - } - return e - }, i.parseSub = function() { - for (var e = this.parseMul(); this.skipValue(Vt.TOKEN_OPERATOR, "-");) { - var t = this.parseMul(); - e = new hr.Sub(e.lineno, e.colno, e, t) - } - return e - }, i.parseMul = function() { - for (var e = this.parseDiv(); this.skipValue(Vt.TOKEN_OPERATOR, "*");) { - var t = this.parseDiv(); - e = new hr.Mul(e.lineno, e.colno, e, t) - } - return e - }, i.parseDiv = function() { - for (var e = this.parseFloorDiv(); this.skipValue(Vt.TOKEN_OPERATOR, "/");) { - var t = this.parseFloorDiv(); - e = new hr.Div(e.lineno, e.colno, e, t) - } - return e - }, i.parseFloorDiv = function() { - for (var e = this.parseMod(); this.skipValue(Vt.TOKEN_OPERATOR, "//");) { - var t = this.parseMod(); - e = new hr.FloorDiv(e.lineno, e.colno, e, t) - } - return e - }, i.parseMod = function() { - for (var e = this.parsePow(); this.skipValue(Vt.TOKEN_OPERATOR, "%");) { - var t = this.parsePow(); - e = new hr.Mod(e.lineno, e.colno, e, t) - } - return e - }, i.parsePow = function() { - for (var e = this.parseUnary(); this.skipValue(Vt.TOKEN_OPERATOR, "**");) { - var t = this.parseUnary(); - e = new hr.Pow(e.lineno, e.colno, e, t) - } - return e - }, i.parseUnary = function(e) { - var t, n = this.peekToken(); - return t = this.skipValue(Vt.TOKEN_OPERATOR, "-") ? new hr.Neg(n.lineno, n.colno, this.parseUnary(!0)) : this.skipValue(Vt.TOKEN_OPERATOR, "+") ? new hr.Pos(n.lineno, n.colno, this.parseUnary(!0)) : this.parsePrimary(), e || (t = this.parseFilter(t)), t - }, i.parsePrimary = function(e) { - var t, n = this.nextToken(), - r = null; - if (n ? n.type === Vt.TOKEN_STRING ? t = n.value : n.type === Vt.TOKEN_INT ? t = parseInt(n.value, 10) : n.type === Vt.TOKEN_FLOAT ? t = parseFloat(n.value) : n.type === Vt.TOKEN_BOOLEAN ? "true" === n.value ? t = !0 : "false" === n.value ? t = !1 : this.fail("invalid boolean: " + n.value, n.lineno, n.colno) : n.type === Vt.TOKEN_NONE ? t = null : n.type === Vt.TOKEN_REGEX && (t = new RegExp(n.value.body, n.value.flags)) : this.fail("expected expression, got end of file"), void 0 !== t ? r = new hr.Literal(n.lineno, n.colno, t) : n.type === Vt.TOKEN_SYMBOL ? r = new hr.Symbol(n.lineno, n.colno, n.value) : (this.pushToken(n), r = this.parseAggregate()), e || (r = this.parsePostfix(r)), r) return r; - throw this.error("unexpected token: " + n.value, n.lineno, n.colno) - }, i.parseFilterName = function() { - for (var e = this.expect(Vt.TOKEN_SYMBOL), t = e.value; this.skipValue(Vt.TOKEN_OPERATOR, ".");) t += "." + this.expect(Vt.TOKEN_SYMBOL).value; - return new hr.Symbol(e.lineno, e.colno, t) - }, i.parseFilterArgs = function(e) { - return this.peekToken().type === Vt.TOKEN_LEFT_PAREN ? this.parsePostfix(e).args.children : [] - }, i.parseFilter = function(e) { - for (; this.skip(Vt.TOKEN_PIPE);) { - var t = this.parseFilterName(); - e = new hr.Filter(t.lineno, t.colno, t, new hr.NodeList(t.lineno, t.colno, [e].concat(this.parseFilterArgs(e)))) - } - return e - }, i.parseFilterStatement = function() { - var e = this.peekToken(); - this.skipSymbol("filter") || this.fail("parseFilterStatement: expected filter"); - var t = this.parseFilterName(), - n = this.parseFilterArgs(t); - this.advanceAfterBlockEnd(e.value); - var r = new hr.Capture(t.lineno, t.colno, this.parseUntilBlocks("endfilter")); - this.advanceAfterBlockEnd(); - var i = new hr.Filter(t.lineno, t.colno, t, new hr.NodeList(t.lineno, t.colno, [r].concat(n))); - return new hr.Output(t.lineno, t.colno, [i]) - }, i.parseAggregate = function() { - var e, t = this.nextToken(); - switch (t.type) { - case Vt.TOKEN_LEFT_PAREN: - e = new hr.Group(t.lineno, t.colno); - break; - case Vt.TOKEN_LEFT_BRACKET: - e = new hr.Array(t.lineno, t.colno); - break; - case Vt.TOKEN_LEFT_CURLY: - e = new hr.Dict(t.lineno, t.colno); - break; - default: - return null - } - for (;;) { - var n = this.peekToken().type; - if (n === Vt.TOKEN_RIGHT_PAREN || n === Vt.TOKEN_RIGHT_BRACKET || n === Vt.TOKEN_RIGHT_CURLY) { - this.nextToken(); - break - } - if (e.children.length > 0 && (this.skip(Vt.TOKEN_COMMA) || this.fail("parseAggregate: expected comma after expression", t.lineno, t.colno)), e instanceof hr.Dict) { - var r = this.parsePrimary(); - this.skip(Vt.TOKEN_COLON) || this.fail("parseAggregate: expected colon after dict key", t.lineno, t.colno); - var i = this.parseExpression(); - e.addChild(new hr.Pair(r.lineno, r.colno, r, i)) - } else { - var s = this.parseExpression(); - e.addChild(s) - } - } - return e - }, i.parseSignature = function(e, t) { - var n = this.peekToken(); - if (!t && n.type !== Vt.TOKEN_LEFT_PAREN) { - if (e) return null; - this.fail("expected arguments", n.lineno, n.colno) - } - n.type === Vt.TOKEN_LEFT_PAREN && (n = this.nextToken()); - for (var r = new hr.NodeList(n.lineno, n.colno), i = new hr.KeywordArgs(n.lineno, n.colno), s = !1;;) { - if (n = this.peekToken(), !t && n.type === Vt.TOKEN_RIGHT_PAREN) { - this.nextToken(); - break - } - if (t && n.type === Vt.TOKEN_BLOCK_END) break; - if (s && !this.skip(Vt.TOKEN_COMMA)) this.fail("parseSignature: expected comma after expression", n.lineno, n.colno); - else { - var a = this.parseExpression(); - this.skipValue(Vt.TOKEN_OPERATOR, "=") ? i.addChild(new hr.Pair(a.lineno, a.colno, a, this.parseExpression())) : r.addChild(a) - } - s = !0 - } - return i.children.length && r.addChild(i), r - }, i.parseUntilBlocks = function() { - for (var e = this.breakOnBlocks, t = arguments.length, n = new Array(t), r = 0; r < t; r++) n[r] = arguments[r]; - this.breakOnBlocks = n; - var i = this.parse(); - return this.breakOnBlocks = e, i - }, i.parseNodes = function() { - for (var e, t = []; e = this.nextToken();) - if (e.type === Vt.TOKEN_DATA) { - var n = e.value, - r = this.peekToken(), - i = r && r.value; - this.dropLeadingWhitespace && (n = n.replace(/^\s*/, ""), this.dropLeadingWhitespace = !1), r && (r.type === Vt.TOKEN_BLOCK_START && "-" === i.charAt(i.length - 1) || r.type === Vt.TOKEN_VARIABLE_START && "-" === i.charAt(this.tokens.tags.VARIABLE_START.length) || r.type === Vt.TOKEN_COMMENT && "-" === i.charAt(this.tokens.tags.COMMENT_START.length)) && (n = n.replace(/\s*$/, "")), t.push(new hr.Output(e.lineno, e.colno, [new hr.TemplateData(e.lineno, e.colno, n)])) - } else if (e.type === Vt.TOKEN_BLOCK_START) { - this.dropLeadingWhitespace = !1; - var s = this.parseStatement(); - if (!s) break; - t.push(s) - } else if (e.type === Vt.TOKEN_VARIABLE_START) { - var a = this.parseExpression(); - this.dropLeadingWhitespace = !1, this.advanceAfterVariableEnd(), t.push(new hr.Output(e.lineno, e.colno, [a])) - } else e.type === Vt.TOKEN_COMMENT ? this.dropLeadingWhitespace = "-" === e.value.charAt(e.value.length - this.tokens.tags.COMMENT_END.length - 1) : this.fail("Unexpected token at top-level: " + e.type, e.lineno, e.colno); - return t - }, i.parse = function() { - return new hr.NodeList(0, 0, this.parseNodes()) - }, i.parseAsRoot = function() { - return new hr.Root(0, 0, this.parseNodes()) - }, r - }(en.Obj), - fr = { - parse: function(e, t, n) { - var r = new pr(Vt.lex(e, n)); - return void 0 !== t && (r.extensions = t), r.parseAsRoot() - }, - Parser: pr - }, - dr = 0; - -function Er() { - return "hole_" + dr++ -} - -function mr(e, t) { - for (var n = null, r = 0; r < e.length; r++) { - var i = t(e[r]); - i !== e[r] && (n || (n = e.slice()), n[r] = i) - } - return n || e -} - -function Tr(e, t, n) { - if (!(e instanceof hr.Node)) return e; - if (!n) { - var r = t(e); - if (r && r !== e) return r - } - if (e instanceof hr.NodeList) { - var i = mr(e.children, (function(e) { - return Tr(e, t, n) - })); - i !== e.children && (e = new hr[e.typename](e.lineno, e.colno, i)) - } else if (e instanceof hr.CallExtension) { - var s = Tr(e.args, t, n), - a = mr(e.contentArgs, (function(e) { - return Tr(e, t, n) - })); - s === e.args && a === e.contentArgs || (e = new hr[e.typename](e.extName, e.prop, s, a)) - } else { - var o = e.fields.map((function(t) { - return e[t] - })), - c = mr(o, (function(e) { - return Tr(e, t, n) - })); - c !== o && (e = new hr[e.typename](e.lineno, e.colno), c.forEach((function(t, n) { - e[e.fields[n]] = t - }))) - } - return n && t(e) || e -} - -function _r(e, t) { - return Tr(e, t, !0) -} - -function Ar(e, t, n) { - var r = [], - i = _r(n ? e[n] : e, (function(e) { - var n; - return e instanceof hr.Block ? e : ((e instanceof hr.Filter && -1 !== je.indexOf(t, e.name.value) || e instanceof hr.CallExtensionAsync) && (n = new hr.Symbol(e.lineno, e.colno, Er()), r.push(new hr.FilterAsync(e.lineno, e.colno, e.name, e.args, n))), n) - })); - return n ? e[n] = i : e = i, r.length ? (r.push(e), new hr.NodeList(e.lineno, e.colno, r)) : e -} - -function gr(e, t) { - return function(e) { - return _r(e, (function(e) { - if (e instanceof hr.If || e instanceof hr.For) { - var t = !1; - if (Tr(e, (function(e) { - if (e instanceof hr.FilterAsync || e instanceof hr.IfAsync || e instanceof hr.AsyncEach || e instanceof hr.AsyncAll || e instanceof hr.CallExtensionAsync) return t = !0, e - })), t) { - if (e instanceof hr.If) return new hr.IfAsync(e.lineno, e.colno, e.cond, e.body, e.else_); - if (e instanceof hr.For && !(e instanceof hr.AsyncAll)) return new hr.AsyncEach(e.lineno, e.colno, e.arr, e.name, e.body, e.else_) - } - } - })) - }(function(e) { - return Tr(e, (function(e) { - if (e instanceof hr.Block) { - var t = !1, - n = Er(); - e.body = Tr(e.body, (function(e) { - if (e instanceof hr.FunCall && "super" === e.name.value) return t = !0, new hr.Symbol(e.lineno, e.colno, n) - })), t && e.body.children.unshift(new hr.Super(0, 0, e.name, new hr.Symbol(0, 0, n))) - } - })) - }(function(e, t) { - return _r(e, (function(e) { - return e instanceof hr.Output ? Ar(e, t) : e instanceof hr.Set ? Ar(e, t, "value") : e instanceof hr.For ? Ar(e, t, "arr") : e instanceof hr.If ? Ar(e, t, "cond") : e instanceof hr.CallExtension ? Ar(e, t, "args") : void 0 - })) - }(e, t))) -} -var Nr = { - transform: function(e, t) { - return gr(e, t || []) - } - }, - Cr = Array.from, - Ir = "function" == typeof Symbol && Symbol.iterator && "function" == typeof Cr, - Sr = function() { - function e(e, t) { - this.variables = Object.create(null), this.parent = e, this.topLevel = !1, this.isolateWrites = t - } - var t = e.prototype; - return t.set = function(e, t, n) { - var r = e.split("."), - i = this.variables, - s = this; - if (n && (s = this.resolve(r[0], !0))) s.set(e, t); - else { - for (var a = 0; a < r.length - 1; a++) { - var o = r[a]; - i[o] || (i[o] = {}), i = i[o] - } - i[r[r.length - 1]] = t - } - }, t.get = function(e) { - var t = this.variables[e]; - return void 0 !== t ? t : null - }, t.lookup = function(e) { - var t = this.parent, - n = this.variables[e]; - return void 0 !== n ? n : t && t.lookup(e) - }, t.resolve = function(e, t) { - var n = t && this.isolateWrites ? void 0 : this.parent; - return void 0 !== this.variables[e] ? this : n && n.resolve(e) - }, t.push = function(t) { - return new e(this, t) - }, t.pop = function() { - return this.parent - }, e - }(); - -function br(e) { - return e && Object.prototype.hasOwnProperty.call(e, "__keywords") -} - -function Or(e) { - var t = e.length; - if (t) { - var n = e[t - 1]; - if (br(n)) return n - } - return {} -} - -function yr(e) { - var t = e.length; - return 0 === t ? 0 : br(e[t - 1]) ? t - 1 : t -} - -function Lr(e) { - if ("string" != typeof e) return e; - this.val = e, Object.defineProperty(this, "length", { - writable: !0, - configurable: !0, - value: e.length - }) -} -Lr.prototype = Object.create(String.prototype, { - length: { - writable: !0, - configurable: !0, - value: 0 - } -}), Lr.prototype.valueOf = function() { - return this.val -}, Lr.prototype.toString = function() { - return this.val -}; -var kr = { - Frame: Sr, - makeMacro: function(e, t, n) { - return function() { - for (var r = arguments.length, i = new Array(r), s = 0; s < r; s++) i[s] = arguments[s]; - var a, o = yr(i), - c = Or(i); - if (o > e.length) a = i.slice(0, e.length), i.slice(a.length, o).forEach((function(e, n) { - n < t.length && (c[t[n]] = e) - })), a.push(c); - else if (o < e.length) { - a = i.slice(0, o); - for (var l = o; l < e.length; l++) { - var h = e[l]; - a.push(c[h]), delete c[h] - } - a.push(c) - } else a = i; - return n.apply(this, a) - } - }, - makeKeywordArgs: function(e) { - return e.__keywords = !0, e - }, - numArgs: yr, - suppressValue: function(e, t) { - return "object" == typeof(e = null != e ? e : "") ? new Lr(JSON.stringify(e).toString()) : (!t || e instanceof Lr || (e = je.escape(e.toString())), e) - }, - ensureDefined: function(e, t, n) { - if (null == e) throw new je.TemplateError("attempted to output null or undefined value", t + 1, n + 1); - return e - }, - memberLookup: function(e, t) { - if (null != e) return "function" == typeof e[t] ? function() { - for (var n = arguments.length, r = new Array(n), i = 0; i < n; i++) r[i] = arguments[i]; - return e[t].apply(e, r) - } : e[t] - }, - contextOrFrameLookup: function(e, t, n) { - var r = t.lookup(n); - return void 0 !== r ? r : e.lookup(n) - }, - callWrap: function(e, t, n, r) { - if (!e) throw new Error("Unable to call `" + t + "`, which is undefined or falsey"); - if ("function" != typeof e) throw new Error("Unable to call `" + t + "`, which is not a function"); - return e.apply(n, r) - }, - handleError: function(e, t, n) { - return e.lineno ? e : new je.TemplateError(e, t, n) - }, - isArray: je.isArray, - keys: je.keys, - SafeString: Lr, - copySafeness: function(e, t) { - return e instanceof Lr ? new Lr(t) : t.toString() - }, - markSafe: function(e) { - var t = typeof e; - return "string" === t ? new Lr(e) : "function" !== t ? e : function(t) { - var n = e.apply(this, arguments); - return "string" == typeof n ? new Lr(n) : n - } - }, - asyncEach: function(e, t, n, r) { - if (je.isArray(e)) { - var i = e.length; - je.asyncIter(e, (function(e, r, s) { - switch (t) { - case 1: - n(e, r, i, s); - break; - case 2: - n(e[0], e[1], r, i, s); - break; - case 3: - n(e[0], e[1], e[2], r, i, s); - break; - default: - e.push(r, i, s), n.apply(this, e) - } - }), r) - } else je.asyncFor(e, (function(e, t, r, i, s) { - n(e, t, r, i, s) - }), r) - }, - asyncAll: function(e, t, n, r) { - var i, s, a = 0; - - function o(e, t) { - a++, s[e] = t, a === i && r(null, s.join("")) - } - if (je.isArray(e)) - if (i = e.length, s = new Array(i), 0 === i) r(null, ""); - else - for (var c = 0; c < e.length; c++) { - var l = e[c]; - switch (t) { - case 1: - n(l, c, i, o); - break; - case 2: - n(l[0], l[1], c, i, o); - break; - case 3: - n(l[0], l[1], l[2], c, i, o); - break; - default: - l.push(c, i, o), n.apply(this, l) - } - } else { - var h = je.keys(e || {}); - if (i = h.length, s = new Array(i), 0 === i) r(null, ""); - else - for (var u = 0; u < h.length; u++) { - var p = h[u]; - n(p, e[p], u, i, o) - } - } - }, - inOperator: je.inOperator, - fromIterator: function(e) { - return "object" != typeof e || null === e || je.isArray(e) ? e : Ir && Symbol.iterator in e ? Cr(e) : e - } -}; - -function vr(e, t) { - return vr = Object.setPrototypeOf || function(e, t) { - return e.__proto__ = t, e - }, vr(e, t) -} -kr.Frame, kr.makeMacro, kr.makeKeywordArgs, kr.numArgs, kr.suppressValue, kr.ensureDefined, kr.memberLookup, kr.contextOrFrameLookup, kr.callWrap, kr.handleError, kr.isArray, kr.keys, kr.SafeString, kr.copySafeness, kr.markSafe, kr.asyncEach, kr.asyncAll, kr.inOperator, kr.fromIterator; -var Dr = je.TemplateError, - Rr = kr.Frame, - Mr = { - "==": "==", - "===": "===", - "!=": "!=", - "!==": "!==", - "<": "<", - ">": ">", - "<=": "<=", - ">=": ">=" - }, - Pr = function(e) { - var t, n; - - function r() { - return e.apply(this, arguments) || this - } - n = e, (t = r).prototype = Object.create(n.prototype), t.prototype.constructor = t, vr(t, n); - var i = r.prototype; - return i.init = function(e, t) { - this.templateName = e, this.codebuf = [], this.lastId = 0, this.buffer = null, this.bufferStack = [], this._scopeClosers = "", this.inBlock = !1, this.throwOnUndefined = t - }, i.fail = function(e, t, n) { - throw void 0 !== t && (t += 1), void 0 !== n && (n += 1), new Dr(e, t, n) - }, i._pushBuffer = function() { - var e = this._tmpid(); - return this.bufferStack.push(this.buffer), this.buffer = e, this._emit("var " + this.buffer + ' = "";'), e - }, i._popBuffer = function() { - this.buffer = this.bufferStack.pop() - }, i._emit = function(e) { - this.codebuf.push(e) - }, i._emitLine = function(e) { - this._emit(e + "\n") - }, i._emitLines = function() { - for (var e = this, t = arguments.length, n = new Array(t), r = 0; r < t; r++) n[r] = arguments[r]; - n.forEach((function(t) { - return e._emitLine(t) - })) - }, i._emitFuncBegin = function(e, t) { - this.buffer = "output", this._scopeClosers = "", this._emitLine("function " + t + "(env, context, frame, runtime, cb) {"), this._emitLine("var lineno = " + e.lineno + ";"), this._emitLine("var colno = " + e.colno + ";"), this._emitLine("var " + this.buffer + ' = "";'), this._emitLine("try {") - }, i._emitFuncEnd = function(e) { - e || this._emitLine("cb(null, " + this.buffer + ");"), this._closeScopeLevels(), this._emitLine("} catch (e) {"), this._emitLine(" cb(runtime.handleError(e, lineno, colno));"), this._emitLine("}"), this._emitLine("}"), this.buffer = null - }, i._addScopeLevel = function() { - this._scopeClosers += "})" - }, i._closeScopeLevels = function() { - this._emitLine(this._scopeClosers + ";"), this._scopeClosers = "" - }, i._withScopedSyntax = function(e) { - var t = this._scopeClosers; - this._scopeClosers = "", e.call(this), this._closeScopeLevels(), this._scopeClosers = t - }, i._makeCallback = function(e) { - var t = this._tmpid(); - return "function(" + t + (e ? "," + e : "") + ") {\nif(" + t + ") { cb(" + t + "); return; }" - }, i._tmpid = function() { - return this.lastId++, "t_" + this.lastId - }, i._templateName = function() { - return null == this.templateName ? "undefined" : JSON.stringify(this.templateName) - }, i._compileChildren = function(e, t) { - var n = this; - e.children.forEach((function(e) { - n.compile(e, t) - })) - }, i._compileAggregate = function(e, t, n, r) { - var i = this; - n && this._emit(n), e.children.forEach((function(e, n) { - n > 0 && i._emit(","), i.compile(e, t) - })), r && this._emit(r) - }, i._compileExpression = function(e, t) { - this.assertType(e, hr.Literal, hr.Symbol, hr.Group, hr.Array, hr.Dict, hr.FunCall, hr.Caller, hr.Filter, hr.LookupVal, hr.Compare, hr.InlineIf, hr.In, hr.Is, hr.And, hr.Or, hr.Not, hr.Add, hr.Concat, hr.Sub, hr.Mul, hr.Div, hr.FloorDiv, hr.Mod, hr.Pow, hr.Neg, hr.Pos, hr.Compare, hr.NodeList), this.compile(e, t) - }, i.assertType = function(e) { - for (var t = arguments.length, n = new Array(t > 1 ? t - 1 : 0), r = 1; r < t; r++) n[r - 1] = arguments[r]; - n.some((function(t) { - return e instanceof t - })) || this.fail("assertType: invalid type: " + e.typename, e.lineno, e.colno) - }, i.compileCallExtension = function(e, t, n) { - var r = this, - i = e.args, - s = e.contentArgs, - a = "boolean" != typeof e.autoescape || e.autoescape; - if (n || this._emit(this.buffer + " += runtime.suppressValue("), this._emit('env.getExtension("' + e.extName + '")["' + e.prop + '"]('), this._emit("context"), (i || s) && this._emit(","), i && (i instanceof hr.NodeList || this.fail("compileCallExtension: arguments must be a NodeList, use `parser.parseSignature`"), i.children.forEach((function(e, n) { - r._compileExpression(e, t), (n !== i.children.length - 1 || s.length) && r._emit(",") - }))), s.length && s.forEach((function(e, n) { - if (n > 0 && r._emit(","), e) { - r._emitLine("function(cb) {"), r._emitLine("if(!cb) { cb = function(err) { if(err) { throw err; }}}"); - var i = r._pushBuffer(); - r._withScopedSyntax((function() { - r.compile(e, t), r._emitLine("cb(null, " + i + ");") - })), r._popBuffer(), r._emitLine("return " + i + ";"), r._emitLine("}") - } else r._emit("null") - })), n) { - var o = this._tmpid(); - this._emitLine(", " + this._makeCallback(o)), this._emitLine(this.buffer + " += runtime.suppressValue(" + o + ", " + a + " && env.opts.autoescape);"), this._addScopeLevel() - } else this._emit(")"), this._emit(", " + a + " && env.opts.autoescape);\n") - }, i.compileCallExtensionAsync = function(e, t) { - this.compileCallExtension(e, t, !0) - }, i.compileNodeList = function(e, t) { - this._compileChildren(e, t) - }, i.compileLiteral = function(e) { - if ("string" == typeof e.value) { - var t = e.value.replace(/\\/g, "\\\\"); - t = (t = (t = (t = (t = t.replace(/"/g, '\\"')).replace(/\n/g, "\\n")).replace(/\r/g, "\\r")).replace(/\t/g, "\\t")).replace(/\u2028/g, "\\u2028"), this._emit('"' + t + '"') - } else null === e.value ? this._emit("null") : this._emit(e.value.toString()) - }, i.compileSymbol = function(e, t) { - var n = e.value, - r = t.lookup(n); - r ? this._emit(r) : this._emit('runtime.contextOrFrameLookup(context, frame, "' + n + '")') - }, i.compileGroup = function(e, t) { - this._compileAggregate(e, t, "(", ")") - }, i.compileArray = function(e, t) { - this._compileAggregate(e, t, "[", "]") - }, i.compileDict = function(e, t) { - this._compileAggregate(e, t, "{", "}") - }, i.compilePair = function(e, t) { - var n = e.key, - r = e.value; - n instanceof hr.Symbol ? n = new hr.Literal(n.lineno, n.colno, n.value) : n instanceof hr.Literal && "string" == typeof n.value || this.fail("compilePair: Dict keys must be strings or names", n.lineno, n.colno), this.compile(n, t), this._emit(": "), this._compileExpression(r, t) - }, i.compileInlineIf = function(e, t) { - this._emit("("), this.compile(e.cond, t), this._emit("?"), this.compile(e.body, t), this._emit(":"), null !== e.else_ ? this.compile(e.else_, t) : this._emit('""'), this._emit(")") - }, i.compileIn = function(e, t) { - this._emit("runtime.inOperator("), this.compile(e.left, t), this._emit(","), this.compile(e.right, t), this._emit(")") - }, i.compileIs = function(e, t) { - var n = e.right.name ? e.right.name.value : e.right.value; - this._emit('env.getTest("' + n + '").call(context, '), this.compile(e.left, t), e.right.args && (this._emit(","), this.compile(e.right.args, t)), this._emit(") === true") - }, i._binOpEmitter = function(e, t, n) { - this.compile(e.left, t), this._emit(n), this.compile(e.right, t) - }, i.compileOr = function(e, t) { - return this._binOpEmitter(e, t, " || ") - }, i.compileAnd = function(e, t) { - return this._binOpEmitter(e, t, " && ") - }, i.compileAdd = function(e, t) { - return this._binOpEmitter(e, t, " + ") - }, i.compileConcat = function(e, t) { - return this._binOpEmitter(e, t, ' + "" + ') - }, i.compileSub = function(e, t) { - return this._binOpEmitter(e, t, " - ") - }, i.compileMul = function(e, t) { - return this._binOpEmitter(e, t, " * ") - }, i.compileDiv = function(e, t) { - return this._binOpEmitter(e, t, " / ") - }, i.compileMod = function(e, t) { - return this._binOpEmitter(e, t, " % ") - }, i.compileNot = function(e, t) { - this._emit("!"), this.compile(e.target, t) - }, i.compileFloorDiv = function(e, t) { - this._emit("Math.floor("), this.compile(e.left, t), this._emit(" / "), this.compile(e.right, t), this._emit(")") - }, i.compilePow = function(e, t) { - this._emit("Math.pow("), this.compile(e.left, t), this._emit(", "), this.compile(e.right, t), this._emit(")") - }, i.compileNeg = function(e, t) { - this._emit("-"), this.compile(e.target, t) - }, i.compilePos = function(e, t) { - this._emit("+"), this.compile(e.target, t) - }, i.compileCompare = function(e, t) { - var n = this; - this.compile(e.expr, t), e.ops.forEach((function(e) { - n._emit(" " + Mr[e.type] + " "), n.compile(e.expr, t) - })) - }, i.compileLookupVal = function(e, t) { - this._emit("runtime.memberLookup(("), this._compileExpression(e.target, t), this._emit("),"), this._compileExpression(e.val, t), this._emit(")") - }, i._getNodeName = function(e) { - switch (e.typename) { - case "Symbol": - return e.value; - case "FunCall": - return "the return value of (" + this._getNodeName(e.name) + ")"; - case "LookupVal": - return this._getNodeName(e.target) + '["' + this._getNodeName(e.val) + '"]'; - case "Literal": - return e.value.toString(); - default: - return "--expression--" - } - }, i.compileFunCall = function(e, t) { - this._emit("(lineno = " + e.lineno + ", colno = " + e.colno + ", "), this._emit("runtime.callWrap("), this._compileExpression(e.name, t), this._emit(', "' + this._getNodeName(e.name).replace(/"/g, '\\"') + '", context, '), this._compileAggregate(e.args, t, "[", "])"), this._emit(")") - }, i.compileFilter = function(e, t) { - var n = e.name; - this.assertType(n, hr.Symbol), this._emit('env.getFilter("' + n.value + '").call(context, '), this._compileAggregate(e.args, t), this._emit(")") - }, i.compileFilterAsync = function(e, t) { - var n = e.name, - r = e.symbol.value; - this.assertType(n, hr.Symbol), t.set(r, r), this._emit('env.getFilter("' + n.value + '").call(context, '), this._compileAggregate(e.args, t), this._emitLine(", " + this._makeCallback(r)), this._addScopeLevel() - }, i.compileKeywordArgs = function(e, t) { - this._emit("runtime.makeKeywordArgs("), this.compileDict(e, t), this._emit(")") - }, i.compileSet = function(e, t) { - var n = this, - r = []; - e.targets.forEach((function(e) { - var i = e.value, - s = t.lookup(i); - null == s && (s = n._tmpid(), n._emitLine("var " + s + ";")), r.push(s) - })), e.value ? (this._emit(r.join(" = ") + " = "), this._compileExpression(e.value, t), this._emitLine(";")) : (this._emit(r.join(" = ") + " = "), this.compile(e.body, t), this._emitLine(";")), e.targets.forEach((function(e, t) { - var i = r[t], - s = e.value; - n._emitLine('frame.set("' + s + '", ' + i + ", true);"), n._emitLine("if(frame.topLevel) {"), n._emitLine('context.setVariable("' + s + '", ' + i + ");"), n._emitLine("}"), "_" !== s.charAt(0) && (n._emitLine("if(frame.topLevel) {"), n._emitLine('context.addExport("' + s + '", ' + i + ");"), n._emitLine("}")) - })) - }, i.compileSwitch = function(e, t) { - var n = this; - this._emit("switch ("), this.compile(e.expr, t), this._emit(") {"), e.cases.forEach((function(e, r) { - n._emit("case "), n.compile(e.cond, t), n._emit(": "), n.compile(e.body, t), e.body.children.length && n._emitLine("break;") - })), e.default && (this._emit("default:"), this.compile(e.default, t)), this._emit("}") - }, i.compileIf = function(e, t, n) { - var r = this; - this._emit("if("), this._compileExpression(e.cond, t), this._emitLine(") {"), this._withScopedSyntax((function() { - r.compile(e.body, t), n && r._emit("cb()") - })), e.else_ ? (this._emitLine("}\nelse {"), this._withScopedSyntax((function() { - r.compile(e.else_, t), n && r._emit("cb()") - }))) : n && (this._emitLine("}\nelse {"), this._emit("cb()")), this._emitLine("}") - }, i.compileIfAsync = function(e, t) { - this._emit("(function(cb) {"), this.compileIf(e, t, !0), this._emit("})(" + this._makeCallback()), this._addScopeLevel() - }, i._emitLoopBindings = function(e, t, n, r) { - var i = this; - [{ - name: "index", - val: n + " + 1" - }, { - name: "index0", - val: n - }, { - name: "revindex", - val: r + " - " + n - }, { - name: "revindex0", - val: r + " - " + n + " - 1" - }, { - name: "first", - val: n + " === 0" - }, { - name: "last", - val: n + " === " + r + " - 1" - }, { - name: "length", - val: r - }].forEach((function(e) { - i._emitLine('frame.set("loop.' + e.name + '", ' + e.val + ");") - })) - }, i.compileFor = function(e, t) { - var n = this, - r = this._tmpid(), - i = this._tmpid(), - s = this._tmpid(); - if (t = t.push(), this._emitLine("frame = frame.push();"), this._emit("var " + s + " = "), this._compileExpression(e.arr, t), this._emitLine(";"), this._emit("if(" + s + ") {"), this._emitLine(s + " = runtime.fromIterator(" + s + ");"), e.name instanceof hr.Array) { - this._emitLine("var " + r + ";"), this._emitLine("if(runtime.isArray(" + s + ")) {"), this._emitLine("var " + i + " = " + s + ".length;"), this._emitLine("for(" + r + "=0; " + r + " < " + s + ".length; " + r + "++) {"), e.name.children.forEach((function(i, a) { - var o = n._tmpid(); - n._emitLine("var " + o + " = " + s + "[" + r + "][" + a + "];"), n._emitLine('frame.set("' + i + '", ' + s + "[" + r + "][" + a + "]);"), t.set(e.name.children[a].value, o) - })), this._emitLoopBindings(e, s, r, i), this._withScopedSyntax((function() { - n.compile(e.body, t) - })), this._emitLine("}"), this._emitLine("} else {"); - var a = e.name.children, - o = a[0], - c = a[1], - l = this._tmpid(), - h = this._tmpid(); - t.set(o.value, l), t.set(c.value, h), this._emitLine(r + " = -1;"), this._emitLine("var " + i + " = runtime.keys(" + s + ").length;"), this._emitLine("for(var " + l + " in " + s + ") {"), this._emitLine(r + "++;"), this._emitLine("var " + h + " = " + s + "[" + l + "];"), this._emitLine('frame.set("' + o.value + '", ' + l + ");"), this._emitLine('frame.set("' + c.value + '", ' + h + ");"), this._emitLoopBindings(e, s, r, i), this._withScopedSyntax((function() { - n.compile(e.body, t) - })), this._emitLine("}"), this._emitLine("}") - } else { - var u = this._tmpid(); - t.set(e.name.value, u), this._emitLine("var " + i + " = " + s + ".length;"), this._emitLine("for(var " + r + "=0; " + r + " < " + s + ".length; " + r + "++) {"), this._emitLine("var " + u + " = " + s + "[" + r + "];"), this._emitLine('frame.set("' + e.name.value + '", ' + u + ");"), this._emitLoopBindings(e, s, r, i), this._withScopedSyntax((function() { - n.compile(e.body, t) - })), this._emitLine("}") - } - this._emitLine("}"), e.else_ && (this._emitLine("if (!" + i + ") {"), this.compile(e.else_, t), this._emitLine("}")), this._emitLine("frame = frame.pop();") - }, i._compileAsyncLoop = function(e, t, n) { - var r = this, - i = this._tmpid(), - s = this._tmpid(), - a = this._tmpid(), - o = n ? "asyncAll" : "asyncEach"; - if (t = t.push(), this._emitLine("frame = frame.push();"), this._emit("var " + a + " = runtime.fromIterator("), this._compileExpression(e.arr, t), this._emitLine(");"), e.name instanceof hr.Array) { - var c = e.name.children.length; - this._emit("runtime." + o + "(" + a + ", " + c + ", function("), e.name.children.forEach((function(e) { - r._emit(e.value + ",") - })), this._emit(i + "," + s + ",next) {"), e.name.children.forEach((function(e) { - var n = e.value; - t.set(n, n), r._emitLine('frame.set("' + n + '", ' + n + ");") - })) - } else { - var l = e.name.value; - this._emitLine("runtime." + o + "(" + a + ", 1, function(" + l + ", " + i + ", " + s + ",next) {"), this._emitLine('frame.set("' + l + '", ' + l + ");"), t.set(l, l) - } - this._emitLoopBindings(e, a, i, s), this._withScopedSyntax((function() { - var s; - n && (s = r._pushBuffer()), r.compile(e.body, t), r._emitLine("next(" + i + (s ? "," + s : "") + ");"), n && r._popBuffer() - })); - var h = this._tmpid(); - this._emitLine("}, " + this._makeCallback(h)), this._addScopeLevel(), n && this._emitLine(this.buffer + " += " + h + ";"), e.else_ && (this._emitLine("if (!" + a + ".length) {"), this.compile(e.else_, t), this._emitLine("}")), this._emitLine("frame = frame.pop();") - }, i.compileAsyncEach = function(e, t) { - this._compileAsyncLoop(e, t) - }, i.compileAsyncAll = function(e, t) { - this._compileAsyncLoop(e, t, !0) - }, i._compileMacro = function(e, t) { - var n = this, - r = [], - i = null, - s = "macro_" + this._tmpid(), - a = void 0 !== t; - e.args.children.forEach((function(t, s) { - s === e.args.children.length - 1 && t instanceof hr.Dict ? i = t : (n.assertType(t, hr.Symbol), r.push(t)) - })); - var o, c = [].concat(r.map((function(e) { - return "l_" + e.value - })), ["kwargs"]), - l = r.map((function(e) { - return '"' + e.value + '"' - })), - h = (i && i.children || []).map((function(e) { - return '"' + e.key.value + '"' - })); - o = a ? t.push(!0) : new Rr, this._emitLines("var " + s + " = runtime.makeMacro(", "[" + l.join(", ") + "], ", "[" + h.join(", ") + "], ", "function (" + c.join(", ") + ") {", "var callerFrame = frame;", "frame = " + (a ? "frame.push(true);" : "new runtime.Frame();"), "kwargs = kwargs || {};", 'if (Object.prototype.hasOwnProperty.call(kwargs, "caller")) {', 'frame.set("caller", kwargs.caller); }'), r.forEach((function(e) { - n._emitLine('frame.set("' + e.value + '", l_' + e.value + ");"), o.set(e.value, "l_" + e.value) - })), i && i.children.forEach((function(e) { - var t = e.key.value; - n._emit('frame.set("' + t + '", '), n._emit('Object.prototype.hasOwnProperty.call(kwargs, "' + t + '")'), n._emit(' ? kwargs["' + t + '"] : '), n._compileExpression(e.value, o), n._emit(");") - })); - var u = this._pushBuffer(); - return this._withScopedSyntax((function() { - n.compile(e.body, o) - })), this._emitLine("frame = " + (a ? "frame.pop();" : "callerFrame;")), this._emitLine("return new runtime.SafeString(" + u + ");"), this._emitLine("});"), this._popBuffer(), s - }, i.compileMacro = function(e, t) { - var n = this._compileMacro(e), - r = e.name.value; - t.set(r, n), t.parent ? this._emitLine('frame.set("' + r + '", ' + n + ");") : ("_" !== e.name.value.charAt(0) && this._emitLine('context.addExport("' + r + '");'), this._emitLine('context.setVariable("' + r + '", ' + n + ");")) - }, i.compileCaller = function(e, t) { - this._emit("(function (){"); - var n = this._compileMacro(e, t); - this._emit("return " + n + ";})()") - }, i._compileGetTemplate = function(e, t, n, r) { - var i = this._tmpid(), - s = this._templateName(), - a = this._makeCallback(i), - o = n ? "true" : "false", - c = r ? "true" : "false"; - return this._emit("env.getTemplate("), this._compileExpression(e.template, t), this._emitLine(", " + o + ", " + s + ", " + c + ", " + a), i - }, i.compileImport = function(e, t) { - var n = e.target.value, - r = this._compileGetTemplate(e, t, !1, !1); - this._addScopeLevel(), this._emitLine(r + ".getExported(" + (e.withContext ? "context.getVariables(), frame, " : "") + this._makeCallback(r)), this._addScopeLevel(), t.set(n, r), t.parent ? this._emitLine('frame.set("' + n + '", ' + r + ");") : this._emitLine('context.setVariable("' + n + '", ' + r + ");") - }, i.compileFromImport = function(e, t) { - var n = this, - r = this._compileGetTemplate(e, t, !1, !1); - this._addScopeLevel(), this._emitLine(r + ".getExported(" + (e.withContext ? "context.getVariables(), frame, " : "") + this._makeCallback(r)), this._addScopeLevel(), e.names.children.forEach((function(e) { - var i, s, a = n._tmpid(); - e instanceof hr.Pair ? (i = e.key.value, s = e.value.value) : s = i = e.value, n._emitLine("if(Object.prototype.hasOwnProperty.call(" + r + ', "' + i + '")) {'), n._emitLine("var " + a + " = " + r + "." + i + ";"), n._emitLine("} else {"), n._emitLine("cb(new Error(\"cannot import '" + i + "'\")); return;"), n._emitLine("}"), t.set(s, a), t.parent ? n._emitLine('frame.set("' + s + '", ' + a + ");") : n._emitLine('context.setVariable("' + s + '", ' + a + ");") - })) - }, i.compileBlock = function(e) { - var t = this._tmpid(); - this.inBlock || this._emit('(parentTemplate ? function(e, c, f, r, cb) { cb(""); } : '), this._emit('context.getBlock("' + e.name.value + '")'), this.inBlock || this._emit(")"), this._emitLine("(env, context, frame, runtime, " + this._makeCallback(t)), this._emitLine(this.buffer + " += " + t + ";"), this._addScopeLevel() - }, i.compileSuper = function(e, t) { - var n = e.blockName.value, - r = e.symbol.value, - i = this._makeCallback(r); - this._emitLine('context.getSuper(env, "' + n + '", b_' + n + ", frame, runtime, " + i), this._emitLine(r + " = runtime.markSafe(" + r + ");"), this._addScopeLevel(), t.set(r, r) - }, i.compileExtends = function(e, t) { - var n = this._tmpid(), - r = this._compileGetTemplate(e, t, !0, !1); - this._emitLine("parentTemplate = " + r), this._emitLine("for(var " + n + " in parentTemplate.blocks) {"), this._emitLine("context.addBlock(" + n + ", parentTemplate.blocks[" + n + "]);"), this._emitLine("}"), this._addScopeLevel() - }, i.compileInclude = function(e, t) { - this._emitLine("var tasks = [];"), this._emitLine("tasks.push("), this._emitLine("function(callback) {"); - var n = this._compileGetTemplate(e, t, !1, e.ignoreMissing); - this._emitLine("callback(null," + n + ");});"), this._emitLine("});"); - var r = this._tmpid(); - this._emitLine("tasks.push("), this._emitLine("function(template, callback){"), this._emitLine("template.render(context.getVariables(), frame, " + this._makeCallback(r)), this._emitLine("callback(null," + r + ");});"), this._emitLine("});"), this._emitLine("tasks.push("), this._emitLine("function(result, callback){"), this._emitLine(this.buffer + " += result;"), this._emitLine("callback(null);"), this._emitLine("});"), this._emitLine("env.waterfall(tasks, function(){"), this._addScopeLevel() - }, i.compileTemplateData = function(e, t) { - this.compileLiteral(e, t) - }, i.compileCapture = function(e, t) { - var n = this, - r = this.buffer; - this.buffer = "output", this._emitLine("(function() {"), this._emitLine('var output = "";'), this._withScopedSyntax((function() { - n.compile(e.body, t) - })), this._emitLine("return output;"), this._emitLine("})()"), this.buffer = r - }, i.compileOutput = function(e, t) { - var n = this; - e.children.forEach((function(r) { - r instanceof hr.TemplateData ? r.value && (n._emit(n.buffer + " += "), n.compileLiteral(r, t), n._emitLine(";")) : (n._emit(n.buffer + " += runtime.suppressValue("), n.throwOnUndefined && n._emit("runtime.ensureDefined("), n.compile(r, t), n.throwOnUndefined && n._emit("," + e.lineno + "," + e.colno + ")"), n._emit(", env.opts.autoescape);\n")) - })) - }, i.compileRoot = function(e, t) { - var n = this; - t && this.fail("compileRoot: root node can't have frame"), t = new Rr, this._emitFuncBegin(e, "root"), this._emitLine("var parentTemplate = null;"), this._compileChildren(e, t), this._emitLine("if(parentTemplate) {"), this._emitLine("parentTemplate.rootRenderFunc(env, context, frame, runtime, cb);"), this._emitLine("} else {"), this._emitLine("cb(null, " + this.buffer + ");"), this._emitLine("}"), this._emitFuncEnd(!0), this.inBlock = !0; - var r = [], - i = e.findAll(hr.Block); - i.forEach((function(e, t) { - var i = e.name.value; - if (-1 !== r.indexOf(i)) throw new Error('Block "' + i + '" defined more than once.'); - r.push(i), n._emitFuncBegin(e, "b_" + i); - var s = new Rr; - n._emitLine("var frame = frame.push(true);"), n.compile(e.body, s), n._emitFuncEnd() - })), this._emitLine("return {"), i.forEach((function(e, t) { - var r = "b_" + e.name.value; - n._emitLine(r + ": " + r + ",") - })), this._emitLine("root: root\n};") - }, i.compile = function(e, t) { - var n = this["compile" + e.typename]; - n ? n.call(this, e, t) : this.fail("compile: Cannot compile node: " + e.typename, e.lineno, e.colno) - }, i.getCode = function() { - return this.codebuf.join("") - }, r - }(en.Obj), - xr = { - compile: function(e, t, n, r, i) { - void 0 === i && (i = {}); - var s = new Pr(r, i.throwOnUndefined), - a = (n || []).map((function(e) { - return e.preprocess - })).filter((function(e) { - return !!e - })).reduce((function(e, t) { - return t(e) - }), e); - return s.compile(Nr.transform(fr.parse(a, n, i), t, r)), s.getCode() - }, - Compiler: Pr - }, - wr = Ke((function(e) { - var t = e.exports = {}; - - function n(e, t) { - return null == e || !1 === e ? t : e - } - - function r(e) { - return e != e - } - - function i(e) { - var t = (e = n(e, "")).toLowerCase(); - return kr.copySafeness(e, t.charAt(0).toUpperCase() + t.slice(1)) - } - - function s(e) { - if (je.isString(e)) return e.split(""); - if (je.isObject(e)) return je._entries(e || {}).map((function(e) { - return { - key: e[0], - value: e[1] - } - })); - if (je.isArray(e)) return e; - throw new je.TemplateError("list filter: type not iterable") - } - - function a(e) { - return function(t, n, r) { - void 0 === n && (n = "truthy"); - var i = this, - s = i.env.getTest(n); - return je.toArray(t).filter((function(t) { - return s.call(i, t, r) === e - })) - } - } - - function o(e) { - return kr.copySafeness(e, e.replace(/^\s*|\s*$/g, "")) - } - t.abs = Math.abs, t.batch = function(e, t, n) { - var r, i = [], - s = []; - for (r = 0; r < e.length; r++) r % t == 0 && s.length && (i.push(s), s = []), s.push(e[r]); - if (s.length) { - if (n) - for (r = s.length; r < t; r++) s.push(n); - i.push(s) - } - return i - }, t.capitalize = i, t.center = function(e, t) { - if (t = t || 80, (e = n(e, "")).length >= t) return e; - var r = t - e.length, - i = je.repeat(" ", r / 2 - r % 2), - s = je.repeat(" ", r / 2); - return kr.copySafeness(e, i + e + s) - }, t.default = function(e, t, n) { - return n ? e || t : void 0 !== e ? e : t - }, t.dictsort = function(e, t, n) { - if (!je.isObject(e)) throw new je.TemplateError("dictsort filter: val must be an object"); - var r, i = []; - for (var s in e) i.push([s, e[s]]); - if (void 0 === n || "key" === n) r = 0; - else { - if ("value" !== n) throw new je.TemplateError("dictsort filter: You can only sort by either key or value"); - r = 1 - } - return i.sort((function(e, n) { - var i = e[r], - s = n[r]; - return t || (je.isString(i) && (i = i.toUpperCase()), je.isString(s) && (s = s.toUpperCase())), i > s ? 1 : i === s ? 0 : -1 - })), i - }, t.dump = function(e, t) { - return JSON.stringify(e, null, t) - }, t.escape = function(e) { - return e instanceof kr.SafeString ? e : (e = null == e ? "" : e, kr.markSafe(je.escape(e.toString()))) - }, t.safe = function(e) { - return e instanceof kr.SafeString ? e : (e = null == e ? "" : e, kr.markSafe(e.toString())) - }, t.first = function(e) { - return e[0] - }, t.forceescape = function(e) { - return e = null == e ? "" : e, kr.markSafe(je.escape(e.toString())) - }, t.groupby = function(e, t) { - return je.groupBy(e, t, this.env.opts.throwOnUndefined) - }, t.indent = function(e, t, r) { - if ("" === (e = n(e, ""))) return ""; - t = t || 4; - var i = e.split("\n"), - s = je.repeat(" ", t), - a = i.map((function(e, t) { - return 0 !== t || r ? "" + s + e : e - })).join("\n"); - return kr.copySafeness(e, a) - }, t.join = function(e, t, n) { - return t = t || "", n && (e = je.map(e, (function(e) { - return e[n] - }))), e.join(t) - }, t.last = function(e) { - return e[e.length - 1] - }, t.length = function(e) { - var t = n(e, ""); - return void 0 !== t ? "function" == typeof Map && t instanceof Map || "function" == typeof Set && t instanceof Set ? t.size : !je.isObject(t) || t instanceof kr.SafeString ? t.length : je.keys(t).length : 0 - }, t.list = s, t.lower = function(e) { - return (e = n(e, "")).toLowerCase() - }, t.nl2br = function(e) { - return null == e ? "" : kr.copySafeness(e, e.replace(/\r\n|\n/g, "
    \n")) - }, t.random = function(e) { - return e[Math.floor(Math.random() * e.length)] - }, t.reject = a(!1), t.rejectattr = function(e, t) { - return e.filter((function(e) { - return !e[t] - })) - }, t.select = a(!0), t.selectattr = function(e, t) { - return e.filter((function(e) { - return !!e[t] - })) - }, t.replace = function(e, t, n, r) { - var i = e; - if (t instanceof RegExp) return e.replace(t, n); - void 0 === r && (r = -1); - var s = ""; - if ("number" == typeof t) t = "" + t; - else if ("string" != typeof t) return e; - if ("number" == typeof e && (e = "" + e), "string" != typeof e && !(e instanceof kr.SafeString)) return e; - if ("" === t) return s = n + e.split("").join(n) + n, kr.copySafeness(e, s); - var a = e.indexOf(t); - if (0 === r || -1 === a) return e; - for (var o = 0, c = 0; a > -1 && (-1 === r || c < r);) s += e.substring(o, a) + n, o = a + t.length, c++, a = e.indexOf(t, o); - return o < e.length && (s += e.substring(o)), kr.copySafeness(i, s) - }, t.reverse = function(e) { - var t; - return (t = je.isString(e) ? s(e) : je.map(e, (function(e) { - return e - }))).reverse(), je.isString(e) ? kr.copySafeness(e, t.join("")) : t - }, t.round = function(e, t, n) { - t = t || 0; - var r = Math.pow(10, t); - return ("ceil" === n ? Math.ceil : "floor" === n ? Math.floor : Math.round)(e * r) / r - }, t.slice = function(e, t, n) { - for (var r = Math.floor(e.length / t), i = e.length % t, s = [], a = 0, o = 0; o < t; o++) { - var c = a + o * r; - o < i && a++; - var l = a + (o + 1) * r, - h = e.slice(c, l); - n && o >= i && h.push(n), s.push(h) - } - return s - }, t.sum = function(e, t, n) { - return void 0 === n && (n = 0), t && (e = je.map(e, (function(e) { - return e[t] - }))), n + e.reduce((function(e, t) { - return e + t - }), 0) - }, t.sort = kr.makeMacro(["value", "reverse", "case_sensitive", "attribute"], [], (function(e, t, n, r) { - var i = this, - s = je.map(e, (function(e) { - return e - })), - a = je.getAttrGetter(r); - return s.sort((function(e, s) { - var o = r ? a(e) : e, - c = r ? a(s) : s; - if (i.env.opts.throwOnUndefined && r && (void 0 === o || void 0 === c)) throw new TypeError('sort: attribute "' + r + '" resolved to undefined'); - return !n && je.isString(o) && je.isString(c) && (o = o.toLowerCase(), c = c.toLowerCase()), o < c ? t ? 1 : -1 : o > c ? t ? -1 : 1 : 0 - })), s - })), t.string = function(e) { - return kr.copySafeness(e, e) - }, t.striptags = function(e, t) { - var r = o((e = n(e, "")).replace(/<\/?([a-z][a-z0-9]*)\b[^>]*>|/gi, "")), - i = ""; - return i = t ? r.replace(/^ +| +$/gm, "").replace(/ +/g, " ").replace(/(\r\n)/g, "\n").replace(/\n\n\n+/g, "\n\n") : r.replace(/\s+/gi, " "), kr.copySafeness(e, i) - }, t.title = function(e) { - var t = (e = n(e, "")).split(" ").map((function(e) { - return i(e) - })); - return kr.copySafeness(e, t.join(" ")) - }, t.trim = o, t.truncate = function(e, t, r, i) { - var s = e; - if (t = t || 255, (e = n(e, "")).length <= t) return e; - if (r) e = e.substring(0, t); - else { - var a = e.lastIndexOf(" ", t); - 1 === a && (a = t), e = e.substring(0, a) - } - return e += null != i ? i : "...", kr.copySafeness(s, e) - }, t.upper = function(e) { - return (e = n(e, "")).toUpperCase() - }, t.urlencode = function(e) { - var t = encodeURIComponent; - return je.isString(e) ? t(e) : (je.isArray(e) ? e : je._entries(e)).map((function(e) { - var n = e[0], - r = e[1]; - return t(n) + "=" + t(r) - })).join("&") - }; - var c = /^(?:\(|<|<)?(.*?)(?:\.|,|\)|\n|>)?$/, - l = /^[\w.!#$%&'*+\-\/=?\^`{|}~]+@[a-z\d\-]+(\.[a-z\d\-]+)+$/i, - h = /^https?:\/\/.*$/, - u = /^www\./, - p = /\.(?:org|net|com)(?:\:|\/|$)/; - t.urlize = function(e, t, n) { - r(t) && (t = 1 / 0); - var i = !0 === n ? ' rel="nofollow"' : ""; - return e.split(/(\s+)/).filter((function(e) { - return e && e.length - })).map((function(e) { - var n = e.match(c), - r = n ? n[1] : e, - s = r.substr(0, t); - return h.test(r) ? '" + s + "" : u.test(r) ? '" + s + "" : l.test(r) ? '' + r + "" : p.test(r) ? '" + s + "" : e - })).join("") - }, t.wordcount = function(e) { - var t = (e = n(e, "")) ? e.match(/\w+/g) : null; - return t ? t.length : null - }, t.float = function(e, t) { - var n = parseFloat(e); - return r(n) ? t : n - }; - var f = kr.makeMacro(["value", "default", "base"], [], (function(e, t, n) { - void 0 === n && (n = 10); - var i = parseInt(e, n); - return r(i) ? t : i - })); - t.int = f, t.d = t.default, t.e = t.escape - })), - Br = {}; - -function Fr(e, t) { - for (var n = 0, r = e.length - 1; r >= 0; r--) { - var i = e[r]; - "." === i ? e.splice(r, 1) : ".." === i ? (e.splice(r, 1), n++) : n && (e.splice(r, 1), n--) - } - if (t) - for (; n--; n) e.unshift(".."); - return e -} -var Ur = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/, - Hr = function(e) { - return Ur.exec(e).slice(1) - }; - -function Gr() { - for (var e = "", t = !1, n = arguments.length - 1; n >= -1 && !t; n--) { - var r = n >= 0 ? arguments[n] : "/"; - if ("string" != typeof r) throw new TypeError("Arguments to path.resolve must be strings"); - r && (e = r + "/" + e, t = "/" === r.charAt(0)) - } - return (t ? "/" : "") + (e = Fr(jr(e.split("/"), (function(e) { - return !!e - })), !t).join("/")) || "." -} - -function Yr(e) { - var t = qr(e), - n = "/" === Vr(e, -1); - return (e = Fr(jr(e.split("/"), (function(e) { - return !!e - })), !t).join("/")) || t || (e = "."), e && n && (e += "/"), (t ? "/" : "") + e -} - -function qr(e) { - return "/" === e.charAt(0) -} -var Kr = { - extname: function(e) { - return Hr(e)[3] - }, - basename: function(e, t) { - var n = Hr(e)[2]; - return t && n.substr(-1 * t.length) === t && (n = n.substr(0, n.length - t.length)), n - }, - dirname: function(e) { - var t = Hr(e), - n = t[0], - r = t[1]; - return n || r ? (r && (r = r.substr(0, r.length - 1)), n + r) : "." - }, - sep: "/", - delimiter: ":", - relative: function(e, t) { - function n(e) { - for (var t = 0; t < e.length && "" === e[t]; t++); - for (var n = e.length - 1; n >= 0 && "" === e[n]; n--); - return t > n ? [] : e.slice(t, n - t + 1) - } - e = Gr(e).substr(1), t = Gr(t).substr(1); - for (var r = n(e.split("/")), i = n(t.split("/")), s = Math.min(r.length, i.length), a = s, o = 0; o < s; o++) - if (r[o] !== i[o]) { - a = o; - break - } var c = []; - for (o = a; o < r.length; o++) c.push(".."); - return (c = c.concat(i.slice(a))).join("/") - }, - join: function() { - var e = Array.prototype.slice.call(arguments, 0); - return Yr(jr(e, (function(e, t) { - if ("string" != typeof e) throw new TypeError("Arguments to path.join must be strings"); - return e - })).join("/")) - }, - isAbsolute: qr, - normalize: Yr, - resolve: Gr -}; - -function jr(e, t) { - if (e.filter) return e.filter(t); - for (var n = [], r = 0; r < e.length; r++) t(e[r], r, e) && n.push(e[r]); - return n -} -var Vr = "b" === "ab".substr(-1) ? function(e, t, n) { - return e.substr(t, n) -} : function(e, t, n) { - return t < 0 && (t = e.length + t), e.substr(t, n) -}; - -function Wr(e, t) { - return Wr = Object.setPrototypeOf || function(e, t) { - return e.__proto__ = t, e - }, Wr(e, t) -} -var Qr = function(e) { - var t, n; - - function r() { - return e.apply(this, arguments) || this - } - n = e, (t = r).prototype = Object.create(n.prototype), t.prototype.constructor = t, Wr(t, n); - var i = r.prototype; - return i.resolve = function(e, t) { - return Kr.resolve(Kr.dirname(e), t) - }, i.isRelative = function(e) { - return 0 === e.indexOf("./") || 0 === e.indexOf("../") - }, r -}(en.EmitterObj); - -function Xr(e, t) { - return Xr = Object.setPrototypeOf || function(e, t) { - return e.__proto__ = t, e - }, Xr(e, t) -} -var $r = function(e) { - var t, n; - - function r(t) { - var n; - return (n = e.call(this) || this).precompiled = t || {}, n - } - return n = e, (t = r).prototype = Object.create(n.prototype), t.prototype.constructor = t, Xr(t, n), r.prototype.getSource = function(e) { - return this.precompiled[e] ? { - src: { - type: "code", - obj: this.precompiled[e] - }, - path: e - } : null - }, r -}(Qr); - -function zr(e, t) { - e.prototype = Object.create(t.prototype), e.prototype.constructor = e, Jr(e, t) -} - -function Jr(e, t) { - return Jr = Object.setPrototypeOf || function(e, t) { - return e.__proto__ = t, e - }, Jr(e, t) -} -var Zr = { - PrecompiledLoader: $r - }.PrecompiledLoader, - ei = function(e) { - function t(t, n) { - var r; - return n = n || {}, (r = e.call(this) || this).pathsToNames = {}, r.noCache = !!n.noCache, t ? (t = Array.isArray(t) ? t : [t], r.searchPaths = t.map(Kr.normalize)) : r.searchPaths = ["."], r - } - return zr(t, e), t.prototype.getSource = function(e) { - for (var t = null, n = this.searchPaths, r = 0; r < n.length; r++) { - var i = Kr.resolve(n[r]), - s = Kr.resolve(n[r], e); - if (0 === s.indexOf(i) && Br.existsSync(s)) { - t = s; - break - } - } - if (!t) return null; - this.pathsToNames[t] = e; - var a = { - src: Br.readFileSync(t, "utf-8"), - path: t, - noCache: this.noCache - }; - return this.emit("load", e, a), a - }, t - }(Qr), - ti = { - FileSystemLoader: ei, - PrecompiledLoader: Zr, - NodeResolveLoader: function(e) { - function t(t) { - var n; - return t = t || {}, (n = e.call(this) || this).pathsToNames = {}, n.noCache = !!t.noCache, n - } - return zr(t, e), t.prototype.getSource = function(e) { - if (/^\.?\.?(\/|\\)/.test(e)) return null; - if (/^[A-Z]:/.test(e)) return null; - var t; - try { - t = Ye.resolve(e) - } catch (e) { - return null - } - this.pathsToNames[t] = e; - var n = { - src: Br.readFileSync(t, "utf-8"), - path: t, - noCache: this.noCache - }; - return this.emit("load", e, n), n - }, t - }(Qr) - }, - ni = Ke((function(e, t) { - var n = kr.SafeString; - t.callable = function(e) { - return "function" == typeof e - }, t.defined = function(e) { - return void 0 !== e - }, t.divisibleby = function(e, t) { - return e % t == 0 - }, t.escaped = function(e) { - return e instanceof n - }, t.equalto = function(e, t) { - return e === t - }, t.eq = t.equalto, t.sameas = t.equalto, t.even = function(e) { - return e % 2 == 0 - }, t.falsy = function(e) { - return !e - }, t.ge = function(e, t) { - return e >= t - }, t.greaterthan = function(e, t) { - return e > t - }, t.gt = t.greaterthan, t.le = function(e, t) { - return e <= t - }, t.lessthan = function(e, t) { - return e < t - }, t.lt = t.lessthan, t.lower = function(e) { - return e.toLowerCase() === e - }, t.ne = function(e, t) { - return e !== t - }, t.null = function(e) { - return null === e - }, t.number = function(e) { - return "number" == typeof e - }, t.odd = function(e) { - return e % 2 == 1 - }, t.string = function(e) { - return "string" == typeof e - }, t.truthy = function(e) { - return !!e - }, t.undefined = function(e) { - return void 0 === e - }, t.upper = function(e) { - return e.toUpperCase() === e - }, t.iterable = function(e) { - return "undefined" != typeof Symbol ? !!e[Symbol.iterator] : Array.isArray(e) || "string" == typeof e - }, t.mapping = function(e) { - var t = null != e && "object" == typeof e && !Array.isArray(e); - return Set ? t && !(e instanceof Set) : t - } - })); - -function ri(e) { - var t = -1; - return { - current: null, - reset: function() { - t = -1, this.current = null - }, - next: function() { - return ++t >= e.length && (t = 0), this.current = e[t], this.current - } - } -} -ni.callable, ni.defined, ni.divisibleby, ni.escaped, ni.equalto, ni.eq, ni.sameas, ni.even, ni.falsy, ni.ge, ni.greaterthan, ni.gt, ni.le, ni.lessthan, ni.lt, ni.lower, ni.ne, ni.number, ni.odd, ni.string, ni.truthy, ni.undefined, ni.upper, ni.iterable, ni.mapping; -var ii = function() { - return { - range: function(e, t, n) { - void 0 === t ? (t = e, e = 0, n = 1) : n || (n = 1); - var r = []; - if (n > 0) - for (var i = e; i < t; i += n) r.push(i); - else - for (var s = e; s > t; s += n) r.push(s); - return r - }, - cycler: function() { - return ri(Array.prototype.slice.call(arguments)) - }, - joiner: function(e) { - return function(e) { - e = e || ","; - var t = !0; - return function() { - var n = t ? "" : e; - return t = !1, n - } - }(e) - } - } -}; - -function si(e, t) { - e.prototype = Object.create(t.prototype), e.prototype.constructor = e, ai(e, t) -} - -function ai(e, t) { - return ai = Object.setPrototypeOf || function(e, t) { - return e.__proto__ = t, e - }, ai(e, t) -} -var oi = ti.FileSystemLoader, - ci = ti.WebLoader, - li = ti.PrecompiledLoader, - hi = en.Obj, - ui = en.EmitterObj, - pi = kr.handleError, - fi = kr.Frame; - -function di(e, t, n) { - Gt((function() { - e(t, n) - })) -} -var Ei = { - type: "code", - obj: { - root: function(e, t, n, r, i) { - try { - i(null, "") - } catch (e) { - i(pi(e, null, null)) - } - } - } - }, - mi = function(e) { - function t() { - return e.apply(this, arguments) || this - } - si(t, e); - var n = t.prototype; - return n.init = function(e, t) { - var n = this; - t = this.opts = t || {}, this.opts.dev = !!t.dev, this.opts.autoescape = null == t.autoescape || t.autoescape, this.opts.throwOnUndefined = !!t.throwOnUndefined, this.opts.trimBlocks = !!t.trimBlocks, this.opts.lstripBlocks = !!t.lstripBlocks, this.loaders = [], e ? this.loaders = je.isArray(e) ? e : [e] : oi ? this.loaders = [new oi("views")] : ci && (this.loaders = [new ci("/views")]), "undefined" != typeof window && window.jinja2Precompiled && this.loaders.unshift(new li(window.jinja2Precompiled)), this._initLoaders(), this.globals = ii(), this.filters = {}, this.tests = {}, this.asyncFilters = [], this.extensions = {}, this.extensionsList = [], je._entries(wr).forEach((function(e) { - var t = e[0], - r = e[1]; - return n.addFilter(t, r) - })), je._entries(ni).forEach((function(e) { - var t = e[0], - r = e[1]; - return n.addTest(t, r) - })) - }, n._initLoaders = function() { - var e = this; - this.loaders.forEach((function(t) { - t.cache = {}, "function" == typeof t.on && (t.on("update", (function(n, r) { - t.cache[n] = null, e.emit("update", n, r, t) - })), t.on("load", (function(n, r) { - e.emit("load", n, r, t) - }))) - })) - }, n.invalidateCache = function() { - this.loaders.forEach((function(e) { - e.cache = {} - })) - }, n.addExtension = function(e, t) { - return t.__name = e, this.extensions[e] = t, this.extensionsList.push(t), this - }, n.removeExtension = function(e) { - var t = this.getExtension(e); - t && (this.extensionsList = je.without(this.extensionsList, t), delete this.extensions[e]) - }, n.getExtension = function(e) { - return this.extensions[e] - }, n.hasExtension = function(e) { - return !!this.extensions[e] - }, n.addGlobal = function(e, t) { - return this.globals[e] = t, this - }, n.getGlobal = function(e) { - if (void 0 === this.globals[e]) throw new Error("global not found: " + e); - return this.globals[e] - }, n.addFilter = function(e, t, n) { - var r = t; - return n && this.asyncFilters.push(e), this.filters[e] = r, this - }, n.getFilter = function(e) { - if (!this.filters[e]) throw new Error("filter not found: " + e); - return this.filters[e] - }, n.addTest = function(e, t) { - return this.tests[e] = t, this - }, n.getTest = function(e) { - if (!this.tests[e]) throw new Error("test not found: " + e); - return this.tests[e] - }, n.resolveTemplate = function(e, t, n) { - return !(!e.isRelative || !t) && e.isRelative(n) && e.resolve ? e.resolve(t, n) : n - }, n.getTemplate = function(e, t, n, r, i) { - var s, a = this, - o = this, - c = null; - if (e && e.raw && (e = e.raw), je.isFunction(n) && (i = n, n = null, t = t || !1), je.isFunction(t) && (i = t, t = !1), e instanceof _i) c = e; - else { - if ("string" != typeof e) throw new Error("template names must be a string: " + e); - for (var l = 0; l < this.loaders.length; l++) { - var h = this.loaders[l]; - if (c = h.cache[this.resolveTemplate(h, n, e)]) break - } - } - if (c) return t && c.compile(), i ? void i(null, c) : c; - return je.asyncIter(this.loaders, (function(t, r, i, s) { - function a(e, n) { - e ? s(e) : n ? (n.loader = t, s(null, n)) : i() - } - e = o.resolveTemplate(t, n, e), t.async ? t.getSource(e, a) : a(null, t.getSource(e)) - }), (function(n, o) { - if (o || n || r || (n = new Error("template not found: " + e)), n) { - if (i) return void i(n); - throw n - } - var c; - o ? (c = new _i(o.src, a, o.path, t), o.noCache || (o.loader.cache[e] = c)) : c = new _i(Ei, a, "", t), i ? i(null, c) : s = c - })), s - }, n.express = function(e) { - return function(e, t) { - function n(e, t) { - if (this.name = e, this.path = e, this.defaultEngine = t.defaultEngine, this.ext = Kr.extname(e), !this.ext && !this.defaultEngine) throw new Error("No default engine was specified and no extension was provided."); - this.ext || (this.name += this.ext = ("." !== this.defaultEngine[0] ? "." : "") + this.defaultEngine) - } - return n.prototype.render = function(t, n) { - e.render(this.name, t, n) - }, t.set("view", n), t.set("jinja2Env", e), e - }(this, e) - }, n.render = function(e, t, n) { - je.isFunction(t) && (n = t, t = null); - var r = null; - return this.getTemplate(e, (function(e, i) { - if (e && n) di(n, e); - else { - if (e) throw e; - r = i.render(t, n) - } - })), r - }, n.renderString = function(e, t, n, r) { - return je.isFunction(n) && (r = n, n = {}), new _i(e, this, (n = n || {}).path).render(t, r) - }, n.waterfall = function(e, t, n) { - return qt(e, t, n) - }, t - }(ui), - Ti = function(e) { - function t() { - return e.apply(this, arguments) || this - } - si(t, e); - var n = t.prototype; - return n.init = function(e, t, n) { - var r = this; - this.env = n || new mi, this.ctx = je.extend({}, e), this.blocks = {}, this.exported = [], je.keys(t).forEach((function(e) { - r.addBlock(e, t[e]) - })) - }, n.lookup = function(e) { - return e in this.env.globals && !(e in this.ctx) ? this.env.globals[e] : this.ctx[e] - }, n.setVariable = function(e, t) { - this.ctx[e] = t - }, n.getVariables = function() { - return this.ctx - }, n.addBlock = function(e, t) { - return this.blocks[e] = this.blocks[e] || [], this.blocks[e].push(t), this - }, n.getBlock = function(e) { - if (!this.blocks[e]) throw new Error('unknown block "' + e + '"'); - return this.blocks[e][0] - }, n.getSuper = function(e, t, n, r, i, s) { - var a = je.indexOf(this.blocks[t] || [], n), - o = this.blocks[t][a + 1]; - if (-1 === a || !o) throw new Error('no super block available for "' + t + '"'); - o(e, this, r, i, s) - }, n.addExport = function(e) { - this.exported.push(e) - }, n.getExported = function() { - var e = this, - t = {}; - return this.exported.forEach((function(n) { - t[n] = e.ctx[n] - })), t - }, t - }(hi), - _i = function(e) { - function t() { - return e.apply(this, arguments) || this - } - si(t, e); - var n = t.prototype; - return n.init = function(e, t, n, r) { - if (this.env = t || new mi, je.isObject(e)) switch (e.type) { - case "code": - this.tmplProps = e.obj; - break; - case "string": - this.tmplStr = e.obj; - break; - default: - throw new Error("Unexpected template object type " + e.type + "; expected 'code', or 'string'") - } else { - if (!je.isString(e)) throw new Error("src must be a string or an object describing the source"); - this.tmplStr = e - } - if (this.path = n, r) try { - this._compile() - } catch (e) { - throw je._prettifyError(this.path, this.env.opts.dev, e) - } else this.compiled = !1 - }, n.render = function(e, t, n) { - var r = this; - "function" == typeof e ? (n = e, e = {}) : "function" == typeof t && (n = t, t = null); - var i = !t; - try { - this.compile() - } catch (e) { - var s = je._prettifyError(this.path, this.env.opts.dev, e); - if (n) return di(n, s); - throw s - } - var a = new Ti(e || {}, this.blocks, this.env), - o = t ? t.push(!0) : new fi; - o.topLevel = !0; - var c = null, - l = !1; - return this.rootRenderFunc(this.env, a, o, kr, (function(e, t) { - if (!l || !n || void 0 === t) - if (e && (e = je._prettifyError(r.path, r.env.opts.dev, e), l = !0), n) i ? di(n, e, t) : n(e, t); - else { - if (e) throw e; - c = t - } - })), c - }, n.getExported = function(e, t, n) { - "function" == typeof e && (n = e, e = {}), "function" == typeof t && (n = t, t = null); - try { - this.compile() - } catch (e) { - if (n) return n(e); - throw e - } - var r = t ? t.push() : new fi; - r.topLevel = !0; - var i = new Ti(e || {}, this.blocks, this.env); - this.rootRenderFunc(this.env, i, r, kr, (function(e) { - e ? n(e, null) : n(null, i.getExported()) - })) - }, n.compile = function() { - this.compiled || this._compile() - }, n._compile = function() { - var e; - if (this.tmplProps) e = this.tmplProps; - else { - var t = xr.compile(this.tmplStr, this.env.asyncFilters, this.env.extensionsList, this.path, this.env.opts); - e = new Function(t)() - } - this.blocks = this._getBlocks(e), this.rootRenderFunc = e.root, this.compiled = !0 - }, n._getBlocks = function(e) { - var t = {}; - return je.keys(e).forEach((function(n) { - "b_" === n.slice(0, 2) && (t[n.slice(2)] = e[n]) - })), t - }, t - }(hi), - Ai = { - Environment: mi, - Template: _i - }; -je._prettifyError; -var gi, Ni = Ai.Environment; - -function Ci(e, t) { - var n; - return t = t || {}, je.isObject(e) && (t = e, e = null), ti.FileSystemLoader ? n = new ti.FileSystemLoader(e, { - watch: t.watch, - noCache: t.noCache - }) : ti.WebLoader && (n = new ti.WebLoader(e, { - useCache: t.web && t.web.useCache, - async: t.web && t.web.async - })), gi = new Ni(n, t), t && t.express && gi.express(t.express), gi -} -ti.FileSystemLoader, ti.NodeResolveLoader, ti.PrecompiledLoader, ti.WebLoader; -var Ii = function(e, t, n) { - return gi || Ci(), gi.renderString(e, t, n) - }, - Si = function() { - return Si = Object.assign || function(e) { - for (var t, n = 1, r = arguments.length; n < r; n++) - for (var i in t = arguments[n]) Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]); - return e - }, Si.apply(this, arguments) - }; - -function bi(e, t, n) { - return e ? e(null != t ? t : e._root.children, null, void 0, n).toString() : "" -} - -function Oi(e, t) { - return bi(this, function(e, t) { - return !t && "object" == typeof e && null != e && !("length" in e) && !("type" in e) - }(e) ? void(t = e) : e, Si(Si(Si({}, n), null == this ? void 0 : this._options), i(null != t ? t : {}))) -} - -function yi(e) { - return bi(this, e, Si(Si({}, this._options), { - xmlMode: !0 - })) -} - -function Li(e) { - for (var t = e || (this ? this.root() : []), n = "", r = 0; r < t.length; r++) n += z(t[r]); - return n -} - -function ki(e, t, r) { - if (void 0 === r && (r = "boolean" == typeof t && t), !e || "string" != typeof e) return null; - "boolean" == typeof t && (r = t); - var i = this.load(e, n, !1); - return r || i("script").remove(), i.root()[0].children.slice() -} - -function vi() { - return this(this._root) -} - -function Di(e, t) { - if (t === e) return !1; - for (var n = t; n && n !== n.parent;) - if ((n = n.parent) === e) return !0; - return !1 -} - -function Ri(e, t) { - if (Mi(e) && Mi(t)) { - for (var n = e.length, r = +t.length, i = 0; i < r; i++) e[n++] = t[i]; - return e.length = n, e - } -} - -function Mi(e) { - if (Array.isArray(e)) return !0; - if ("object" != typeof e || !Object.prototype.hasOwnProperty.call(e, "length") || "number" != typeof e.length || e.length < 0) return !1; - for (var t = 0; t < e.length; t++) - if (!(t in e)) return !1; - return !0 -} -var Pi, xi = Object.freeze({ - __proto__: null, - html: Oi, - xml: yi, - text: Li, - parseHTML: ki, - root: vi, - contains: Di, - merge: Ri, - jp: function(e, t) { - return He({ - path: e, - json: t - }) - }, - jpo: function(e) { - return He(e) - }, - jinja2: function(e, t) { - return Ii(e, t) - } -}); - -function wi(e) { - return null != e.cheerio -} - -function Bi(e, t) { - for (var n = e.length, r = 0; r < n; r++) t(e[r], r); - return e -} - -function Fi(e) { - var t = "length" in e ? Array.prototype.map.call(e, (function(e) { - return v(e, !0) - })) : [v(e, !0)], - n = new N(t); - return t.forEach((function(e) { - e.parent = n - })), t -} - -function Ui(e) { - var t = e.indexOf("<"); - if (t < 0 || t > e.length - 3) return !1; - var n = e.charCodeAt(t + 1); - return (n >= Pi.LowerA && n <= Pi.LowerZ || n >= Pi.UpperA && n <= Pi.UpperZ || n === Pi.Exclamation) && e.includes(">", t + 2) -}! function(e) { - e[e.LowerA = 97] = "LowerA", e[e.LowerZ = 122] = "LowerZ", e[e.UpperA = 65] = "UpperA", e[e.UpperZ = 90] = "UpperZ", e[e.Exclamation = 33] = "Exclamation" -}(Pi || (Pi = {})); -var Hi = Object.prototype.hasOwnProperty, - Gi = /\s+/, - Yi = { - null: null, - true: !0, - false: !1 - }, - qi = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i, - Ki = /^{[^]*}$|^\[[^]*]$/; - -function ji(e, t, n) { - var r; - if (e && I(e)) return null !== (r = e.attribs) && void 0 !== r || (e.attribs = {}), t ? Hi.call(e.attribs, t) ? !n && qi.test(t) ? t : e.attribs[t] : "option" === e.name && "value" === t ? Li(e.children) : "input" !== e.name || "radio" !== e.attribs.type && "checkbox" !== e.attribs.type || "value" !== t ? void 0 : "on" : e.attribs -} - -function Vi(e, t, n) { - null === n ? zi(e, t) : e.attribs[t] = "".concat(n) -} - -function Wi(e, t, n) { - return t in e ? e[t] : !n && qi.test(t) ? void 0 !== ji(e, t, !1) : ji(e, t, n) -} - -function Qi(e, t, n, r) { - t in e ? e[t] = n : Vi(e, t, !r && qi.test(t) ? n ? "" : null : "".concat(n)) -} - -function Xi(e, t, n) { - var r, i = e; - null !== (r = i.data) && void 0 !== r || (i.data = {}), "object" == typeof t ? Object.assign(i.data, t) : "string" == typeof t && void 0 !== n && (i.data[t] = n) -} - -function $i(e, t) { - var n, r, i, s; - null == t ? r = (n = Object.keys(e.attribs).filter((function(e) { - return e.startsWith("data-") - }))).map((function(e) { - return e.slice("data-".length).replace(/[_.-](\w|$)/g, (function(e, t) { - return t.toUpperCase() - })) - })) : (n = ["data-" + (s = t, s.replace(/[A-Z]/g, "-$&").toLowerCase())], r = [t]); - for (var a = 0; a < n.length; ++a) { - var o = n[a], - c = r[a]; - if (Hi.call(e.attribs, o) && !Hi.call(e.data, c)) { - if (i = e.attribs[o], Hi.call(Yi, i)) i = Yi[i]; - else if (i === String(Number(i))) i = Number(i); - else if (Ki.test(i)) try { - i = JSON.parse(i) - } catch (e) {} - e.data[c] = i - } - } - return null == t ? e.data : i -} - -function zi(e, t) { - e.attribs && Hi.call(e.attribs, t) && delete e.attribs[t] -} - -function Ji(e) { - return e ? e.trim().split(Gi) : [] -} -var Zi, es, ts = Object.freeze({ - __proto__: null, - attr: function(e, t) { - if ("object" == typeof e || void 0 !== t) { - if ("function" == typeof t) { - if ("string" != typeof e) throw new Error("Bad combination of arguments."); - return Bi(this, (function(n, r) { - I(n) && Vi(n, e, t.call(n, r, n.attribs[e])) - })) - } - return Bi(this, (function(n) { - I(n) && ("object" == typeof e ? Object.keys(e).forEach((function(t) { - var r = e[t]; - Vi(n, t, r) - })) : Vi(n, e, t)) - })) - } - return arguments.length > 1 ? this : ji(this[0], e, this.options.xmlMode) - }, - prop: function(e, t) { - var n, r = this; - if ("string" == typeof e && void 0 === t) { - var i = this[0]; - if (!i || !I(i)) return; - switch (e) { - case "style": - var s = this.css(), - a = Object.keys(s); - return a.forEach((function(e, t) { - s[t] = e - })), s.length = a.length, s; - case "tagName": - case "nodeName": - return i.name.toUpperCase(); - case "href": - case "src": - var o = null === (n = i.attribs) || void 0 === n ? void 0 : n[e]; - return "undefined" == typeof URL || ("href" !== e || "a" !== i.tagName && "link" !== i.name) && ("src" !== e || "img" !== i.tagName && "iframe" !== i.tagName && "audio" !== i.tagName && "video" !== i.tagName && "source" !== i.tagName) || void 0 === o || !this.options.baseURI ? o : new URL(o, this.options.baseURI).href; - case "innerText": - return J(i); - case "textContent": - return z(i); - case "outerHTML": - return this.clone().wrap("").parent().html(); - case "innerHTML": - return this.html(); - default: - return Wi(i, e, this.options.xmlMode) - } - } - if ("object" == typeof e || void 0 !== t) { - if ("function" == typeof t) { - if ("object" == typeof e) throw new Error("Bad combination of arguments."); - return Bi(this, (function(n, i) { - I(n) && Qi(n, e, t.call(n, i, Wi(n, e, r.options.xmlMode)), r.options.xmlMode) - })) - } - return Bi(this, (function(n) { - I(n) && ("object" == typeof e ? Object.keys(e).forEach((function(t) { - var i = e[t]; - Qi(n, t, i, r.options.xmlMode) - })) : Qi(n, e, t, r.options.xmlMode)) - })) - } - }, - data: function(e, t) { - var n, r = this[0]; - if (r && I(r)) { - var i = r; - return null !== (n = i.data) && void 0 !== n || (i.data = {}), e ? "object" == typeof e || void 0 !== t ? (Bi(this, (function(n) { - I(n) && ("object" == typeof e ? Xi(n, e) : Xi(n, e, t)) - })), this) : Hi.call(i.data, e) ? i.data[e] : $i(i, e) : $i(i) - } - }, - val: function(e) { - var t = 0 === arguments.length, - n = this[0]; - if (!n || !I(n)) return t ? void 0 : this; - switch (n.name) { - case "textarea": - return this.text(e); - case "select": - var r = this.find("option:selected"); - if (!t) { - if (null == this.attr("multiple") && "object" == typeof e) return this; - this.find("option").removeAttr("selected"); - for (var i = "object" != typeof e ? [e] : e, s = 0; s < i.length; s++) this.find('option[value="'.concat(i[s], '"]')).attr("selected", ""); - return this - } - return this.attr("multiple") ? r.toArray().map((function(e) { - return Li(e.children) - })) : r.attr("value"); - case "input": - case "option": - return t ? this.attr("value") : this.attr("value", e) - } - }, - removeAttr: function(e) { - for (var t = Ji(e), n = function(e) { - Bi(r, (function(n) { - I(n) && zi(n, t[e]) - })) - }, r = this, i = 0; i < t.length; i++) n(i); - return this - }, - hasClass: function(e) { - return this.toArray().some((function(t) { - var n = I(t) && t.attribs.class, - r = -1; - if (n && e.length) - for (; - (r = n.indexOf(e, r + 1)) > -1;) { - var i = r + e.length; - if ((0 === r || Gi.test(n[r - 1])) && (i === n.length || Gi.test(n[i]))) return !0 - } - return !1 - })) - }, - addClass: function e(t) { - if ("function" == typeof t) return Bi(this, (function(n, r) { - if (I(n)) { - var i = n.attribs.class || ""; - e.call([n], t.call(n, r, i)) - } - })); - if (!t || "string" != typeof t) return this; - for (var n = t.split(Gi), r = this.length, i = 0; i < r; i++) { - var s = this[i]; - if (I(s)) { - var a = ji(s, "class", !1); - if (a) { - for (var o = " ".concat(a, " "), c = 0; c < n.length; c++) { - var l = "".concat(n[c], " "); - o.includes(" ".concat(l)) || (o += l) - } - Vi(s, "class", o.trim()) - } else Vi(s, "class", n.join(" ").trim()) - } - } - return this - }, - removeClass: function e(t) { - if ("function" == typeof t) return Bi(this, (function(n, r) { - I(n) && e.call([n], t.call(n, r, n.attribs.class || "")) - })); - var n = Ji(t), - r = n.length, - i = 0 === arguments.length; - return Bi(this, (function(e) { - if (I(e)) - if (i) e.attribs.class = ""; - else { - for (var t = Ji(e.attribs.class), s = !1, a = 0; a < r; a++) { - var o = t.indexOf(n[a]); - o >= 0 && (t.splice(o, 1), s = !0, a--) - } - s && (e.attribs.class = t.join(" ")) - } - })) - }, - toggleClass: function e(t, n) { - if ("function" == typeof t) return Bi(this, (function(r, i) { - I(r) && e.call([r], t.call(r, i, r.attribs.class || "", n), n) - })); - if (!t || "string" != typeof t) return this; - for (var r = t.split(Gi), i = r.length, s = "boolean" == typeof n ? n ? 1 : -1 : 0, a = this.length, o = 0; o < a; o++) { - var c = this[o]; - if (I(c)) { - for (var l = Ji(c.attribs.class), h = 0; h < i; h++) { - var u = l.indexOf(r[h]); - s >= 0 && u < 0 ? l.push(r[h]) : s <= 0 && u >= 0 && l.splice(u, 1) - } - c.attribs.class = l.join(" ") - } - } - return this - } -}); -! function(e) { - e.Attribute = "attribute", e.Pseudo = "pseudo", e.PseudoElement = "pseudo-element", e.Tag = "tag", e.Universal = "universal", e.Adjacent = "adjacent", e.Child = "child", e.Descendant = "descendant", e.Parent = "parent", e.Sibling = "sibling", e.ColumnCombinator = "column-combinator" -}(Zi || (Zi = {})), -function(e) { - e.Any = "any", e.Element = "element", e.End = "end", e.Equals = "equals", e.Exists = "exists", e.Hyphen = "hyphen", e.Not = "not", e.Start = "start" -}(es || (es = {})); -const ns = /^[^\\#]?(?:\\(?:[\da-f]{1,6}\s?|.)|[\w\-\u00b0-\uFFFF])+/, - rs = /\\([\da-f]{1,6}\s?|(\s)|.)/gi, - is = new Map([ - [126, es.Element], - [94, es.Start], - [36, es.End], - [42, es.Any], - [33, es.Not], - [124, es.Hyphen] - ]), - ss = new Set(["has", "not", "matches", "is", "where", "host", "host-context"]); - -function as(e) { - switch (e.type) { - case Zi.Adjacent: - case Zi.Child: - case Zi.Descendant: - case Zi.Parent: - case Zi.Sibling: - case Zi.ColumnCombinator: - return !0; - default: - return !1 - } -} -const os = new Set(["contains", "icontains"]); - -function cs(e, t, n) { - const r = parseInt(t, 16) - 65536; - return r != r || n ? t : r < 0 ? String.fromCharCode(r + 65536) : String.fromCharCode(r >> 10 | 55296, 1023 & r | 56320) -} - -function ls(e) { - return e.replace(rs, cs) -} - -function hs(e) { - return 39 === e || 34 === e -} - -function us(e) { - return 32 === e || 9 === e || 10 === e || 12 === e || 13 === e -} - -function ps(e) { - const t = [], - n = fs(t, `${e}`, 0); - if (n < e.length) throw new Error(`Unmatched selector: ${e.slice(n)}`); - return t -} - -function fs(e, t, n) { - let r = []; - - function i(e) { - const r = t.slice(n + e).match(ns); - if (!r) throw new Error(`Expected name, found ${t.slice(n)}`); - const [i] = r; - return n += e + i.length, ls(i) - } - - function s(e) { - for (n += e; n < t.length && us(t.charCodeAt(n));) n++ - } - - function a() { - const e = n += 1; - let r = 1; - for (; r > 0 && n < t.length; n++) 40 !== t.charCodeAt(n) || o(n) ? 41 !== t.charCodeAt(n) || o(n) || r-- : r++; - if (r) throw new Error("Parenthesis not matched"); - return ls(t.slice(e, n - 1)) - } - - function o(e) { - let n = 0; - for (; 92 === t.charCodeAt(--e);) n++; - return 1 == (1 & n) - } - - function c() { - if (r.length > 0 && as(r[r.length - 1])) throw new Error("Did not expect successive traversals.") - } - - function l(e) { - r.length > 0 && r[r.length - 1].type === Zi.Descendant ? r[r.length - 1].type = e : (c(), r.push({ - type: e - })) - } - - function h(e, t) { - r.push({ - type: Zi.Attribute, - name: e, - action: t, - value: i(1), - namespace: null, - ignoreCase: "quirks" - }) - } - - function u() { - if (r.length && r[r.length - 1].type === Zi.Descendant && r.pop(), 0 === r.length) throw new Error("Empty sub-selector"); - e.push(r) - } - if (s(0), t.length === n) return n; - e: for (; n < t.length;) { - const e = t.charCodeAt(n); - switch (e) { - case 32: - case 9: - case 10: - case 12: - case 13: - 0 !== r.length && r[0].type === Zi.Descendant || (c(), r.push({ - type: Zi.Descendant - })), s(1); - break; - case 62: - l(Zi.Child), s(1); - break; - case 60: - l(Zi.Parent), s(1); - break; - case 126: - l(Zi.Sibling), s(1); - break; - case 43: - l(Zi.Adjacent), s(1); - break; - case 46: - h("class", es.Element); - break; - case 35: - h("id", es.Equals); - break; - case 91: { - let e; - s(1); - let a = null; - 124 === t.charCodeAt(n) ? e = i(1) : t.startsWith("*|", n) ? (a = "*", e = i(2)) : (e = i(0), 124 === t.charCodeAt(n) && 61 !== t.charCodeAt(n + 1) && (a = e, e = i(1))), s(0); - let c = es.Exists; - const l = is.get(t.charCodeAt(n)); - if (l) { - if (c = l, 61 !== t.charCodeAt(n + 1)) throw new Error("Expected `=`"); - s(2) - } else 61 === t.charCodeAt(n) && (c = es.Equals, s(1)); - let h = "", - u = null; - if ("exists" !== c) { - if (hs(t.charCodeAt(n))) { - const e = t.charCodeAt(n); - let r = n + 1; - for (; r < t.length && (t.charCodeAt(r) !== e || o(r));) r += 1; - if (t.charCodeAt(r) !== e) throw new Error("Attribute value didn't end"); - h = ls(t.slice(n + 1, r)), n = r + 1 - } else { - const e = n; - for (; n < t.length && (!us(t.charCodeAt(n)) && 93 !== t.charCodeAt(n) || o(n));) n += 1; - h = ls(t.slice(e, n)) - } - s(0); - const e = 32 | t.charCodeAt(n); - 115 === e ? (u = !1, s(1)) : 105 === e && (u = !0, s(1)) - } - if (93 !== t.charCodeAt(n)) throw new Error("Attribute selector didn't terminate"); - n += 1; - const p = { - type: Zi.Attribute, - name: e, - action: c, - value: h, - namespace: a, - ignoreCase: u - }; - r.push(p); - break - } - case 58: { - if (58 === t.charCodeAt(n + 1)) { - r.push({ - type: Zi.PseudoElement, - name: i(2).toLowerCase(), - data: 40 === t.charCodeAt(n) ? a() : null - }); - continue - } - const e = i(1).toLowerCase(); - let s = null; - if (40 === t.charCodeAt(n)) - if (ss.has(e)) { - if (hs(t.charCodeAt(n + 1))) throw new Error(`Pseudo-selector ${e} cannot be quoted`); - if (s = [], n = fs(s, t, n + 1), 41 !== t.charCodeAt(n)) throw new Error(`Missing closing parenthesis in :${e} (${t})`); - n += 1 - } else { - if (s = a(), os.has(e)) { - const e = s.charCodeAt(0); - e === s.charCodeAt(s.length - 1) && hs(e) && (s = s.slice(1, -1)) - } - s = ls(s) - } r.push({ - type: Zi.Pseudo, - name: e, - data: s - }); - break - } - case 44: - u(), r = [], s(1); - break; - default: { - if (t.startsWith("/*", n)) { - const e = t.indexOf("*/", n + 2); - if (e < 0) throw new Error("Comment was not terminated"); - n = e + 2, 0 === r.length && s(0); - break - } - let a, o = null; - if (42 === e) n += 1, a = "*"; - else if (124 === e) { - if (a = "", 124 === t.charCodeAt(n + 1)) { - l(Zi.ColumnCombinator), s(2); - break - } - } else { - if (!ns.test(t.slice(n))) break e; - a = i(0) - } - 124 === t.charCodeAt(n) && 124 !== t.charCodeAt(n + 1) && (o = a, 42 === t.charCodeAt(n + 1) ? (a = "*", n += 2) : a = i(1)), r.push("*" === a ? { - type: Zi.Universal, - namespace: o - } : { - type: Zi.Tag, - name: a, - namespace: o - }) - } - } - } - return u(), n -} -var ds = { - trueFunc: function() { - return !0 - }, - falseFunc: function() { - return !1 - } - }, - Es = ds.trueFunc; -const ms = new Map([ - [Zi.Universal, 50], - [Zi.Tag, 30], - [Zi.Attribute, 1], - [Zi.Pseudo, 0] -]); - -function Ts(e) { - return !ms.has(e.type) -} -const _s = new Map([ - [es.Exists, 10], - [es.Equals, 8], - [es.Not, 7], - [es.Start, 6], - [es.End, 6], - [es.Any, 5] -]); - -function As(e) { - const t = e.map(gs); - for (let n = 1; n < e.length; n++) { - const r = t[n]; - if (!(r < 0)) - for (let i = n - 1; i >= 0 && r < t[i]; i--) { - const n = e[i + 1]; - e[i + 1] = e[i], e[i] = n, t[i + 1] = t[i], t[i] = r - } - } -} - -function gs(e) { - var t, n; - let r = null !== (t = ms.get(e.type)) && void 0 !== t ? t : -1; - return e.type === Zi.Attribute ? (r = null !== (n = _s.get(e.action)) && void 0 !== n ? n : 4, e.action === es.Equals && "id" === e.name && (r = 9), e.ignoreCase && (r >>= 1)) : e.type === Zi.Pseudo && (e.data ? "has" === e.name || "contains" === e.name ? r = 0 : Array.isArray(e.data) ? (r = Math.min(...e.data.map((e => Math.min(...e.map(gs))))), r < 0 && (r = 0)) : r = 2 : r = 3), r -} -const Ns = /[-[\]{}()*+?.,\\^$|#\s]/g; - -function Cs(e) { - return e.replace(Ns, "\\$&") -} -const Is = new Set(["accept", "accept-charset", "align", "alink", "axis", "bgcolor", "charset", "checked", "clear", "codetype", "color", "compact", "declare", "defer", "dir", "direction", "disabled", "enctype", "face", "frame", "hreflang", "http-equiv", "lang", "language", "link", "media", "method", "multiple", "nohref", "noresize", "noshade", "nowrap", "readonly", "rel", "rev", "rules", "scope", "scrolling", "selected", "shape", "target", "text", "type", "valign", "valuetype", "vlink"]); - -function Ss(e, t) { - return "boolean" == typeof e.ignoreCase ? e.ignoreCase : "quirks" === e.ignoreCase ? !!t.quirksMode : !t.xmlMode && Is.has(e.name) -} -const bs = { - equals(e, t, n) { - const { - adapter: r - } = n, { - name: i - } = t; - let { - value: s - } = t; - return Ss(t, n) ? (s = s.toLowerCase(), t => { - const n = r.getAttributeValue(t, i); - return null != n && n.length === s.length && n.toLowerCase() === s && e(t) - }) : t => r.getAttributeValue(t, i) === s && e(t) - }, - hyphen(e, t, n) { - const { - adapter: r - } = n, { - name: i - } = t; - let { - value: s - } = t; - const a = s.length; - return Ss(t, n) ? (s = s.toLowerCase(), function(t) { - const n = r.getAttributeValue(t, i); - return null != n && (n.length === a || "-" === n.charAt(a)) && n.substr(0, a).toLowerCase() === s && e(t) - }) : function(t) { - const n = r.getAttributeValue(t, i); - return null != n && (n.length === a || "-" === n.charAt(a)) && n.substr(0, a) === s && e(t) - } - }, - element(e, t, n) { - const { - adapter: r - } = n, { - name: i, - value: s - } = t; - if (/\s/.test(s)) return ds.falseFunc; - const a = new RegExp(`(?:^|\\s)${Cs(s)}(?:$|\\s)`, Ss(t, n) ? "i" : ""); - return function(t) { - const n = r.getAttributeValue(t, i); - return null != n && n.length >= s.length && a.test(n) && e(t) - } - }, - exists: (e, { - name: t - }, { - adapter: n - }) => r => n.hasAttrib(r, t) && e(r), - start(e, t, n) { - const { - adapter: r - } = n, { - name: i - } = t; - let { - value: s - } = t; - const a = s.length; - return 0 === a ? ds.falseFunc : Ss(t, n) ? (s = s.toLowerCase(), t => { - const n = r.getAttributeValue(t, i); - return null != n && n.length >= a && n.substr(0, a).toLowerCase() === s && e(t) - }) : t => { - var n; - return !!(null === (n = r.getAttributeValue(t, i)) || void 0 === n ? void 0 : n.startsWith(s)) && e(t) - } - }, - end(e, t, n) { - const { - adapter: r - } = n, { - name: i - } = t; - let { - value: s - } = t; - const a = -s.length; - return 0 === a ? ds.falseFunc : Ss(t, n) ? (s = s.toLowerCase(), t => { - var n; - return (null === (n = r.getAttributeValue(t, i)) || void 0 === n ? void 0 : n.substr(a).toLowerCase()) === s && e(t) - }) : t => { - var n; - return !!(null === (n = r.getAttributeValue(t, i)) || void 0 === n ? void 0 : n.endsWith(s)) && e(t) - } - }, - any(e, t, n) { - const { - adapter: r - } = n, { - name: i, - value: s - } = t; - if ("" === s) return ds.falseFunc; - if (Ss(t, n)) { - const t = new RegExp(Cs(s), "i"); - return function(n) { - const a = r.getAttributeValue(n, i); - return null != a && a.length >= s.length && t.test(a) && e(n) - } - } - return t => { - var n; - return !!(null === (n = r.getAttributeValue(t, i)) || void 0 === n ? void 0 : n.includes(s)) && e(t) - } - }, - not(e, t, n) { - const { - adapter: r - } = n, { - name: i - } = t; - let { - value: s - } = t; - return "" === s ? t => !!r.getAttributeValue(t, i) && e(t) : Ss(t, n) ? (s = s.toLowerCase(), t => { - const n = r.getAttributeValue(t, i); - return (null == n || n.length !== s.length || n.toLowerCase() !== s) && e(t) - }) : t => r.getAttributeValue(t, i) !== s && e(t) - } -}; -var Os = Ke((function(e, t) { - Object.defineProperty(t, "__esModule", { - value: !0 - }), t.parse = void 0; - var n = new Set([9, 10, 12, 13, 32]), - r = "0".charCodeAt(0), - i = "9".charCodeAt(0); - t.parse = function(e) { - if ("even" === (e = e.trim().toLowerCase())) return [2, 0]; - if ("odd" === e) return [2, 1]; - var t = 0, - s = 0, - a = c(), - o = l(); - if (t < e.length && "n" === e.charAt(t) && (t++, s = a * (null != o ? o : 1), h(), t < e.length ? (a = c(), h(), o = l()) : a = o = 0), null === o || t < e.length) throw new Error("n-th rule couldn't be parsed ('" + e + "')"); - return [s, a * o]; - - function c() { - return "-" === e.charAt(t) ? (t++, -1) : ("+" === e.charAt(t) && t++, 1) - } - - function l() { - for (var n = t, s = 0; t < e.length && e.charCodeAt(t) >= r && e.charCodeAt(t) <= i;) s = 10 * s + (e.charCodeAt(t) - r), t++; - return t === n ? null : s - } - - function h() { - for (; t < e.length && n.has(e.charCodeAt(t));) t++ - } - } -})); -qe(Os), Os.parse; -var ys = Ke((function(e, t) { - Object.defineProperty(t, "__esModule", { - value: !0 - }), t.compile = void 0, t.compile = function(e) { - var t = e[0], - n = e[1] - 1; - if (n < 0 && t <= 0) return ds.falseFunc; - if (-1 === t) return function(e) { - return e <= n - }; - if (0 === t) return function(e) { - return e === n - }; - if (1 === t) return n < 0 ? ds.trueFunc : function(e) { - return e >= n - }; - var r = Math.abs(t), - i = (n % r + r) % r; - return t > 1 ? function(e) { - return e >= n && e % r === i - } : function(e) { - return e <= n && e % r === i - } - } -})); -qe(ys), ys.compile; -var Ls = Os, - ks = ys, - vs = Ke((function(e, t) { - Object.defineProperty(t, "__esModule", { - value: !0 - }), t.compile = t.parse = void 0, Object.defineProperty(t, "parse", { - enumerable: !0, - get: function() { - return Ls.parse - } - }), Object.defineProperty(t, "compile", { - enumerable: !0, - get: function() { - return ks.compile - } - }), t.default = function(e) { - return (0, ks.compile)((0, Ls.parse)(e)) - } - })), - Ds = qe(vs); - -function Rs(e, t) { - return n => { - const r = t.getParent(n); - return null != r && t.isTag(r) && e(n) - } -} -vs.compile, vs.parse; -const Ms = { - contains: (e, t, { - adapter: n - }) => function(r) { - return e(r) && n.getText(r).includes(t) - }, - icontains(e, t, { - adapter: n - }) { - const r = t.toLowerCase(); - return function(t) { - return e(t) && n.getText(t).toLowerCase().includes(r) - } - }, - "nth-child"(e, t, { - adapter: n, - equals: r - }) { - const i = Ds(t); - return i === ds.falseFunc ? ds.falseFunc : i === ds.trueFunc ? Rs(e, n) : function(t) { - const s = n.getSiblings(t); - let a = 0; - for (let e = 0; e < s.length && !r(t, s[e]); e++) n.isTag(s[e]) && a++; - return i(a) && e(t) - } - }, - "nth-last-child"(e, t, { - adapter: n, - equals: r - }) { - const i = Ds(t); - return i === ds.falseFunc ? ds.falseFunc : i === ds.trueFunc ? Rs(e, n) : function(t) { - const s = n.getSiblings(t); - let a = 0; - for (let e = s.length - 1; e >= 0 && !r(t, s[e]); e--) n.isTag(s[e]) && a++; - return i(a) && e(t) - } - }, - "nth-of-type"(e, t, { - adapter: n, - equals: r - }) { - const i = Ds(t); - return i === ds.falseFunc ? ds.falseFunc : i === ds.trueFunc ? Rs(e, n) : function(t) { - const s = n.getSiblings(t); - let a = 0; - for (let e = 0; e < s.length; e++) { - const i = s[e]; - if (r(t, i)) break; - n.isTag(i) && n.getName(i) === n.getName(t) && a++ - } - return i(a) && e(t) - } - }, - "nth-last-of-type"(e, t, { - adapter: n, - equals: r - }) { - const i = Ds(t); - return i === ds.falseFunc ? ds.falseFunc : i === ds.trueFunc ? Rs(e, n) : function(t) { - const s = n.getSiblings(t); - let a = 0; - for (let e = s.length - 1; e >= 0; e--) { - const i = s[e]; - if (r(t, i)) break; - n.isTag(i) && n.getName(i) === n.getName(t) && a++ - } - return i(a) && e(t) - } - }, - root: (e, t, { - adapter: n - }) => t => { - const r = n.getParent(t); - return (null == r || !n.isTag(r)) && e(t) - }, - scope(e, t, n, r) { - const { - equals: i - } = n; - return r && 0 !== r.length ? 1 === r.length ? t => i(r[0], t) && e(t) : t => r.includes(t) && e(t) : Ms.root(e, t, n) - }, - hover: Ps("isHovered"), - visited: Ps("isVisited"), - active: Ps("isActive") -}; - -function Ps(e) { - return function(t, n, { - adapter: r - }) { - const i = r[e]; - return "function" != typeof i ? ds.falseFunc : function(e) { - return i(e) && t(e) - } - } -} -const xs = { - empty: (e, { - adapter: t - }) => !t.getChildren(e).some((e => t.isTag(e) || "" !== t.getText(e))), - "first-child"(e, { - adapter: t, - equals: n - }) { - if (t.prevElementSibling) return null == t.prevElementSibling(e); - const r = t.getSiblings(e).find((e => t.isTag(e))); - return null != r && n(e, r) - }, - "last-child"(e, { - adapter: t, - equals: n - }) { - const r = t.getSiblings(e); - for (let i = r.length - 1; i >= 0; i--) { - if (n(e, r[i])) return !0; - if (t.isTag(r[i])) break - } - return !1 - }, - "first-of-type"(e, { - adapter: t, - equals: n - }) { - const r = t.getSiblings(e), - i = t.getName(e); - for (let s = 0; s < r.length; s++) { - const a = r[s]; - if (n(e, a)) return !0; - if (t.isTag(a) && t.getName(a) === i) break - } - return !1 - }, - "last-of-type"(e, { - adapter: t, - equals: n - }) { - const r = t.getSiblings(e), - i = t.getName(e); - for (let s = r.length - 1; s >= 0; s--) { - const a = r[s]; - if (n(e, a)) return !0; - if (t.isTag(a) && t.getName(a) === i) break - } - return !1 - }, - "only-of-type"(e, { - adapter: t, - equals: n - }) { - const r = t.getName(e); - return t.getSiblings(e).every((i => n(e, i) || !t.isTag(i) || t.getName(i) !== r)) - }, - "only-child": (e, { - adapter: t, - equals: n - }) => t.getSiblings(e).every((r => n(e, r) || !t.isTag(r))) -}; - -function ws(e, t, n, r) { - if (null === n) { - if (e.length > r) throw new Error(`Pseudo-class :${t} requires an argument`) - } else if (e.length === r) throw new Error(`Pseudo-class :${t} doesn't have any arguments`) -} -const Bs = { - "any-link": ":is(a, area, link)[href]", - link: ":any-link:not(:visited)", - disabled: ":is(\n :is(button, input, select, textarea, optgroup, option)[disabled],\n optgroup[disabled] > option,\n fieldset[disabled]:not(fieldset[disabled] legend:first-of-type *)\n )", - enabled: ":not(:disabled)", - checked: ":is(:is(input[type=radio], input[type=checkbox])[checked], option:selected)", - required: ":is(input, select, textarea)[required]", - optional: ":is(input, select, textarea):not([required])", - selected: "option:is([selected], select:not([multiple]):not(:has(> option[selected])) > :first-of-type)", - checkbox: "[type=checkbox]", - file: "[type=file]", - password: "[type=password]", - radio: "[type=radio]", - reset: "[type=reset]", - image: "[type=image]", - submit: "[type=submit]", - parent: ":not(:empty)", - header: ":is(h1, h2, h3, h4, h5, h6)", - button: ":is(button, input[type=button])", - input: ":is(input, textarea, select, button)", - text: "input:is(:not([type!='']), [type=text])" - }, - Fs = {}; - -function Us(e, t) { - const n = t.getSiblings(e); - if (n.length <= 1) return []; - const r = n.indexOf(e); - return r < 0 || r === n.length - 1 ? [] : n.slice(r + 1).filter(t.isTag) -} - -function Hs(e) { - return { - xmlMode: !!e.xmlMode, - lowerCaseAttributeNames: !!e.lowerCaseAttributeNames, - lowerCaseTags: !!e.lowerCaseTags, - quirksMode: !!e.quirksMode, - cacheResults: !!e.cacheResults, - pseudos: e.pseudos, - adapter: e.adapter, - equals: e.equals - } -} -const Gs = (e, t, n, r, i) => { - const s = i(t, Hs(n), r); - return s === ds.trueFunc ? e : s === ds.falseFunc ? ds.falseFunc : t => s(t) && e(t) - }, - Ys = { - is: Gs, - matches: Gs, - where: Gs, - not(e, t, n, r, i) { - const s = i(t, Hs(n), r); - return s === ds.falseFunc ? e : s === ds.trueFunc ? ds.falseFunc : t => !s(t) && e(t) - }, - has(e, t, n, r, i) { - const { - adapter: s - } = n, a = Hs(n); - a.relativeSelector = !0; - const o = t.some((e => e.some(Ts))) ? [Fs] : void 0, - c = i(t, a, o); - if (c === ds.falseFunc) return ds.falseFunc; - const l = function(e, t) { - return e === ds.falseFunc ? ds.falseFunc : n => t.isTag(n) && e(n) - }(c, s); - if (o && c !== ds.trueFunc) { - const { - shouldTestNextSiblings: t = !1 - } = c; - return n => { - if (!e(n)) return !1; - o[0] = n; - const r = s.getChildren(n), - i = t ? [...r, ...Us(n, s)] : r; - return s.existsOne(l, i) - } - } - return t => e(t) && s.existsOne(l, s.getChildren(t)) - } - }; - -function qs(e, t) { - const n = t.getParent(e); - return n && t.isTag(n) ? n : null -} - -function Ks(e, t, n, r, i) { - const { - adapter: s, - equals: a - } = n; - switch (t.type) { - case Zi.PseudoElement: - throw new Error("Pseudo-elements are not supported by css-select"); - case Zi.ColumnCombinator: - throw new Error("Column combinators are not yet supported by css-select"); - case Zi.Attribute: - if (null != t.namespace) throw new Error("Namespaced attributes are not yet supported by css-select"); - return n.xmlMode && !n.lowerCaseAttributeNames || (t.name = t.name.toLowerCase()), bs[t.action](e, t, n); - case Zi.Pseudo: - return function(e, t, n, r, i) { - var s; - const { - name: a, - data: o - } = t; - if (Array.isArray(o)) { - if (!(a in Ys)) throw new Error(`Unknown pseudo-class :${a}(${o})`); - return Ys[a](e, o, n, r, i) - } - const c = null === (s = n.pseudos) || void 0 === s ? void 0 : s[a], - l = "string" == typeof c ? c : Bs[a]; - if ("string" == typeof l) { - if (null != o) throw new Error(`Pseudo ${a} doesn't have any arguments`); - const t = ps(l); - return Ys.is(e, t, n, r, i) - } - if ("function" == typeof c) return ws(c, a, o, 1), t => c(t, o) && e(t); - if (a in Ms) return Ms[a](e, o, n, r); - if (a in xs) { - const t = xs[a]; - return ws(t, a, o, 2), r => t(r, n, o) && e(r) - } - throw new Error(`Unknown pseudo-class :${a}`) - }(e, t, n, r, i); - case Zi.Tag: { - if (null != t.namespace) throw new Error("Namespaced tag names are not yet supported by css-select"); - let { - name: r - } = t; - return n.xmlMode && !n.lowerCaseTags || (r = r.toLowerCase()), - function(t) { - return s.getName(t) === r && e(t) - } - } - case Zi.Descendant: { - if (!1 === n.cacheResults || "undefined" == typeof WeakSet) return function(t) { - let n = t; - for (; n = qs(n, s);) - if (e(n)) return !0; - return !1 - }; - const t = new WeakSet; - return function(n) { - let r = n; - for (; r = qs(r, s);) - if (!t.has(r)) { - if (s.isTag(r) && e(r)) return !0; - t.add(r) - } return !1 - } - } - case "_flexibleDescendant": - return function(t) { - let n = t; - do { - if (e(n)) return !0 - } while (n = qs(n, s)); - return !1 - }; - case Zi.Parent: - return function(t) { - return s.getChildren(t).some((t => s.isTag(t) && e(t))) - }; - case Zi.Child: - return function(t) { - const n = s.getParent(t); - return null != n && s.isTag(n) && e(n) - }; - case Zi.Sibling: - return function(t) { - const n = s.getSiblings(t); - for (let r = 0; r < n.length; r++) { - const i = n[r]; - if (a(t, i)) break; - if (s.isTag(i) && e(i)) return !0 - } - return !1 - }; - case Zi.Adjacent: - return s.prevElementSibling ? function(t) { - const n = s.prevElementSibling(t); - return null != n && e(n) - } : function(t) { - const n = s.getSiblings(t); - let r; - for (let e = 0; e < n.length; e++) { - const i = n[e]; - if (a(t, i)) break; - s.isTag(i) && (r = i) - } - return !!r && e(r) - }; - case Zi.Universal: - if (null != t.namespace && "*" !== t.namespace) throw new Error("Namespaced universal selectors are not yet supported by css-select"); - return e - } -} - -function js(e) { - return e.type === Zi.Pseudo && ("scope" === e.name || Array.isArray(e.data) && e.data.some((e => e.some(js)))) -} -const Vs = { - type: Zi.Descendant - }, - Ws = { - type: "_flexibleDescendant" - }, - Qs = { - type: Zi.Pseudo, - name: "scope", - data: null - }; - -function Xs(e, t, n) { - var r; - e.forEach(As), n = null !== (r = t.context) && void 0 !== r ? r : n; - const i = Array.isArray(n), - s = n && (Array.isArray(n) ? n : [n]); - if (!1 !== t.relativeSelector) ! function(e, { - adapter: t - }, n) { - const r = !!(null == n ? void 0 : n.every((e => { - const n = t.isTag(e) && t.getParent(e); - return e === Fs || n && t.isTag(n) - }))); - for (const t of e) { - if (t.length > 0 && Ts(t[0]) && t[0].type !== Zi.Descendant); - else { - if (!r || t.some(js)) continue; - t.unshift(Vs) - } - t.unshift(Qs) - } - }(e, t, s); - else if (e.some((e => e.length > 0 && Ts(e[0])))) throw new Error("Relative selectors are not allowed when the `relativeSelector` option is disabled"); - let a = !1; - const o = e.map((e => { - if (e.length >= 2) { - const [t, n] = e; - t.type !== Zi.Pseudo || "scope" !== t.name || (i && n.type === Zi.Descendant ? e[1] = Ws : n.type !== Zi.Adjacent && n.type !== Zi.Sibling || (a = !0)) - } - return function(e, t, n) { - var r; - return e.reduce(((e, r) => e === ds.falseFunc ? ds.falseFunc : Ks(e, r, t, n, Xs)), null !== (r = t.rootFunc) && void 0 !== r ? r : ds.trueFunc) - }(e, t, s) - })).reduce($s, ds.falseFunc); - return o.shouldTestNextSiblings = a, o -} - -function $s(e, t) { - return t === ds.falseFunc || e === ds.trueFunc ? e : e === ds.falseFunc || t === ds.trueFunc ? t : function(n) { - return e(n) || t(n) - } -} -const zs = (e, t) => e === t, - Js = { - adapter: Se, - equals: zs - }; -const Zs = (ea = Xs, function(e, t, n) { - const r = function(e) { - var t, n, r, i; - const s = null != e ? e : Js; - return null !== (t = s.adapter) && void 0 !== t || (s.adapter = Se), null !== (n = s.equals) && void 0 !== n || (s.equals = null !== (i = null === (r = s.adapter) || void 0 === r ? void 0 : r.equals) && void 0 !== i ? i : zs), s - }(t); - return ea(e, r, n) -}); -var ea; - -function ta(e, t, n = !1) { - return n && (e = function(e, t) { - const n = Array.isArray(e) ? e.slice(0) : [e], - r = n.length; - for (let e = 0; e < r; e++) { - const r = Us(n[e], t); - n.push(...r) - } - return n - }(e, t)), Array.isArray(e) ? t.removeSubsets(e) : t.getChildren(e) -} -const na = new Set(["first", "last", "eq", "gt", "nth", "lt", "even", "odd"]); - -function ra(e) { - return "pseudo" === e.type && (!!na.has(e.name) || !("not" !== e.name || !Array.isArray(e.data)) && e.data.some((e => e.some(ra)))) -} - -function ia(e) { - const t = [], - n = []; - for (const r of e) r.some(ra) ? t.push(r) : n.push(r); - return [n, t] -} -const sa = { - type: Zi.Universal, - namespace: null - }, - aa = { - type: Zi.Pseudo, - name: "scope", - data: null - }; - -function oa(e, t, n = {}) { - return ca([e], t, n) -} - -function ca(e, t, n = {}) { - if ("function" == typeof t) return e.some(t); - const [r, i] = ia(ps(t)); - return r.length > 0 && e.some(Zs(r, n)) || i.some((t => ua(t, e, n).length > 0)) -} - -function la(e, t, n = {}) { - return ha(ps(e), t, n) -} - -function ha(e, t, n) { - if (0 === t.length) return []; - const [r, i] = ia(e); - let s; - if (r.length) { - const e = Ea(t, r, n); - if (0 === i.length) return e; - e.length && (s = new Set(e)) - } - for (let e = 0; e < i.length && (null == s ? void 0 : s.size) !== t.length; e++) { - const r = i[e], - a = s ? t.filter((e => I(e) && !s.has(e))) : t; - if (0 === a.length) break; - const o = ua(r, t, n); - if (o.length) - if (s) o.forEach((e => s.add(e))); - else { - if (e === i.length - 1) return o; - s = new Set(o) - } - } - return void 0 !== s ? s.size === t.length ? t : t.filter((e => s.has(e))) : [] -} - -function ua(e, t, n) { - var r; - if (e.some(as)) { - const i = null !== (r = n.root) && void 0 !== r ? r : function(e) { - for (; e.parent;) e = e.parent; - return e - }(t[0]), - s = { - ...n, - context: t, - relativeSelector: !1 - }; - return e.push(aa), pa(i, e, s, !0, t.length) - } - return pa(t, e, n, !1, t.length) -} - -function pa(e, t, n, r, i) { - const s = t.findIndex(ra), - a = t.slice(0, s), - o = t[s], - c = t.length - 1 === s ? i : 1 / 0, - l = function(e, t, n) { - const r = null != t ? parseInt(t, 10) : NaN; - switch (e) { - case "first": - return 1; - case "nth": - case "eq": - return isFinite(r) ? r >= 0 ? r + 1 : 1 / 0 : 0; - case "lt": - return isFinite(r) ? r >= 0 ? Math.min(r, n) : 1 / 0 : 0; - case "gt": - return isFinite(r) ? 1 / 0 : 0; - case "odd": - return 2 * n; - case "even": - return 2 * n - 1; - case "last": - case "not": - return 1 / 0 - } - }(o.name, o.data, c); - if (0 === l) return []; - const h = (0 !== a.length || Array.isArray(e) ? 0 === a.length ? (Array.isArray(e) ? e : [e]).filter(I) : r || a.some(as) ? fa(e, [a], n, l) : Ea(e, [a], n) : Z(e).filter(I)).slice(0, l); - let u = function(e, t, n, r) { - const i = "string" == typeof n ? parseInt(n, 10) : NaN; - switch (e) { - case "first": - case "lt": - return t; - case "last": - return t.length > 0 ? [t[t.length - 1]] : t; - case "nth": - case "eq": - return isFinite(i) && Math.abs(i) < t.length ? [i < 0 ? t[t.length + i] : t[i]] : []; - case "gt": - return isFinite(i) ? t.slice(i + 1) : []; - case "even": - return t.filter(((e, t) => t % 2 == 0)); - case "odd": - return t.filter(((e, t) => t % 2 == 1)); - case "not": { - const e = new Set(ha(n, t, r)); - return t.filter((t => !e.has(t))) - } - } - }(o.name, h, o.data, n); - if (0 === u.length || t.length === s + 1) return u; - const p = t.slice(s + 1), - f = p.some(as); - if (f) { - if (as(p[0])) { - const { - type: e - } = p[0]; - e !== Zi.Sibling && e !== Zi.Adjacent || (u = ta(u, Se, !0)), p.unshift(sa) - } - n = { - ...n, - relativeSelector: !1, - rootFunc: e => u.includes(e) - } - } else n.rootFunc && n.rootFunc !== Es && (n = { - ...n, - rootFunc: Es - }); - return p.some(ra) ? pa(u, p, n, !1, i) : f ? fa(u, [p], n, i) : Ea(u, [p], n) -} - -function fa(e, t, n, r) { - return da(e, Zs(t, n, e), r) -} - -function da(e, t, n = 1 / 0) { - return ae((e => I(e) && t(e)), ta(e, Se, t.shouldTestNextSiblings), !0, n) -} - -function Ea(e, t, n) { - const r = (Array.isArray(e) ? e : [e]).filter(I); - if (0 === r.length) return r; - const i = Zs(t, n); - return i === Es ? r : r.filter(i) -} -var ma = function(e, t, n) { - if (n || 2 === arguments.length) - for (var r, i = 0, s = t.length; i < s; i++) !r && i in t || (r || (r = Array.prototype.slice.call(t, 0, i)), r[i] = t[i]); - return e.concat(r || Array.prototype.slice.call(t)) - }, - Ta = /^\s*[~+]/; - -function _a(e) { - return function(t) { - for (var n = [], r = 1; r < arguments.length; r++) n[r - 1] = arguments[r]; - return function(r) { - var i, s = e(t, this); - return r && (s = xa(s, r, this.options.xmlMode, null === (i = this._root) || void 0 === i ? void 0 : i[0])), this._make(this.length > 1 && s.length > 1 ? n.reduce((function(e, t) { - return t(e) - }), s) : s) - } - } -} -var Aa = _a((function(e, t) { - for (var n, r = [], i = 0; i < t.length; i++) { - var s = e(t[i]); - r.push(s) - } - return (n = new Array).concat.apply(n, r) - })), - ga = _a((function(e, t) { - for (var n = [], r = 0; r < t.length; r++) { - var i = e(t[r]); - null !== i && n.push(i) - } - return n - })); - -function Na(e) { - for (var t = [], n = 1; n < arguments.length; n++) t[n - 1] = arguments[n]; - var r = null, - i = _a((function(e, t) { - var n = []; - return Bi(t, (function(t) { - for (var i; - (i = e(t)) && !(null == r ? void 0 : r(i, n.length)); t = i) n.push(i) - })), n - })).apply(void 0, ma([e], t, !1)); - return function(e, t) { - var n = this; - r = "string" == typeof e ? function(t) { - return oa(t, e, n.options) - } : e ? Pa(e) : null; - var s = i.call(this, t); - return r = null, s - } -} - -function Ca(e) { - return Array.from(new Set(e)) -} -var Ia = ga((function(e) { - var t = e.parent; - return t && !L(t) ? t : null - }), Ca), - Sa = Aa((function(e) { - for (var t = []; e.parent && !L(e.parent);) t.push(e.parent), e = e.parent; - return t - }), Ee, (function(e) { - return e.reverse() - })), - ba = Na((function(e) { - var t = e.parent; - return t && !L(t) ? t : null - }), Ee, (function(e) { - return e.reverse() - })); -var Oa = ga((function(e) { - return ne(e) - })), - ya = Aa((function(e) { - for (var t = []; e.next;) I(e = e.next) && t.push(e); - return t - }), Ca), - La = Na((function(e) { - return ne(e) - }), Ca), - ka = ga((function(e) { - return re(e) - })), - va = Aa((function(e) { - for (var t = []; e.prev;) I(e = e.prev) && t.push(e); - return t - }), Ca), - Da = Na((function(e) { - return re(e) - }), Ca), - Ra = Aa((function(e) { - return te(e).filter((function(t) { - return I(t) && t !== e - })) - }), Ee), - Ma = Aa((function(e) { - return Z(e).filter(I) - }), Ca); - -function Pa(e) { - return "function" == typeof e ? function(t, n) { - return e.call(t, n, t) - } : wi(e) ? function(t) { - return Array.prototype.includes.call(e, t) - } : function(t) { - return e === t - } -} - -function xa(e, t, n, r) { - return "string" == typeof t ? la(t, e, { - xmlMode: n, - root: r - }) : e.filter(Pa(t)) -} -var wa = Object.freeze({ - __proto__: null, - find: function(e) { - var t; - if (!e) return this._make([]); - var n = this.toArray(); - if ("string" != typeof e) { - var r = wi(e) ? e.toArray() : [e]; - return this._make(r.filter((function(e) { - return n.some((function(t) { - return Di(t, e) - })) - }))) - } - var i = Ta.test(e) ? n : this.children().toArray(), - s = { - context: n, - root: null === (t = this._root) || void 0 === t ? void 0 : t[0], - xmlMode: this.options.xmlMode, - lowerCaseTags: this.options.lowerCaseTags, - lowerCaseAttributeNames: this.options.lowerCaseAttributeNames, - pseudos: this.options.pseudos, - quirksMode: this.options.quirksMode - }; - return this._make(function(e, t, n = {}, r = 1 / 0) { - if ("function" == typeof e) return da(t, e); - const [i, s] = ia(ps(e)), a = s.map((e => pa(t, e, n, !0, r))); - return i.length && a.push(fa(t, i, n, r)), 0 === a.length ? [] : 1 === a.length ? a[0] : Ee(a.reduce(((e, t) => [...e, ...t]))) - }(e, i, s)) - }, - parent: Ia, - parents: Sa, - parentsUntil: ba, - closest: function(e) { - var t, n = []; - if (!e) return this._make(n); - var r = { - xmlMode: this.options.xmlMode, - root: null === (t = this._root) || void 0 === t ? void 0 : t[0] - }, - i = "string" == typeof e ? function(t) { - return oa(t, e, r) - } : Pa(e); - return Bi(this, (function(e) { - for (; e && I(e);) { - if (i(e, 0)) { - n.includes(e) || n.push(e); - break - } - e = e.parent - } - })), this._make(n) - }, - next: Oa, - nextAll: ya, - nextUntil: La, - prev: ka, - prevAll: va, - prevUntil: Da, - siblings: Ra, - children: Ma, - contents: function() { - var e = this.toArray().reduce((function(e, t) { - return k(t) ? e.concat(t.children) : e - }), []); - return this._make(e) - }, - each: function(e) { - for (var t = 0, n = this.length; t < n && !1 !== e.call(this[t], t, this[t]);) ++t; - return this - }, - map: function(e) { - for (var t = [], n = 0; n < this.length; n++) { - var r = this[n], - i = e.call(r, n, r); - null != i && (t = t.concat(i)) - } - return this._make(t) - }, - filter: function(e) { - var t; - return this._make(xa(this.toArray(), e, this.options.xmlMode, null === (t = this._root) || void 0 === t ? void 0 : t[0])) - }, - filterArray: xa, - is: function(e) { - var t = this.toArray(); - return "string" == typeof e ? ca(t.filter(I), e, this.options) : !!e && t.some(Pa(e)) - }, - not: function(e) { - var t = this.toArray(); - if ("string" == typeof e) { - var n = new Set(la(e, t, this.options)); - t = t.filter((function(e) { - return !n.has(e) - })) - } else { - var r = Pa(e); - t = t.filter((function(e, t) { - return !r(e, t) - })) - } - return this._make(t) - }, - has: function(e) { - var t = this; - return this.filter("string" == typeof e ? ":has(".concat(e, ")") : function(n, r) { - return t._make(r).find(e).length > 0 - }) - }, - first: function() { - return this.length > 1 ? this._make(this[0]) : this - }, - last: function() { - return this.length > 0 ? this._make(this[this.length - 1]) : this - }, - eq: function(e) { - var t; - return 0 === (e = +e) && this.length <= 1 ? this : (e < 0 && (e = this.length + e), this._make(null !== (t = this[e]) && void 0 !== t ? t : [])) - }, - get: function(e) { - return null == e ? this.toArray() : this[e < 0 ? this.length + e : e] - }, - toArray: function() { - return Array.prototype.slice.call(this) - }, - index: function(e) { - var t, n; - return null == e ? (t = this.parent().children(), n = this[0]) : "string" == typeof e ? (t = this._make(e), n = this[0]) : (t = this, n = wi(e) ? e[0] : e), Array.prototype.indexOf.call(t, n) - }, - slice: function(e, t) { - return this._make(Array.prototype.slice.call(this, e, t)) - }, - end: function() { - var e; - return null !== (e = this.prevObject) && void 0 !== e ? e : this._make([]) - }, - add: function(e, t) { - var n = this._make(e, t), - r = Ee(ma(ma([], this.get(), !0), n.get(), !0)); - return this._make(r) - }, - addBack: function(e) { - return this.prevObject ? this.add(e ? this.prevObject.filter(e) : this.prevObject) : this - } -}); - -function Ba(e, t) { - var n = Array.isArray(e) ? e : [e]; - t ? t.children = n : t = null; - for (var r = 0; r < n.length; r++) { - var i = n[r]; - i.parent && i.parent.children !== n && ie(i), t ? (i.prev = n[r - 1] || null, i.next = n[r + 1] || null) : i.prev = i.next = null, i.parent = t - } - return t -} -var Fa = function(e, t, n) { - if (n || 2 === arguments.length) - for (var r, i = 0, s = t.length; i < s; i++) !r && i in t || (r || (r = Array.prototype.slice.call(t, 0, i)), r[i] = t[i]); - return e.concat(r || Array.prototype.slice.call(t)) -}; - -function Ua(e) { - return function() { - for (var t = this, n = [], r = 0; r < arguments.length; r++) n[r] = arguments[r]; - var i = this.length - 1; - return Bi(this, (function(r, s) { - if (k(r)) { - var a = "function" == typeof n[0] ? n[0].call(r, s, t._render(r.children)) : n, - o = t._makeDomArray(a, s < i); - e(o, r.children, r) - } - })) - } -} - -function Ha(e, t, n, r, i) { - for (var s, a, o = Fa([t, n], r, !0), c = 0 === t ? null : e[t - 1], l = t + n >= e.length ? null : e[t + n], h = 0; h < r.length; ++h) { - var u = r[h], - p = u.parent; - if (p) { - var f = p.children.indexOf(u); - f > -1 && (p.children.splice(f, 1), i === p && t > f && o[0]--) - } - u.parent = i, u.prev && (u.prev.next = null !== (s = u.next) && void 0 !== s ? s : null), u.next && (u.next.prev = null !== (a = u.prev) && void 0 !== a ? a : null), u.prev = 0 === h ? c : r[h - 1], u.next = h === r.length - 1 ? l : r[h + 1] - } - return c && (c.next = r[0]), l && (l.prev = r[r.length - 1]), e.splice.apply(e, o) -} -var Ga = Ua((function(e, t, n) { - Ha(t, t.length, 0, e, n) - })), - Ya = Ua((function(e, t, n) { - Ha(t, 0, 0, e, n) - })); - -function qa(e) { - return function(t) { - for (var n = this.length - 1, r = this.parents().last(), i = 0; i < this.length; i++) { - var s = this[i], - a = "function" == typeof t ? t.call(s, i, s) : "string" != typeof t || Ui(t) ? t : r.find(t).clone(), - o = this._makeDomArray(a, i < n)[0]; - if (o && k(o)) { - for (var c = o, l = 0; l < c.children.length;) { - var h = c.children[l]; - I(h) ? (c = h, l = 0) : l++ - } - e(s, c, [o]) - } - } - return this - } -} -var Ka = qa((function(e, t, n) { - var r = e.parent; - if (r) { - var i = r.children, - s = i.indexOf(e); - Ba([e], t), Ha(i, s, 0, n, r) - } - })), - ja = qa((function(e, t, n) { - k(e) && (Ba(e.children, t), Ba(n, e)) - })); -var Va = Object.freeze({ - __proto__: null, - _makeDomArray: function(e, t) { - var n = this; - return null == e ? [] : wi(e) ? t ? Fi(e.get()) : e.get() : Array.isArray(e) ? e.reduce((function(e, r) { - return e.concat(n._makeDomArray(r, t)) - }), []) : "string" == typeof e ? this._parse(e, this.options, !1, null).children : t ? Fi([e]) : [e] - }, - appendTo: function(e) { - return (wi(e) ? e : this._make(e)).append(this), this - }, - prependTo: function(e) { - return (wi(e) ? e : this._make(e)).prepend(this), this - }, - append: Ga, - prepend: Ya, - wrap: Ka, - wrapInner: ja, - unwrap: function(e) { - var t = this; - return this.parent(e).not("body").each((function(e, n) { - t._make(n).replaceWith(n.children) - })), this - }, - wrapAll: function(e) { - var t = this[0]; - if (t) { - for (var n = this._make("function" == typeof e ? e.call(t, 0, t) : e).insertBefore(t), r = void 0, i = 0; i < n.length; i++) "tag" === n[i].type && (r = n[i]); - for (var s = 0; r && s < r.children.length;) { - var a = r.children[s]; - "tag" === a.type ? (r = a, s = 0) : s++ - } - r && this._make(r).append(this) - } - return this - }, - after: function() { - for (var e = this, t = [], n = 0; n < arguments.length; n++) t[n] = arguments[n]; - var r = this.length - 1; - return Bi(this, (function(n, i) { - var s = n.parent; - if (k(n) && s) { - var a = s.children, - o = a.indexOf(n); - if (!(o < 0)) { - var c = "function" == typeof t[0] ? t[0].call(n, i, e._render(n.children)) : t; - Ha(a, o + 1, 0, e._makeDomArray(c, i < r), s) - } - } - })) - }, - insertAfter: function(e) { - var t = this; - "string" == typeof e && (e = this._make(e)), this.remove(); - var n = []; - return this._makeDomArray(e).forEach((function(e) { - var r = t.clone().toArray(), - i = e.parent; - if (i) { - var s = i.children, - a = s.indexOf(e); - a < 0 || (Ha(s, a + 1, 0, r, i), n.push.apply(n, r)) - } - })), this._make(n) - }, - before: function() { - for (var e = this, t = [], n = 0; n < arguments.length; n++) t[n] = arguments[n]; - var r = this.length - 1; - return Bi(this, (function(n, i) { - var s = n.parent; - if (k(n) && s) { - var a = s.children, - o = a.indexOf(n); - if (!(o < 0)) { - var c = "function" == typeof t[0] ? t[0].call(n, i, e._render(n.children)) : t; - Ha(a, o, 0, e._makeDomArray(c, i < r), s) - } - } - })) - }, - insertBefore: function(e) { - var t = this, - n = this._make(e); - this.remove(); - var r = []; - return Bi(n, (function(e) { - var n = t.clone().toArray(), - i = e.parent; - if (i) { - var s = i.children, - a = s.indexOf(e); - a < 0 || (Ha(s, a, 0, n, i), r.push.apply(r, n)) - } - })), this._make(r) - }, - remove: function(e) { - return Bi(e ? this.filter(e) : this, (function(e) { - ie(e), e.prev = e.next = e.parent = null - })), this - }, - replaceWith: function(e) { - var t = this; - return Bi(this, (function(n, r) { - var i = n.parent; - if (i) { - var s = i.children, - a = "function" == typeof e ? e.call(n, r, n) : e, - o = t._makeDomArray(a); - Ba(o, null); - var c = s.indexOf(n); - Ha(s, c, 1, o, i), o.includes(n) || (n.parent = n.prev = n.next = null) - } - })) - }, - empty: function() { - return Bi(this, (function(e) { - k(e) && (e.children.forEach((function(e) { - e.next = e.prev = e.parent = null - })), e.children.length = 0) - })) - }, - html: function(e) { - var t = this; - if (void 0 === e) { - var n = this[0]; - return n && k(n) ? this._render(n.children) : null - } - return Bi(this, (function(n) { - k(n) && (n.children.forEach((function(e) { - e.next = e.prev = e.parent = null - })), Ba(wi(e) ? e.toArray() : t._parse("".concat(e), t.options, !1, n).children, n)) - })) - }, - toString: function() { - return this._render(this) - }, - text: function(e) { - var t = this; - return void 0 === e ? Li(this) : Bi(this, "function" == typeof e ? function(n, r) { - return t._make(n).text(e.call(n, r, Li([n]))) - } : function(t) { - k(t) && (t.children.forEach((function(e) { - e.next = e.prev = e.parent = null - })), Ba(new m("".concat(e)), t)) - }) - }, - clone: function() { - return this._make(Fi(this.get())) - } -}); - -function Wa(e, t, n, r) { - if ("string" == typeof t) { - var i = Qa(e), - s = "function" == typeof n ? n.call(e, r, i[t]) : n; - "" === s ? delete i[t] : null != s && (i[t] = s), e.attribs.style = (a = i, Object.keys(a).reduce((function(e, t) { - return "".concat(e).concat(e ? " " : "").concat(t, ": ").concat(a[t], ";") - }), "")) - } else "object" == typeof t && Object.keys(t).forEach((function(n, r) { - Wa(e, n, t[n], r) - })); - var a -} - -function Qa(e, t) { - if (e && I(e)) { - var n = function(e) { - if (!(e = (e || "").trim())) return {}; - for (var t, n = {}, r = 0, i = e.split(";"); r < i.length; r++) { - var s = i[r], - a = s.indexOf(":"); - if (a < 1 || a === s.length - 1) { - var o = s.trimEnd(); - o.length > 0 && void 0 !== t && (n[t] += ";".concat(o)) - } else n[t = s.slice(0, a).trim()] = s.slice(a + 1).trim() - } - return n - }(e.attribs.style); - if ("string" == typeof t) return n[t]; - if (Array.isArray(t)) { - var r = {}; - return t.forEach((function(e) { - null != n[e] && (r[e] = n[e]) - })), r - } - return n - } -} -var Xa = Object.freeze({ - __proto__: null, - css: function(e, t) { - return null != e && null != t || "object" == typeof e && !Array.isArray(e) ? Bi(this, (function(n, r) { - I(n) && Wa(n, e, t, r) - })) : 0 !== this.length ? Qa(this[0], e) : void 0 - } - }), - $a = /%20/g, - za = /\r?\n/g; -var Ja = Object.freeze({ - __proto__: null, - serialize: function() { - var e = this.serializeArray().map((function(e) { - return "".concat(encodeURIComponent(e.name), "=").concat(encodeURIComponent(e.value)) - })); - return e.join("&").replace($a, "+") - }, - serializeArray: function() { - var e = this; - return this.map((function(t, n) { - var r = e._make(n); - return I(n) && "form" === n.name ? r.find("input,select,textarea,keygen").toArray() : r.filter("input,select,textarea,keygen").toArray() - })).filter('[name!=""]:enabled:not(:submit, :button, :image, :reset, :file):matches([checked], :not(:checkbox, :radio))').map((function(t, n) { - var r, i = e._make(n), - s = i.attr("name"), - a = null !== (r = i.val()) && void 0 !== r ? r : ""; - return Array.isArray(a) ? a.map((function(e) { - return { - name: s, - value: e.replace(za, "\r\n") - } - })) : { - name: s, - value: a.replace(za, "\r\n") - } - })).toArray() - } - }), - Za = function(e, t, n) { - if (this.length = 0, this.options = n, this._root = t, e) { - for (var r = 0; r < e.length; r++) this[r] = e[r]; - this.length = e.length - } - }; -Za.prototype.cheerio = "[cheerio object]", Za.prototype.splice = Array.prototype.splice, Za.prototype[Symbol.iterator] = Array.prototype[Symbol.iterator], Object.assign(Za.prototype, ts, wa, Va, Xa, Ja); -var eo, to = (eo = function(e, t) { - return eo = Object.setPrototypeOf || { - __proto__: [] - } - instanceof Array && function(e, t) { - e.__proto__ = t - } || function(e, t) { - for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]) - }, eo(e, t) - }, function(e, t) { - if ("function" != typeof t && null !== t) throw new TypeError("Class extends value " + String(t) + " is not a constructor or null"); - - function n() { - this.constructor = e - } - eo(e, t), e.prototype = null === t ? Object.create(t) : (n.prototype = t.prototype, new n) - }), - no = function() { - return no = Object.assign || function(e) { - for (var t, n = 1, r = arguments.length; n < r; n++) - for (var i in t = arguments[n]) Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]); - return e - }, no.apply(this, arguments) - }; -const ro = new Set([65534, 65535, 131070, 131071, 196606, 196607, 262142, 262143, 327678, 327679, 393214, 393215, 458750, 458751, 524286, 524287, 589822, 589823, 655358, 655359, 720894, 720895, 786430, 786431, 851966, 851967, 917502, 917503, 983038, 983039, 1048574, 1048575, 1114110, 1114111]); -var io; -! function(e) { - e[e.EOF = -1] = "EOF", e[e.NULL = 0] = "NULL", e[e.TABULATION = 9] = "TABULATION", e[e.CARRIAGE_RETURN = 13] = "CARRIAGE_RETURN", e[e.LINE_FEED = 10] = "LINE_FEED", e[e.FORM_FEED = 12] = "FORM_FEED", e[e.SPACE = 32] = "SPACE", e[e.EXCLAMATION_MARK = 33] = "EXCLAMATION_MARK", e[e.QUOTATION_MARK = 34] = "QUOTATION_MARK", e[e.NUMBER_SIGN = 35] = "NUMBER_SIGN", e[e.AMPERSAND = 38] = "AMPERSAND", e[e.APOSTROPHE = 39] = "APOSTROPHE", e[e.HYPHEN_MINUS = 45] = "HYPHEN_MINUS", e[e.SOLIDUS = 47] = "SOLIDUS", e[e.DIGIT_0 = 48] = "DIGIT_0", e[e.DIGIT_9 = 57] = "DIGIT_9", e[e.SEMICOLON = 59] = "SEMICOLON", e[e.LESS_THAN_SIGN = 60] = "LESS_THAN_SIGN", e[e.EQUALS_SIGN = 61] = "EQUALS_SIGN", e[e.GREATER_THAN_SIGN = 62] = "GREATER_THAN_SIGN", e[e.QUESTION_MARK = 63] = "QUESTION_MARK", e[e.LATIN_CAPITAL_A = 65] = "LATIN_CAPITAL_A", e[e.LATIN_CAPITAL_F = 70] = "LATIN_CAPITAL_F", e[e.LATIN_CAPITAL_X = 88] = "LATIN_CAPITAL_X", e[e.LATIN_CAPITAL_Z = 90] = "LATIN_CAPITAL_Z", e[e.RIGHT_SQUARE_BRACKET = 93] = "RIGHT_SQUARE_BRACKET", e[e.GRAVE_ACCENT = 96] = "GRAVE_ACCENT", e[e.LATIN_SMALL_A = 97] = "LATIN_SMALL_A", e[e.LATIN_SMALL_F = 102] = "LATIN_SMALL_F", e[e.LATIN_SMALL_X = 120] = "LATIN_SMALL_X", e[e.LATIN_SMALL_Z = 122] = "LATIN_SMALL_Z", e[e.REPLACEMENT_CHARACTER = 65533] = "REPLACEMENT_CHARACTER" -}(io = io || (io = {})); -const so = "--", - ao = "[CDATA[", - oo = "doctype", - co = "script", - lo = "public", - ho = "system"; - -function uo(e) { - return e >= 55296 && e <= 57343 -} - -function po(e) { - return 32 !== e && 10 !== e && 13 !== e && 9 !== e && 12 !== e && e >= 1 && e <= 31 || e >= 127 && e <= 159 -} - -function fo(e) { - return e >= 64976 && e <= 65007 || ro.has(e) -} -var Eo; -! function(e) { - e.controlCharacterInInputStream = "control-character-in-input-stream", e.noncharacterInInputStream = "noncharacter-in-input-stream", e.surrogateInInputStream = "surrogate-in-input-stream", e.nonVoidHtmlElementStartTagWithTrailingSolidus = "non-void-html-element-start-tag-with-trailing-solidus", e.endTagWithAttributes = "end-tag-with-attributes", e.endTagWithTrailingSolidus = "end-tag-with-trailing-solidus", e.unexpectedSolidusInTag = "unexpected-solidus-in-tag", e.unexpectedNullCharacter = "unexpected-null-character", e.unexpectedQuestionMarkInsteadOfTagName = "unexpected-question-mark-instead-of-tag-name", e.invalidFirstCharacterOfTagName = "invalid-first-character-of-tag-name", e.unexpectedEqualsSignBeforeAttributeName = "unexpected-equals-sign-before-attribute-name", e.missingEndTagName = "missing-end-tag-name", e.unexpectedCharacterInAttributeName = "unexpected-character-in-attribute-name", e.unknownNamedCharacterReference = "unknown-named-character-reference", e.missingSemicolonAfterCharacterReference = "missing-semicolon-after-character-reference", e.unexpectedCharacterAfterDoctypeSystemIdentifier = "unexpected-character-after-doctype-system-identifier", e.unexpectedCharacterInUnquotedAttributeValue = "unexpected-character-in-unquoted-attribute-value", e.eofBeforeTagName = "eof-before-tag-name", e.eofInTag = "eof-in-tag", e.missingAttributeValue = "missing-attribute-value", e.missingWhitespaceBetweenAttributes = "missing-whitespace-between-attributes", e.missingWhitespaceAfterDoctypePublicKeyword = "missing-whitespace-after-doctype-public-keyword", e.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers = "missing-whitespace-between-doctype-public-and-system-identifiers", e.missingWhitespaceAfterDoctypeSystemKeyword = "missing-whitespace-after-doctype-system-keyword", e.missingQuoteBeforeDoctypePublicIdentifier = "missing-quote-before-doctype-public-identifier", e.missingQuoteBeforeDoctypeSystemIdentifier = "missing-quote-before-doctype-system-identifier", e.missingDoctypePublicIdentifier = "missing-doctype-public-identifier", e.missingDoctypeSystemIdentifier = "missing-doctype-system-identifier", e.abruptDoctypePublicIdentifier = "abrupt-doctype-public-identifier", e.abruptDoctypeSystemIdentifier = "abrupt-doctype-system-identifier", e.cdataInHtmlContent = "cdata-in-html-content", e.incorrectlyOpenedComment = "incorrectly-opened-comment", e.eofInScriptHtmlCommentLikeText = "eof-in-script-html-comment-like-text", e.eofInDoctype = "eof-in-doctype", e.nestedComment = "nested-comment", e.abruptClosingOfEmptyComment = "abrupt-closing-of-empty-comment", e.eofInComment = "eof-in-comment", e.incorrectlyClosedComment = "incorrectly-closed-comment", e.eofInCdata = "eof-in-cdata", e.absenceOfDigitsInNumericCharacterReference = "absence-of-digits-in-numeric-character-reference", e.nullCharacterReference = "null-character-reference", e.surrogateCharacterReference = "surrogate-character-reference", e.characterReferenceOutsideUnicodeRange = "character-reference-outside-unicode-range", e.controlCharacterReference = "control-character-reference", e.noncharacterCharacterReference = "noncharacter-character-reference", e.missingWhitespaceBeforeDoctypeName = "missing-whitespace-before-doctype-name", e.missingDoctypeName = "missing-doctype-name", e.invalidCharacterSequenceAfterDoctypeName = "invalid-character-sequence-after-doctype-name", e.duplicateAttribute = "duplicate-attribute", e.nonConformingDoctype = "non-conforming-doctype", e.missingDoctype = "missing-doctype", e.misplacedDoctype = "misplaced-doctype", e.endTagWithoutMatchingOpenElement = "end-tag-without-matching-open-element", e.closingOfElementWithOpenChildElements = "closing-of-element-with-open-child-elements", e.disallowedContentInNoscriptInHead = "disallowed-content-in-noscript-in-head", e.openElementsLeftAfterEof = "open-elements-left-after-eof", e.abandonedHeadElementChild = "abandoned-head-element-child", e.misplacedStartTagForHeadElement = "misplaced-start-tag-for-head-element", e.nestedNoscriptInHead = "nested-noscript-in-head", e.eofInElementThatCanContainOnlyText = "eof-in-element-that-can-contain-only-text" -}(Eo = Eo || (Eo = {})); -class mo { - constructor(e) { - this.handler = e, this.html = "", this.pos = -1, this.lastGapPos = -2, this.gapStack = [], this.skipNextNewLine = !1, this.lastChunkWritten = !1, this.endOfChunkHit = !1, this.bufferWaterline = 65536, this.isEol = !1, this.lineStartPos = 0, this.droppedBufferSize = 0, this.line = 1, this.lastErrOffset = -1 - } - get col() { - return this.pos - this.lineStartPos + Number(this.lastGapPos !== this.pos) - } - get offset() { - return this.droppedBufferSize + this.pos - } - getError(e) { - const { - line: t, - col: n, - offset: r - } = this; - return { - code: e, - startLine: t, - endLine: t, - startCol: n, - endCol: n, - startOffset: r, - endOffset: r - } - } - _err(e) { - this.handler.onParseError && this.lastErrOffset !== this.offset && (this.lastErrOffset = this.offset, this.handler.onParseError(this.getError(e))) - } - _addGap() { - this.gapStack.push(this.lastGapPos), this.lastGapPos = this.pos - } - _processSurrogate(e) { - if (this.pos !== this.html.length - 1) { - const t = this.html.charCodeAt(this.pos + 1); - if (function(e) { - return e >= 56320 && e <= 57343 - }(t)) return this.pos++, this._addGap(), 1024 * (e - 55296) + 9216 + t - } else if (!this.lastChunkWritten) return this.endOfChunkHit = !0, io.EOF; - return this._err(Eo.surrogateInInputStream), e - } - willDropParsedChunk() { - return this.pos > this.bufferWaterline - } - dropParsedChunk() { - this.willDropParsedChunk() && (this.html = this.html.substring(this.pos), this.lineStartPos -= this.pos, this.droppedBufferSize += this.pos, this.pos = 0, this.lastGapPos = -2, this.gapStack.length = 0) - } - write(e, t) { - this.html.length > 0 ? this.html += e : this.html = e, this.endOfChunkHit = !1, this.lastChunkWritten = t - } - insertHtmlAtCurrentPos(e) { - this.html = this.html.substring(0, this.pos + 1) + e + this.html.substring(this.pos + 1), this.endOfChunkHit = !1 - } - startsWith(e, t) { - if (this.pos + e.length > this.html.length) return this.endOfChunkHit = !this.lastChunkWritten, !1; - if (t) return this.html.startsWith(e, this.pos); - for (let t = 0; t < e.length; t++) { - if ((32 | this.html.charCodeAt(this.pos + t)) !== e.charCodeAt(t)) return !1 - } - return !0 - } - peek(e) { - const t = this.pos + e; - return t >= this.html.length ? (this.endOfChunkHit = !this.lastChunkWritten, io.EOF) : this.html.charCodeAt(t) - } - advance() { - if (this.pos++, this.isEol && (this.isEol = !1, this.line++, this.lineStartPos = this.pos), this.pos >= this.html.length) return this.endOfChunkHit = !this.lastChunkWritten, io.EOF; - let e = this.html.charCodeAt(this.pos); - if (e === io.CARRIAGE_RETURN) return this.isEol = !0, this.skipNextNewLine = !0, io.LINE_FEED; - if (e === io.LINE_FEED && (this.isEol = !0, this.skipNextNewLine)) return this.line--, this.skipNextNewLine = !1, this._addGap(), this.advance(); - this.skipNextNewLine = !1, uo(e) && (e = this._processSurrogate(e)); - return null === this.handler.onParseError || e > 31 && e < 127 || e === io.LINE_FEED || e === io.CARRIAGE_RETURN || e > 159 && e < 64976 || this._checkForProblematicCharacters(e), e - } - _checkForProblematicCharacters(e) { - po(e) ? this._err(Eo.controlCharacterInInputStream) : fo(e) && this._err(Eo.noncharacterInInputStream) - } - retreat(e) { - for (this.pos -= e; this.pos < this.lastGapPos;) this.lastGapPos = this.gapStack.pop(), this.pos--; - this.isEol = !1 - } -} -var To; - -function _o(e, t) { - for (let n = e.attrs.length - 1; n >= 0; n--) - if (e.attrs[n].name === t) return e.attrs[n].value; - return null -}! function(e) { - e[e.CHARACTER = 0] = "CHARACTER", e[e.NULL_CHARACTER = 1] = "NULL_CHARACTER", e[e.WHITESPACE_CHARACTER = 2] = "WHITESPACE_CHARACTER", e[e.START_TAG = 3] = "START_TAG", e[e.END_TAG = 4] = "END_TAG", e[e.COMMENT = 5] = "COMMENT", e[e.DOCTYPE = 6] = "DOCTYPE", e[e.EOF = 7] = "EOF", e[e.HIBERNATION = 8] = "HIBERNATION" -}(To = To || (To = {})); -var Ao = Ke((function(e, t) { - Object.defineProperty(t, "__esModule", { - value: !0 - }), t.default = new Uint16Array('ᵁ<Õıʊҝջאٵ۞ޢߖࠏ੊ઑඡ๭༉༦჊ረዡᐕᒝᓃᓟᔥ\0\0\0\0\0\0ᕫᛍᦍᰒᷝ὾⁠↰⊍⏀⏻⑂⠤⤒ⴈ⹈⿎〖㊺㘹㞬㣾㨨㩱㫠㬮ࠀEMabcfglmnoprstu\\bfms„‹•˜¦³¹ÈÏlig耻Æ䃆P耻&䀦cute耻Á䃁reve;䄂Āiyx}rc耻Â䃂;䐐r;쀀𝔄rave耻À䃀pha;䎑acr;䄀d;橓Āgp¡on;䄄f;쀀𝔸plyFunction;恡ing耻Å䃅Ācs¾Ãr;쀀𝒜ign;扔ilde耻Ã䃃ml耻Ä䃄ЀaceforsuåûþėĜĢħĪĀcrêòkslash;或Ŷöø;櫧ed;挆y;䐑ƀcrtąċĔause;戵noullis;愬a;䎒r;쀀𝔅pf;쀀𝔹eve;䋘còēmpeq;扎܀HOacdefhilorsuōőŖƀƞƢƵƷƺǜȕɳɸɾcy;䐧PY耻©䂩ƀcpyŝŢźute;䄆Ā;iŧŨ拒talDifferentialD;慅leys;愭ȀaeioƉƎƔƘron;䄌dil耻Ç䃇rc;䄈nint;戰ot;䄊ĀdnƧƭilla;䂸terDot;䂷òſi;䎧rcleȀDMPTLJNjǑǖot;抙inus;抖lus;投imes;抗oĀcsǢǸkwiseContourIntegral;戲eCurlyĀDQȃȏoubleQuote;思uote;怙ȀlnpuȞȨɇɕonĀ;eȥȦ户;橴ƀgitȯȶȺruent;扡nt;戯ourIntegral;戮ĀfrɌɎ;愂oduct;成nterClockwiseContourIntegral;戳oss;樯cr;쀀𝒞pĀ;Cʄʅ拓ap;才րDJSZacefiosʠʬʰʴʸˋ˗ˡ˦̳ҍĀ;oŹʥtrahd;椑cy;䐂cy;䐅cy;䐏ƀgrsʿ˄ˇger;怡r;憡hv;櫤Āayː˕ron;䄎;䐔lĀ;t˝˞戇a;䎔r;쀀𝔇Āaf˫̧Ācm˰̢riticalȀADGT̖̜̀̆cute;䂴oŴ̋̍;䋙bleAcute;䋝rave;䁠ilde;䋜ond;拄ferentialD;慆Ѱ̽\0\0\0͔͂\0Ѕf;쀀𝔻ƀ;DE͈͉͍䂨ot;惜qual;扐blèCDLRUVͣͲ΂ϏϢϸontourIntegraìȹoɴ͹\0\0ͻ»͉nArrow;懓Āeo·ΤftƀARTΐΖΡrrow;懐ightArrow;懔eåˊngĀLRΫτeftĀARγιrrow;柸ightArrow;柺ightArrow;柹ightĀATϘϞrrow;懒ee;抨pɁϩ\0\0ϯrrow;懑ownArrow;懕erticalBar;戥ǹABLRTaВЪаўѿͼrrowƀ;BUНОТ憓ar;椓pArrow;懵reve;䌑eft˒к\0ц\0ѐightVector;楐eeVector;楞ectorĀ;Bљњ憽ar;楖ightǔѧ\0ѱeeVector;楟ectorĀ;BѺѻ懁ar;楗eeĀ;A҆҇护rrow;憧ĀctҒҗr;쀀𝒟rok;䄐ࠀNTacdfglmopqstuxҽӀӄӋӞӢӧӮӵԡԯԶՒ՝ՠեG;䅊H耻Ð䃐cute耻É䃉ƀaiyӒӗӜron;䄚rc耻Ê䃊;䐭ot;䄖r;쀀𝔈rave耻È䃈ement;戈ĀapӺӾcr;䄒tyɓԆ\0\0ԒmallSquare;旻erySmallSquare;斫ĀgpԦԪon;䄘f;쀀𝔼silon;䎕uĀaiԼՉlĀ;TՂՃ橵ilde;扂librium;懌Āci՗՚r;愰m;橳a;䎗ml耻Ë䃋Āipժկsts;戃onentialE;慇ʀcfiosօֈ֍ֲ׌y;䐤r;쀀𝔉lledɓ֗\0\0֣mallSquare;旼erySmallSquare;斪Ͱֺ\0ֿ\0\0ׄf;쀀𝔽All;戀riertrf;愱cò׋؀JTabcdfgorstר׬ׯ׺؀ؒؖ؛؝أ٬ٲcy;䐃耻>䀾mmaĀ;d׷׸䎓;䏜reve;䄞ƀeiy؇،ؐdil;䄢rc;䄜;䐓ot;䄠r;쀀𝔊;拙pf;쀀𝔾eater̀EFGLSTصلَٖٛ٦qualĀ;Lؾؿ扥ess;招ullEqual;执reater;檢ess;扷lantEqual;橾ilde;扳cr;쀀𝒢;扫ЀAacfiosuڅڋږڛڞڪھۊRDcy;䐪Āctڐڔek;䋇;䁞irc;䄤r;愌lbertSpace;愋ǰگ\0ڲf;愍izontalLine;攀Āctۃۅòکrok;䄦mpńېۘownHumðįqual;扏܀EJOacdfgmnostuۺ۾܃܇܎ܚܞܡܨ݄ݸދޏޕcy;䐕lig;䄲cy;䐁cute耻Í䃍Āiyܓܘrc耻Î䃎;䐘ot;䄰r;愑rave耻Ì䃌ƀ;apܠܯܿĀcgܴܷr;䄪inaryI;慈lieóϝǴ݉\0ݢĀ;eݍݎ戬Āgrݓݘral;戫section;拂isibleĀCTݬݲomma;恣imes;恢ƀgptݿރވon;䄮f;쀀𝕀a;䎙cr;愐ilde;䄨ǫޚ\0ޞcy;䐆l耻Ï䃏ʀcfosuެ޷޼߂ߐĀiyޱ޵rc;䄴;䐙r;쀀𝔍pf;쀀𝕁ǣ߇\0ߌr;쀀𝒥rcy;䐈kcy;䐄΀HJacfosߤߨ߽߬߱ࠂࠈcy;䐥cy;䐌ppa;䎚Āey߶߻dil;䄶;䐚r;쀀𝔎pf;쀀𝕂cr;쀀𝒦րJTaceflmostࠥࠩࠬࡐࡣ঳সে্਷ੇcy;䐉耻<䀼ʀcmnpr࠷࠼ࡁࡄࡍute;䄹bda;䎛g;柪lacetrf;愒r;憞ƀaeyࡗ࡜ࡡron;䄽dil;䄻;䐛Āfsࡨ॰tԀACDFRTUVarࡾࢩࢱࣦ࣠ࣼयज़ΐ४Ānrࢃ࢏gleBracket;柨rowƀ;BR࢙࢚࢞憐ar;懤ightArrow;懆eiling;挈oǵࢷ\0ࣃbleBracket;柦nǔࣈ\0࣒eeVector;楡ectorĀ;Bࣛࣜ懃ar;楙loor;挊ightĀAV࣯ࣵrrow;憔ector;楎Āerँगeƀ;AVउऊऐ抣rrow;憤ector;楚iangleƀ;BEतथऩ抲ar;槏qual;抴pƀDTVषूौownVector;楑eeVector;楠ectorĀ;Bॖॗ憿ar;楘ectorĀ;B॥०憼ar;楒ightáΜs̀EFGLSTॾঋকঝঢভqualGreater;拚ullEqual;扦reater;扶ess;檡lantEqual;橽ilde;扲r;쀀𝔏Ā;eঽা拘ftarrow;懚idot;䄿ƀnpw৔ਖਛgȀLRlr৞৷ਂਐeftĀAR০৬rrow;柵ightArrow;柷ightArrow;柶eftĀarγਊightáοightáϊf;쀀𝕃erĀLRਢਬeftArrow;憙ightArrow;憘ƀchtਾੀੂòࡌ;憰rok;䅁;扪Ѐacefiosuਗ਼੝੠੷੼અઋ઎p;椅y;䐜Ādl੥੯iumSpace;恟lintrf;愳r;쀀𝔐nusPlus;戓pf;쀀𝕄cò੶;䎜ҀJacefostuણધભીଔଙඑ඗ඞcy;䐊cute;䅃ƀaey઴હાron;䅇dil;䅅;䐝ƀgswે૰଎ativeƀMTV૓૟૨ediumSpace;怋hiĀcn૦૘ë૙eryThiî૙tedĀGL૸ଆreaterGreateòٳessLesóੈLine;䀊r;쀀𝔑ȀBnptଢନଷ଺reak;恠BreakingSpace;䂠f;愕ڀ;CDEGHLNPRSTV୕ୖ୪୼஡௫ఄ౞಄ದ೘ൡඅ櫬Āou୛୤ngruent;扢pCap;扭oubleVerticalBar;戦ƀlqxஃஊ஛ement;戉ualĀ;Tஒஓ扠ilde;쀀≂̸ists;戄reater΀;EFGLSTஶஷ஽௉௓௘௥扯qual;扱ullEqual;쀀≧̸reater;쀀≫̸ess;批lantEqual;쀀⩾̸ilde;扵umpń௲௽ownHump;쀀≎̸qual;쀀≏̸eĀfsఊధtTriangleƀ;BEచఛడ拪ar;쀀⧏̸qual;括s̀;EGLSTవశ఼ౄోౘ扮qual;扰reater;扸ess;쀀≪̸lantEqual;쀀⩽̸ilde;扴estedĀGL౨౹reaterGreater;쀀⪢̸essLess;쀀⪡̸recedesƀ;ESಒಓಛ技qual;쀀⪯̸lantEqual;拠ĀeiಫಹverseElement;戌ghtTriangleƀ;BEೋೌ೒拫ar;쀀⧐̸qual;拭ĀquೝഌuareSuĀbp೨೹setĀ;E೰ೳ쀀⊏̸qual;拢ersetĀ;Eഃആ쀀⊐̸qual;拣ƀbcpഓതൎsetĀ;Eഛഞ쀀⊂⃒qual;抈ceedsȀ;ESTലള഻െ抁qual;쀀⪰̸lantEqual;拡ilde;쀀≿̸ersetĀ;E൘൛쀀⊃⃒qual;抉ildeȀ;EFT൮൯൵ൿ扁qual;扄ullEqual;扇ilde;扉erticalBar;戤cr;쀀𝒩ilde耻Ñ䃑;䎝܀Eacdfgmoprstuvලෂ෉෕ෛ෠෧෼ขภยา฿ไlig;䅒cute耻Ó䃓Āiy෎ීrc耻Ô䃔;䐞blac;䅐r;쀀𝔒rave耻Ò䃒ƀaei෮ෲ෶cr;䅌ga;䎩cron;䎟pf;쀀𝕆enCurlyĀDQฎบoubleQuote;怜uote;怘;橔Āclวฬr;쀀𝒪ash耻Ø䃘iŬื฼de耻Õ䃕es;樷ml耻Ö䃖erĀBP๋๠Āar๐๓r;怾acĀek๚๜;揞et;掴arenthesis;揜Ҁacfhilors๿ງຊຏຒດຝະ໼rtialD;戂y;䐟r;쀀𝔓i;䎦;䎠usMinus;䂱Āipຢອncareplanåڝf;愙Ȁ;eio຺ູ໠໤檻cedesȀ;EST່້໏໚扺qual;檯lantEqual;扼ilde;找me;怳Ādp໩໮uct;戏ortionĀ;aȥ໹l;戝Āci༁༆r;쀀𝒫;䎨ȀUfos༑༖༛༟OT耻"䀢r;쀀𝔔pf;愚cr;쀀𝒬؀BEacefhiorsu༾གྷཇའཱིྦྷྪྭ႖ႩႴႾarr;椐G耻®䂮ƀcnrཎནབute;䅔g;柫rĀ;tཛྷཝ憠l;椖ƀaeyཧཬཱron;䅘dil;䅖;䐠Ā;vླྀཹ愜erseĀEUྂྙĀlq྇ྎement;戋uilibrium;懋pEquilibrium;楯r»ཹo;䎡ghtЀACDFTUVa࿁࿫࿳ဢဨၛႇϘĀnr࿆࿒gleBracket;柩rowƀ;BL࿜࿝࿡憒ar;懥eftArrow;懄eiling;按oǵ࿹\0စbleBracket;柧nǔည\0နeeVector;楝ectorĀ;Bဝသ懂ar;楕loor;挋Āerိ၃eƀ;AVဵံြ抢rrow;憦ector;楛iangleƀ;BEၐၑၕ抳ar;槐qual;抵pƀDTVၣၮၸownVector;楏eeVector;楜ectorĀ;Bႂႃ憾ar;楔ectorĀ;B႑႒懀ar;楓Āpuႛ႞f;愝ndImplies;楰ightarrow;懛ĀchႹႼr;愛;憱leDelayed;槴ڀHOacfhimoqstuფჱჷჽᄙᄞᅑᅖᅡᅧᆵᆻᆿĀCcჩხHcy;䐩y;䐨FTcy;䐬cute;䅚ʀ;aeiyᄈᄉᄎᄓᄗ檼ron;䅠dil;䅞rc;䅜;䐡r;쀀𝔖ortȀDLRUᄪᄴᄾᅉownArrow»ОeftArrow»࢚ightArrow»࿝pArrow;憑gma;䎣allCircle;战pf;쀀𝕊ɲᅭ\0\0ᅰt;戚areȀ;ISUᅻᅼᆉᆯ斡ntersection;抓uĀbpᆏᆞsetĀ;Eᆗᆘ抏qual;抑ersetĀ;Eᆨᆩ抐qual;抒nion;抔cr;쀀𝒮ar;拆ȀbcmpᇈᇛሉላĀ;sᇍᇎ拐etĀ;Eᇍᇕqual;抆ĀchᇠህeedsȀ;ESTᇭᇮᇴᇿ扻qual;檰lantEqual;扽ilde;承Tháྌ;我ƀ;esሒሓሣ拑rsetĀ;Eሜም抃qual;抇et»ሓրHRSacfhiorsሾቄ቉ቕ቞ቱቶኟዂወዑORN耻Þ䃞ADE;愢ĀHc቎ቒcy;䐋y;䐦Ābuቚቜ;䀉;䎤ƀaeyብቪቯron;䅤dil;䅢;䐢r;쀀𝔗Āeiቻ኉Dzኀ\0ኇefore;戴a;䎘Ācn኎ኘkSpace;쀀  Space;怉ldeȀ;EFTካኬኲኼ戼qual;扃ullEqual;扅ilde;扈pf;쀀𝕋ipleDot;惛Āctዖዛr;쀀𝒯rok;䅦ૡዷጎጚጦ\0ጬጱ\0\0\0\0\0ጸጽ፷ᎅ\0᏿ᐄᐊᐐĀcrዻጁute耻Ú䃚rĀ;oጇገ憟cir;楉rǣጓ\0጖y;䐎ve;䅬Āiyጞጣrc耻Û䃛;䐣blac;䅰r;쀀𝔘rave耻Ù䃙acr;䅪Ādiፁ፩erĀBPፈ፝Āarፍፐr;䁟acĀekፗፙ;揟et;掵arenthesis;揝onĀ;P፰፱拃lus;抎Āgp፻፿on;䅲f;쀀𝕌ЀADETadps᎕ᎮᎸᏄϨᏒᏗᏳrrowƀ;BDᅐᎠᎤar;椒ownArrow;懅ownArrow;憕quilibrium;楮eeĀ;AᏋᏌ报rrow;憥ownáϳerĀLRᏞᏨeftArrow;憖ightArrow;憗iĀ;lᏹᏺ䏒on;䎥ing;䅮cr;쀀𝒰ilde;䅨ml耻Ü䃜ҀDbcdefosvᐧᐬᐰᐳᐾᒅᒊᒐᒖash;披ar;櫫y;䐒ashĀ;lᐻᐼ抩;櫦Āerᑃᑅ;拁ƀbtyᑌᑐᑺar;怖Ā;iᑏᑕcalȀBLSTᑡᑥᑪᑴar;戣ine;䁼eparator;杘ilde;所ThinSpace;怊r;쀀𝔙pf;쀀𝕍cr;쀀𝒱dash;抪ʀcefosᒧᒬᒱᒶᒼirc;䅴dge;拀r;쀀𝔚pf;쀀𝕎cr;쀀𝒲Ȁfiosᓋᓐᓒᓘr;쀀𝔛;䎞pf;쀀𝕏cr;쀀𝒳ҀAIUacfosuᓱᓵᓹᓽᔄᔏᔔᔚᔠcy;䐯cy;䐇cy;䐮cute耻Ý䃝Āiyᔉᔍrc;䅶;䐫r;쀀𝔜pf;쀀𝕐cr;쀀𝒴ml;䅸ЀHacdefosᔵᔹᔿᕋᕏᕝᕠᕤcy;䐖cute;䅹Āayᕄᕉron;䅽;䐗ot;䅻Dzᕔ\0ᕛoWidtè૙a;䎖r;愨pf;愤cr;쀀𝒵௡ᖃᖊᖐ\0ᖰᖶᖿ\0\0\0\0ᗆᗛᗫᙟ᙭\0ᚕ᚛ᚲᚹ\0ᚾcute耻á䃡reve;䄃̀;Ediuyᖜᖝᖡᖣᖨᖭ戾;쀀∾̳;房rc耻â䃢te肻´̆;䐰lig耻æ䃦Ā;r²ᖺ;쀀𝔞rave耻à䃠ĀepᗊᗖĀfpᗏᗔsym;愵èᗓha;䎱ĀapᗟcĀclᗤᗧr;䄁g;樿ɤᗰ\0\0ᘊʀ;adsvᗺᗻᗿᘁᘇ戧nd;橕;橜lope;橘;橚΀;elmrszᘘᘙᘛᘞᘿᙏᙙ戠;榤e»ᘙsdĀ;aᘥᘦ戡ѡᘰᘲᘴᘶᘸᘺᘼᘾ;榨;榩;榪;榫;榬;榭;榮;榯tĀ;vᙅᙆ戟bĀ;dᙌᙍ抾;榝Āptᙔᙗh;戢»¹arr;捼Āgpᙣᙧon;䄅f;쀀𝕒΀;Eaeiop዁ᙻᙽᚂᚄᚇᚊ;橰cir;橯;扊d;手s;䀧roxĀ;e዁ᚒñᚃing耻å䃥ƀctyᚡᚦᚨr;쀀𝒶;䀪mpĀ;e዁ᚯñʈilde耻ã䃣ml耻ä䃤Āciᛂᛈoninôɲnt;樑ࠀNabcdefiklnoprsu᛭ᛱᜰ᜼ᝃᝈ᝸᝽០៦ᠹᡐᜍ᤽᥈ᥰot;櫭Ācrᛶ᜞kȀcepsᜀᜅᜍᜓong;扌psilon;䏶rime;怵imĀ;e᜚᜛戽q;拍Ŷᜢᜦee;抽edĀ;gᜬᜭ挅e»ᜭrkĀ;t፜᜷brk;掶Āoyᜁᝁ;䐱quo;怞ʀcmprtᝓ᝛ᝡᝤᝨausĀ;eĊĉptyv;榰séᜌnoõēƀahwᝯ᝱ᝳ;䎲;愶een;扬r;쀀𝔟g΀costuvwឍឝឳេ៕៛៞ƀaiuបពរðݠrc;旯p»፱ƀdptឤឨឭot;樀lus;樁imes;樂ɱឹ\0\0ើcup;樆ar;昅riangleĀdu៍្own;施p;斳plus;樄eåᑄåᒭarow;植ƀako៭ᠦᠵĀcn៲ᠣkƀlst៺֫᠂ozenge;槫riangleȀ;dlr᠒᠓᠘᠝斴own;斾eft;旂ight;斸k;搣Ʊᠫ\0ᠳƲᠯ\0ᠱ;斒;斑4;斓ck;斈ĀeoᠾᡍĀ;qᡃᡆ쀀=⃥uiv;쀀≡⃥t;挐Ȁptwxᡙᡞᡧᡬf;쀀𝕓Ā;tᏋᡣom»Ꮜtie;拈؀DHUVbdhmptuvᢅᢖᢪᢻᣗᣛᣬ᣿ᤅᤊᤐᤡȀLRlrᢎᢐᢒᢔ;敗;敔;敖;敓ʀ;DUduᢡᢢᢤᢦᢨ敐;敦;敩;敤;敧ȀLRlrᢳᢵᢷᢹ;敝;敚;敜;教΀;HLRhlrᣊᣋᣍᣏᣑᣓᣕ救;敬;散;敠;敫;敢;敟ox;槉ȀLRlrᣤᣦᣨᣪ;敕;敒;攐;攌ʀ;DUduڽ᣷᣹᣻᣽;敥;敨;攬;攴inus;抟lus;択imes;抠ȀLRlrᤙᤛᤝ᤟;敛;敘;攘;攔΀;HLRhlrᤰᤱᤳᤵᤷ᤻᤹攂;敪;敡;敞;攼;攤;攜Āevģ᥂bar耻¦䂦Ȁceioᥑᥖᥚᥠr;쀀𝒷mi;恏mĀ;e᜚᜜lƀ;bhᥨᥩᥫ䁜;槅sub;柈Ŭᥴ᥾lĀ;e᥹᥺怢t»᥺pƀ;Eeįᦅᦇ;檮Ā;qۜۛೡᦧ\0᧨ᨑᨕᨲ\0ᨷᩐ\0\0᪴\0\0᫁\0\0ᬡᬮ᭍᭒\0᯽\0ᰌƀcpr᦭ᦲ᧝ute;䄇̀;abcdsᦿᧀᧄ᧊᧕᧙戩nd;橄rcup;橉Āau᧏᧒p;橋p;橇ot;橀;쀀∩︀Āeo᧢᧥t;恁îړȀaeiu᧰᧻ᨁᨅǰ᧵\0᧸s;橍on;䄍dil耻ç䃧rc;䄉psĀ;sᨌᨍ橌m;橐ot;䄋ƀdmnᨛᨠᨦil肻¸ƭptyv;榲t脀¢;eᨭᨮ䂢räƲr;쀀𝔠ƀceiᨽᩀᩍy;䑇ckĀ;mᩇᩈ朓ark»ᩈ;䏇r΀;Ecefms᩟᩠ᩢᩫ᪤᪪᪮旋;槃ƀ;elᩩᩪᩭ䋆q;扗eɡᩴ\0\0᪈rrowĀlr᩼᪁eft;憺ight;憻ʀRSacd᪒᪔᪖᪚᪟»ཇ;擈st;抛irc;抚ash;抝nint;樐id;櫯cir;槂ubsĀ;u᪻᪼晣it»᪼ˬ᫇᫔᫺\0ᬊonĀ;eᫍᫎ䀺Ā;qÇÆɭ᫙\0\0᫢aĀ;t᫞᫟䀬;䁀ƀ;fl᫨᫩᫫戁îᅠeĀmx᫱᫶ent»᫩eóɍǧ᫾\0ᬇĀ;dኻᬂot;橭nôɆƀfryᬐᬔᬗ;쀀𝕔oäɔ脀©;sŕᬝr;愗Āaoᬥᬩrr;憵ss;朗Ācuᬲᬷr;쀀𝒸Ābpᬼ᭄Ā;eᭁᭂ櫏;櫑Ā;eᭉᭊ櫐;櫒dot;拯΀delprvw᭠᭬᭷ᮂᮬᯔ᯹arrĀlr᭨᭪;椸;椵ɰ᭲\0\0᭵r;拞c;拟arrĀ;p᭿ᮀ憶;椽̀;bcdosᮏᮐᮖᮡᮥᮨ截rcap;橈Āauᮛᮞp;橆p;橊ot;抍r;橅;쀀∪︀Ȁalrv᮵ᮿᯞᯣrrĀ;mᮼᮽ憷;椼yƀevwᯇᯔᯘqɰᯎ\0\0ᯒreã᭳uã᭵ee;拎edge;拏en耻¤䂤earrowĀlrᯮ᯳eft»ᮀight»ᮽeäᯝĀciᰁᰇoninôǷnt;戱lcty;挭ঀAHabcdefhijlorstuwz᰸᰻᰿ᱝᱩᱵᲊᲞᲬᲷ᳻᳿ᴍᵻᶑᶫᶻ᷆᷍rò΁ar;楥Ȁglrs᱈ᱍ᱒᱔ger;怠eth;愸òᄳhĀ;vᱚᱛ怐»ऊūᱡᱧarow;椏aã̕Āayᱮᱳron;䄏;䐴ƀ;ao̲ᱼᲄĀgrʿᲁr;懊tseq;橷ƀglmᲑᲔᲘ耻°䂰ta;䎴ptyv;榱ĀirᲣᲨsht;楿;쀀𝔡arĀlrᲳᲵ»ࣜ»သʀaegsv᳂͸᳖᳜᳠mƀ;oș᳊᳔ndĀ;ș᳑uit;晦amma;䏝in;拲ƀ;io᳧᳨᳸䃷de脀÷;o᳧ᳰntimes;拇nø᳷cy;䑒cɯᴆ\0\0ᴊrn;挞op;挍ʀlptuwᴘᴝᴢᵉᵕlar;䀤f;쀀𝕕ʀ;emps̋ᴭᴷᴽᵂqĀ;d͒ᴳot;扑inus;戸lus;戔quare;抡blebarwedgåúnƀadhᄮᵝᵧownarrowóᲃarpoonĀlrᵲᵶefôᲴighôᲶŢᵿᶅkaro÷གɯᶊ\0\0ᶎrn;挟op;挌ƀcotᶘᶣᶦĀryᶝᶡ;쀀𝒹;䑕l;槶rok;䄑Ādrᶰᶴot;拱iĀ;fᶺ᠖斿Āah᷀᷃ròЩaòྦangle;榦Āci᷒ᷕy;䑟grarr;柿ऀDacdefglmnopqrstuxḁḉḙḸոḼṉṡṾấắẽỡἪἷὄ὎὚ĀDoḆᴴoôᲉĀcsḎḔute耻é䃩ter;橮ȀaioyḢḧḱḶron;䄛rĀ;cḭḮ扖耻ê䃪lon;払;䑍ot;䄗ĀDrṁṅot;扒;쀀𝔢ƀ;rsṐṑṗ檚ave耻è䃨Ā;dṜṝ檖ot;檘Ȁ;ilsṪṫṲṴ檙nters;揧;愓Ā;dṹṺ檕ot;檗ƀapsẅẉẗcr;䄓tyƀ;svẒẓẕ戅et»ẓpĀ1;ẝẤijạả;怄;怅怃ĀgsẪẬ;䅋p;怂ĀgpẴẸon;䄙f;쀀𝕖ƀalsỄỎỒrĀ;sỊị拕l;槣us;橱iƀ;lvỚớở䎵on»ớ;䏵ȀcsuvỪỳἋἣĀioữḱrc»Ḯɩỹ\0\0ỻíՈantĀglἂἆtr»ṝess»Ṻƀaeiἒ἖Ἒls;䀽st;扟vĀ;DȵἠD;橸parsl;槥ĀDaἯἳot;打rr;楱ƀcdiἾὁỸr;愯oô͒ĀahὉὋ;䎷耻ð䃰Āmrὓὗl耻ë䃫o;悬ƀcipὡὤὧl;䀡sôծĀeoὬὴctatioîՙnentialåչৡᾒ\0ᾞ\0ᾡᾧ\0\0ῆῌ\0ΐ\0ῦῪ \0 ⁚llingdotseñṄy;䑄male;晀ƀilrᾭᾳ῁lig;耀ffiɩᾹ\0\0᾽g;耀ffig;耀ffl;쀀𝔣lig;耀filig;쀀fjƀaltῙ῜ῡt;晭ig;耀flns;斱of;䆒ǰ΅\0ῳf;쀀𝕗ĀakֿῷĀ;vῼ´拔;櫙artint;樍Āao‌⁕Ācs‑⁒ႉ‸⁅⁈\0⁐β•‥‧‪‬\0‮耻½䂽;慓耻¼䂼;慕;慙;慛Ƴ‴\0‶;慔;慖ʴ‾⁁\0\0⁃耻¾䂾;慗;慜5;慘ƶ⁌\0⁎;慚;慝8;慞l;恄wn;挢cr;쀀𝒻ࢀEabcdefgijlnorstv₂₉₟₥₰₴⃰⃵⃺⃿℃ℒℸ̗ℾ⅒↞Ā;lٍ₇;檌ƀcmpₐₕ₝ute;䇵maĀ;dₜ᳚䎳;檆reve;䄟Āiy₪₮rc;䄝;䐳ot;䄡Ȁ;lqsؾق₽⃉ƀ;qsؾٌ⃄lanô٥Ȁ;cdl٥⃒⃥⃕c;檩otĀ;o⃜⃝檀Ā;l⃢⃣檂;檄Ā;e⃪⃭쀀⋛︀s;檔r;쀀𝔤Ā;gٳ؛mel;愷cy;䑓Ȁ;Eajٚℌℎℐ;檒;檥;檤ȀEaesℛℝ℩ℴ;扩pĀ;p℣ℤ檊rox»ℤĀ;q℮ℯ檈Ā;q℮ℛim;拧pf;쀀𝕘Āci⅃ⅆr;愊mƀ;el٫ⅎ⅐;檎;檐茀>;cdlqr׮ⅠⅪⅮⅳⅹĀciⅥⅧ;檧r;橺ot;拗Par;榕uest;橼ʀadelsↄⅪ←ٖ↛ǰ↉\0↎proø₞r;楸qĀlqؿ↖lesó₈ií٫Āen↣↭rtneqq;쀀≩︀Å↪ԀAabcefkosy⇄⇇⇱⇵⇺∘∝∯≨≽ròΠȀilmr⇐⇔⇗⇛rsðᒄf»․ilôکĀdr⇠⇤cy;䑊ƀ;cwࣴ⇫⇯ir;楈;憭ar;意irc;䄥ƀalr∁∎∓rtsĀ;u∉∊晥it»∊lip;怦con;抹r;쀀𝔥sĀew∣∩arow;椥arow;椦ʀamopr∺∾≃≞≣rr;懿tht;戻kĀlr≉≓eftarrow;憩ightarrow;憪f;쀀𝕙bar;怕ƀclt≯≴≸r;쀀𝒽asè⇴rok;䄧Ābp⊂⊇ull;恃hen»ᱛૡ⊣\0⊪\0⊸⋅⋎\0⋕⋳\0\0⋸⌢⍧⍢⍿\0⎆⎪⎴cute耻í䃭ƀ;iyݱ⊰⊵rc耻î䃮;䐸Ācx⊼⊿y;䐵cl耻¡䂡ĀfrΟ⋉;쀀𝔦rave耻ì䃬Ȁ;inoܾ⋝⋩⋮Āin⋢⋦nt;樌t;戭fin;槜ta;愩lig;䄳ƀaop⋾⌚⌝ƀcgt⌅⌈⌗r;䄫ƀelpܟ⌏⌓inåގarôܠh;䄱f;抷ed;䆵ʀ;cfotӴ⌬⌱⌽⍁are;愅inĀ;t⌸⌹戞ie;槝doô⌙ʀ;celpݗ⍌⍐⍛⍡al;抺Āgr⍕⍙eróᕣã⍍arhk;樗rod;樼Ȁcgpt⍯⍲⍶⍻y;䑑on;䄯f;쀀𝕚a;䎹uest耻¿䂿Āci⎊⎏r;쀀𝒾nʀ;EdsvӴ⎛⎝⎡ӳ;拹ot;拵Ā;v⎦⎧拴;拳Ā;iݷ⎮lde;䄩ǫ⎸\0⎼cy;䑖l耻ï䃯̀cfmosu⏌⏗⏜⏡⏧⏵Āiy⏑⏕rc;䄵;䐹r;쀀𝔧ath;䈷pf;쀀𝕛ǣ⏬\0⏱r;쀀𝒿rcy;䑘kcy;䑔Ѐacfghjos␋␖␢␧␭␱␵␻ppaĀ;v␓␔䎺;䏰Āey␛␠dil;䄷;䐺r;쀀𝔨reen;䄸cy;䑅cy;䑜pf;쀀𝕜cr;쀀𝓀஀ABEHabcdefghjlmnoprstuv⑰⒁⒆⒍⒑┎┽╚▀♎♞♥♹♽⚚⚲⛘❝❨➋⟀⠁⠒ƀart⑷⑺⑼rò৆òΕail;椛arr;椎Ā;gঔ⒋;檋ar;楢ॣ⒥\0⒪\0⒱\0\0\0\0\0⒵Ⓔ\0ⓆⓈⓍ\0⓹ute;䄺mptyv;榴raîࡌbda;䎻gƀ;dlࢎⓁⓃ;榑åࢎ;檅uo耻«䂫rЀ;bfhlpst࢙ⓞⓦⓩ⓫⓮⓱⓵Ā;f࢝ⓣs;椟s;椝ë≒p;憫l;椹im;楳l;憢ƀ;ae⓿─┄檫il;椙Ā;s┉┊檭;쀀⪭︀ƀabr┕┙┝rr;椌rk;杲Āak┢┬cĀek┨┪;䁻;䁛Āes┱┳;榋lĀdu┹┻;榏;榍Ȁaeuy╆╋╖╘ron;䄾Ādi═╔il;䄼ìࢰâ┩;䐻Ȁcqrs╣╦╭╽a;椶uoĀ;rนᝆĀdu╲╷har;楧shar;楋h;憲ʀ;fgqs▋▌উ◳◿扤tʀahlrt▘▤▷◂◨rrowĀ;t࢙□aé⓶arpoonĀdu▯▴own»њp»०eftarrows;懇ightƀahs◍◖◞rrowĀ;sࣴࢧarpoonó྘quigarro÷⇰hreetimes;拋ƀ;qs▋ও◺lanôবʀ;cdgsব☊☍☝☨c;檨otĀ;o☔☕橿Ā;r☚☛檁;檃Ā;e☢☥쀀⋚︀s;檓ʀadegs☳☹☽♉♋pproøⓆot;拖qĀgq♃♅ôউgtò⒌ôছiíলƀilr♕࣡♚sht;楼;쀀𝔩Ā;Eজ♣;檑š♩♶rĀdu▲♮Ā;l॥♳;楪lk;斄cy;䑙ʀ;achtੈ⚈⚋⚑⚖rò◁orneòᴈard;楫ri;旺Āio⚟⚤dot;䅀ustĀ;a⚬⚭掰che»⚭ȀEaes⚻⚽⛉⛔;扨pĀ;p⛃⛄檉rox»⛄Ā;q⛎⛏檇Ā;q⛎⚻im;拦Ѐabnoptwz⛩⛴⛷✚✯❁❇❐Ānr⛮⛱g;柬r;懽rëࣁgƀlmr⛿✍✔eftĀar০✇ightá৲apsto;柼ightá৽parrowĀlr✥✩efô⓭ight;憬ƀafl✶✹✽r;榅;쀀𝕝us;樭imes;樴š❋❏st;戗áፎƀ;ef❗❘᠀旊nge»❘arĀ;l❤❥䀨t;榓ʀachmt❳❶❼➅➇ròࢨorneòᶌarĀ;d྘➃;業;怎ri;抿̀achiqt➘➝ੀ➢➮➻quo;怹r;쀀𝓁mƀ;egল➪➬;檍;檏Ābu┪➳oĀ;rฟ➹;怚rok;䅂萀<;cdhilqrࠫ⟒☹⟜⟠⟥⟪⟰Āci⟗⟙;檦r;橹reå◲mes;拉arr;楶uest;橻ĀPi⟵⟹ar;榖ƀ;ef⠀भ᠛旃rĀdu⠇⠍shar;楊har;楦Āen⠗⠡rtneqq;쀀≨︀Å⠞܀Dacdefhilnopsu⡀⡅⢂⢎⢓⢠⢥⢨⣚⣢⣤ઃ⣳⤂Dot;戺Ȁclpr⡎⡒⡣⡽r耻¯䂯Āet⡗⡙;時Ā;e⡞⡟朠se»⡟Ā;sျ⡨toȀ;dluျ⡳⡷⡻owîҌefôएðᏑker;斮Āoy⢇⢌mma;権;䐼ash;怔asuredangle»ᘦr;쀀𝔪o;愧ƀcdn⢯⢴⣉ro耻µ䂵Ȁ;acdᑤ⢽⣀⣄sôᚧir;櫰ot肻·Ƶusƀ;bd⣒ᤃ⣓戒Ā;uᴼ⣘;横ţ⣞⣡p;櫛ò−ðઁĀdp⣩⣮els;抧f;쀀𝕞Āct⣸⣽r;쀀𝓂pos»ᖝƀ;lm⤉⤊⤍䎼timap;抸ఀGLRVabcdefghijlmoprstuvw⥂⥓⥾⦉⦘⧚⧩⨕⨚⩘⩝⪃⪕⪤⪨⬄⬇⭄⭿⮮ⰴⱧⱼ⳩Āgt⥇⥋;쀀⋙̸Ā;v⥐௏쀀≫⃒ƀelt⥚⥲⥶ftĀar⥡⥧rrow;懍ightarrow;懎;쀀⋘̸Ā;v⥻ే쀀≪⃒ightarrow;懏ĀDd⦎⦓ash;抯ash;抮ʀbcnpt⦣⦧⦬⦱⧌la»˞ute;䅄g;쀀∠⃒ʀ;Eiop඄⦼⧀⧅⧈;쀀⩰̸d;쀀≋̸s;䅉roø඄urĀ;a⧓⧔普lĀ;s⧓ସdz⧟\0⧣p肻 ଷmpĀ;e௹ఀʀaeouy⧴⧾⨃⨐⨓ǰ⧹\0⧻;橃on;䅈dil;䅆ngĀ;dൾ⨊ot;쀀⩭̸p;橂;䐽ash;怓΀;Aadqsxஒ⨩⨭⨻⩁⩅⩐rr;懗rĀhr⨳⨶k;椤Ā;oᏲᏰot;쀀≐̸uiöୣĀei⩊⩎ar;椨í஘istĀ;s஠டr;쀀𝔫ȀEest௅⩦⩹⩼ƀ;qs஼⩭௡ƀ;qs஼௅⩴lanô௢ií௪Ā;rஶ⪁»ஷƀAap⪊⪍⪑rò⥱rr;憮ar;櫲ƀ;svྍ⪜ྌĀ;d⪡⪢拼;拺cy;䑚΀AEadest⪷⪺⪾⫂⫅⫶⫹rò⥦;쀀≦̸rr;憚r;急Ȁ;fqs఻⫎⫣⫯tĀar⫔⫙rro÷⫁ightarro÷⪐ƀ;qs఻⪺⫪lanôౕĀ;sౕ⫴»శiíౝĀ;rవ⫾iĀ;eచథiäඐĀpt⬌⬑f;쀀𝕟膀¬;in⬙⬚⬶䂬nȀ;Edvஉ⬤⬨⬮;쀀⋹̸ot;쀀⋵̸ǡஉ⬳⬵;拷;拶iĀ;vಸ⬼ǡಸ⭁⭃;拾;拽ƀaor⭋⭣⭩rȀ;ast୻⭕⭚⭟lleì୻l;쀀⫽⃥;쀀∂̸lint;樔ƀ;ceಒ⭰⭳uåಥĀ;cಘ⭸Ā;eಒ⭽ñಘȀAait⮈⮋⮝⮧rò⦈rrƀ;cw⮔⮕⮙憛;쀀⤳̸;쀀↝̸ghtarrow»⮕riĀ;eೋೖ΀chimpqu⮽⯍⯙⬄୸⯤⯯Ȁ;cerല⯆ഷ⯉uå൅;쀀𝓃ortɭ⬅\0\0⯖ará⭖mĀ;e൮⯟Ā;q൴൳suĀbp⯫⯭å೸åഋƀbcp⯶ⰑⰙȀ;Ees⯿ⰀഢⰄ抄;쀀⫅̸etĀ;eഛⰋqĀ;qണⰀcĀ;eലⰗñസȀ;EesⰢⰣൟⰧ抅;쀀⫆̸etĀ;e൘ⰮqĀ;qൠⰣȀgilrⰽⰿⱅⱇìௗlde耻ñ䃱çృiangleĀlrⱒⱜeftĀ;eచⱚñదightĀ;eೋⱥñ೗Ā;mⱬⱭ䎽ƀ;esⱴⱵⱹ䀣ro;愖p;怇ҀDHadgilrsⲏⲔⲙⲞⲣⲰⲶⳓⳣash;抭arr;椄p;쀀≍⃒ash;抬ĀetⲨⲬ;쀀≥⃒;쀀>⃒nfin;槞ƀAetⲽⳁⳅrr;椂;쀀≤⃒Ā;rⳊⳍ쀀<⃒ie;쀀⊴⃒ĀAtⳘⳜrr;椃rie;쀀⊵⃒im;쀀∼⃒ƀAan⳰⳴ⴂrr;懖rĀhr⳺⳽k;椣Ā;oᏧᏥear;椧ቓ᪕\0\0\0\0\0\0\0\0\0\0\0\0\0ⴭ\0ⴸⵈⵠⵥ⵲ⶄᬇ\0\0ⶍⶫ\0ⷈⷎ\0ⷜ⸙⸫⸾⹃Ācsⴱ᪗ute耻ó䃳ĀiyⴼⵅrĀ;c᪞ⵂ耻ô䃴;䐾ʀabios᪠ⵒⵗLjⵚlac;䅑v;樸old;榼lig;䅓Ācr⵩⵭ir;榿;쀀𝔬ͯ⵹\0\0⵼\0ⶂn;䋛ave耻ò䃲;槁Ābmⶈ෴ar;榵Ȁacitⶕ⶘ⶥⶨrò᪀Āir⶝ⶠr;榾oss;榻nå๒;槀ƀaeiⶱⶵⶹcr;䅍ga;䏉ƀcdnⷀⷅǍron;䎿;榶pf;쀀𝕠ƀaelⷔ⷗ǒr;榷rp;榹΀;adiosvⷪⷫⷮ⸈⸍⸐⸖戨rò᪆Ȁ;efmⷷⷸ⸂⸅橝rĀ;oⷾⷿ愴f»ⷿ耻ª䂪耻º䂺gof;抶r;橖lope;橗;橛ƀclo⸟⸡⸧ò⸁ash耻ø䃸l;折iŬⸯ⸴de耻õ䃵esĀ;aǛ⸺s;樶ml耻ö䃶bar;挽ૡ⹞\0⹽\0⺀⺝\0⺢⺹\0\0⻋ຜ\0⼓\0\0⼫⾼\0⿈rȀ;astЃ⹧⹲຅脀¶;l⹭⹮䂶leìЃɩ⹸\0\0⹻m;櫳;櫽y;䐿rʀcimpt⺋⺏⺓ᡥ⺗nt;䀥od;䀮il;怰enk;怱r;쀀𝔭ƀimo⺨⺰⺴Ā;v⺭⺮䏆;䏕maô੶ne;明ƀ;tv⺿⻀⻈䏀chfork»´;䏖Āau⻏⻟nĀck⻕⻝kĀ;h⇴⻛;愎ö⇴sҀ;abcdemst⻳⻴ᤈ⻹⻽⼄⼆⼊⼎䀫cir;樣ir;樢Āouᵀ⼂;樥;橲n肻±ຝim;樦wo;樧ƀipu⼙⼠⼥ntint;樕f;쀀𝕡nd耻£䂣Ԁ;Eaceinosu່⼿⽁⽄⽇⾁⾉⾒⽾⾶;檳p;檷uå໙Ā;c໎⽌̀;acens່⽙⽟⽦⽨⽾pproø⽃urlyeñ໙ñ໎ƀaes⽯⽶⽺pprox;檹qq;檵im;拨iíໟmeĀ;s⾈ຮ怲ƀEas⽸⾐⽺ð⽵ƀdfp໬⾙⾯ƀals⾠⾥⾪lar;挮ine;挒urf;挓Ā;t໻⾴ï໻rel;抰Āci⿀⿅r;쀀𝓅;䏈ncsp;怈̀fiopsu⿚⋢⿟⿥⿫⿱r;쀀𝔮pf;쀀𝕢rime;恗cr;쀀𝓆ƀaeo⿸〉〓tĀei⿾々rnionóڰnt;樖stĀ;e【】䀿ñἙô༔઀ABHabcdefhilmnoprstux぀けさすムㄎㄫㅇㅢㅲㆎ㈆㈕㈤㈩㉘㉮㉲㊐㊰㊷ƀartぇおがròႳòϝail;検aròᱥar;楤΀cdenqrtとふへみわゔヌĀeuねぱ;쀀∽̱te;䅕iãᅮmptyv;榳gȀ;del࿑らるろ;榒;榥å࿑uo耻»䂻rր;abcfhlpstw࿜ガクシスゼゾダッデナp;極Ā;f࿠ゴs;椠;椳s;椞ë≝ð✮l;楅im;楴l;憣;憝Āaiパフil;椚oĀ;nホボ戶aló༞ƀabrョリヮrò៥rk;杳ĀakンヽcĀekヹ・;䁽;䁝Āes㄂㄄;榌lĀduㄊㄌ;榎;榐Ȁaeuyㄗㄜㄧㄩron;䅙Ādiㄡㄥil;䅗ì࿲âヺ;䑀Ȁclqsㄴㄷㄽㅄa;椷dhar;楩uoĀ;rȎȍh;憳ƀacgㅎㅟངlȀ;ipsླྀㅘㅛႜnåႻarôྩt;断ƀilrㅩဣㅮsht;楽;쀀𝔯ĀaoㅷㆆrĀduㅽㅿ»ѻĀ;l႑ㆄ;楬Ā;vㆋㆌ䏁;䏱ƀgns㆕ㇹㇼht̀ahlrstㆤㆰ㇂㇘㇤㇮rrowĀ;t࿜ㆭaéトarpoonĀduㆻㆿowîㅾp»႒eftĀah㇊㇐rrowó࿪arpoonóՑightarrows;應quigarro÷ニhreetimes;拌g;䋚ingdotseñἲƀahm㈍㈐㈓rò࿪aòՑ;怏oustĀ;a㈞㈟掱che»㈟mid;櫮Ȁabpt㈲㈽㉀㉒Ānr㈷㈺g;柭r;懾rëဃƀafl㉇㉊㉎r;榆;쀀𝕣us;樮imes;樵Āap㉝㉧rĀ;g㉣㉤䀩t;榔olint;樒arò㇣Ȁachq㉻㊀Ⴜ㊅quo;怺r;쀀𝓇Ābu・㊊oĀ;rȔȓƀhir㊗㊛㊠reåㇸmes;拊iȀ;efl㊪ၙᠡ㊫方tri;槎luhar;楨;愞ൡ㋕㋛㋟㌬㌸㍱\0㍺㎤\0\0㏬㏰\0㐨㑈㑚㒭㒱㓊㓱\0㘖\0\0㘳cute;䅛quï➺Ԁ;Eaceinpsyᇭ㋳㋵㋿㌂㌋㌏㌟㌦㌩;檴ǰ㋺\0㋼;檸on;䅡uåᇾĀ;dᇳ㌇il;䅟rc;䅝ƀEas㌖㌘㌛;檶p;檺im;择olint;樓iíሄ;䑁otƀ;be㌴ᵇ㌵担;橦΀Aacmstx㍆㍊㍗㍛㍞㍣㍭rr;懘rĀhr㍐㍒ë∨Ā;oਸ਼਴t耻§䂧i;䀻war;椩mĀin㍩ðnuóñt;朶rĀ;o㍶⁕쀀𝔰Ȁacoy㎂㎆㎑㎠rp;景Āhy㎋㎏cy;䑉;䑈rtɭ㎙\0\0㎜iäᑤaraì⹯耻­䂭Āgm㎨㎴maƀ;fv㎱㎲㎲䏃;䏂Ѐ;deglnprካ㏅㏉㏎㏖㏞㏡㏦ot;橪Ā;q኱ኰĀ;E㏓㏔檞;檠Ā;E㏛㏜檝;檟e;扆lus;樤arr;楲aròᄽȀaeit㏸㐈㐏㐗Āls㏽㐄lsetmé㍪hp;樳parsl;槤Ādlᑣ㐔e;挣Ā;e㐜㐝檪Ā;s㐢㐣檬;쀀⪬︀ƀflp㐮㐳㑂tcy;䑌Ā;b㐸㐹䀯Ā;a㐾㐿槄r;挿f;쀀𝕤aĀdr㑍ЂesĀ;u㑔㑕晠it»㑕ƀcsu㑠㑹㒟Āau㑥㑯pĀ;sᆈ㑫;쀀⊓︀pĀ;sᆴ㑵;쀀⊔︀uĀbp㑿㒏ƀ;esᆗᆜ㒆etĀ;eᆗ㒍ñᆝƀ;esᆨᆭ㒖etĀ;eᆨ㒝ñᆮƀ;afᅻ㒦ְrť㒫ֱ»ᅼaròᅈȀcemt㒹㒾㓂㓅r;쀀𝓈tmîñiì㐕aræᆾĀar㓎㓕rĀ;f㓔ឿ昆Āan㓚㓭ightĀep㓣㓪psiloîỠhé⺯s»⡒ʀbcmnp㓻㕞ሉ㖋㖎Ҁ;Edemnprs㔎㔏㔑㔕㔞㔣㔬㔱㔶抂;櫅ot;檽Ā;dᇚ㔚ot;櫃ult;櫁ĀEe㔨㔪;櫋;把lus;檿arr;楹ƀeiu㔽㕒㕕tƀ;en㔎㕅㕋qĀ;qᇚ㔏eqĀ;q㔫㔨m;櫇Ābp㕚㕜;櫕;櫓c̀;acensᇭ㕬㕲㕹㕻㌦pproø㋺urlyeñᇾñᇳƀaes㖂㖈㌛pproø㌚qñ㌗g;晪ڀ123;Edehlmnps㖩㖬㖯ሜ㖲㖴㗀㗉㗕㗚㗟㗨㗭耻¹䂹耻²䂲耻³䂳;櫆Āos㖹㖼t;檾ub;櫘Ā;dሢ㗅ot;櫄sĀou㗏㗒l;柉b;櫗arr;楻ult;櫂ĀEe㗤㗦;櫌;抋lus;櫀ƀeiu㗴㘉㘌tƀ;enሜ㗼㘂qĀ;qሢ㖲eqĀ;q㗧㗤m;櫈Ābp㘑㘓;櫔;櫖ƀAan㘜㘠㘭rr;懙rĀhr㘦㘨ë∮Ā;oਫ਩war;椪lig耻ß䃟௡㙑㙝㙠ዎ㙳㙹\0㙾㛂\0\0\0\0\0㛛㜃\0㜉㝬\0\0\0㞇ɲ㙖\0\0㙛get;挖;䏄rë๟ƀaey㙦㙫㙰ron;䅥dil;䅣;䑂lrec;挕r;쀀𝔱Ȁeiko㚆㚝㚵㚼Dz㚋\0㚑eĀ4fኄኁaƀ;sv㚘㚙㚛䎸ym;䏑Ācn㚢㚲kĀas㚨㚮pproø዁im»ኬsðኞĀas㚺㚮ð዁rn耻þ䃾Ǭ̟㛆⋧es膀×;bd㛏㛐㛘䃗Ā;aᤏ㛕r;樱;樰ƀeps㛡㛣㜀á⩍Ȁ;bcf҆㛬㛰㛴ot;挶ir;櫱Ā;o㛹㛼쀀𝕥rk;櫚á㍢rime;怴ƀaip㜏㜒㝤dåቈ΀adempst㜡㝍㝀㝑㝗㝜㝟ngleʀ;dlqr㜰㜱㜶㝀㝂斵own»ᶻeftĀ;e⠀㜾ñम;扜ightĀ;e㊪㝋ñၚot;旬inus;樺lus;樹b;槍ime;樻ezium;揢ƀcht㝲㝽㞁Āry㝷㝻;쀀𝓉;䑆cy;䑛rok;䅧Āio㞋㞎xô᝷headĀlr㞗㞠eftarro÷ࡏightarrow»ཝऀAHabcdfghlmoprstuw㟐㟓㟗㟤㟰㟼㠎㠜㠣㠴㡑㡝㡫㢩㣌㣒㣪㣶ròϭar;楣Ācr㟜㟢ute耻ú䃺òᅐrǣ㟪\0㟭y;䑞ve;䅭Āiy㟵㟺rc耻û䃻;䑃ƀabh㠃㠆㠋ròᎭlac;䅱aòᏃĀir㠓㠘sht;楾;쀀𝔲rave耻ù䃹š㠧㠱rĀlr㠬㠮»ॗ»ႃlk;斀Āct㠹㡍ɯ㠿\0\0㡊rnĀ;e㡅㡆挜r»㡆op;挏ri;旸Āal㡖㡚cr;䅫肻¨͉Āgp㡢㡦on;䅳f;쀀𝕦̀adhlsuᅋ㡸㡽፲㢑㢠ownáᎳarpoonĀlr㢈㢌efô㠭ighô㠯iƀ;hl㢙㢚㢜䏅»ᏺon»㢚parrows;懈ƀcit㢰㣄㣈ɯ㢶\0\0㣁rnĀ;e㢼㢽挝r»㢽op;挎ng;䅯ri;旹cr;쀀𝓊ƀdir㣙㣝㣢ot;拰lde;䅩iĀ;f㜰㣨»᠓Āam㣯㣲rò㢨l耻ü䃼angle;榧ހABDacdeflnoprsz㤜㤟㤩㤭㦵㦸㦽㧟㧤㧨㧳㧹㧽㨁㨠ròϷarĀ;v㤦㤧櫨;櫩asèϡĀnr㤲㤷grt;榜΀eknprst㓣㥆㥋㥒㥝㥤㦖appá␕othinçẖƀhir㓫⻈㥙opô⾵Ā;hᎷ㥢ïㆍĀiu㥩㥭gmá㎳Ābp㥲㦄setneqĀ;q㥽㦀쀀⊊︀;쀀⫋︀setneqĀ;q㦏㦒쀀⊋︀;쀀⫌︀Āhr㦛㦟etá㚜iangleĀlr㦪㦯eft»थight»ၑy;䐲ash»ံƀelr㧄㧒㧗ƀ;beⷪ㧋㧏ar;抻q;扚lip;拮Ābt㧜ᑨaòᑩr;쀀𝔳tré㦮suĀbp㧯㧱»ജ»൙pf;쀀𝕧roð໻tré㦴Ācu㨆㨋r;쀀𝓋Ābp㨐㨘nĀEe㦀㨖»㥾nĀEe㦒㨞»㦐igzag;榚΀cefoprs㨶㨻㩖㩛㩔㩡㩪irc;䅵Ādi㩀㩑Ābg㩅㩉ar;機eĀ;qᗺ㩏;扙erp;愘r;쀀𝔴pf;쀀𝕨Ā;eᑹ㩦atèᑹcr;쀀𝓌ૣណ㪇\0㪋\0㪐㪛\0\0㪝㪨㪫㪯\0\0㫃㫎\0㫘ៜ៟tré៑r;쀀𝔵ĀAa㪔㪗ròσrò৶;䎾ĀAa㪡㪤ròθrò৫að✓is;拻ƀdptឤ㪵㪾Āfl㪺ឩ;쀀𝕩imåឲĀAa㫇㫊ròώròਁĀcq㫒ីr;쀀𝓍Āpt៖㫜ré។Ѐacefiosu㫰㫽㬈㬌㬑㬕㬛㬡cĀuy㫶㫻te耻ý䃽;䑏Āiy㬂㬆rc;䅷;䑋n耻¥䂥r;쀀𝔶cy;䑗pf;쀀𝕪cr;쀀𝓎Ācm㬦㬩y;䑎l耻ÿ䃿Ԁacdefhiosw㭂㭈㭔㭘㭤㭩㭭㭴㭺㮀cute;䅺Āay㭍㭒ron;䅾;䐷ot;䅼Āet㭝㭡træᕟa;䎶r;쀀𝔷cy;䐶grarr;懝pf;쀀𝕫cr;쀀𝓏Ājn㮅㮇;怍j;怌'.split("").map((function(e) { - return e.charCodeAt(0) - }))) -})); -qe(Ao); -var go = Ke((function(e, t) { - Object.defineProperty(t, "__esModule", { - value: !0 - }), t.default = new Uint16Array("Ȁaglq\tɭ\0\0p;䀦os;䀧t;䀾t;䀼uot;䀢".split("").map((function(e) { - return e.charCodeAt(0) - }))) -})); -qe(go); -var No = Ke((function(e, t) { - var n; - Object.defineProperty(t, "__esModule", { - value: !0 - }), t.replaceCodePoint = t.fromCodePoint = void 0; - var r = new Map([ - [0, 65533], - [128, 8364], - [130, 8218], - [131, 402], - [132, 8222], - [133, 8230], - [134, 8224], - [135, 8225], - [136, 710], - [137, 8240], - [138, 352], - [139, 8249], - [140, 338], - [142, 381], - [145, 8216], - [146, 8217], - [147, 8220], - [148, 8221], - [149, 8226], - [150, 8211], - [151, 8212], - [152, 732], - [153, 8482], - [154, 353], - [155, 8250], - [156, 339], - [158, 382], - [159, 376] - ]); - - function i(e) { - var t; - return e >= 55296 && e <= 57343 || e > 1114111 ? 65533 : null !== (t = r.get(e)) && void 0 !== t ? t : e - } - t.fromCodePoint = null !== (n = String.fromCodePoint) && void 0 !== n ? n : function(e) { - var t = ""; - return e > 65535 && (e -= 65536, t += String.fromCharCode(e >>> 10 & 1023 | 55296), e = 56320 | 1023 & e), t += String.fromCharCode(e) - }, t.replaceCodePoint = i, t.default = function(e) { - return (0, t.fromCodePoint)(i(e)) - } -})); -qe(No), No.replaceCodePoint, No.fromCodePoint; -var Co = Ao, - Io = go, - So = No, - bo = Ke((function(e, t) { - var n = Ge && Ge.__importDefault || function(e) { - return e && e.__esModule ? e : { - default: e - } - }; - Object.defineProperty(t, "__esModule", { - value: !0 - }), t.decodeXML = t.decodeHTMLStrict = t.decodeHTML = t.determineBranch = t.BinTrieFlags = t.fromCodePoint = t.replaceCodePoint = t.decodeCodePoint = t.xmlDecodeTree = t.htmlDecodeTree = void 0; - var r = n(Co); - t.htmlDecodeTree = r.default; - var i = n(Io); - t.xmlDecodeTree = i.default; - var s = n(So); - t.decodeCodePoint = s.default; - var a, o, c = So; - - function l(e) { - return function(t, n) { - for (var r = "", i = 0, c = 0; - (c = t.indexOf("&", c)) >= 0;) - if (r += t.slice(i, c), i = c, c += 1, t.charCodeAt(c) !== a.NUM) { - for (var l = 0, u = 1, p = 0, f = e[p]; c < t.length && !((p = h(e, f, p + 1, t.charCodeAt(c))) < 0); c++, u++) { - var d = (f = e[p]) & o.VALUE_LENGTH; - if (d) { - var E; - if (n && t.charCodeAt(c) !== a.SEMI || (l = p, u = 0), 0 === (E = (d >> 14) - 1)) break; - p += E - } - } - if (0 !== l) r += 1 === (E = (e[l] & o.VALUE_LENGTH) >> 14) ? String.fromCharCode(e[l] & ~o.VALUE_LENGTH) : 2 === E ? String.fromCharCode(e[l + 1]) : String.fromCharCode(e[l + 1], e[l + 2]), i = c - u + 1 - } else { - var m = c + 1, - T = 10, - _ = t.charCodeAt(m); - (_ | a.To_LOWER_BIT) === a.LOWER_X && (T = 16, c += 1, m += 1); - do { - _ = t.charCodeAt(++c) - } while (_ >= a.ZERO && _ <= a.NINE || 16 === T && (_ | a.To_LOWER_BIT) >= a.LOWER_A && (_ | a.To_LOWER_BIT) <= a.LOWER_F); - if (m !== c) { - var A = t.substring(m, c), - g = parseInt(A, T); - if (t.charCodeAt(c) === a.SEMI) c += 1; - else if (n) continue; - r += (0, s.default)(g), i = c - } - } return r + t.slice(i) - } - } - - function h(e, t, n, r) { - var i = (t & o.BRANCH_LENGTH) >> 7, - s = t & o.JUMP_TABLE; - if (0 === i) return 0 !== s && r === s ? n : -1; - if (s) { - var a = r - s; - return a < 0 || a >= i ? -1 : e[n + a] - 1 - } - for (var c = n, l = c + i - 1; c <= l;) { - var h = c + l >>> 1, - u = e[h]; - if (u < r) c = h + 1; - else { - if (!(u > r)) return e[h + i]; - l = h - 1 - } - } - return -1 - } - Object.defineProperty(t, "replaceCodePoint", { - enumerable: !0, - get: function() { - return c.replaceCodePoint - } - }), Object.defineProperty(t, "fromCodePoint", { - enumerable: !0, - get: function() { - return c.fromCodePoint - } - }), - function(e) { - e[e.NUM = 35] = "NUM", e[e.SEMI = 59] = "SEMI", e[e.ZERO = 48] = "ZERO", e[e.NINE = 57] = "NINE", e[e.LOWER_A = 97] = "LOWER_A", e[e.LOWER_F = 102] = "LOWER_F", e[e.LOWER_X = 120] = "LOWER_X", e[e.To_LOWER_BIT = 32] = "To_LOWER_BIT" - }(a || (a = {})), - function(e) { - e[e.VALUE_LENGTH = 49152] = "VALUE_LENGTH", e[e.BRANCH_LENGTH = 16256] = "BRANCH_LENGTH", e[e.JUMP_TABLE = 127] = "JUMP_TABLE" - }(o = t.BinTrieFlags || (t.BinTrieFlags = {})), t.determineBranch = h; - var u = l(r.default), - p = l(i.default); - t.decodeHTML = function(e) { - return u(e, !1) - }, t.decodeHTMLStrict = function(e) { - return u(e, !0) - }, t.decodeXML = function(e) { - return p(e, !0) - } - })); -qe(bo), bo.decodeXML, bo.decodeHTMLStrict, bo.decodeHTML; -var Oo = bo.determineBranch, - yo = bo.BinTrieFlags, - Lo = bo.fromCodePoint, - ko = bo.replaceCodePoint; -bo.decodeCodePoint; -var vo, Do, Ro, Mo, Po, xo = bo.xmlDecodeTree, - wo = bo.htmlDecodeTree; -! function(e) { - e.HTML = "http://www.w3.org/1999/xhtml", e.MATHML = "http://www.w3.org/1998/Math/MathML", e.SVG = "http://www.w3.org/2000/svg", e.XLINK = "http://www.w3.org/1999/xlink", e.XML = "http://www.w3.org/XML/1998/namespace", e.XMLNS = "http://www.w3.org/2000/xmlns/" -}(vo = vo || (vo = {})), -function(e) { - e.TYPE = "type", e.ACTION = "action", e.ENCODING = "encoding", e.PROMPT = "prompt", e.NAME = "name", e.COLOR = "color", e.FACE = "face", e.SIZE = "size" -}(Do = Do || (Do = {})), -function(e) { - e.NO_QUIRKS = "no-quirks", e.QUIRKS = "quirks", e.LIMITED_QUIRKS = "limited-quirks" -}(Ro = Ro || (Ro = {})), -function(e) { - e.A = "a", e.ADDRESS = "address", e.ANNOTATION_XML = "annotation-xml", e.APPLET = "applet", e.AREA = "area", e.ARTICLE = "article", e.ASIDE = "aside", e.B = "b", e.BASE = "base", e.BASEFONT = "basefont", e.BGSOUND = "bgsound", e.BIG = "big", e.BLOCKQUOTE = "blockquote", e.BODY = "body", e.BR = "br", e.BUTTON = "button", e.CAPTION = "caption", e.CENTER = "center", e.CODE = "code", e.COL = "col", e.COLGROUP = "colgroup", e.DD = "dd", e.DESC = "desc", e.DETAILS = "details", e.DIALOG = "dialog", e.DIR = "dir", e.DIV = "div", e.DL = "dl", e.DT = "dt", e.EM = "em", e.EMBED = "embed", e.FIELDSET = "fieldset", e.FIGCAPTION = "figcaption", e.FIGURE = "figure", e.FONT = "font", e.FOOTER = "footer", e.FOREIGN_OBJECT = "foreignObject", e.FORM = "form", e.FRAME = "frame", e.FRAMESET = "frameset", e.H1 = "h1", e.H2 = "h2", e.H3 = "h3", e.H4 = "h4", e.H5 = "h5", e.H6 = "h6", e.HEAD = "head", e.HEADER = "header", e.HGROUP = "hgroup", e.HR = "hr", e.HTML = "html", e.I = "i", e.IMG = "img", e.IMAGE = "image", e.INPUT = "input", e.IFRAME = "iframe", e.KEYGEN = "keygen", e.LABEL = "label", e.LI = "li", e.LINK = "link", e.LISTING = "listing", e.MAIN = "main", e.MALIGNMARK = "malignmark", e.MARQUEE = "marquee", e.MATH = "math", e.MENU = "menu", e.META = "meta", e.MGLYPH = "mglyph", e.MI = "mi", e.MO = "mo", e.MN = "mn", e.MS = "ms", e.MTEXT = "mtext", e.NAV = "nav", e.NOBR = "nobr", e.NOFRAMES = "noframes", e.NOEMBED = "noembed", e.NOSCRIPT = "noscript", e.OBJECT = "object", e.OL = "ol", e.OPTGROUP = "optgroup", e.OPTION = "option", e.P = "p", e.PARAM = "param", e.PLAINTEXT = "plaintext", e.PRE = "pre", e.RB = "rb", e.RP = "rp", e.RT = "rt", e.RTC = "rtc", e.RUBY = "ruby", e.S = "s", e.SCRIPT = "script", e.SECTION = "section", e.SELECT = "select", e.SOURCE = "source", e.SMALL = "small", e.SPAN = "span", e.STRIKE = "strike", e.STRONG = "strong", e.STYLE = "style", e.SUB = "sub", e.SUMMARY = "summary", e.SUP = "sup", e.TABLE = "table", e.TBODY = "tbody", e.TEMPLATE = "template", e.TEXTAREA = "textarea", e.TFOOT = "tfoot", e.TD = "td", e.TH = "th", e.THEAD = "thead", e.TITLE = "title", e.TR = "tr", e.TRACK = "track", e.TT = "tt", e.U = "u", e.UL = "ul", e.SVG = "svg", e.VAR = "var", e.WBR = "wbr", e.XMP = "xmp" -}(Mo = Mo || (Mo = {})), -function(e) { - e[e.UNKNOWN = 0] = "UNKNOWN", e[e.A = 1] = "A", e[e.ADDRESS = 2] = "ADDRESS", e[e.ANNOTATION_XML = 3] = "ANNOTATION_XML", e[e.APPLET = 4] = "APPLET", e[e.AREA = 5] = "AREA", e[e.ARTICLE = 6] = "ARTICLE", e[e.ASIDE = 7] = "ASIDE", e[e.B = 8] = "B", e[e.BASE = 9] = "BASE", e[e.BASEFONT = 10] = "BASEFONT", e[e.BGSOUND = 11] = "BGSOUND", e[e.BIG = 12] = "BIG", e[e.BLOCKQUOTE = 13] = "BLOCKQUOTE", e[e.BODY = 14] = "BODY", e[e.BR = 15] = "BR", e[e.BUTTON = 16] = "BUTTON", e[e.CAPTION = 17] = "CAPTION", e[e.CENTER = 18] = "CENTER", e[e.CODE = 19] = "CODE", e[e.COL = 20] = "COL", e[e.COLGROUP = 21] = "COLGROUP", e[e.DD = 22] = "DD", e[e.DESC = 23] = "DESC", e[e.DETAILS = 24] = "DETAILS", e[e.DIALOG = 25] = "DIALOG", e[e.DIR = 26] = "DIR", e[e.DIV = 27] = "DIV", e[e.DL = 28] = "DL", e[e.DT = 29] = "DT", e[e.EM = 30] = "EM", e[e.EMBED = 31] = "EMBED", e[e.FIELDSET = 32] = "FIELDSET", e[e.FIGCAPTION = 33] = "FIGCAPTION", e[e.FIGURE = 34] = "FIGURE", e[e.FONT = 35] = "FONT", e[e.FOOTER = 36] = "FOOTER", e[e.FOREIGN_OBJECT = 37] = "FOREIGN_OBJECT", e[e.FORM = 38] = "FORM", e[e.FRAME = 39] = "FRAME", e[e.FRAMESET = 40] = "FRAMESET", e[e.H1 = 41] = "H1", e[e.H2 = 42] = "H2", e[e.H3 = 43] = "H3", e[e.H4 = 44] = "H4", e[e.H5 = 45] = "H5", e[e.H6 = 46] = "H6", e[e.HEAD = 47] = "HEAD", e[e.HEADER = 48] = "HEADER", e[e.HGROUP = 49] = "HGROUP", e[e.HR = 50] = "HR", e[e.HTML = 51] = "HTML", e[e.I = 52] = "I", e[e.IMG = 53] = "IMG", e[e.IMAGE = 54] = "IMAGE", e[e.INPUT = 55] = "INPUT", e[e.IFRAME = 56] = "IFRAME", e[e.KEYGEN = 57] = "KEYGEN", e[e.LABEL = 58] = "LABEL", e[e.LI = 59] = "LI", e[e.LINK = 60] = "LINK", e[e.LISTING = 61] = "LISTING", e[e.MAIN = 62] = "MAIN", e[e.MALIGNMARK = 63] = "MALIGNMARK", e[e.MARQUEE = 64] = "MARQUEE", e[e.MATH = 65] = "MATH", e[e.MENU = 66] = "MENU", e[e.META = 67] = "META", e[e.MGLYPH = 68] = "MGLYPH", e[e.MI = 69] = "MI", e[e.MO = 70] = "MO", e[e.MN = 71] = "MN", e[e.MS = 72] = "MS", e[e.MTEXT = 73] = "MTEXT", e[e.NAV = 74] = "NAV", e[e.NOBR = 75] = "NOBR", e[e.NOFRAMES = 76] = "NOFRAMES", e[e.NOEMBED = 77] = "NOEMBED", e[e.NOSCRIPT = 78] = "NOSCRIPT", e[e.OBJECT = 79] = "OBJECT", e[e.OL = 80] = "OL", e[e.OPTGROUP = 81] = "OPTGROUP", e[e.OPTION = 82] = "OPTION", e[e.P = 83] = "P", e[e.PARAM = 84] = "PARAM", e[e.PLAINTEXT = 85] = "PLAINTEXT", e[e.PRE = 86] = "PRE", e[e.RB = 87] = "RB", e[e.RP = 88] = "RP", e[e.RT = 89] = "RT", e[e.RTC = 90] = "RTC", e[e.RUBY = 91] = "RUBY", e[e.S = 92] = "S", e[e.SCRIPT = 93] = "SCRIPT", e[e.SECTION = 94] = "SECTION", e[e.SELECT = 95] = "SELECT", e[e.SOURCE = 96] = "SOURCE", e[e.SMALL = 97] = "SMALL", e[e.SPAN = 98] = "SPAN", e[e.STRIKE = 99] = "STRIKE", e[e.STRONG = 100] = "STRONG", e[e.STYLE = 101] = "STYLE", e[e.SUB = 102] = "SUB", e[e.SUMMARY = 103] = "SUMMARY", e[e.SUP = 104] = "SUP", e[e.TABLE = 105] = "TABLE", e[e.TBODY = 106] = "TBODY", e[e.TEMPLATE = 107] = "TEMPLATE", e[e.TEXTAREA = 108] = "TEXTAREA", e[e.TFOOT = 109] = "TFOOT", e[e.TD = 110] = "TD", e[e.TH = 111] = "TH", e[e.THEAD = 112] = "THEAD", e[e.TITLE = 113] = "TITLE", e[e.TR = 114] = "TR", e[e.TRACK = 115] = "TRACK", e[e.TT = 116] = "TT", e[e.U = 117] = "U", e[e.UL = 118] = "UL", e[e.SVG = 119] = "SVG", e[e.VAR = 120] = "VAR", e[e.WBR = 121] = "WBR", e[e.XMP = 122] = "XMP" -}(Po = Po || (Po = {})); -const Bo = new Map([ - [Mo.A, Po.A], - [Mo.ADDRESS, Po.ADDRESS], - [Mo.ANNOTATION_XML, Po.ANNOTATION_XML], - [Mo.APPLET, Po.APPLET], - [Mo.AREA, Po.AREA], - [Mo.ARTICLE, Po.ARTICLE], - [Mo.ASIDE, Po.ASIDE], - [Mo.B, Po.B], - [Mo.BASE, Po.BASE], - [Mo.BASEFONT, Po.BASEFONT], - [Mo.BGSOUND, Po.BGSOUND], - [Mo.BIG, Po.BIG], - [Mo.BLOCKQUOTE, Po.BLOCKQUOTE], - [Mo.BODY, Po.BODY], - [Mo.BR, Po.BR], - [Mo.BUTTON, Po.BUTTON], - [Mo.CAPTION, Po.CAPTION], - [Mo.CENTER, Po.CENTER], - [Mo.CODE, Po.CODE], - [Mo.COL, Po.COL], - [Mo.COLGROUP, Po.COLGROUP], - [Mo.DD, Po.DD], - [Mo.DESC, Po.DESC], - [Mo.DETAILS, Po.DETAILS], - [Mo.DIALOG, Po.DIALOG], - [Mo.DIR, Po.DIR], - [Mo.DIV, Po.DIV], - [Mo.DL, Po.DL], - [Mo.DT, Po.DT], - [Mo.EM, Po.EM], - [Mo.EMBED, Po.EMBED], - [Mo.FIELDSET, Po.FIELDSET], - [Mo.FIGCAPTION, Po.FIGCAPTION], - [Mo.FIGURE, Po.FIGURE], - [Mo.FONT, Po.FONT], - [Mo.FOOTER, Po.FOOTER], - [Mo.FOREIGN_OBJECT, Po.FOREIGN_OBJECT], - [Mo.FORM, Po.FORM], - [Mo.FRAME, Po.FRAME], - [Mo.FRAMESET, Po.FRAMESET], - [Mo.H1, Po.H1], - [Mo.H2, Po.H2], - [Mo.H3, Po.H3], - [Mo.H4, Po.H4], - [Mo.H5, Po.H5], - [Mo.H6, Po.H6], - [Mo.HEAD, Po.HEAD], - [Mo.HEADER, Po.HEADER], - [Mo.HGROUP, Po.HGROUP], - [Mo.HR, Po.HR], - [Mo.HTML, Po.HTML], - [Mo.I, Po.I], - [Mo.IMG, Po.IMG], - [Mo.IMAGE, Po.IMAGE], - [Mo.INPUT, Po.INPUT], - [Mo.IFRAME, Po.IFRAME], - [Mo.KEYGEN, Po.KEYGEN], - [Mo.LABEL, Po.LABEL], - [Mo.LI, Po.LI], - [Mo.LINK, Po.LINK], - [Mo.LISTING, Po.LISTING], - [Mo.MAIN, Po.MAIN], - [Mo.MALIGNMARK, Po.MALIGNMARK], - [Mo.MARQUEE, Po.MARQUEE], - [Mo.MATH, Po.MATH], - [Mo.MENU, Po.MENU], - [Mo.META, Po.META], - [Mo.MGLYPH, Po.MGLYPH], - [Mo.MI, Po.MI], - [Mo.MO, Po.MO], - [Mo.MN, Po.MN], - [Mo.MS, Po.MS], - [Mo.MTEXT, Po.MTEXT], - [Mo.NAV, Po.NAV], - [Mo.NOBR, Po.NOBR], - [Mo.NOFRAMES, Po.NOFRAMES], - [Mo.NOEMBED, Po.NOEMBED], - [Mo.NOSCRIPT, Po.NOSCRIPT], - [Mo.OBJECT, Po.OBJECT], - [Mo.OL, Po.OL], - [Mo.OPTGROUP, Po.OPTGROUP], - [Mo.OPTION, Po.OPTION], - [Mo.P, Po.P], - [Mo.PARAM, Po.PARAM], - [Mo.PLAINTEXT, Po.PLAINTEXT], - [Mo.PRE, Po.PRE], - [Mo.RB, Po.RB], - [Mo.RP, Po.RP], - [Mo.RT, Po.RT], - [Mo.RTC, Po.RTC], - [Mo.RUBY, Po.RUBY], - [Mo.S, Po.S], - [Mo.SCRIPT, Po.SCRIPT], - [Mo.SECTION, Po.SECTION], - [Mo.SELECT, Po.SELECT], - [Mo.SOURCE, Po.SOURCE], - [Mo.SMALL, Po.SMALL], - [Mo.SPAN, Po.SPAN], - [Mo.STRIKE, Po.STRIKE], - [Mo.STRONG, Po.STRONG], - [Mo.STYLE, Po.STYLE], - [Mo.SUB, Po.SUB], - [Mo.SUMMARY, Po.SUMMARY], - [Mo.SUP, Po.SUP], - [Mo.TABLE, Po.TABLE], - [Mo.TBODY, Po.TBODY], - [Mo.TEMPLATE, Po.TEMPLATE], - [Mo.TEXTAREA, Po.TEXTAREA], - [Mo.TFOOT, Po.TFOOT], - [Mo.TD, Po.TD], - [Mo.TH, Po.TH], - [Mo.THEAD, Po.THEAD], - [Mo.TITLE, Po.TITLE], - [Mo.TR, Po.TR], - [Mo.TRACK, Po.TRACK], - [Mo.TT, Po.TT], - [Mo.U, Po.U], - [Mo.UL, Po.UL], - [Mo.SVG, Po.SVG], - [Mo.VAR, Po.VAR], - [Mo.WBR, Po.WBR], - [Mo.XMP, Po.XMP] -]); - -function Fo(e) { - var t; - return null !== (t = Bo.get(e)) && void 0 !== t ? t : Po.UNKNOWN -} -const Uo = Po, - Ho = { - [vo.HTML]: new Set([Uo.ADDRESS, Uo.APPLET, Uo.AREA, Uo.ARTICLE, Uo.ASIDE, Uo.BASE, Uo.BASEFONT, Uo.BGSOUND, Uo.BLOCKQUOTE, Uo.BODY, Uo.BR, Uo.BUTTON, Uo.CAPTION, Uo.CENTER, Uo.COL, Uo.COLGROUP, Uo.DD, Uo.DETAILS, Uo.DIR, Uo.DIV, Uo.DL, Uo.DT, Uo.EMBED, Uo.FIELDSET, Uo.FIGCAPTION, Uo.FIGURE, Uo.FOOTER, Uo.FORM, Uo.FRAME, Uo.FRAMESET, Uo.H1, Uo.H2, Uo.H3, Uo.H4, Uo.H5, Uo.H6, Uo.HEAD, Uo.HEADER, Uo.HGROUP, Uo.HR, Uo.HTML, Uo.IFRAME, Uo.IMG, Uo.INPUT, Uo.LI, Uo.LINK, Uo.LISTING, Uo.MAIN, Uo.MARQUEE, Uo.MENU, Uo.META, Uo.NAV, Uo.NOEMBED, Uo.NOFRAMES, Uo.NOSCRIPT, Uo.OBJECT, Uo.OL, Uo.P, Uo.PARAM, Uo.PLAINTEXT, Uo.PRE, Uo.SCRIPT, Uo.SECTION, Uo.SELECT, Uo.SOURCE, Uo.STYLE, Uo.SUMMARY, Uo.TABLE, Uo.TBODY, Uo.TD, Uo.TEMPLATE, Uo.TEXTAREA, Uo.TFOOT, Uo.TH, Uo.THEAD, Uo.TITLE, Uo.TR, Uo.TRACK, Uo.UL, Uo.WBR, Uo.XMP]), - [vo.MATHML]: new Set([Uo.MI, Uo.MO, Uo.MN, Uo.MS, Uo.MTEXT, Uo.ANNOTATION_XML]), - [vo.SVG]: new Set([Uo.TITLE, Uo.FOREIGN_OBJECT, Uo.DESC]), - [vo.XLINK]: new Set, - [vo.XML]: new Set, - [vo.XMLNS]: new Set - }; - -function Go(e) { - return e === Uo.H1 || e === Uo.H2 || e === Uo.H3 || e === Uo.H4 || e === Uo.H5 || e === Uo.H6 -} -const Yo = new Set([Mo.STYLE, Mo.SCRIPT, Mo.XMP, Mo.IFRAME, Mo.NOEMBED, Mo.NOFRAMES, Mo.PLAINTEXT]); -const qo = new Map([ - [128, 8364], - [130, 8218], - [131, 402], - [132, 8222], - [133, 8230], - [134, 8224], - [135, 8225], - [136, 710], - [137, 8240], - [138, 352], - [139, 8249], - [140, 338], - [142, 381], - [145, 8216], - [146, 8217], - [147, 8220], - [148, 8221], - [149, 8226], - [150, 8211], - [151, 8212], - [152, 732], - [153, 8482], - [154, 353], - [155, 8250], - [156, 339], - [158, 382], - [159, 376] -]); -var Ko; -! function(e) { - e[e.DATA = 0] = "DATA", e[e.RCDATA = 1] = "RCDATA", e[e.RAWTEXT = 2] = "RAWTEXT", e[e.SCRIPT_DATA = 3] = "SCRIPT_DATA", e[e.PLAINTEXT = 4] = "PLAINTEXT", e[e.TAG_OPEN = 5] = "TAG_OPEN", e[e.END_TAG_OPEN = 6] = "END_TAG_OPEN", e[e.TAG_NAME = 7] = "TAG_NAME", e[e.RCDATA_LESS_THAN_SIGN = 8] = "RCDATA_LESS_THAN_SIGN", e[e.RCDATA_END_TAG_OPEN = 9] = "RCDATA_END_TAG_OPEN", e[e.RCDATA_END_TAG_NAME = 10] = "RCDATA_END_TAG_NAME", e[e.RAWTEXT_LESS_THAN_SIGN = 11] = "RAWTEXT_LESS_THAN_SIGN", e[e.RAWTEXT_END_TAG_OPEN = 12] = "RAWTEXT_END_TAG_OPEN", e[e.RAWTEXT_END_TAG_NAME = 13] = "RAWTEXT_END_TAG_NAME", e[e.SCRIPT_DATA_LESS_THAN_SIGN = 14] = "SCRIPT_DATA_LESS_THAN_SIGN", e[e.SCRIPT_DATA_END_TAG_OPEN = 15] = "SCRIPT_DATA_END_TAG_OPEN", e[e.SCRIPT_DATA_END_TAG_NAME = 16] = "SCRIPT_DATA_END_TAG_NAME", e[e.SCRIPT_DATA_ESCAPE_START = 17] = "SCRIPT_DATA_ESCAPE_START", e[e.SCRIPT_DATA_ESCAPE_START_DASH = 18] = "SCRIPT_DATA_ESCAPE_START_DASH", e[e.SCRIPT_DATA_ESCAPED = 19] = "SCRIPT_DATA_ESCAPED", e[e.SCRIPT_DATA_ESCAPED_DASH = 20] = "SCRIPT_DATA_ESCAPED_DASH", e[e.SCRIPT_DATA_ESCAPED_DASH_DASH = 21] = "SCRIPT_DATA_ESCAPED_DASH_DASH", e[e.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN = 22] = "SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN", e[e.SCRIPT_DATA_ESCAPED_END_TAG_OPEN = 23] = "SCRIPT_DATA_ESCAPED_END_TAG_OPEN", e[e.SCRIPT_DATA_ESCAPED_END_TAG_NAME = 24] = "SCRIPT_DATA_ESCAPED_END_TAG_NAME", e[e.SCRIPT_DATA_DOUBLE_ESCAPE_START = 25] = "SCRIPT_DATA_DOUBLE_ESCAPE_START", e[e.SCRIPT_DATA_DOUBLE_ESCAPED = 26] = "SCRIPT_DATA_DOUBLE_ESCAPED", e[e.SCRIPT_DATA_DOUBLE_ESCAPED_DASH = 27] = "SCRIPT_DATA_DOUBLE_ESCAPED_DASH", e[e.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH = 28] = "SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH", e[e.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN = 29] = "SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN", e[e.SCRIPT_DATA_DOUBLE_ESCAPE_END = 30] = "SCRIPT_DATA_DOUBLE_ESCAPE_END", e[e.BEFORE_ATTRIBUTE_NAME = 31] = "BEFORE_ATTRIBUTE_NAME", e[e.ATTRIBUTE_NAME = 32] = "ATTRIBUTE_NAME", e[e.AFTER_ATTRIBUTE_NAME = 33] = "AFTER_ATTRIBUTE_NAME", e[e.BEFORE_ATTRIBUTE_VALUE = 34] = "BEFORE_ATTRIBUTE_VALUE", e[e.ATTRIBUTE_VALUE_DOUBLE_QUOTED = 35] = "ATTRIBUTE_VALUE_DOUBLE_QUOTED", e[e.ATTRIBUTE_VALUE_SINGLE_QUOTED = 36] = "ATTRIBUTE_VALUE_SINGLE_QUOTED", e[e.ATTRIBUTE_VALUE_UNQUOTED = 37] = "ATTRIBUTE_VALUE_UNQUOTED", e[e.AFTER_ATTRIBUTE_VALUE_QUOTED = 38] = "AFTER_ATTRIBUTE_VALUE_QUOTED", e[e.SELF_CLOSING_START_TAG = 39] = "SELF_CLOSING_START_TAG", e[e.BOGUS_COMMENT = 40] = "BOGUS_COMMENT", e[e.MARKUP_DECLARATION_OPEN = 41] = "MARKUP_DECLARATION_OPEN", e[e.COMMENT_START = 42] = "COMMENT_START", e[e.COMMENT_START_DASH = 43] = "COMMENT_START_DASH", e[e.COMMENT = 44] = "COMMENT", e[e.COMMENT_LESS_THAN_SIGN = 45] = "COMMENT_LESS_THAN_SIGN", e[e.COMMENT_LESS_THAN_SIGN_BANG = 46] = "COMMENT_LESS_THAN_SIGN_BANG", e[e.COMMENT_LESS_THAN_SIGN_BANG_DASH = 47] = "COMMENT_LESS_THAN_SIGN_BANG_DASH", e[e.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH = 48] = "COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH", e[e.COMMENT_END_DASH = 49] = "COMMENT_END_DASH", e[e.COMMENT_END = 50] = "COMMENT_END", e[e.COMMENT_END_BANG = 51] = "COMMENT_END_BANG", e[e.DOCTYPE = 52] = "DOCTYPE", e[e.BEFORE_DOCTYPE_NAME = 53] = "BEFORE_DOCTYPE_NAME", e[e.DOCTYPE_NAME = 54] = "DOCTYPE_NAME", e[e.AFTER_DOCTYPE_NAME = 55] = "AFTER_DOCTYPE_NAME", e[e.AFTER_DOCTYPE_PUBLIC_KEYWORD = 56] = "AFTER_DOCTYPE_PUBLIC_KEYWORD", e[e.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER = 57] = "BEFORE_DOCTYPE_PUBLIC_IDENTIFIER", e[e.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED = 58] = "DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED", e[e.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED = 59] = "DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED", e[e.AFTER_DOCTYPE_PUBLIC_IDENTIFIER = 60] = "AFTER_DOCTYPE_PUBLIC_IDENTIFIER", e[e.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS = 61] = "BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS", e[e.AFTER_DOCTYPE_SYSTEM_KEYWORD = 62] = "AFTER_DOCTYPE_SYSTEM_KEYWORD", e[e.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER = 63] = "BEFORE_DOCTYPE_SYSTEM_IDENTIFIER", e[e.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED = 64] = "DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED", e[e.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED = 65] = "DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED", e[e.AFTER_DOCTYPE_SYSTEM_IDENTIFIER = 66] = "AFTER_DOCTYPE_SYSTEM_IDENTIFIER", e[e.BOGUS_DOCTYPE = 67] = "BOGUS_DOCTYPE", e[e.CDATA_SECTION = 68] = "CDATA_SECTION", e[e.CDATA_SECTION_BRACKET = 69] = "CDATA_SECTION_BRACKET", e[e.CDATA_SECTION_END = 70] = "CDATA_SECTION_END", e[e.CHARACTER_REFERENCE = 71] = "CHARACTER_REFERENCE", e[e.NAMED_CHARACTER_REFERENCE = 72] = "NAMED_CHARACTER_REFERENCE", e[e.AMBIGUOUS_AMPERSAND = 73] = "AMBIGUOUS_AMPERSAND", e[e.NUMERIC_CHARACTER_REFERENCE = 74] = "NUMERIC_CHARACTER_REFERENCE", e[e.HEXADEMICAL_CHARACTER_REFERENCE_START = 75] = "HEXADEMICAL_CHARACTER_REFERENCE_START", e[e.HEXADEMICAL_CHARACTER_REFERENCE = 76] = "HEXADEMICAL_CHARACTER_REFERENCE", e[e.DECIMAL_CHARACTER_REFERENCE = 77] = "DECIMAL_CHARACTER_REFERENCE", e[e.NUMERIC_CHARACTER_REFERENCE_END = 78] = "NUMERIC_CHARACTER_REFERENCE_END" -}(Ko || (Ko = {})); -const jo = { - DATA: Ko.DATA, - RCDATA: Ko.RCDATA, - RAWTEXT: Ko.RAWTEXT, - SCRIPT_DATA: Ko.SCRIPT_DATA, - PLAINTEXT: Ko.PLAINTEXT, - CDATA_SECTION: Ko.CDATA_SECTION -}; - -function Vo(e) { - return e >= io.DIGIT_0 && e <= io.DIGIT_9 -} - -function Wo(e) { - return e >= io.LATIN_CAPITAL_A && e <= io.LATIN_CAPITAL_Z -} - -function Qo(e) { - return function(e) { - return e >= io.LATIN_SMALL_A && e <= io.LATIN_SMALL_Z - }(e) || Wo(e) -} - -function Xo(e) { - return Qo(e) || Vo(e) -} - -function $o(e) { - return e >= io.LATIN_CAPITAL_A && e <= io.LATIN_CAPITAL_F -} - -function zo(e) { - return e >= io.LATIN_SMALL_A && e <= io.LATIN_SMALL_F -} - -function Jo(e) { - return e + 32 -} - -function Zo(e) { - return e === io.SPACE || e === io.LINE_FEED || e === io.TABULATION || e === io.FORM_FEED -} - -function ec(e) { - return Zo(e) || e === io.SOLIDUS || e === io.GREATER_THAN_SIGN -} -class tc { - constructor(e, t) { - this.options = e, this.handler = t, this.paused = !1, this.inLoop = !1, this.inForeignNode = !1, this.lastStartTagName = "", this.active = !1, this.state = Ko.DATA, this.returnState = Ko.DATA, this.charRefCode = -1, this.consumedAfterSnapshot = -1, this.currentCharacterToken = null, this.currentToken = null, this.currentAttr = { - name: "", - value: "" - }, this.preprocessor = new mo(t), this.currentLocation = this.getCurrentLocation(-1) - } - _err(e) { - var t, n; - null === (n = (t = this.handler).onParseError) || void 0 === n || n.call(t, this.preprocessor.getError(e)) - } - getCurrentLocation(e) { - return this.options.sourceCodeLocationInfo ? { - startLine: this.preprocessor.line, - startCol: this.preprocessor.col - e, - startOffset: this.preprocessor.offset - e, - endLine: -1, - endCol: -1, - endOffset: -1 - } : null - } - _runParsingLoop() { - if (!this.inLoop) { - for (this.inLoop = !0; this.active && !this.paused;) { - this.consumedAfterSnapshot = 0; - const e = this._consume(); - this._ensureHibernation() || this._callState(e) - } - this.inLoop = !1 - } - } - pause() { - this.paused = !0 - } - resume(e) { - if (!this.paused) throw new Error("Parser was already resumed"); - this.paused = !1, this.inLoop || (this._runParsingLoop(), this.paused || null == e || e()) - } - write(e, t, n) { - this.active = !0, this.preprocessor.write(e, t), this._runParsingLoop(), this.paused || null == n || n() - } - insertHtmlAtCurrentPos(e) { - this.active = !0, this.preprocessor.insertHtmlAtCurrentPos(e), this._runParsingLoop() - } - _ensureHibernation() { - return !!this.preprocessor.endOfChunkHit && (this._unconsume(this.consumedAfterSnapshot), this.active = !1, !0) - } - _consume() { - return this.consumedAfterSnapshot++, this.preprocessor.advance() - } - _unconsume(e) { - this.consumedAfterSnapshot -= e, this.preprocessor.retreat(e) - } - _reconsumeInState(e, t) { - this.state = e, this._callState(t) - } - _advanceBy(e) { - this.consumedAfterSnapshot += e; - for (let t = 0; t < e; t++) this.preprocessor.advance() - } - _consumeSequenceIfMatch(e, t) { - return !!this.preprocessor.startsWith(e, t) && (this._advanceBy(e.length - 1), !0) - } - _createStartTagToken() { - this.currentToken = { - type: To.START_TAG, - tagName: "", - tagID: Po.UNKNOWN, - selfClosing: !1, - ackSelfClosing: !1, - attrs: [], - location: this.getCurrentLocation(1) - } - } - _createEndTagToken() { - this.currentToken = { - type: To.END_TAG, - tagName: "", - tagID: Po.UNKNOWN, - selfClosing: !1, - ackSelfClosing: !1, - attrs: [], - location: this.getCurrentLocation(2) - } - } - _createCommentToken(e) { - this.currentToken = { - type: To.COMMENT, - data: "", - location: this.getCurrentLocation(e) - } - } - _createDoctypeToken(e) { - this.currentToken = { - type: To.DOCTYPE, - name: e, - forceQuirks: !1, - publicId: null, - systemId: null, - location: this.currentLocation - } - } - _createCharacterToken(e, t) { - this.currentCharacterToken = { - type: e, - chars: t, - location: this.currentLocation - } - } - _createAttr(e) { - this.currentAttr = { - name: e, - value: "" - }, this.currentLocation = this.getCurrentLocation(0) - } - _leaveAttrName() { - var e, t; - const n = this.currentToken; - if (null === _o(n, this.currentAttr.name)) { - if (n.attrs.push(this.currentAttr), n.location && this.currentLocation) { - (null !== (e = (t = n.location).attrs) && void 0 !== e ? e : t.attrs = Object.create(null))[this.currentAttr.name] = this.currentLocation, this._leaveAttrValue() - } - } else this._err(Eo.duplicateAttribute) - } - _leaveAttrValue() { - this.currentLocation && (this.currentLocation.endLine = this.preprocessor.line, this.currentLocation.endCol = this.preprocessor.col, this.currentLocation.endOffset = this.preprocessor.offset) - } - prepareToken(e) { - this._emitCurrentCharacterToken(e.location), this.currentToken = null, e.location && (e.location.endLine = this.preprocessor.line, e.location.endCol = this.preprocessor.col + 1, e.location.endOffset = this.preprocessor.offset + 1), this.currentLocation = this.getCurrentLocation(-1) - } - emitCurrentTagToken() { - const e = this.currentToken; - this.prepareToken(e), e.tagID = Fo(e.tagName), e.type === To.START_TAG ? (this.lastStartTagName = e.tagName, this.handler.onStartTag(e)) : (e.attrs.length > 0 && this._err(Eo.endTagWithAttributes), e.selfClosing && this._err(Eo.endTagWithTrailingSolidus), this.handler.onEndTag(e)), this.preprocessor.dropParsedChunk() - } - emitCurrentComment(e) { - this.prepareToken(e), this.handler.onComment(e), this.preprocessor.dropParsedChunk() - } - emitCurrentDoctype(e) { - this.prepareToken(e), this.handler.onDoctype(e), this.preprocessor.dropParsedChunk() - } - _emitCurrentCharacterToken(e) { - if (this.currentCharacterToken) { - switch (e && this.currentCharacterToken.location && (this.currentCharacterToken.location.endLine = e.startLine, this.currentCharacterToken.location.endCol = e.startCol, this.currentCharacterToken.location.endOffset = e.startOffset), this.currentCharacterToken.type) { - case To.CHARACTER: - this.handler.onCharacter(this.currentCharacterToken); - break; - case To.NULL_CHARACTER: - this.handler.onNullCharacter(this.currentCharacterToken); - break; - case To.WHITESPACE_CHARACTER: - this.handler.onWhitespaceCharacter(this.currentCharacterToken) - } - this.currentCharacterToken = null - } - } - _emitEOFToken() { - const e = this.getCurrentLocation(0); - e && (e.endLine = e.startLine, e.endCol = e.startCol, e.endOffset = e.startOffset), this._emitCurrentCharacterToken(e), this.handler.onEof({ - type: To.EOF, - location: e - }), this.active = !1 - } - _appendCharToCurrentCharacterToken(e, t) { - if (this.currentCharacterToken) { - if (this.currentCharacterToken.type === e) return void(this.currentCharacterToken.chars += t); - this.currentLocation = this.getCurrentLocation(0), this._emitCurrentCharacterToken(this.currentLocation), this.preprocessor.dropParsedChunk() - } - this._createCharacterToken(e, t) - } - _emitCodePoint(e) { - const t = Zo(e) ? To.WHITESPACE_CHARACTER : e === io.NULL ? To.NULL_CHARACTER : To.CHARACTER; - this._appendCharToCurrentCharacterToken(t, String.fromCodePoint(e)) - } - _emitChars(e) { - this._appendCharToCurrentCharacterToken(To.CHARACTER, e) - } - _matchNamedCharacterReference(e) { - let t = null, - n = 0, - r = !1; - for (let s = 0, a = wo[0]; s >= 0 && (s = Oo(wo, a, s + 1, e), !(s < 0)); e = this._consume()) { - n += 1, a = wo[s]; - const o = a & yo.VALUE_LENGTH; - if (o) { - const a = (o >> 14) - 1; - if (e !== io.SEMICOLON && this._isCharacterReferenceInAttribute() && ((i = this.preprocessor.peek(1)) === io.EQUALS_SIGN || Xo(i)) ? (t = [io.AMPERSAND], s += a) : (t = 0 === a ? [wo[s] & ~yo.VALUE_LENGTH] : 1 === a ? [wo[++s]] : [wo[++s], wo[++s]], n = 0, r = e !== io.SEMICOLON), 0 === a) { - this._consume(); - break - } - } - } - var i; - return this._unconsume(n), r && !this.preprocessor.endOfChunkHit && this._err(Eo.missingSemicolonAfterCharacterReference), this._unconsume(1), t - } - _isCharacterReferenceInAttribute() { - return this.returnState === Ko.ATTRIBUTE_VALUE_DOUBLE_QUOTED || this.returnState === Ko.ATTRIBUTE_VALUE_SINGLE_QUOTED || this.returnState === Ko.ATTRIBUTE_VALUE_UNQUOTED - } - _flushCodePointConsumedAsCharacterReference(e) { - this._isCharacterReferenceInAttribute() ? this.currentAttr.value += String.fromCodePoint(e) : this._emitCodePoint(e) - } - _callState(e) { - switch (this.state) { - case Ko.DATA: - this._stateData(e); - break; - case Ko.RCDATA: - this._stateRcdata(e); - break; - case Ko.RAWTEXT: - this._stateRawtext(e); - break; - case Ko.SCRIPT_DATA: - this._stateScriptData(e); - break; - case Ko.PLAINTEXT: - this._statePlaintext(e); - break; - case Ko.TAG_OPEN: - this._stateTagOpen(e); - break; - case Ko.END_TAG_OPEN: - this._stateEndTagOpen(e); - break; - case Ko.TAG_NAME: - this._stateTagName(e); - break; - case Ko.RCDATA_LESS_THAN_SIGN: - this._stateRcdataLessThanSign(e); - break; - case Ko.RCDATA_END_TAG_OPEN: - this._stateRcdataEndTagOpen(e); - break; - case Ko.RCDATA_END_TAG_NAME: - this._stateRcdataEndTagName(e); - break; - case Ko.RAWTEXT_LESS_THAN_SIGN: - this._stateRawtextLessThanSign(e); - break; - case Ko.RAWTEXT_END_TAG_OPEN: - this._stateRawtextEndTagOpen(e); - break; - case Ko.RAWTEXT_END_TAG_NAME: - this._stateRawtextEndTagName(e); - break; - case Ko.SCRIPT_DATA_LESS_THAN_SIGN: - this._stateScriptDataLessThanSign(e); - break; - case Ko.SCRIPT_DATA_END_TAG_OPEN: - this._stateScriptDataEndTagOpen(e); - break; - case Ko.SCRIPT_DATA_END_TAG_NAME: - this._stateScriptDataEndTagName(e); - break; - case Ko.SCRIPT_DATA_ESCAPE_START: - this._stateScriptDataEscapeStart(e); - break; - case Ko.SCRIPT_DATA_ESCAPE_START_DASH: - this._stateScriptDataEscapeStartDash(e); - break; - case Ko.SCRIPT_DATA_ESCAPED: - this._stateScriptDataEscaped(e); - break; - case Ko.SCRIPT_DATA_ESCAPED_DASH: - this._stateScriptDataEscapedDash(e); - break; - case Ko.SCRIPT_DATA_ESCAPED_DASH_DASH: - this._stateScriptDataEscapedDashDash(e); - break; - case Ko.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN: - this._stateScriptDataEscapedLessThanSign(e); - break; - case Ko.SCRIPT_DATA_ESCAPED_END_TAG_OPEN: - this._stateScriptDataEscapedEndTagOpen(e); - break; - case Ko.SCRIPT_DATA_ESCAPED_END_TAG_NAME: - this._stateScriptDataEscapedEndTagName(e); - break; - case Ko.SCRIPT_DATA_DOUBLE_ESCAPE_START: - this._stateScriptDataDoubleEscapeStart(e); - break; - case Ko.SCRIPT_DATA_DOUBLE_ESCAPED: - this._stateScriptDataDoubleEscaped(e); - break; - case Ko.SCRIPT_DATA_DOUBLE_ESCAPED_DASH: - this._stateScriptDataDoubleEscapedDash(e); - break; - case Ko.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH: - this._stateScriptDataDoubleEscapedDashDash(e); - break; - case Ko.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN: - this._stateScriptDataDoubleEscapedLessThanSign(e); - break; - case Ko.SCRIPT_DATA_DOUBLE_ESCAPE_END: - this._stateScriptDataDoubleEscapeEnd(e); - break; - case Ko.BEFORE_ATTRIBUTE_NAME: - this._stateBeforeAttributeName(e); - break; - case Ko.ATTRIBUTE_NAME: - this._stateAttributeName(e); - break; - case Ko.AFTER_ATTRIBUTE_NAME: - this._stateAfterAttributeName(e); - break; - case Ko.BEFORE_ATTRIBUTE_VALUE: - this._stateBeforeAttributeValue(e); - break; - case Ko.ATTRIBUTE_VALUE_DOUBLE_QUOTED: - this._stateAttributeValueDoubleQuoted(e); - break; - case Ko.ATTRIBUTE_VALUE_SINGLE_QUOTED: - this._stateAttributeValueSingleQuoted(e); - break; - case Ko.ATTRIBUTE_VALUE_UNQUOTED: - this._stateAttributeValueUnquoted(e); - break; - case Ko.AFTER_ATTRIBUTE_VALUE_QUOTED: - this._stateAfterAttributeValueQuoted(e); - break; - case Ko.SELF_CLOSING_START_TAG: - this._stateSelfClosingStartTag(e); - break; - case Ko.BOGUS_COMMENT: - this._stateBogusComment(e); - break; - case Ko.MARKUP_DECLARATION_OPEN: - this._stateMarkupDeclarationOpen(e); - break; - case Ko.COMMENT_START: - this._stateCommentStart(e); - break; - case Ko.COMMENT_START_DASH: - this._stateCommentStartDash(e); - break; - case Ko.COMMENT: - this._stateComment(e); - break; - case Ko.COMMENT_LESS_THAN_SIGN: - this._stateCommentLessThanSign(e); - break; - case Ko.COMMENT_LESS_THAN_SIGN_BANG: - this._stateCommentLessThanSignBang(e); - break; - case Ko.COMMENT_LESS_THAN_SIGN_BANG_DASH: - this._stateCommentLessThanSignBangDash(e); - break; - case Ko.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH: - this._stateCommentLessThanSignBangDashDash(e); - break; - case Ko.COMMENT_END_DASH: - this._stateCommentEndDash(e); - break; - case Ko.COMMENT_END: - this._stateCommentEnd(e); - break; - case Ko.COMMENT_END_BANG: - this._stateCommentEndBang(e); - break; - case Ko.DOCTYPE: - this._stateDoctype(e); - break; - case Ko.BEFORE_DOCTYPE_NAME: - this._stateBeforeDoctypeName(e); - break; - case Ko.DOCTYPE_NAME: - this._stateDoctypeName(e); - break; - case Ko.AFTER_DOCTYPE_NAME: - this._stateAfterDoctypeName(e); - break; - case Ko.AFTER_DOCTYPE_PUBLIC_KEYWORD: - this._stateAfterDoctypePublicKeyword(e); - break; - case Ko.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER: - this._stateBeforeDoctypePublicIdentifier(e); - break; - case Ko.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED: - this._stateDoctypePublicIdentifierDoubleQuoted(e); - break; - case Ko.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED: - this._stateDoctypePublicIdentifierSingleQuoted(e); - break; - case Ko.AFTER_DOCTYPE_PUBLIC_IDENTIFIER: - this._stateAfterDoctypePublicIdentifier(e); - break; - case Ko.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS: - this._stateBetweenDoctypePublicAndSystemIdentifiers(e); - break; - case Ko.AFTER_DOCTYPE_SYSTEM_KEYWORD: - this._stateAfterDoctypeSystemKeyword(e); - break; - case Ko.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER: - this._stateBeforeDoctypeSystemIdentifier(e); - break; - case Ko.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED: - this._stateDoctypeSystemIdentifierDoubleQuoted(e); - break; - case Ko.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED: - this._stateDoctypeSystemIdentifierSingleQuoted(e); - break; - case Ko.AFTER_DOCTYPE_SYSTEM_IDENTIFIER: - this._stateAfterDoctypeSystemIdentifier(e); - break; - case Ko.BOGUS_DOCTYPE: - this._stateBogusDoctype(e); - break; - case Ko.CDATA_SECTION: - this._stateCdataSection(e); - break; - case Ko.CDATA_SECTION_BRACKET: - this._stateCdataSectionBracket(e); - break; - case Ko.CDATA_SECTION_END: - this._stateCdataSectionEnd(e); - break; - case Ko.CHARACTER_REFERENCE: - this._stateCharacterReference(e); - break; - case Ko.NAMED_CHARACTER_REFERENCE: - this._stateNamedCharacterReference(e); - break; - case Ko.AMBIGUOUS_AMPERSAND: - this._stateAmbiguousAmpersand(e); - break; - case Ko.NUMERIC_CHARACTER_REFERENCE: - this._stateNumericCharacterReference(e); - break; - case Ko.HEXADEMICAL_CHARACTER_REFERENCE_START: - this._stateHexademicalCharacterReferenceStart(e); - break; - case Ko.HEXADEMICAL_CHARACTER_REFERENCE: - this._stateHexademicalCharacterReference(e); - break; - case Ko.DECIMAL_CHARACTER_REFERENCE: - this._stateDecimalCharacterReference(e); - break; - case Ko.NUMERIC_CHARACTER_REFERENCE_END: - this._stateNumericCharacterReferenceEnd(e); - break; - default: - throw new Error("Unknown state") - } - } - _stateData(e) { - switch (e) { - case io.LESS_THAN_SIGN: - this.state = Ko.TAG_OPEN; - break; - case io.AMPERSAND: - this.returnState = Ko.DATA, this.state = Ko.CHARACTER_REFERENCE; - break; - case io.NULL: - this._err(Eo.unexpectedNullCharacter), this._emitCodePoint(e); - break; - case io.EOF: - this._emitEOFToken(); - break; - default: - this._emitCodePoint(e) - } - } - _stateRcdata(e) { - switch (e) { - case io.AMPERSAND: - this.returnState = Ko.RCDATA, this.state = Ko.CHARACTER_REFERENCE; - break; - case io.LESS_THAN_SIGN: - this.state = Ko.RCDATA_LESS_THAN_SIGN; - break; - case io.NULL: - this._err(Eo.unexpectedNullCharacter), this._emitChars("�"); - break; - case io.EOF: - this._emitEOFToken(); - break; - default: - this._emitCodePoint(e) - } - } - _stateRawtext(e) { - switch (e) { - case io.LESS_THAN_SIGN: - this.state = Ko.RAWTEXT_LESS_THAN_SIGN; - break; - case io.NULL: - this._err(Eo.unexpectedNullCharacter), this._emitChars("�"); - break; - case io.EOF: - this._emitEOFToken(); - break; - default: - this._emitCodePoint(e) - } - } - _stateScriptData(e) { - switch (e) { - case io.LESS_THAN_SIGN: - this.state = Ko.SCRIPT_DATA_LESS_THAN_SIGN; - break; - case io.NULL: - this._err(Eo.unexpectedNullCharacter), this._emitChars("�"); - break; - case io.EOF: - this._emitEOFToken(); - break; - default: - this._emitCodePoint(e) - } - } - _statePlaintext(e) { - switch (e) { - case io.NULL: - this._err(Eo.unexpectedNullCharacter), this._emitChars("�"); - break; - case io.EOF: - this._emitEOFToken(); - break; - default: - this._emitCodePoint(e) - } - } - _stateTagOpen(e) { - if (Qo(e)) this._createStartTagToken(), this.state = Ko.TAG_NAME, this._stateTagName(e); - else switch (e) { - case io.EXCLAMATION_MARK: - this.state = Ko.MARKUP_DECLARATION_OPEN; - break; - case io.SOLIDUS: - this.state = Ko.END_TAG_OPEN; - break; - case io.QUESTION_MARK: - this._err(Eo.unexpectedQuestionMarkInsteadOfTagName), this._createCommentToken(1), this.state = Ko.BOGUS_COMMENT, this._stateBogusComment(e); - break; - case io.EOF: - this._err(Eo.eofBeforeTagName), this._emitChars("<"), this._emitEOFToken(); - break; - default: - this._err(Eo.invalidFirstCharacterOfTagName), this._emitChars("<"), this.state = Ko.DATA, this._stateData(e) - } - } - _stateEndTagOpen(e) { - if (Qo(e)) this._createEndTagToken(), this.state = Ko.TAG_NAME, this._stateTagName(e); - else switch (e) { - case io.GREATER_THAN_SIGN: - this._err(Eo.missingEndTagName), this.state = Ko.DATA; - break; - case io.EOF: - this._err(Eo.eofBeforeTagName), this._emitChars(""); - break; - case io.NULL: - this._err(Eo.unexpectedNullCharacter), this.state = Ko.SCRIPT_DATA_ESCAPED, this._emitChars("�"); - break; - case io.EOF: - this._err(Eo.eofInScriptHtmlCommentLikeText), this._emitEOFToken(); - break; - default: - this.state = Ko.SCRIPT_DATA_ESCAPED, this._emitCodePoint(e) - } - } - _stateScriptDataEscapedLessThanSign(e) { - e === io.SOLIDUS ? this.state = Ko.SCRIPT_DATA_ESCAPED_END_TAG_OPEN : Qo(e) ? (this._emitChars("<"), this.state = Ko.SCRIPT_DATA_DOUBLE_ESCAPE_START, this._stateScriptDataDoubleEscapeStart(e)) : (this._emitChars("<"), this.state = Ko.SCRIPT_DATA_ESCAPED, this._stateScriptDataEscaped(e)) - } - _stateScriptDataEscapedEndTagOpen(e) { - Qo(e) ? (this.state = Ko.SCRIPT_DATA_ESCAPED_END_TAG_NAME, this._stateScriptDataEscapedEndTagName(e)) : (this._emitChars(""); - break; - case io.NULL: - this._err(Eo.unexpectedNullCharacter), this.state = Ko.SCRIPT_DATA_DOUBLE_ESCAPED, this._emitChars("�"); - break; - case io.EOF: - this._err(Eo.eofInScriptHtmlCommentLikeText), this._emitEOFToken(); - break; - default: - this.state = Ko.SCRIPT_DATA_DOUBLE_ESCAPED, this._emitCodePoint(e) - } - } - _stateScriptDataDoubleEscapedLessThanSign(e) { - e === io.SOLIDUS ? (this.state = Ko.SCRIPT_DATA_DOUBLE_ESCAPE_END, this._emitChars("/")) : (this.state = Ko.SCRIPT_DATA_DOUBLE_ESCAPED, this._stateScriptDataDoubleEscaped(e)) - } - _stateScriptDataDoubleEscapeEnd(e) { - if (this.preprocessor.startsWith(co, !1) && ec(this.preprocessor.peek(co.length))) { - this._emitCodePoint(e); - for (let e = 0; e < co.length; e++) this._emitCodePoint(this._consume()); - this.state = Ko.SCRIPT_DATA_ESCAPED - } else this._ensureHibernation() || (this.state = Ko.SCRIPT_DATA_DOUBLE_ESCAPED, this._stateScriptDataDoubleEscaped(e)) - } - _stateBeforeAttributeName(e) { - switch (e) { - case io.SPACE: - case io.LINE_FEED: - case io.TABULATION: - case io.FORM_FEED: - break; - case io.SOLIDUS: - case io.GREATER_THAN_SIGN: - case io.EOF: - this.state = Ko.AFTER_ATTRIBUTE_NAME, this._stateAfterAttributeName(e); - break; - case io.EQUALS_SIGN: - this._err(Eo.unexpectedEqualsSignBeforeAttributeName), this._createAttr("="), this.state = Ko.ATTRIBUTE_NAME; - break; - default: - this._createAttr(""), this.state = Ko.ATTRIBUTE_NAME, this._stateAttributeName(e) - } - } - _stateAttributeName(e) { - switch (e) { - case io.SPACE: - case io.LINE_FEED: - case io.TABULATION: - case io.FORM_FEED: - case io.SOLIDUS: - case io.GREATER_THAN_SIGN: - case io.EOF: - this._leaveAttrName(), this.state = Ko.AFTER_ATTRIBUTE_NAME, this._stateAfterAttributeName(e); - break; - case io.EQUALS_SIGN: - this._leaveAttrName(), this.state = Ko.BEFORE_ATTRIBUTE_VALUE; - break; - case io.QUOTATION_MARK: - case io.APOSTROPHE: - case io.LESS_THAN_SIGN: - this._err(Eo.unexpectedCharacterInAttributeName), this.currentAttr.name += String.fromCodePoint(e); - break; - case io.NULL: - this._err(Eo.unexpectedNullCharacter), this.currentAttr.name += "�"; - break; - default: - this.currentAttr.name += String.fromCodePoint(Wo(e) ? Jo(e) : e) - } - } - _stateAfterAttributeName(e) { - switch (e) { - case io.SPACE: - case io.LINE_FEED: - case io.TABULATION: - case io.FORM_FEED: - break; - case io.SOLIDUS: - this.state = Ko.SELF_CLOSING_START_TAG; - break; - case io.EQUALS_SIGN: - this.state = Ko.BEFORE_ATTRIBUTE_VALUE; - break; - case io.GREATER_THAN_SIGN: - this.state = Ko.DATA, this.emitCurrentTagToken(); - break; - case io.EOF: - this._err(Eo.eofInTag), this._emitEOFToken(); - break; - default: - this._createAttr(""), this.state = Ko.ATTRIBUTE_NAME, this._stateAttributeName(e) - } - } - _stateBeforeAttributeValue(e) { - switch (e) { - case io.SPACE: - case io.LINE_FEED: - case io.TABULATION: - case io.FORM_FEED: - break; - case io.QUOTATION_MARK: - this.state = Ko.ATTRIBUTE_VALUE_DOUBLE_QUOTED; - break; - case io.APOSTROPHE: - this.state = Ko.ATTRIBUTE_VALUE_SINGLE_QUOTED; - break; - case io.GREATER_THAN_SIGN: - this._err(Eo.missingAttributeValue), this.state = Ko.DATA, this.emitCurrentTagToken(); - break; - default: - this.state = Ko.ATTRIBUTE_VALUE_UNQUOTED, this._stateAttributeValueUnquoted(e) - } - } - _stateAttributeValueDoubleQuoted(e) { - switch (e) { - case io.QUOTATION_MARK: - this.state = Ko.AFTER_ATTRIBUTE_VALUE_QUOTED; - break; - case io.AMPERSAND: - this.returnState = Ko.ATTRIBUTE_VALUE_DOUBLE_QUOTED, this.state = Ko.CHARACTER_REFERENCE; - break; - case io.NULL: - this._err(Eo.unexpectedNullCharacter), this.currentAttr.value += "�"; - break; - case io.EOF: - this._err(Eo.eofInTag), this._emitEOFToken(); - break; - default: - this.currentAttr.value += String.fromCodePoint(e) - } - } - _stateAttributeValueSingleQuoted(e) { - switch (e) { - case io.APOSTROPHE: - this.state = Ko.AFTER_ATTRIBUTE_VALUE_QUOTED; - break; - case io.AMPERSAND: - this.returnState = Ko.ATTRIBUTE_VALUE_SINGLE_QUOTED, this.state = Ko.CHARACTER_REFERENCE; - break; - case io.NULL: - this._err(Eo.unexpectedNullCharacter), this.currentAttr.value += "�"; - break; - case io.EOF: - this._err(Eo.eofInTag), this._emitEOFToken(); - break; - default: - this.currentAttr.value += String.fromCodePoint(e) - } - } - _stateAttributeValueUnquoted(e) { - switch (e) { - case io.SPACE: - case io.LINE_FEED: - case io.TABULATION: - case io.FORM_FEED: - this._leaveAttrValue(), this.state = Ko.BEFORE_ATTRIBUTE_NAME; - break; - case io.AMPERSAND: - this.returnState = Ko.ATTRIBUTE_VALUE_UNQUOTED, this.state = Ko.CHARACTER_REFERENCE; - break; - case io.GREATER_THAN_SIGN: - this._leaveAttrValue(), this.state = Ko.DATA, this.emitCurrentTagToken(); - break; - case io.NULL: - this._err(Eo.unexpectedNullCharacter), this.currentAttr.value += "�"; - break; - case io.QUOTATION_MARK: - case io.APOSTROPHE: - case io.LESS_THAN_SIGN: - case io.EQUALS_SIGN: - case io.GRAVE_ACCENT: - this._err(Eo.unexpectedCharacterInUnquotedAttributeValue), this.currentAttr.value += String.fromCodePoint(e); - break; - case io.EOF: - this._err(Eo.eofInTag), this._emitEOFToken(); - break; - default: - this.currentAttr.value += String.fromCodePoint(e) - } - } - _stateAfterAttributeValueQuoted(e) { - switch (e) { - case io.SPACE: - case io.LINE_FEED: - case io.TABULATION: - case io.FORM_FEED: - this._leaveAttrValue(), this.state = Ko.BEFORE_ATTRIBUTE_NAME; - break; - case io.SOLIDUS: - this._leaveAttrValue(), this.state = Ko.SELF_CLOSING_START_TAG; - break; - case io.GREATER_THAN_SIGN: - this._leaveAttrValue(), this.state = Ko.DATA, this.emitCurrentTagToken(); - break; - case io.EOF: - this._err(Eo.eofInTag), this._emitEOFToken(); - break; - default: - this._err(Eo.missingWhitespaceBetweenAttributes), this.state = Ko.BEFORE_ATTRIBUTE_NAME, this._stateBeforeAttributeName(e) - } - } - _stateSelfClosingStartTag(e) { - switch (e) { - case io.GREATER_THAN_SIGN: - this.currentToken.selfClosing = !0, this.state = Ko.DATA, this.emitCurrentTagToken(); - break; - case io.EOF: - this._err(Eo.eofInTag), this._emitEOFToken(); - break; - default: - this._err(Eo.unexpectedSolidusInTag), this.state = Ko.BEFORE_ATTRIBUTE_NAME, this._stateBeforeAttributeName(e) - } - } - _stateBogusComment(e) { - const t = this.currentToken; - switch (e) { - case io.GREATER_THAN_SIGN: - this.state = Ko.DATA, this.emitCurrentComment(t); - break; - case io.EOF: - this.emitCurrentComment(t), this._emitEOFToken(); - break; - case io.NULL: - this._err(Eo.unexpectedNullCharacter), t.data += "�"; - break; - default: - t.data += String.fromCodePoint(e) - } - } - _stateMarkupDeclarationOpen(e) { - this._consumeSequenceIfMatch(so, !0) ? (this._createCommentToken(so.length + 1), this.state = Ko.COMMENT_START) : this._consumeSequenceIfMatch(oo, !1) ? (this.currentLocation = this.getCurrentLocation(oo.length + 1), this.state = Ko.DOCTYPE) : this._consumeSequenceIfMatch(ao, !0) ? this.inForeignNode ? this.state = Ko.CDATA_SECTION : (this._err(Eo.cdataInHtmlContent), this._createCommentToken(ao.length + 1), this.currentToken.data = "[CDATA[", this.state = Ko.BOGUS_COMMENT) : this._ensureHibernation() || (this._err(Eo.incorrectlyOpenedComment), this._createCommentToken(2), this.state = Ko.BOGUS_COMMENT, this._stateBogusComment(e)) - } - _stateCommentStart(e) { - switch (e) { - case io.HYPHEN_MINUS: - this.state = Ko.COMMENT_START_DASH; - break; - case io.GREATER_THAN_SIGN: { - this._err(Eo.abruptClosingOfEmptyComment), this.state = Ko.DATA; - const e = this.currentToken; - this.emitCurrentComment(e); - break - } - default: - this.state = Ko.COMMENT, this._stateComment(e) - } - } - _stateCommentStartDash(e) { - const t = this.currentToken; - switch (e) { - case io.HYPHEN_MINUS: - this.state = Ko.COMMENT_END; - break; - case io.GREATER_THAN_SIGN: - this._err(Eo.abruptClosingOfEmptyComment), this.state = Ko.DATA, this.emitCurrentComment(t); - break; - case io.EOF: - this._err(Eo.eofInComment), this.emitCurrentComment(t), this._emitEOFToken(); - break; - default: - t.data += "-", this.state = Ko.COMMENT, this._stateComment(e) - } - } - _stateComment(e) { - const t = this.currentToken; - switch (e) { - case io.HYPHEN_MINUS: - this.state = Ko.COMMENT_END_DASH; - break; - case io.LESS_THAN_SIGN: - t.data += "<", this.state = Ko.COMMENT_LESS_THAN_SIGN; - break; - case io.NULL: - this._err(Eo.unexpectedNullCharacter), t.data += "�"; - break; - case io.EOF: - this._err(Eo.eofInComment), this.emitCurrentComment(t), this._emitEOFToken(); - break; - default: - t.data += String.fromCodePoint(e) - } - } - _stateCommentLessThanSign(e) { - const t = this.currentToken; - switch (e) { - case io.EXCLAMATION_MARK: - t.data += "!", this.state = Ko.COMMENT_LESS_THAN_SIGN_BANG; - break; - case io.LESS_THAN_SIGN: - t.data += "<"; - break; - default: - this.state = Ko.COMMENT, this._stateComment(e) - } - } - _stateCommentLessThanSignBang(e) { - e === io.HYPHEN_MINUS ? this.state = Ko.COMMENT_LESS_THAN_SIGN_BANG_DASH : (this.state = Ko.COMMENT, this._stateComment(e)) - } - _stateCommentLessThanSignBangDash(e) { - e === io.HYPHEN_MINUS ? this.state = Ko.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH : (this.state = Ko.COMMENT_END_DASH, this._stateCommentEndDash(e)) - } - _stateCommentLessThanSignBangDashDash(e) { - e !== io.GREATER_THAN_SIGN && e !== io.EOF && this._err(Eo.nestedComment), this.state = Ko.COMMENT_END, this._stateCommentEnd(e) - } - _stateCommentEndDash(e) { - const t = this.currentToken; - switch (e) { - case io.HYPHEN_MINUS: - this.state = Ko.COMMENT_END; - break; - case io.EOF: - this._err(Eo.eofInComment), this.emitCurrentComment(t), this._emitEOFToken(); - break; - default: - t.data += "-", this.state = Ko.COMMENT, this._stateComment(e) - } - } - _stateCommentEnd(e) { - const t = this.currentToken; - switch (e) { - case io.GREATER_THAN_SIGN: - this.state = Ko.DATA, this.emitCurrentComment(t); - break; - case io.EXCLAMATION_MARK: - this.state = Ko.COMMENT_END_BANG; - break; - case io.HYPHEN_MINUS: - t.data += "-"; - break; - case io.EOF: - this._err(Eo.eofInComment), this.emitCurrentComment(t), this._emitEOFToken(); - break; - default: - t.data += "--", this.state = Ko.COMMENT, this._stateComment(e) - } - } - _stateCommentEndBang(e) { - const t = this.currentToken; - switch (e) { - case io.HYPHEN_MINUS: - t.data += "--!", this.state = Ko.COMMENT_END_DASH; - break; - case io.GREATER_THAN_SIGN: - this._err(Eo.incorrectlyClosedComment), this.state = Ko.DATA, this.emitCurrentComment(t); - break; - case io.EOF: - this._err(Eo.eofInComment), this.emitCurrentComment(t), this._emitEOFToken(); - break; - default: - t.data += "--!", this.state = Ko.COMMENT, this._stateComment(e) - } - } - _stateDoctype(e) { - switch (e) { - case io.SPACE: - case io.LINE_FEED: - case io.TABULATION: - case io.FORM_FEED: - this.state = Ko.BEFORE_DOCTYPE_NAME; - break; - case io.GREATER_THAN_SIGN: - this.state = Ko.BEFORE_DOCTYPE_NAME, this._stateBeforeDoctypeName(e); - break; - case io.EOF: { - this._err(Eo.eofInDoctype), this._createDoctypeToken(null); - const e = this.currentToken; - e.forceQuirks = !0, this.emitCurrentDoctype(e), this._emitEOFToken(); - break - } - default: - this._err(Eo.missingWhitespaceBeforeDoctypeName), this.state = Ko.BEFORE_DOCTYPE_NAME, this._stateBeforeDoctypeName(e) - } - } - _stateBeforeDoctypeName(e) { - if (Wo(e)) this._createDoctypeToken(String.fromCharCode(Jo(e))), this.state = Ko.DOCTYPE_NAME; - else switch (e) { - case io.SPACE: - case io.LINE_FEED: - case io.TABULATION: - case io.FORM_FEED: - break; - case io.NULL: - this._err(Eo.unexpectedNullCharacter), this._createDoctypeToken("�"), this.state = Ko.DOCTYPE_NAME; - break; - case io.GREATER_THAN_SIGN: { - this._err(Eo.missingDoctypeName), this._createDoctypeToken(null); - const e = this.currentToken; - e.forceQuirks = !0, this.emitCurrentDoctype(e), this.state = Ko.DATA; - break - } - case io.EOF: { - this._err(Eo.eofInDoctype), this._createDoctypeToken(null); - const e = this.currentToken; - e.forceQuirks = !0, this.emitCurrentDoctype(e), this._emitEOFToken(); - break - } - default: - this._createDoctypeToken(String.fromCodePoint(e)), this.state = Ko.DOCTYPE_NAME - } - } - _stateDoctypeName(e) { - const t = this.currentToken; - switch (e) { - case io.SPACE: - case io.LINE_FEED: - case io.TABULATION: - case io.FORM_FEED: - this.state = Ko.AFTER_DOCTYPE_NAME; - break; - case io.GREATER_THAN_SIGN: - this.state = Ko.DATA, this.emitCurrentDoctype(t); - break; - case io.NULL: - this._err(Eo.unexpectedNullCharacter), t.name += "�"; - break; - case io.EOF: - this._err(Eo.eofInDoctype), t.forceQuirks = !0, this.emitCurrentDoctype(t), this._emitEOFToken(); - break; - default: - t.name += String.fromCodePoint(Wo(e) ? Jo(e) : e) - } - } - _stateAfterDoctypeName(e) { - const t = this.currentToken; - switch (e) { - case io.SPACE: - case io.LINE_FEED: - case io.TABULATION: - case io.FORM_FEED: - break; - case io.GREATER_THAN_SIGN: - this.state = Ko.DATA, this.emitCurrentDoctype(t); - break; - case io.EOF: - this._err(Eo.eofInDoctype), t.forceQuirks = !0, this.emitCurrentDoctype(t), this._emitEOFToken(); - break; - default: - this._consumeSequenceIfMatch(lo, !1) ? this.state = Ko.AFTER_DOCTYPE_PUBLIC_KEYWORD : this._consumeSequenceIfMatch(ho, !1) ? this.state = Ko.AFTER_DOCTYPE_SYSTEM_KEYWORD : this._ensureHibernation() || (this._err(Eo.invalidCharacterSequenceAfterDoctypeName), t.forceQuirks = !0, this.state = Ko.BOGUS_DOCTYPE, this._stateBogusDoctype(e)) - } - } - _stateAfterDoctypePublicKeyword(e) { - const t = this.currentToken; - switch (e) { - case io.SPACE: - case io.LINE_FEED: - case io.TABULATION: - case io.FORM_FEED: - this.state = Ko.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER; - break; - case io.QUOTATION_MARK: - this._err(Eo.missingWhitespaceAfterDoctypePublicKeyword), t.publicId = "", this.state = Ko.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED; - break; - case io.APOSTROPHE: - this._err(Eo.missingWhitespaceAfterDoctypePublicKeyword), t.publicId = "", this.state = Ko.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED; - break; - case io.GREATER_THAN_SIGN: - this._err(Eo.missingDoctypePublicIdentifier), t.forceQuirks = !0, this.state = Ko.DATA, this.emitCurrentDoctype(t); - break; - case io.EOF: - this._err(Eo.eofInDoctype), t.forceQuirks = !0, this.emitCurrentDoctype(t), this._emitEOFToken(); - break; - default: - this._err(Eo.missingQuoteBeforeDoctypePublicIdentifier), t.forceQuirks = !0, this.state = Ko.BOGUS_DOCTYPE, this._stateBogusDoctype(e) - } - } - _stateBeforeDoctypePublicIdentifier(e) { - const t = this.currentToken; - switch (e) { - case io.SPACE: - case io.LINE_FEED: - case io.TABULATION: - case io.FORM_FEED: - break; - case io.QUOTATION_MARK: - t.publicId = "", this.state = Ko.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED; - break; - case io.APOSTROPHE: - t.publicId = "", this.state = Ko.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED; - break; - case io.GREATER_THAN_SIGN: - this._err(Eo.missingDoctypePublicIdentifier), t.forceQuirks = !0, this.state = Ko.DATA, this.emitCurrentDoctype(t); - break; - case io.EOF: - this._err(Eo.eofInDoctype), t.forceQuirks = !0, this.emitCurrentDoctype(t), this._emitEOFToken(); - break; - default: - this._err(Eo.missingQuoteBeforeDoctypePublicIdentifier), t.forceQuirks = !0, this.state = Ko.BOGUS_DOCTYPE, this._stateBogusDoctype(e) - } - } - _stateDoctypePublicIdentifierDoubleQuoted(e) { - const t = this.currentToken; - switch (e) { - case io.QUOTATION_MARK: - this.state = Ko.AFTER_DOCTYPE_PUBLIC_IDENTIFIER; - break; - case io.NULL: - this._err(Eo.unexpectedNullCharacter), t.publicId += "�"; - break; - case io.GREATER_THAN_SIGN: - this._err(Eo.abruptDoctypePublicIdentifier), t.forceQuirks = !0, this.emitCurrentDoctype(t), this.state = Ko.DATA; - break; - case io.EOF: - this._err(Eo.eofInDoctype), t.forceQuirks = !0, this.emitCurrentDoctype(t), this._emitEOFToken(); - break; - default: - t.publicId += String.fromCodePoint(e) - } - } - _stateDoctypePublicIdentifierSingleQuoted(e) { - const t = this.currentToken; - switch (e) { - case io.APOSTROPHE: - this.state = Ko.AFTER_DOCTYPE_PUBLIC_IDENTIFIER; - break; - case io.NULL: - this._err(Eo.unexpectedNullCharacter), t.publicId += "�"; - break; - case io.GREATER_THAN_SIGN: - this._err(Eo.abruptDoctypePublicIdentifier), t.forceQuirks = !0, this.emitCurrentDoctype(t), this.state = Ko.DATA; - break; - case io.EOF: - this._err(Eo.eofInDoctype), t.forceQuirks = !0, this.emitCurrentDoctype(t), this._emitEOFToken(); - break; - default: - t.publicId += String.fromCodePoint(e) - } - } - _stateAfterDoctypePublicIdentifier(e) { - const t = this.currentToken; - switch (e) { - case io.SPACE: - case io.LINE_FEED: - case io.TABULATION: - case io.FORM_FEED: - this.state = Ko.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS; - break; - case io.GREATER_THAN_SIGN: - this.state = Ko.DATA, this.emitCurrentDoctype(t); - break; - case io.QUOTATION_MARK: - this._err(Eo.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers), t.systemId = "", this.state = Ko.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED; - break; - case io.APOSTROPHE: - this._err(Eo.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers), t.systemId = "", this.state = Ko.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED; - break; - case io.EOF: - this._err(Eo.eofInDoctype), t.forceQuirks = !0, this.emitCurrentDoctype(t), this._emitEOFToken(); - break; - default: - this._err(Eo.missingQuoteBeforeDoctypeSystemIdentifier), t.forceQuirks = !0, this.state = Ko.BOGUS_DOCTYPE, this._stateBogusDoctype(e) - } - } - _stateBetweenDoctypePublicAndSystemIdentifiers(e) { - const t = this.currentToken; - switch (e) { - case io.SPACE: - case io.LINE_FEED: - case io.TABULATION: - case io.FORM_FEED: - break; - case io.GREATER_THAN_SIGN: - this.emitCurrentDoctype(t), this.state = Ko.DATA; - break; - case io.QUOTATION_MARK: - t.systemId = "", this.state = Ko.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED; - break; - case io.APOSTROPHE: - t.systemId = "", this.state = Ko.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED; - break; - case io.EOF: - this._err(Eo.eofInDoctype), t.forceQuirks = !0, this.emitCurrentDoctype(t), this._emitEOFToken(); - break; - default: - this._err(Eo.missingQuoteBeforeDoctypeSystemIdentifier), t.forceQuirks = !0, this.state = Ko.BOGUS_DOCTYPE, this._stateBogusDoctype(e) - } - } - _stateAfterDoctypeSystemKeyword(e) { - const t = this.currentToken; - switch (e) { - case io.SPACE: - case io.LINE_FEED: - case io.TABULATION: - case io.FORM_FEED: - this.state = Ko.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER; - break; - case io.QUOTATION_MARK: - this._err(Eo.missingWhitespaceAfterDoctypeSystemKeyword), t.systemId = "", this.state = Ko.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED; - break; - case io.APOSTROPHE: - this._err(Eo.missingWhitespaceAfterDoctypeSystemKeyword), t.systemId = "", this.state = Ko.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED; - break; - case io.GREATER_THAN_SIGN: - this._err(Eo.missingDoctypeSystemIdentifier), t.forceQuirks = !0, this.state = Ko.DATA, this.emitCurrentDoctype(t); - break; - case io.EOF: - this._err(Eo.eofInDoctype), t.forceQuirks = !0, this.emitCurrentDoctype(t), this._emitEOFToken(); - break; - default: - this._err(Eo.missingQuoteBeforeDoctypeSystemIdentifier), t.forceQuirks = !0, this.state = Ko.BOGUS_DOCTYPE, this._stateBogusDoctype(e) - } - } - _stateBeforeDoctypeSystemIdentifier(e) { - const t = this.currentToken; - switch (e) { - case io.SPACE: - case io.LINE_FEED: - case io.TABULATION: - case io.FORM_FEED: - break; - case io.QUOTATION_MARK: - t.systemId = "", this.state = Ko.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED; - break; - case io.APOSTROPHE: - t.systemId = "", this.state = Ko.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED; - break; - case io.GREATER_THAN_SIGN: - this._err(Eo.missingDoctypeSystemIdentifier), t.forceQuirks = !0, this.state = Ko.DATA, this.emitCurrentDoctype(t); - break; - case io.EOF: - this._err(Eo.eofInDoctype), t.forceQuirks = !0, this.emitCurrentDoctype(t), this._emitEOFToken(); - break; - default: - this._err(Eo.missingQuoteBeforeDoctypeSystemIdentifier), t.forceQuirks = !0, this.state = Ko.BOGUS_DOCTYPE, this._stateBogusDoctype(e) - } - } - _stateDoctypeSystemIdentifierDoubleQuoted(e) { - const t = this.currentToken; - switch (e) { - case io.QUOTATION_MARK: - this.state = Ko.AFTER_DOCTYPE_SYSTEM_IDENTIFIER; - break; - case io.NULL: - this._err(Eo.unexpectedNullCharacter), t.systemId += "�"; - break; - case io.GREATER_THAN_SIGN: - this._err(Eo.abruptDoctypeSystemIdentifier), t.forceQuirks = !0, this.emitCurrentDoctype(t), this.state = Ko.DATA; - break; - case io.EOF: - this._err(Eo.eofInDoctype), t.forceQuirks = !0, this.emitCurrentDoctype(t), this._emitEOFToken(); - break; - default: - t.systemId += String.fromCodePoint(e) - } - } - _stateDoctypeSystemIdentifierSingleQuoted(e) { - const t = this.currentToken; - switch (e) { - case io.APOSTROPHE: - this.state = Ko.AFTER_DOCTYPE_SYSTEM_IDENTIFIER; - break; - case io.NULL: - this._err(Eo.unexpectedNullCharacter), t.systemId += "�"; - break; - case io.GREATER_THAN_SIGN: - this._err(Eo.abruptDoctypeSystemIdentifier), t.forceQuirks = !0, this.emitCurrentDoctype(t), this.state = Ko.DATA; - break; - case io.EOF: - this._err(Eo.eofInDoctype), t.forceQuirks = !0, this.emitCurrentDoctype(t), this._emitEOFToken(); - break; - default: - t.systemId += String.fromCodePoint(e) - } - } - _stateAfterDoctypeSystemIdentifier(e) { - const t = this.currentToken; - switch (e) { - case io.SPACE: - case io.LINE_FEED: - case io.TABULATION: - case io.FORM_FEED: - break; - case io.GREATER_THAN_SIGN: - this.emitCurrentDoctype(t), this.state = Ko.DATA; - break; - case io.EOF: - this._err(Eo.eofInDoctype), t.forceQuirks = !0, this.emitCurrentDoctype(t), this._emitEOFToken(); - break; - default: - this._err(Eo.unexpectedCharacterAfterDoctypeSystemIdentifier), this.state = Ko.BOGUS_DOCTYPE, this._stateBogusDoctype(e) - } - } - _stateBogusDoctype(e) { - const t = this.currentToken; - switch (e) { - case io.GREATER_THAN_SIGN: - this.emitCurrentDoctype(t), this.state = Ko.DATA; - break; - case io.NULL: - this._err(Eo.unexpectedNullCharacter); - break; - case io.EOF: - this.emitCurrentDoctype(t), this._emitEOFToken() - } - } - _stateCdataSection(e) { - switch (e) { - case io.RIGHT_SQUARE_BRACKET: - this.state = Ko.CDATA_SECTION_BRACKET; - break; - case io.EOF: - this._err(Eo.eofInCdata), this._emitEOFToken(); - break; - default: - this._emitCodePoint(e) - } - } - _stateCdataSectionBracket(e) { - e === io.RIGHT_SQUARE_BRACKET ? this.state = Ko.CDATA_SECTION_END : (this._emitChars("]"), this.state = Ko.CDATA_SECTION, this._stateCdataSection(e)) - } - _stateCdataSectionEnd(e) { - switch (e) { - case io.GREATER_THAN_SIGN: - this.state = Ko.DATA; - break; - case io.RIGHT_SQUARE_BRACKET: - this._emitChars("]"); - break; - default: - this._emitChars("]]"), this.state = Ko.CDATA_SECTION, this._stateCdataSection(e) - } - } - _stateCharacterReference(e) { - e === io.NUMBER_SIGN ? this.state = Ko.NUMERIC_CHARACTER_REFERENCE : Xo(e) ? (this.state = Ko.NAMED_CHARACTER_REFERENCE, this._stateNamedCharacterReference(e)) : (this._flushCodePointConsumedAsCharacterReference(io.AMPERSAND), this._reconsumeInState(this.returnState, e)) - } - _stateNamedCharacterReference(e) { - const t = this._matchNamedCharacterReference(e); - if (this._ensureHibernation()); - else if (t) { - for (let e = 0; e < t.length; e++) this._flushCodePointConsumedAsCharacterReference(t[e]); - this.state = this.returnState - } else this._flushCodePointConsumedAsCharacterReference(io.AMPERSAND), this.state = Ko.AMBIGUOUS_AMPERSAND - } - _stateAmbiguousAmpersand(e) { - Xo(e) ? this._flushCodePointConsumedAsCharacterReference(e) : (e === io.SEMICOLON && this._err(Eo.unknownNamedCharacterReference), this._reconsumeInState(this.returnState, e)) - } - _stateNumericCharacterReference(e) { - this.charRefCode = 0, e === io.LATIN_SMALL_X || e === io.LATIN_CAPITAL_X ? this.state = Ko.HEXADEMICAL_CHARACTER_REFERENCE_START : Vo(e) ? (this.state = Ko.DECIMAL_CHARACTER_REFERENCE, this._stateDecimalCharacterReference(e)) : (this._err(Eo.absenceOfDigitsInNumericCharacterReference), this._flushCodePointConsumedAsCharacterReference(io.AMPERSAND), this._flushCodePointConsumedAsCharacterReference(io.NUMBER_SIGN), this._reconsumeInState(this.returnState, e)) - } - _stateHexademicalCharacterReferenceStart(e) { - ! function(e) { - return Vo(e) || $o(e) || zo(e) - }(e) ? (this._err(Eo.absenceOfDigitsInNumericCharacterReference), this._flushCodePointConsumedAsCharacterReference(io.AMPERSAND), this._flushCodePointConsumedAsCharacterReference(io.NUMBER_SIGN), this._unconsume(2), this.state = this.returnState) : (this.state = Ko.HEXADEMICAL_CHARACTER_REFERENCE, this._stateHexademicalCharacterReference(e)) - } - _stateHexademicalCharacterReference(e) { - $o(e) ? this.charRefCode = 16 * this.charRefCode + e - 55 : zo(e) ? this.charRefCode = 16 * this.charRefCode + e - 87 : Vo(e) ? this.charRefCode = 16 * this.charRefCode + e - 48 : e === io.SEMICOLON ? this.state = Ko.NUMERIC_CHARACTER_REFERENCE_END : (this._err(Eo.missingSemicolonAfterCharacterReference), this.state = Ko.NUMERIC_CHARACTER_REFERENCE_END, this._stateNumericCharacterReferenceEnd(e)) - } - _stateDecimalCharacterReference(e) { - Vo(e) ? this.charRefCode = 10 * this.charRefCode + e - 48 : e === io.SEMICOLON ? this.state = Ko.NUMERIC_CHARACTER_REFERENCE_END : (this._err(Eo.missingSemicolonAfterCharacterReference), this.state = Ko.NUMERIC_CHARACTER_REFERENCE_END, this._stateNumericCharacterReferenceEnd(e)) - } - _stateNumericCharacterReferenceEnd(e) { - if (this.charRefCode === io.NULL) this._err(Eo.nullCharacterReference), this.charRefCode = io.REPLACEMENT_CHARACTER; - else if (this.charRefCode > 1114111) this._err(Eo.characterReferenceOutsideUnicodeRange), this.charRefCode = io.REPLACEMENT_CHARACTER; - else if (uo(this.charRefCode)) this._err(Eo.surrogateCharacterReference), this.charRefCode = io.REPLACEMENT_CHARACTER; - else if (fo(this.charRefCode)) this._err(Eo.noncharacterCharacterReference); - else if (po(this.charRefCode) || this.charRefCode === io.CARRIAGE_RETURN) { - this._err(Eo.controlCharacterReference); - const e = qo.get(this.charRefCode); - void 0 !== e && (this.charRefCode = e) - } - this._flushCodePointConsumedAsCharacterReference(this.charRefCode), this._reconsumeInState(this.returnState, e) - } -} -const nc = new Set([Po.DD, Po.DT, Po.LI, Po.OPTGROUP, Po.OPTION, Po.P, Po.RB, Po.RP, Po.RT, Po.RTC]), - rc = new Set([...nc, Po.CAPTION, Po.COLGROUP, Po.TBODY, Po.TD, Po.TFOOT, Po.TH, Po.THEAD, Po.TR]), - ic = new Map([ - [Po.APPLET, vo.HTML], - [Po.CAPTION, vo.HTML], - [Po.HTML, vo.HTML], - [Po.MARQUEE, vo.HTML], - [Po.OBJECT, vo.HTML], - [Po.TABLE, vo.HTML], - [Po.TD, vo.HTML], - [Po.TEMPLATE, vo.HTML], - [Po.TH, vo.HTML], - [Po.ANNOTATION_XML, vo.MATHML], - [Po.MI, vo.MATHML], - [Po.MN, vo.MATHML], - [Po.MO, vo.MATHML], - [Po.MS, vo.MATHML], - [Po.MTEXT, vo.MATHML], - [Po.DESC, vo.SVG], - [Po.FOREIGN_OBJECT, vo.SVG], - [Po.TITLE, vo.SVG] - ]), - sc = [Po.H1, Po.H2, Po.H3, Po.H4, Po.H5, Po.H6], - ac = [Po.TR, Po.TEMPLATE, Po.HTML], - oc = [Po.TBODY, Po.TFOOT, Po.THEAD, Po.TEMPLATE, Po.HTML], - cc = [Po.TABLE, Po.TEMPLATE, Po.HTML], - lc = [Po.TD, Po.TH]; -class hc { - constructor(e, t, n) { - this.treeAdapter = t, this.handler = n, this.items = [], this.tagIDs = [], this.stackTop = -1, this.tmplCount = 0, this.currentTagId = Po.UNKNOWN, this.current = e - } - get currentTmplContentOrNode() { - return this._isInTemplate() ? this.treeAdapter.getTemplateContent(this.current) : this.current - } - _indexOf(e) { - return this.items.lastIndexOf(e, this.stackTop) - } - _isInTemplate() { - return this.currentTagId === Po.TEMPLATE && this.treeAdapter.getNamespaceURI(this.current) === vo.HTML - } - _updateCurrentElement() { - this.current = this.items[this.stackTop], this.currentTagId = this.tagIDs[this.stackTop] - } - push(e, t) { - this.stackTop++, this.items[this.stackTop] = e, this.current = e, this.tagIDs[this.stackTop] = t, this.currentTagId = t, this._isInTemplate() && this.tmplCount++, this.handler.onItemPush(e, t, !0) - } - pop() { - const e = this.current; - this.tmplCount > 0 && this._isInTemplate() && this.tmplCount--, this.stackTop--, this._updateCurrentElement(), this.handler.onItemPop(e, !0) - } - replace(e, t) { - const n = this._indexOf(e); - this.items[n] = t, n === this.stackTop && (this.current = t) - } - insertAfter(e, t, n) { - const r = this._indexOf(e) + 1; - this.items.splice(r, 0, t), this.tagIDs.splice(r, 0, n), this.stackTop++, r === this.stackTop && this._updateCurrentElement(), this.handler.onItemPush(this.current, this.currentTagId, r === this.stackTop) - } - popUntilTagNamePopped(e) { - let t = this.stackTop + 1; - do { - t = this.tagIDs.lastIndexOf(e, t - 1) - } while (t > 0 && this.treeAdapter.getNamespaceURI(this.items[t]) !== vo.HTML); - this.shortenToLength(t < 0 ? 0 : t) - } - shortenToLength(e) { - for (; this.stackTop >= e;) { - const t = this.current; - this.tmplCount > 0 && this._isInTemplate() && (this.tmplCount -= 1), this.stackTop--, this._updateCurrentElement(), this.handler.onItemPop(t, this.stackTop < e) - } - } - popUntilElementPopped(e) { - const t = this._indexOf(e); - this.shortenToLength(t < 0 ? 0 : t) - } - popUntilPopped(e, t) { - const n = this._indexOfTagNames(e, t); - this.shortenToLength(n < 0 ? 0 : n) - } - popUntilNumberedHeaderPopped() { - this.popUntilPopped(sc, vo.HTML) - } - popUntilTableCellPopped() { - this.popUntilPopped(lc, vo.HTML) - } - popAllUpToHtmlElement() { - this.tmplCount = 0, this.shortenToLength(1) - } - _indexOfTagNames(e, t) { - for (let n = this.stackTop; n >= 0; n--) - if (e.includes(this.tagIDs[n]) && this.treeAdapter.getNamespaceURI(this.items[n]) === t) return n; - return -1 - } - clearBackTo(e, t) { - const n = this._indexOfTagNames(e, t); - this.shortenToLength(n + 1) - } - clearBackToTableContext() { - this.clearBackTo(cc, vo.HTML) - } - clearBackToTableBodyContext() { - this.clearBackTo(oc, vo.HTML) - } - clearBackToTableRowContext() { - this.clearBackTo(ac, vo.HTML) - } - remove(e) { - const t = this._indexOf(e); - t >= 0 && (t === this.stackTop ? this.pop() : (this.items.splice(t, 1), this.tagIDs.splice(t, 1), this.stackTop--, this._updateCurrentElement(), this.handler.onItemPop(e, !1))) - } - tryPeekProperlyNestedBodyElement() { - return this.stackTop >= 1 && this.tagIDs[1] === Po.BODY ? this.items[1] : null - } - contains(e) { - return this._indexOf(e) > -1 - } - getCommonAncestor(e) { - const t = this._indexOf(e) - 1; - return t >= 0 ? this.items[t] : null - } - isRootHtmlElementCurrent() { - return 0 === this.stackTop && this.tagIDs[0] === Po.HTML - } - hasInScope(e) { - for (let t = this.stackTop; t >= 0; t--) { - const n = this.tagIDs[t], - r = this.treeAdapter.getNamespaceURI(this.items[t]); - if (n === e && r === vo.HTML) return !0; - if (ic.get(n) === r) return !1 - } - return !0 - } - hasNumberedHeaderInScope() { - for (let e = this.stackTop; e >= 0; e--) { - const t = this.tagIDs[e], - n = this.treeAdapter.getNamespaceURI(this.items[e]); - if (Go(t) && n === vo.HTML) return !0; - if (ic.get(t) === n) return !1 - } - return !0 - } - hasInListItemScope(e) { - for (let t = this.stackTop; t >= 0; t--) { - const n = this.tagIDs[t], - r = this.treeAdapter.getNamespaceURI(this.items[t]); - if (n === e && r === vo.HTML) return !0; - if ((n === Po.UL || n === Po.OL) && r === vo.HTML || ic.get(n) === r) return !1 - } - return !0 - } - hasInButtonScope(e) { - for (let t = this.stackTop; t >= 0; t--) { - const n = this.tagIDs[t], - r = this.treeAdapter.getNamespaceURI(this.items[t]); - if (n === e && r === vo.HTML) return !0; - if (n === Po.BUTTON && r === vo.HTML || ic.get(n) === r) return !1 - } - return !0 - } - hasInTableScope(e) { - for (let t = this.stackTop; t >= 0; t--) { - const n = this.tagIDs[t]; - if (this.treeAdapter.getNamespaceURI(this.items[t]) === vo.HTML) { - if (n === e) return !0; - if (n === Po.TABLE || n === Po.TEMPLATE || n === Po.HTML) return !1 - } - } - return !0 - } - hasTableBodyContextInTableScope() { - for (let e = this.stackTop; e >= 0; e--) { - const t = this.tagIDs[e]; - if (this.treeAdapter.getNamespaceURI(this.items[e]) === vo.HTML) { - if (t === Po.TBODY || t === Po.THEAD || t === Po.TFOOT) return !0; - if (t === Po.TABLE || t === Po.HTML) return !1 - } - } - return !0 - } - hasInSelectScope(e) { - for (let t = this.stackTop; t >= 0; t--) { - const n = this.tagIDs[t]; - if (this.treeAdapter.getNamespaceURI(this.items[t]) === vo.HTML) { - if (n === e) return !0; - if (n !== Po.OPTION && n !== Po.OPTGROUP) return !1 - } - } - return !0 - } - generateImpliedEndTags() { - for (; nc.has(this.currentTagId);) this.pop() - } - generateImpliedEndTagsThoroughly() { - for (; rc.has(this.currentTagId);) this.pop() - } - generateImpliedEndTagsWithExclusion(e) { - for (; this.currentTagId !== e && rc.has(this.currentTagId);) this.pop() - } -} -var uc; -! function(e) { - e[e.Marker = 0] = "Marker", e[e.Element = 1] = "Element" -}(uc = uc || (uc = {})); -const pc = { - type: uc.Marker -}; -class fc { - constructor(e) { - this.treeAdapter = e, this.entries = [], this.bookmark = null - } - _getNoahArkConditionCandidates(e, t) { - const n = [], - r = t.length, - i = this.treeAdapter.getTagName(e), - s = this.treeAdapter.getNamespaceURI(e); - for (let e = 0; e < this.entries.length; e++) { - const t = this.entries[e]; - if (t.type === uc.Marker) break; - const { - element: a - } = t; - if (this.treeAdapter.getTagName(a) === i && this.treeAdapter.getNamespaceURI(a) === s) { - const t = this.treeAdapter.getAttrList(a); - t.length === r && n.push({ - idx: e, - attrs: t - }) - } - } - return n - } - _ensureNoahArkCondition(e) { - if (this.entries.length < 3) return; - const t = this.treeAdapter.getAttrList(e), - n = this._getNoahArkConditionCandidates(e, t); - if (n.length < 3) return; - const r = new Map(t.map((e => [e.name, e.value]))); - let i = 0; - for (let e = 0; e < n.length; e++) { - const t = n[e]; - t.attrs.every((e => r.get(e.name) === e.value)) && (i += 1, i >= 3 && this.entries.splice(t.idx, 1)) - } - } - insertMarker() { - this.entries.unshift(pc) - } - pushElement(e, t) { - this._ensureNoahArkCondition(e), this.entries.unshift({ - type: uc.Element, - element: e, - token: t - }) - } - insertElementAfterBookmark(e, t) { - const n = this.entries.indexOf(this.bookmark); - this.entries.splice(n, 0, { - type: uc.Element, - element: e, - token: t - }) - } - removeEntry(e) { - const t = this.entries.indexOf(e); - t >= 0 && this.entries.splice(t, 1) - } - clearToLastMarker() { - const e = this.entries.indexOf(pc); - e >= 0 ? this.entries.splice(0, e + 1) : this.entries.length = 0 - } - getElementEntryInScopeWithTagName(e) { - const t = this.entries.find((t => t.type === uc.Marker || this.treeAdapter.getTagName(t.element) === e)); - return t && t.type === uc.Element ? t : null - } - getElementEntry(e) { - return this.entries.find((t => t.type === uc.Element && t.element === e)) - } -} - -function dc(e) { - return { - nodeName: "#text", - value: e, - parentNode: null - } -} -const Ec = { - createDocument: () => ({ - nodeName: "#document", - mode: Ro.NO_QUIRKS, - childNodes: [] - }), - createDocumentFragment: () => ({ - nodeName: "#document-fragment", - childNodes: [] - }), - createElement: (e, t, n) => ({ - nodeName: e, - tagName: e, - attrs: n, - namespaceURI: t, - childNodes: [], - parentNode: null - }), - createCommentNode: e => ({ - nodeName: "#comment", - data: e, - parentNode: null - }), - appendChild(e, t) { - e.childNodes.push(t), t.parentNode = e - }, - insertBefore(e, t, n) { - const r = e.childNodes.indexOf(n); - e.childNodes.splice(r, 0, t), t.parentNode = e - }, - setTemplateContent(e, t) { - e.content = t - }, - getTemplateContent: e => e.content, - setDocumentType(e, t, n, r) { - const i = e.childNodes.find((e => "#documentType" === e.nodeName)); - if (i) i.name = t, i.publicId = n, i.systemId = r; - else { - const i = { - nodeName: "#documentType", - name: t, - publicId: n, - systemId: r, - parentNode: null - }; - Ec.appendChild(e, i) - } - }, - setDocumentMode(e, t) { - e.mode = t - }, - getDocumentMode: e => e.mode, - detachNode(e) { - if (e.parentNode) { - const t = e.parentNode.childNodes.indexOf(e); - e.parentNode.childNodes.splice(t, 1), e.parentNode = null - } - }, - insertText(e, t) { - if (e.childNodes.length > 0) { - const n = e.childNodes[e.childNodes.length - 1]; - if (Ec.isTextNode(n)) return void(n.value += t) - } - Ec.appendChild(e, dc(t)) - }, - insertTextBefore(e, t, n) { - const r = e.childNodes[e.childNodes.indexOf(n) - 1]; - r && Ec.isTextNode(r) ? r.value += t : Ec.insertBefore(e, dc(t), n) - }, - adoptAttributes(e, t) { - const n = new Set(e.attrs.map((e => e.name))); - for (let r = 0; r < t.length; r++) n.has(t[r].name) || e.attrs.push(t[r]) - }, - getFirstChild: e => e.childNodes[0], - getChildNodes: e => e.childNodes, - getParentNode: e => e.parentNode, - getAttrList: e => e.attrs, - getTagName: e => e.tagName, - getNamespaceURI: e => e.namespaceURI, - getTextNodeContent: e => e.value, - getCommentNodeContent: e => e.data, - getDocumentTypeNodeName: e => e.name, - getDocumentTypeNodePublicId: e => e.publicId, - getDocumentTypeNodeSystemId: e => e.systemId, - isTextNode: e => "#text" === e.nodeName, - isCommentNode: e => "#comment" === e.nodeName, - isDocumentTypeNode: e => "#documentType" === e.nodeName, - isElementNode: e => Object.prototype.hasOwnProperty.call(e, "tagName"), - setNodeSourceCodeLocation(e, t) { - e.sourceCodeLocation = t - }, - getNodeSourceCodeLocation: e => e.sourceCodeLocation, - updateNodeSourceCodeLocation(e, t) { - e.sourceCodeLocation = { - ...e.sourceCodeLocation, - ...t - } - } - }, - mc = ["+//silmaril//dtd html pro v0r11 19970101//", "-//as//dtd html 3.0 aswedit + extensions//", "-//advasoft ltd//dtd html 3.0 aswedit + extensions//", "-//ietf//dtd html 2.0 level 1//", "-//ietf//dtd html 2.0 level 2//", "-//ietf//dtd html 2.0 strict level 1//", "-//ietf//dtd html 2.0 strict level 2//", "-//ietf//dtd html 2.0 strict//", "-//ietf//dtd html 2.0//", "-//ietf//dtd html 2.1e//", "-//ietf//dtd html 3.0//", "-//ietf//dtd html 3.2 final//", "-//ietf//dtd html 3.2//", "-//ietf//dtd html 3//", "-//ietf//dtd html level 0//", "-//ietf//dtd html level 1//", "-//ietf//dtd html level 2//", "-//ietf//dtd html level 3//", "-//ietf//dtd html strict level 0//", "-//ietf//dtd html strict level 1//", "-//ietf//dtd html strict level 2//", "-//ietf//dtd html strict level 3//", "-//ietf//dtd html strict//", "-//ietf//dtd html//", "-//metrius//dtd metrius presentational//", "-//microsoft//dtd internet explorer 2.0 html strict//", "-//microsoft//dtd internet explorer 2.0 html//", "-//microsoft//dtd internet explorer 2.0 tables//", "-//microsoft//dtd internet explorer 3.0 html strict//", "-//microsoft//dtd internet explorer 3.0 html//", "-//microsoft//dtd internet explorer 3.0 tables//", "-//netscape comm. corp.//dtd html//", "-//netscape comm. corp.//dtd strict html//", "-//o'reilly and associates//dtd html 2.0//", "-//o'reilly and associates//dtd html extended 1.0//", "-//o'reilly and associates//dtd html extended relaxed 1.0//", "-//sq//dtd html 2.0 hotmetal + extensions//", "-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//", "-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//", "-//spyglass//dtd html 2.0 extended//", "-//sun microsystems corp.//dtd hotjava html//", "-//sun microsystems corp.//dtd hotjava strict html//", "-//w3c//dtd html 3 1995-03-24//", "-//w3c//dtd html 3.2 draft//", "-//w3c//dtd html 3.2 final//", "-//w3c//dtd html 3.2//", "-//w3c//dtd html 3.2s draft//", "-//w3c//dtd html 4.0 frameset//", "-//w3c//dtd html 4.0 transitional//", "-//w3c//dtd html experimental 19960712//", "-//w3c//dtd html experimental 970421//", "-//w3c//dtd w3 html//", "-//w3o//dtd w3 html 3.0//", "-//webtechs//dtd mozilla html 2.0//", "-//webtechs//dtd mozilla html//"], - Tc = [...mc, "-//w3c//dtd html 4.01 frameset//", "-//w3c//dtd html 4.01 transitional//"], - _c = new Set(["-//w3o//dtd w3 html strict 3.0//en//", "-/w3c/dtd html 4.0 transitional/en", "html"]), - Ac = ["-//w3c//dtd xhtml 1.0 frameset//", "-//w3c//dtd xhtml 1.0 transitional//"], - gc = [...Ac, "-//w3c//dtd html 4.01 frameset//", "-//w3c//dtd html 4.01 transitional//"]; - -function Nc(e, t) { - return t.some((t => e.startsWith(t))) -} -const Cc = "text/html", - Ic = "application/xhtml+xml", - Sc = new Map(["attributeName", "attributeType", "baseFrequency", "baseProfile", "calcMode", "clipPathUnits", "diffuseConstant", "edgeMode", "filterUnits", "glyphRef", "gradientTransform", "gradientUnits", "kernelMatrix", "kernelUnitLength", "keyPoints", "keySplines", "keyTimes", "lengthAdjust", "limitingConeAngle", "markerHeight", "markerUnits", "markerWidth", "maskContentUnits", "maskUnits", "numOctaves", "pathLength", "patternContentUnits", "patternTransform", "patternUnits", "pointsAtX", "pointsAtY", "pointsAtZ", "preserveAlpha", "preserveAspectRatio", "primitiveUnits", "refX", "refY", "repeatCount", "repeatDur", "requiredExtensions", "requiredFeatures", "specularConstant", "specularExponent", "spreadMethod", "startOffset", "stdDeviation", "stitchTiles", "surfaceScale", "systemLanguage", "tableValues", "targetX", "targetY", "textLength", "viewBox", "viewTarget", "xChannelSelector", "yChannelSelector", "zoomAndPan"].map((e => [e.toLowerCase(), e]))), - bc = new Map([ - ["xlink:actuate", { - prefix: "xlink", - name: "actuate", - namespace: vo.XLINK - }], - ["xlink:arcrole", { - prefix: "xlink", - name: "arcrole", - namespace: vo.XLINK - }], - ["xlink:href", { - prefix: "xlink", - name: "href", - namespace: vo.XLINK - }], - ["xlink:role", { - prefix: "xlink", - name: "role", - namespace: vo.XLINK - }], - ["xlink:show", { - prefix: "xlink", - name: "show", - namespace: vo.XLINK - }], - ["xlink:title", { - prefix: "xlink", - name: "title", - namespace: vo.XLINK - }], - ["xlink:type", { - prefix: "xlink", - name: "type", - namespace: vo.XLINK - }], - ["xml:base", { - prefix: "xml", - name: "base", - namespace: vo.XML - }], - ["xml:lang", { - prefix: "xml", - name: "lang", - namespace: vo.XML - }], - ["xml:space", { - prefix: "xml", - name: "space", - namespace: vo.XML - }], - ["xmlns", { - prefix: "", - name: "xmlns", - namespace: vo.XMLNS - }], - ["xmlns:xlink", { - prefix: "xmlns", - name: "xlink", - namespace: vo.XMLNS - }] - ]), - Oc = new Map(["altGlyph", "altGlyphDef", "altGlyphItem", "animateColor", "animateMotion", "animateTransform", "clipPath", "feBlend", "feColorMatrix", "feComponentTransfer", "feComposite", "feConvolveMatrix", "feDiffuseLighting", "feDisplacementMap", "feDistantLight", "feFlood", "feFuncA", "feFuncB", "feFuncG", "feFuncR", "feGaussianBlur", "feImage", "feMerge", "feMergeNode", "feMorphology", "feOffset", "fePointLight", "feSpecularLighting", "feSpotLight", "feTile", "feTurbulence", "foreignObject", "glyphRef", "linearGradient", "radialGradient", "textPath"].map((e => [e.toLowerCase(), e]))), - yc = new Set([Po.B, Po.BIG, Po.BLOCKQUOTE, Po.BODY, Po.BR, Po.CENTER, Po.CODE, Po.DD, Po.DIV, Po.DL, Po.DT, Po.EM, Po.EMBED, Po.H1, Po.H2, Po.H3, Po.H4, Po.H5, Po.H6, Po.HEAD, Po.HR, Po.I, Po.IMG, Po.LI, Po.LISTING, Po.MENU, Po.META, Po.NOBR, Po.OL, Po.P, Po.PRE, Po.RUBY, Po.S, Po.SMALL, Po.SPAN, Po.STRONG, Po.STRIKE, Po.SUB, Po.SUP, Po.TABLE, Po.TT, Po.U, Po.UL, Po.VAR]); - -function Lc(e) { - for (let t = 0; t < e.attrs.length; t++) - if ("definitionurl" === e.attrs[t].name) { - e.attrs[t].name = "definitionURL"; - break - } -} - -function kc(e) { - for (let t = 0; t < e.attrs.length; t++) { - const n = Sc.get(e.attrs[t].name); - null != n && (e.attrs[t].name = n) - } -} - -function vc(e) { - for (let t = 0; t < e.attrs.length; t++) { - const n = bc.get(e.attrs[t].name); - n && (e.attrs[t].prefix = n.prefix, e.attrs[t].name = n.name, e.attrs[t].namespace = n.namespace) - } -} - -function Dc(e, t, n, r) { - return (!r || r === vo.HTML) && function(e, t, n) { - if (t === vo.MATHML && e === Po.ANNOTATION_XML) - for (let e = 0; e < n.length; e++) - if (n[e].name === Do.ENCODING) { - const t = n[e].value.toLowerCase(); - return t === Cc || t === Ic - } return t === vo.SVG && (e === Po.FOREIGN_OBJECT || e === Po.DESC || e === Po.TITLE) - }(e, t, n) || (!r || r === vo.MATHML) && function(e, t) { - return t === vo.MATHML && (e === Po.MI || e === Po.MO || e === Po.MN || e === Po.MS || e === Po.MTEXT) - }(e, t) -} -var Rc; -! function(e) { - e[e.INITIAL = 0] = "INITIAL", e[e.BEFORE_HTML = 1] = "BEFORE_HTML", e[e.BEFORE_HEAD = 2] = "BEFORE_HEAD", e[e.IN_HEAD = 3] = "IN_HEAD", e[e.IN_HEAD_NO_SCRIPT = 4] = "IN_HEAD_NO_SCRIPT", e[e.AFTER_HEAD = 5] = "AFTER_HEAD", e[e.IN_BODY = 6] = "IN_BODY", e[e.TEXT = 7] = "TEXT", e[e.IN_TABLE = 8] = "IN_TABLE", e[e.IN_TABLE_TEXT = 9] = "IN_TABLE_TEXT", e[e.IN_CAPTION = 10] = "IN_CAPTION", e[e.IN_COLUMN_GROUP = 11] = "IN_COLUMN_GROUP", e[e.IN_TABLE_BODY = 12] = "IN_TABLE_BODY", e[e.IN_ROW = 13] = "IN_ROW", e[e.IN_CELL = 14] = "IN_CELL", e[e.IN_SELECT = 15] = "IN_SELECT", e[e.IN_SELECT_IN_TABLE = 16] = "IN_SELECT_IN_TABLE", e[e.IN_TEMPLATE = 17] = "IN_TEMPLATE", e[e.AFTER_BODY = 18] = "AFTER_BODY", e[e.IN_FRAMESET = 19] = "IN_FRAMESET", e[e.AFTER_FRAMESET = 20] = "AFTER_FRAMESET", e[e.AFTER_AFTER_BODY = 21] = "AFTER_AFTER_BODY", e[e.AFTER_AFTER_FRAMESET = 22] = "AFTER_AFTER_FRAMESET" -}(Rc || (Rc = {})); -const Mc = { - startLine: -1, - startCol: -1, - startOffset: -1, - endLine: -1, - endCol: -1, - endOffset: -1 - }, - Pc = new Set([Po.TABLE, Po.TBODY, Po.TFOOT, Po.THEAD, Po.TR]), - xc = { - scriptingEnabled: !0, - sourceCodeLocationInfo: !1, - treeAdapter: Ec, - onParseError: null - }; -class wc { - constructor(e, t, n = null, r = null) { - this.fragmentContext = n, this.scriptHandler = r, this.currentToken = null, this.stopped = !1, this.insertionMode = Rc.INITIAL, this.originalInsertionMode = Rc.INITIAL, this.headElement = null, this.formElement = null, this.currentNotInHTML = !1, this.tmplInsertionModeStack = [], this.pendingCharacterTokens = [], this.hasNonWhitespacePendingCharacterToken = !1, this.framesetOk = !0, this.skipNextNewLine = !1, this.fosterParentingEnabled = !1, this.options = { - ...xc, - ...e - }, this.treeAdapter = this.options.treeAdapter, this.onParseError = this.options.onParseError, this.onParseError && (this.options.sourceCodeLocationInfo = !0), this.document = null != t ? t : this.treeAdapter.createDocument(), this.tokenizer = new tc(this.options, this), this.activeFormattingElements = new fc(this.treeAdapter), this.fragmentContextID = n ? Fo(this.treeAdapter.getTagName(n)) : Po.UNKNOWN, this._setContextModes(null != n ? n : this.document, this.fragmentContextID), this.openElements = new hc(this.document, this.treeAdapter, this) - } - static parse(e, t) { - const n = new this(t); - return n.tokenizer.write(e, !0), n.document - } - static getFragmentParser(e, t) { - const n = { - ...xc, - ...t - }; - null != e || (e = n.treeAdapter.createElement(Mo.TEMPLATE, vo.HTML, [])); - const r = n.treeAdapter.createElement("documentmock", vo.HTML, []), - i = new this(n, r, e); - return i.fragmentContextID === Po.TEMPLATE && i.tmplInsertionModeStack.unshift(Rc.IN_TEMPLATE), i._initTokenizerForFragmentParsing(), i._insertFakeRootElement(), i._resetInsertionMode(), i._findFormInFragmentContext(), i - } - getFragment() { - const e = this.treeAdapter.getFirstChild(this.document), - t = this.treeAdapter.createDocumentFragment(); - return this._adoptNodes(e, t), t - } - _err(e, t, n) { - var r; - if (!this.onParseError) return; - const i = null !== (r = e.location) && void 0 !== r ? r : Mc, - s = { - code: t, - startLine: i.startLine, - startCol: i.startCol, - startOffset: i.startOffset, - endLine: n ? i.startLine : i.endLine, - endCol: n ? i.startCol : i.endCol, - endOffset: n ? i.startOffset : i.endOffset - }; - this.onParseError(s) - } - onItemPush(e, t, n) { - var r, i; - null === (i = (r = this.treeAdapter).onItemPush) || void 0 === i || i.call(r, e), n && this.openElements.stackTop > 0 && this._setContextModes(e, t) - } - onItemPop(e, t) { - var n, r; - if (this.options.sourceCodeLocationInfo && this._setEndLocation(e, this.currentToken), null === (r = (n = this.treeAdapter).onItemPop) || void 0 === r || r.call(n, e, this.openElements.current), t) { - let e, t; - 0 === this.openElements.stackTop && this.fragmentContext ? (e = this.fragmentContext, t = this.fragmentContextID) : ({ - current: e, - currentTagId: t - } = this.openElements), this._setContextModes(e, t) - } - } - _setContextModes(e, t) { - const n = e === this.document || this.treeAdapter.getNamespaceURI(e) === vo.HTML; - this.currentNotInHTML = !n, this.tokenizer.inForeignNode = !n && !this._isIntegrationPoint(t, e) - } - _switchToTextParsing(e, t) { - this._insertElement(e, vo.HTML), this.tokenizer.state = t, this.originalInsertionMode = this.insertionMode, this.insertionMode = Rc.TEXT - } - switchToPlaintextParsing() { - this.insertionMode = Rc.TEXT, this.originalInsertionMode = Rc.IN_BODY, this.tokenizer.state = jo.PLAINTEXT - } - _getAdjustedCurrentElement() { - return 0 === this.openElements.stackTop && this.fragmentContext ? this.fragmentContext : this.openElements.current - } - _findFormInFragmentContext() { - let e = this.fragmentContext; - for (; e;) { - if (this.treeAdapter.getTagName(e) === Mo.FORM) { - this.formElement = e; - break - } - e = this.treeAdapter.getParentNode(e) - } - } - _initTokenizerForFragmentParsing() { - if (this.fragmentContext && this.treeAdapter.getNamespaceURI(this.fragmentContext) === vo.HTML) switch (this.fragmentContextID) { - case Po.TITLE: - case Po.TEXTAREA: - this.tokenizer.state = jo.RCDATA; - break; - case Po.STYLE: - case Po.XMP: - case Po.IFRAME: - case Po.NOEMBED: - case Po.NOFRAMES: - case Po.NOSCRIPT: - this.tokenizer.state = jo.RAWTEXT; - break; - case Po.SCRIPT: - this.tokenizer.state = jo.SCRIPT_DATA; - break; - case Po.PLAINTEXT: - this.tokenizer.state = jo.PLAINTEXT - } - } - _setDocumentType(e) { - const t = e.name || "", - n = e.publicId || "", - r = e.systemId || ""; - if (this.treeAdapter.setDocumentType(this.document, t, n, r), e.location) { - const t = this.treeAdapter.getChildNodes(this.document).find((e => this.treeAdapter.isDocumentTypeNode(e))); - t && this.treeAdapter.setNodeSourceCodeLocation(t, e.location) - } - } - _attachElementToTree(e, t) { - if (this.options.sourceCodeLocationInfo) { - const n = t && { - ...t, - startTag: t - }; - this.treeAdapter.setNodeSourceCodeLocation(e, n) - } - if (this._shouldFosterParentOnInsertion()) this._fosterParentElement(e); - else { - const t = this.openElements.currentTmplContentOrNode; - this.treeAdapter.appendChild(t, e) - } - } - _appendElement(e, t) { - const n = this.treeAdapter.createElement(e.tagName, t, e.attrs); - this._attachElementToTree(n, e.location) - } - _insertElement(e, t) { - const n = this.treeAdapter.createElement(e.tagName, t, e.attrs); - this._attachElementToTree(n, e.location), this.openElements.push(n, e.tagID) - } - _insertFakeElement(e, t) { - const n = this.treeAdapter.createElement(e, vo.HTML, []); - this._attachElementToTree(n, null), this.openElements.push(n, t) - } - _insertTemplate(e) { - const t = this.treeAdapter.createElement(e.tagName, vo.HTML, e.attrs), - n = this.treeAdapter.createDocumentFragment(); - this.treeAdapter.setTemplateContent(t, n), this._attachElementToTree(t, e.location), this.openElements.push(t, e.tagID), this.options.sourceCodeLocationInfo && this.treeAdapter.setNodeSourceCodeLocation(n, null) - } - _insertFakeRootElement() { - const e = this.treeAdapter.createElement(Mo.HTML, vo.HTML, []); - this.options.sourceCodeLocationInfo && this.treeAdapter.setNodeSourceCodeLocation(e, null), this.treeAdapter.appendChild(this.openElements.current, e), this.openElements.push(e, Po.HTML) - } - _appendCommentNode(e, t) { - const n = this.treeAdapter.createCommentNode(e.data); - this.treeAdapter.appendChild(t, n), this.options.sourceCodeLocationInfo && this.treeAdapter.setNodeSourceCodeLocation(n, e.location) - } - _insertCharacters(e) { - let t, n; - if (this._shouldFosterParentOnInsertion() ? (({ - parent: t, - beforeElement: n - } = this._findFosterParentingLocation()), n ? this.treeAdapter.insertTextBefore(t, e.chars, n) : this.treeAdapter.insertText(t, e.chars)) : (t = this.openElements.currentTmplContentOrNode, this.treeAdapter.insertText(t, e.chars)), !e.location) return; - const r = this.treeAdapter.getChildNodes(t), - i = n ? r.lastIndexOf(n) : r.length, - s = r[i - 1]; - if (this.treeAdapter.getNodeSourceCodeLocation(s)) { - const { - endLine: t, - endCol: n, - endOffset: r - } = e.location; - this.treeAdapter.updateNodeSourceCodeLocation(s, { - endLine: t, - endCol: n, - endOffset: r - }) - } else this.options.sourceCodeLocationInfo && this.treeAdapter.setNodeSourceCodeLocation(s, e.location) - } - _adoptNodes(e, t) { - for (let n = this.treeAdapter.getFirstChild(e); n; n = this.treeAdapter.getFirstChild(e)) this.treeAdapter.detachNode(n), this.treeAdapter.appendChild(t, n) - } - _setEndLocation(e, t) { - if (this.treeAdapter.getNodeSourceCodeLocation(e) && t.location) { - const n = t.location, - r = this.treeAdapter.getTagName(e), - i = t.type === To.END_TAG && r === t.tagName ? { - endTag: { - ...n - }, - endLine: n.endLine, - endCol: n.endCol, - endOffset: n.endOffset - } : { - endLine: n.startLine, - endCol: n.startCol, - endOffset: n.startOffset - }; - this.treeAdapter.updateNodeSourceCodeLocation(e, i) - } - } - shouldProcessStartTagTokenInForeignContent(e) { - if (!this.currentNotInHTML) return !1; - let t, n; - return 0 === this.openElements.stackTop && this.fragmentContext ? (t = this.fragmentContext, n = this.fragmentContextID) : ({ - current: t, - currentTagId: n - } = this.openElements), (e.tagID !== Po.SVG || this.treeAdapter.getTagName(t) !== Mo.ANNOTATION_XML || this.treeAdapter.getNamespaceURI(t) !== vo.MATHML) && (this.tokenizer.inForeignNode || (e.tagID === Po.MGLYPH || e.tagID === Po.MALIGNMARK) && !this._isIntegrationPoint(n, t, vo.HTML)) - } - _processToken(e) { - switch (e.type) { - case To.CHARACTER: - this.onCharacter(e); - break; - case To.NULL_CHARACTER: - this.onNullCharacter(e); - break; - case To.COMMENT: - this.onComment(e); - break; - case To.DOCTYPE: - this.onDoctype(e); - break; - case To.START_TAG: - this._processStartTag(e); - break; - case To.END_TAG: - this.onEndTag(e); - break; - case To.EOF: - this.onEof(e); - break; - case To.WHITESPACE_CHARACTER: - this.onWhitespaceCharacter(e) - } - } - _isIntegrationPoint(e, t, n) { - return Dc(e, this.treeAdapter.getNamespaceURI(t), this.treeAdapter.getAttrList(t), n) - } - _reconstructActiveFormattingElements() { - const e = this.activeFormattingElements.entries.length; - if (e) { - const t = this.activeFormattingElements.entries.findIndex((e => e.type === uc.Marker || this.openElements.contains(e.element))); - for (let n = t < 0 ? e - 1 : t - 1; n >= 0; n--) { - const e = this.activeFormattingElements.entries[n]; - this._insertElement(e.token, this.treeAdapter.getNamespaceURI(e.element)), e.element = this.openElements.current - } - } - } - _closeTableCell() { - this.openElements.generateImpliedEndTags(), this.openElements.popUntilTableCellPopped(), this.activeFormattingElements.clearToLastMarker(), this.insertionMode = Rc.IN_ROW - } - _closePElement() { - this.openElements.generateImpliedEndTagsWithExclusion(Po.P), this.openElements.popUntilTagNamePopped(Po.P) - } - _resetInsertionMode() { - for (let e = this.openElements.stackTop; e >= 0; e--) switch (0 === e && this.fragmentContext ? this.fragmentContextID : this.openElements.tagIDs[e]) { - case Po.TR: - return void(this.insertionMode = Rc.IN_ROW); - case Po.TBODY: - case Po.THEAD: - case Po.TFOOT: - return void(this.insertionMode = Rc.IN_TABLE_BODY); - case Po.CAPTION: - return void(this.insertionMode = Rc.IN_CAPTION); - case Po.COLGROUP: - return void(this.insertionMode = Rc.IN_COLUMN_GROUP); - case Po.TABLE: - return void(this.insertionMode = Rc.IN_TABLE); - case Po.BODY: - return void(this.insertionMode = Rc.IN_BODY); - case Po.FRAMESET: - return void(this.insertionMode = Rc.IN_FRAMESET); - case Po.SELECT: - return void this._resetInsertionModeForSelect(e); - case Po.TEMPLATE: - return void(this.insertionMode = this.tmplInsertionModeStack[0]); - case Po.HTML: - return void(this.insertionMode = this.headElement ? Rc.AFTER_HEAD : Rc.BEFORE_HEAD); - case Po.TD: - case Po.TH: - if (e > 0) return void(this.insertionMode = Rc.IN_CELL); - break; - case Po.HEAD: - if (e > 0) return void(this.insertionMode = Rc.IN_HEAD) - } - this.insertionMode = Rc.IN_BODY - } - _resetInsertionModeForSelect(e) { - if (e > 0) - for (let t = e - 1; t > 0; t--) { - const e = this.openElements.tagIDs[t]; - if (e === Po.TEMPLATE) break; - if (e === Po.TABLE) return void(this.insertionMode = Rc.IN_SELECT_IN_TABLE) - } - this.insertionMode = Rc.IN_SELECT - } - _isElementCausesFosterParenting(e) { - return Pc.has(e) - } - _shouldFosterParentOnInsertion() { - return this.fosterParentingEnabled && this._isElementCausesFosterParenting(this.openElements.currentTagId) - } - _findFosterParentingLocation() { - for (let e = this.openElements.stackTop; e >= 0; e--) { - const t = this.openElements.items[e]; - switch (this.openElements.tagIDs[e]) { - case Po.TEMPLATE: - if (this.treeAdapter.getNamespaceURI(t) === vo.HTML) return { - parent: this.treeAdapter.getTemplateContent(t), - beforeElement: null - }; - break; - case Po.TABLE: { - const n = this.treeAdapter.getParentNode(t); - return n ? { - parent: n, - beforeElement: t - } : { - parent: this.openElements.items[e - 1], - beforeElement: null - } - } - } - } - return { - parent: this.openElements.items[0], - beforeElement: null - } - } - _fosterParentElement(e) { - const t = this._findFosterParentingLocation(); - t.beforeElement ? this.treeAdapter.insertBefore(t.parent, e, t.beforeElement) : this.treeAdapter.appendChild(t.parent, e) - } - _isSpecialElement(e, t) { - const n = this.treeAdapter.getNamespaceURI(e); - return Ho[n].has(t) - } - onCharacter(e) { - if (this.skipNextNewLine = !1, this.tokenizer.inForeignNode) ! function(e, t) { - e._insertCharacters(t), e.framesetOk = !1 - }(this, e); - else switch (this.insertionMode) { - case Rc.INITIAL: - Vc(this, e); - break; - case Rc.BEFORE_HTML: - Wc(this, e); - break; - case Rc.BEFORE_HEAD: - Qc(this, e); - break; - case Rc.IN_HEAD: - zc(this, e); - break; - case Rc.IN_HEAD_NO_SCRIPT: - Jc(this, e); - break; - case Rc.AFTER_HEAD: - Zc(this, e); - break; - case Rc.IN_BODY: - case Rc.IN_CAPTION: - case Rc.IN_CELL: - case Rc.IN_TEMPLATE: - nl(this, e); - break; - case Rc.TEXT: - case Rc.IN_SELECT: - case Rc.IN_SELECT_IN_TABLE: - this._insertCharacters(e); - break; - case Rc.IN_TABLE: - case Rc.IN_TABLE_BODY: - case Rc.IN_ROW: - ul(this, e); - break; - case Rc.IN_TABLE_TEXT: - ml(this, e); - break; - case Rc.IN_COLUMN_GROUP: - gl(this, e); - break; - case Rc.AFTER_BODY: - kl(this, e); - break; - case Rc.AFTER_AFTER_BODY: - vl(this, e) - } - } - onNullCharacter(e) { - if (this.skipNextNewLine = !1, this.tokenizer.inForeignNode) ! function(e, t) { - t.chars = "�", e._insertCharacters(t) - }(this, e); - else switch (this.insertionMode) { - case Rc.INITIAL: - Vc(this, e); - break; - case Rc.BEFORE_HTML: - Wc(this, e); - break; - case Rc.BEFORE_HEAD: - Qc(this, e); - break; - case Rc.IN_HEAD: - zc(this, e); - break; - case Rc.IN_HEAD_NO_SCRIPT: - Jc(this, e); - break; - case Rc.AFTER_HEAD: - Zc(this, e); - break; - case Rc.TEXT: - this._insertCharacters(e); - break; - case Rc.IN_TABLE: - case Rc.IN_TABLE_BODY: - case Rc.IN_ROW: - ul(this, e); - break; - case Rc.IN_COLUMN_GROUP: - gl(this, e); - break; - case Rc.AFTER_BODY: - kl(this, e); - break; - case Rc.AFTER_AFTER_BODY: - vl(this, e) - } - } - onComment(e) { - if (this.skipNextNewLine = !1, this.currentNotInHTML) Kc(this, e); - else switch (this.insertionMode) { - case Rc.INITIAL: - case Rc.BEFORE_HTML: - case Rc.BEFORE_HEAD: - case Rc.IN_HEAD: - case Rc.IN_HEAD_NO_SCRIPT: - case Rc.AFTER_HEAD: - case Rc.IN_BODY: - case Rc.IN_TABLE: - case Rc.IN_CAPTION: - case Rc.IN_COLUMN_GROUP: - case Rc.IN_TABLE_BODY: - case Rc.IN_ROW: - case Rc.IN_CELL: - case Rc.IN_SELECT: - case Rc.IN_SELECT_IN_TABLE: - case Rc.IN_TEMPLATE: - case Rc.IN_FRAMESET: - case Rc.AFTER_FRAMESET: - Kc(this, e); - break; - case Rc.IN_TABLE_TEXT: - Tl(this, e); - break; - case Rc.AFTER_BODY: - ! function(e, t) { - e._appendCommentNode(t, e.openElements.items[0]) - }(this, e); - break; - case Rc.AFTER_AFTER_BODY: - case Rc.AFTER_AFTER_FRAMESET: - ! function(e, t) { - e._appendCommentNode(t, e.document) - }(this, e) - } - } - onDoctype(e) { - switch (this.skipNextNewLine = !1, this.insertionMode) { - case Rc.INITIAL: - ! function(e, t) { - e._setDocumentType(t); - const n = t.forceQuirks ? Ro.QUIRKS : function(e) { - if ("html" !== e.name) return Ro.QUIRKS; - const { - systemId: t - } = e; - if (t && "http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd" === t.toLowerCase()) return Ro.QUIRKS; - let { - publicId: n - } = e; - if (null !== n) { - if (n = n.toLowerCase(), _c.has(n)) return Ro.QUIRKS; - let e = null === t ? Tc : mc; - if (Nc(n, e)) return Ro.QUIRKS; - if (e = null === t ? Ac : gc, Nc(n, e)) return Ro.LIMITED_QUIRKS - } - return Ro.NO_QUIRKS - }(t); - (function(e) { - return "html" === e.name && null === e.publicId && (null === e.systemId || "about:legacy-compat" === e.systemId) - })(t) || e._err(t, Eo.nonConformingDoctype); - e.treeAdapter.setDocumentMode(e.document, n), e.insertionMode = Rc.BEFORE_HTML - }(this, e); - break; - case Rc.BEFORE_HEAD: - case Rc.IN_HEAD: - case Rc.IN_HEAD_NO_SCRIPT: - case Rc.AFTER_HEAD: - this._err(e, Eo.misplacedDoctype); - break; - case Rc.IN_TABLE_TEXT: - Tl(this, e) - } - } - onStartTag(e) { - this.skipNextNewLine = !1, this.currentToken = e, this._processStartTag(e), e.selfClosing && !e.ackSelfClosing && this._err(e, Eo.nonVoidHtmlElementStartTagWithTrailingSolidus) - } - _processStartTag(e) { - this.shouldProcessStartTagTokenInForeignContent(e) ? function(e, t) { - if (function(e) { - const t = e.tagID; - return t === Po.FONT && e.attrs.some((({ - name: e - }) => e === Do.COLOR || e === Do.SIZE || e === Do.FACE)) || yc.has(t) - }(t)) Dl(e), e._startTagOutsideForeignContent(t); - else { - const n = e._getAdjustedCurrentElement(), - r = e.treeAdapter.getNamespaceURI(n); - r === vo.MATHML ? Lc(t) : r === vo.SVG && (! function(e) { - const t = Oc.get(e.tagName); - null != t && (e.tagName = t, e.tagID = Fo(e.tagName)) - }(t), kc(t)), vc(t), t.selfClosing ? e._appendElement(t, r) : e._insertElement(t, r), t.ackSelfClosing = !0 - } - }(this, e) : this._startTagOutsideForeignContent(e) - } - _startTagOutsideForeignContent(e) { - switch (this.insertionMode) { - case Rc.INITIAL: - Vc(this, e); - break; - case Rc.BEFORE_HTML: - ! function(e, t) { - t.tagID === Po.HTML ? (e._insertElement(t, vo.HTML), e.insertionMode = Rc.BEFORE_HEAD) : Wc(e, t) - }(this, e); - break; - case Rc.BEFORE_HEAD: - ! function(e, t) { - switch (t.tagID) { - case Po.HTML: - ol(e, t); - break; - case Po.HEAD: - e._insertElement(t, vo.HTML), e.headElement = e.openElements.current, e.insertionMode = Rc.IN_HEAD; - break; - default: - Qc(e, t) - } - }(this, e); - break; - case Rc.IN_HEAD: - Xc(this, e); - break; - case Rc.IN_HEAD_NO_SCRIPT: - ! function(e, t) { - switch (t.tagID) { - case Po.HTML: - ol(e, t); - break; - case Po.BASEFONT: - case Po.BGSOUND: - case Po.HEAD: - case Po.LINK: - case Po.META: - case Po.NOFRAMES: - case Po.STYLE: - Xc(e, t); - break; - case Po.NOSCRIPT: - e._err(t, Eo.nestedNoscriptInHead); - break; - default: - Jc(e, t) - } - }(this, e); - break; - case Rc.AFTER_HEAD: - ! function(e, t) { - switch (t.tagID) { - case Po.HTML: - ol(e, t); - break; - case Po.BODY: - e._insertElement(t, vo.HTML), e.framesetOk = !1, e.insertionMode = Rc.IN_BODY; - break; - case Po.FRAMESET: - e._insertElement(t, vo.HTML), e.insertionMode = Rc.IN_FRAMESET; - break; - case Po.BASE: - case Po.BASEFONT: - case Po.BGSOUND: - case Po.LINK: - case Po.META: - case Po.NOFRAMES: - case Po.SCRIPT: - case Po.STYLE: - case Po.TEMPLATE: - case Po.TITLE: - e._err(t, Eo.abandonedHeadElementChild), e.openElements.push(e.headElement, Po.HEAD), Xc(e, t), e.openElements.remove(e.headElement); - break; - case Po.HEAD: - e._err(t, Eo.misplacedStartTagForHeadElement); - break; - default: - Zc(e, t) - } - }(this, e); - break; - case Rc.IN_BODY: - ol(this, e); - break; - case Rc.IN_TABLE: - pl(this, e); - break; - case Rc.IN_TABLE_TEXT: - Tl(this, e); - break; - case Rc.IN_CAPTION: - ! function(e, t) { - const n = t.tagID; - _l.has(n) ? e.openElements.hasInTableScope(Po.CAPTION) && (e.openElements.generateImpliedEndTags(), e.openElements.popUntilTagNamePopped(Po.CAPTION), e.activeFormattingElements.clearToLastMarker(), e.insertionMode = Rc.IN_TABLE, pl(e, t)) : ol(e, t) - }(this, e); - break; - case Rc.IN_COLUMN_GROUP: - Al(this, e); - break; - case Rc.IN_TABLE_BODY: - Nl(this, e); - break; - case Rc.IN_ROW: - Il(this, e); - break; - case Rc.IN_CELL: - ! function(e, t) { - const n = t.tagID; - _l.has(n) ? (e.openElements.hasInTableScope(Po.TD) || e.openElements.hasInTableScope(Po.TH)) && (e._closeTableCell(), Il(e, t)) : ol(e, t) - }(this, e); - break; - case Rc.IN_SELECT: - bl(this, e); - break; - case Rc.IN_SELECT_IN_TABLE: - ! function(e, t) { - const n = t.tagID; - n === Po.CAPTION || n === Po.TABLE || n === Po.TBODY || n === Po.TFOOT || n === Po.THEAD || n === Po.TR || n === Po.TD || n === Po.TH ? (e.openElements.popUntilTagNamePopped(Po.SELECT), e._resetInsertionMode(), e._processStartTag(t)) : bl(e, t) - }(this, e); - break; - case Rc.IN_TEMPLATE: - ! function(e, t) { - switch (t.tagID) { - case Po.BASE: - case Po.BASEFONT: - case Po.BGSOUND: - case Po.LINK: - case Po.META: - case Po.NOFRAMES: - case Po.SCRIPT: - case Po.STYLE: - case Po.TEMPLATE: - case Po.TITLE: - Xc(e, t); - break; - case Po.CAPTION: - case Po.COLGROUP: - case Po.TBODY: - case Po.TFOOT: - case Po.THEAD: - e.tmplInsertionModeStack[0] = Rc.IN_TABLE, e.insertionMode = Rc.IN_TABLE, pl(e, t); - break; - case Po.COL: - e.tmplInsertionModeStack[0] = Rc.IN_COLUMN_GROUP, e.insertionMode = Rc.IN_COLUMN_GROUP, Al(e, t); - break; - case Po.TR: - e.tmplInsertionModeStack[0] = Rc.IN_TABLE_BODY, e.insertionMode = Rc.IN_TABLE_BODY, Nl(e, t); - break; - case Po.TD: - case Po.TH: - e.tmplInsertionModeStack[0] = Rc.IN_ROW, e.insertionMode = Rc.IN_ROW, Il(e, t); - break; - default: - e.tmplInsertionModeStack[0] = Rc.IN_BODY, e.insertionMode = Rc.IN_BODY, ol(e, t) - } - }(this, e); - break; - case Rc.AFTER_BODY: - ! function(e, t) { - t.tagID === Po.HTML ? ol(e, t) : kl(e, t) - }(this, e); - break; - case Rc.IN_FRAMESET: - ! function(e, t) { - switch (t.tagID) { - case Po.HTML: - ol(e, t); - break; - case Po.FRAMESET: - e._insertElement(t, vo.HTML); - break; - case Po.FRAME: - e._appendElement(t, vo.HTML), t.ackSelfClosing = !0; - break; - case Po.NOFRAMES: - Xc(e, t) - } - }(this, e); - break; - case Rc.AFTER_FRAMESET: - ! function(e, t) { - switch (t.tagID) { - case Po.HTML: - ol(e, t); - break; - case Po.NOFRAMES: - Xc(e, t) - } - }(this, e); - break; - case Rc.AFTER_AFTER_BODY: - ! function(e, t) { - t.tagID === Po.HTML ? ol(e, t) : vl(e, t) - }(this, e); - break; - case Rc.AFTER_AFTER_FRAMESET: - ! function(e, t) { - switch (t.tagID) { - case Po.HTML: - ol(e, t); - break; - case Po.NOFRAMES: - Xc(e, t) - } - }(this, e) - } - } - onEndTag(e) { - this.skipNextNewLine = !1, this.currentToken = e, this.currentNotInHTML ? function(e, t) { - if (t.tagID === Po.P || t.tagID === Po.BR) return Dl(e), void e._endTagOutsideForeignContent(t); - for (let n = e.openElements.stackTop; n > 0; n--) { - const r = e.openElements.items[n]; - if (e.treeAdapter.getNamespaceURI(r) === vo.HTML) { - e._endTagOutsideForeignContent(t); - break - } - const i = e.treeAdapter.getTagName(r); - if (i.toLowerCase() === t.tagName) { - t.tagName = i, e.openElements.shortenToLength(n); - break - } - } - }(this, e) : this._endTagOutsideForeignContent(e) - } - _endTagOutsideForeignContent(e) { - switch (this.insertionMode) { - case Rc.INITIAL: - Vc(this, e); - break; - case Rc.BEFORE_HTML: - ! function(e, t) { - const n = t.tagID; - n !== Po.HTML && n !== Po.HEAD && n !== Po.BODY && n !== Po.BR || Wc(e, t) - }(this, e); - break; - case Rc.BEFORE_HEAD: - ! function(e, t) { - const n = t.tagID; - n === Po.HEAD || n === Po.BODY || n === Po.HTML || n === Po.BR ? Qc(e, t) : e._err(t, Eo.endTagWithoutMatchingOpenElement) - }(this, e); - break; - case Rc.IN_HEAD: - ! function(e, t) { - switch (t.tagID) { - case Po.HEAD: - e.openElements.pop(), e.insertionMode = Rc.AFTER_HEAD; - break; - case Po.BODY: - case Po.BR: - case Po.HTML: - zc(e, t); - break; - case Po.TEMPLATE: - $c(e, t); - break; - default: - e._err(t, Eo.endTagWithoutMatchingOpenElement) - } - }(this, e); - break; - case Rc.IN_HEAD_NO_SCRIPT: - ! function(e, t) { - switch (t.tagID) { - case Po.NOSCRIPT: - e.openElements.pop(), e.insertionMode = Rc.IN_HEAD; - break; - case Po.BR: - Jc(e, t); - break; - default: - e._err(t, Eo.endTagWithoutMatchingOpenElement) - } - }(this, e); - break; - case Rc.AFTER_HEAD: - ! function(e, t) { - switch (t.tagID) { - case Po.BODY: - case Po.HTML: - case Po.BR: - Zc(e, t); - break; - case Po.TEMPLATE: - $c(e, t); - break; - default: - e._err(t, Eo.endTagWithoutMatchingOpenElement) - } - }(this, e); - break; - case Rc.IN_BODY: - ll(this, e); - break; - case Rc.TEXT: - ! function(e, t) { - var n; - t.tagID === Po.SCRIPT && (null === (n = e.scriptHandler) || void 0 === n || n.call(e, e.openElements.current)); - e.openElements.pop(), e.insertionMode = e.originalInsertionMode - }(this, e); - break; - case Rc.IN_TABLE: - fl(this, e); - break; - case Rc.IN_TABLE_TEXT: - Tl(this, e); - break; - case Rc.IN_CAPTION: - ! function(e, t) { - const n = t.tagID; - switch (n) { - case Po.CAPTION: - case Po.TABLE: - e.openElements.hasInTableScope(Po.CAPTION) && (e.openElements.generateImpliedEndTags(), e.openElements.popUntilTagNamePopped(Po.CAPTION), e.activeFormattingElements.clearToLastMarker(), e.insertionMode = Rc.IN_TABLE, n === Po.TABLE && fl(e, t)); - break; - case Po.BODY: - case Po.COL: - case Po.COLGROUP: - case Po.HTML: - case Po.TBODY: - case Po.TD: - case Po.TFOOT: - case Po.TH: - case Po.THEAD: - case Po.TR: - break; - default: - ll(e, t) - } - }(this, e); - break; - case Rc.IN_COLUMN_GROUP: - ! function(e, t) { - switch (t.tagID) { - case Po.COLGROUP: - e.openElements.currentTagId === Po.COLGROUP && (e.openElements.pop(), e.insertionMode = Rc.IN_TABLE); - break; - case Po.TEMPLATE: - $c(e, t); - break; - case Po.COL: - break; - default: - gl(e, t) - } - }(this, e); - break; - case Rc.IN_TABLE_BODY: - Cl(this, e); - break; - case Rc.IN_ROW: - Sl(this, e); - break; - case Rc.IN_CELL: - ! function(e, t) { - const n = t.tagID; - switch (n) { - case Po.TD: - case Po.TH: - e.openElements.hasInTableScope(n) && (e.openElements.generateImpliedEndTags(), e.openElements.popUntilTagNamePopped(n), e.activeFormattingElements.clearToLastMarker(), e.insertionMode = Rc.IN_ROW); - break; - case Po.TABLE: - case Po.TBODY: - case Po.TFOOT: - case Po.THEAD: - case Po.TR: - e.openElements.hasInTableScope(n) && (e._closeTableCell(), Sl(e, t)); - break; - case Po.BODY: - case Po.CAPTION: - case Po.COL: - case Po.COLGROUP: - case Po.HTML: - break; - default: - ll(e, t) - } - }(this, e); - break; - case Rc.IN_SELECT: - Ol(this, e); - break; - case Rc.IN_SELECT_IN_TABLE: - ! function(e, t) { - const n = t.tagID; - n === Po.CAPTION || n === Po.TABLE || n === Po.TBODY || n === Po.TFOOT || n === Po.THEAD || n === Po.TR || n === Po.TD || n === Po.TH ? e.openElements.hasInTableScope(n) && (e.openElements.popUntilTagNamePopped(Po.SELECT), e._resetInsertionMode(), e.onEndTag(t)) : Ol(e, t) - }(this, e); - break; - case Rc.IN_TEMPLATE: - ! function(e, t) { - t.tagID === Po.TEMPLATE && $c(e, t) - }(this, e); - break; - case Rc.AFTER_BODY: - Ll(this, e); - break; - case Rc.IN_FRAMESET: - ! function(e, t) { - t.tagID !== Po.FRAMESET || e.openElements.isRootHtmlElementCurrent() || (e.openElements.pop(), e.fragmentContext || e.openElements.currentTagId === Po.FRAMESET || (e.insertionMode = Rc.AFTER_FRAMESET)) - }(this, e); - break; - case Rc.AFTER_FRAMESET: - ! function(e, t) { - t.tagID === Po.HTML && (e.insertionMode = Rc.AFTER_AFTER_FRAMESET) - }(this, e); - break; - case Rc.AFTER_AFTER_BODY: - vl(this, e) - } - } - onEof(e) { - switch (this.insertionMode) { - case Rc.INITIAL: - Vc(this, e); - break; - case Rc.BEFORE_HTML: - Wc(this, e); - break; - case Rc.BEFORE_HEAD: - Qc(this, e); - break; - case Rc.IN_HEAD: - zc(this, e); - break; - case Rc.IN_HEAD_NO_SCRIPT: - Jc(this, e); - break; - case Rc.AFTER_HEAD: - Zc(this, e); - break; - case Rc.IN_BODY: - case Rc.IN_TABLE: - case Rc.IN_CAPTION: - case Rc.IN_COLUMN_GROUP: - case Rc.IN_TABLE_BODY: - case Rc.IN_ROW: - case Rc.IN_CELL: - case Rc.IN_SELECT: - case Rc.IN_SELECT_IN_TABLE: - hl(this, e); - break; - case Rc.TEXT: - ! function(e, t) { - e._err(t, Eo.eofInElementThatCanContainOnlyText), e.openElements.pop(), e.insertionMode = e.originalInsertionMode, e.onEof(t) - }(this, e); - break; - case Rc.IN_TABLE_TEXT: - Tl(this, e); - break; - case Rc.IN_TEMPLATE: - yl(this, e); - break; - case Rc.AFTER_BODY: - case Rc.IN_FRAMESET: - case Rc.AFTER_FRAMESET: - case Rc.AFTER_AFTER_BODY: - case Rc.AFTER_AFTER_FRAMESET: - jc(this, e) - } - } - onWhitespaceCharacter(e) { - if (this.skipNextNewLine && (this.skipNextNewLine = !1, e.chars.charCodeAt(0) === io.LINE_FEED)) { - if (1 === e.chars.length) return; - e.chars = e.chars.substr(1) - } - if (this.tokenizer.inForeignNode) this._insertCharacters(e); - else switch (this.insertionMode) { - case Rc.IN_HEAD: - case Rc.IN_HEAD_NO_SCRIPT: - case Rc.AFTER_HEAD: - case Rc.TEXT: - case Rc.IN_COLUMN_GROUP: - case Rc.IN_SELECT: - case Rc.IN_SELECT_IN_TABLE: - case Rc.IN_FRAMESET: - case Rc.AFTER_FRAMESET: - this._insertCharacters(e); - break; - case Rc.IN_BODY: - case Rc.IN_CAPTION: - case Rc.IN_CELL: - case Rc.IN_TEMPLATE: - case Rc.AFTER_BODY: - case Rc.AFTER_AFTER_BODY: - case Rc.AFTER_AFTER_FRAMESET: - tl(this, e); - break; - case Rc.IN_TABLE: - case Rc.IN_TABLE_BODY: - case Rc.IN_ROW: - ul(this, e); - break; - case Rc.IN_TABLE_TEXT: - El(this, e) - } - } -} - -function Bc(e, t) { - let n = e.activeFormattingElements.getElementEntryInScopeWithTagName(t.tagName); - return n ? e.openElements.contains(n.element) ? e.openElements.hasInScope(t.tagID) || (n = null) : (e.activeFormattingElements.removeEntry(n), n = null) : cl(e, t), n -} - -function Fc(e, t) { - let n = null, - r = e.openElements.stackTop; - for (; r >= 0; r--) { - const i = e.openElements.items[r]; - if (i === t.element) break; - e._isSpecialElement(i, e.openElements.tagIDs[r]) && (n = i) - } - return n || (e.openElements.shortenToLength(r < 0 ? 0 : r), e.activeFormattingElements.removeEntry(t)), n -} - -function Uc(e, t, n) { - let r = t, - i = e.openElements.getCommonAncestor(t); - for (let s = 0, a = i; a !== n; s++, a = i) { - i = e.openElements.getCommonAncestor(a); - const n = e.activeFormattingElements.getElementEntry(a), - o = n && s >= 3; - !n || o ? (o && e.activeFormattingElements.removeEntry(n), e.openElements.remove(a)) : (a = Hc(e, n), r === t && (e.activeFormattingElements.bookmark = n), e.treeAdapter.detachNode(r), e.treeAdapter.appendChild(a, r), r = a) - } - return r -} - -function Hc(e, t) { - const n = e.treeAdapter.getNamespaceURI(t.element), - r = e.treeAdapter.createElement(t.token.tagName, n, t.token.attrs); - return e.openElements.replace(t.element, r), t.element = r, r -} - -function Gc(e, t, n) { - const r = Fo(e.treeAdapter.getTagName(t)); - if (e._isElementCausesFosterParenting(r)) e._fosterParentElement(n); - else { - const i = e.treeAdapter.getNamespaceURI(t); - r === Po.TEMPLATE && i === vo.HTML && (t = e.treeAdapter.getTemplateContent(t)), e.treeAdapter.appendChild(t, n) - } -} - -function Yc(e, t, n) { - const r = e.treeAdapter.getNamespaceURI(n.element), - { - token: i - } = n, - s = e.treeAdapter.createElement(i.tagName, r, i.attrs); - e._adoptNodes(t, s), e.treeAdapter.appendChild(t, s), e.activeFormattingElements.insertElementAfterBookmark(s, i), e.activeFormattingElements.removeEntry(n), e.openElements.remove(n.element), e.openElements.insertAfter(t, s, i.tagID) -} - -function qc(e, t) { - for (let n = 0; n < 8; n++) { - const n = Bc(e, t); - if (!n) break; - const r = Fc(e, n); - if (!r) break; - e.activeFormattingElements.bookmark = n; - const i = Uc(e, r, n.element), - s = e.openElements.getCommonAncestor(n.element); - e.treeAdapter.detachNode(i), s && Gc(e, s, i), Yc(e, r, n) - } -} - -function Kc(e, t) { - e._appendCommentNode(t, e.openElements.currentTmplContentOrNode) -} - -function jc(e, t) { - if (e.stopped = !0, t.location) { - const n = e.fragmentContext ? 0 : 2; - for (let r = e.openElements.stackTop; r >= n; r--) e._setEndLocation(e.openElements.items[r], t); - if (!e.fragmentContext && e.openElements.stackTop >= 0) { - const n = e.openElements.items[0], - r = e.treeAdapter.getNodeSourceCodeLocation(n); - if (r && !r.endTag && (e._setEndLocation(n, t), e.openElements.stackTop >= 1)) { - const n = e.openElements.items[1], - r = e.treeAdapter.getNodeSourceCodeLocation(n); - r && !r.endTag && e._setEndLocation(n, t) - } - } - } -} - -function Vc(e, t) { - e._err(t, Eo.missingDoctype, !0), e.treeAdapter.setDocumentMode(e.document, Ro.QUIRKS), e.insertionMode = Rc.BEFORE_HTML, e._processToken(t) -} - -function Wc(e, t) { - e._insertFakeRootElement(), e.insertionMode = Rc.BEFORE_HEAD, e._processToken(t) -} - -function Qc(e, t) { - e._insertFakeElement(Mo.HEAD, Po.HEAD), e.headElement = e.openElements.current, e.insertionMode = Rc.IN_HEAD, e._processToken(t) -} - -function Xc(e, t) { - switch (t.tagID) { - case Po.HTML: - ol(e, t); - break; - case Po.BASE: - case Po.BASEFONT: - case Po.BGSOUND: - case Po.LINK: - case Po.META: - e._appendElement(t, vo.HTML), t.ackSelfClosing = !0; - break; - case Po.TITLE: - e._switchToTextParsing(t, jo.RCDATA); - break; - case Po.NOSCRIPT: - e.options.scriptingEnabled ? e._switchToTextParsing(t, jo.RAWTEXT) : (e._insertElement(t, vo.HTML), e.insertionMode = Rc.IN_HEAD_NO_SCRIPT); - break; - case Po.NOFRAMES: - case Po.STYLE: - e._switchToTextParsing(t, jo.RAWTEXT); - break; - case Po.SCRIPT: - e._switchToTextParsing(t, jo.SCRIPT_DATA); - break; - case Po.TEMPLATE: - e._insertTemplate(t), e.activeFormattingElements.insertMarker(), e.framesetOk = !1, e.insertionMode = Rc.IN_TEMPLATE, e.tmplInsertionModeStack.unshift(Rc.IN_TEMPLATE); - break; - case Po.HEAD: - e._err(t, Eo.misplacedStartTagForHeadElement); - break; - default: - zc(e, t) - } -} - -function $c(e, t) { - e.openElements.tmplCount > 0 ? (e.openElements.generateImpliedEndTagsThoroughly(), e.openElements.currentTagId !== Po.TEMPLATE && e._err(t, Eo.closingOfElementWithOpenChildElements), e.openElements.popUntilTagNamePopped(Po.TEMPLATE), e.activeFormattingElements.clearToLastMarker(), e.tmplInsertionModeStack.shift(), e._resetInsertionMode()) : e._err(t, Eo.endTagWithoutMatchingOpenElement) -} - -function zc(e, t) { - e.openElements.pop(), e.insertionMode = Rc.AFTER_HEAD, e._processToken(t) -} - -function Jc(e, t) { - const n = t.type === To.EOF ? Eo.openElementsLeftAfterEof : Eo.disallowedContentInNoscriptInHead; - e._err(t, n), e.openElements.pop(), e.insertionMode = Rc.IN_HEAD, e._processToken(t) -} - -function Zc(e, t) { - e._insertFakeElement(Mo.BODY, Po.BODY), e.insertionMode = Rc.IN_BODY, el(e, t) -} - -function el(e, t) { - switch (t.type) { - case To.CHARACTER: - nl(e, t); - break; - case To.WHITESPACE_CHARACTER: - tl(e, t); - break; - case To.COMMENT: - Kc(e, t); - break; - case To.START_TAG: - ol(e, t); - break; - case To.END_TAG: - ll(e, t); - break; - case To.EOF: - hl(e, t) - } -} - -function tl(e, t) { - e._reconstructActiveFormattingElements(), e._insertCharacters(t) -} - -function nl(e, t) { - e._reconstructActiveFormattingElements(), e._insertCharacters(t), e.framesetOk = !1 -} - -function rl(e, t) { - e._reconstructActiveFormattingElements(), e._appendElement(t, vo.HTML), e.framesetOk = !1, t.ackSelfClosing = !0 -} - -function il(e) { - const t = _o(e, Do.TYPE); - return null != t && "hidden" === t.toLowerCase() -} - -function sl(e, t) { - e._switchToTextParsing(t, jo.RAWTEXT) -} - -function al(e, t) { - e._reconstructActiveFormattingElements(), e._insertElement(t, vo.HTML) -} - -function ol(e, t) { - switch (t.tagID) { - case Po.I: - case Po.S: - case Po.B: - case Po.U: - case Po.EM: - case Po.TT: - case Po.BIG: - case Po.CODE: - case Po.FONT: - case Po.SMALL: - case Po.STRIKE: - case Po.STRONG: - ! function(e, t) { - e._reconstructActiveFormattingElements(), e._insertElement(t, vo.HTML), e.activeFormattingElements.pushElement(e.openElements.current, t) - }(e, t); - break; - case Po.A: - ! function(e, t) { - const n = e.activeFormattingElements.getElementEntryInScopeWithTagName(Mo.A); - n && (qc(e, t), e.openElements.remove(n.element), e.activeFormattingElements.removeEntry(n)), e._reconstructActiveFormattingElements(), e._insertElement(t, vo.HTML), e.activeFormattingElements.pushElement(e.openElements.current, t) - }(e, t); - break; - case Po.H1: - case Po.H2: - case Po.H3: - case Po.H4: - case Po.H5: - case Po.H6: - ! function(e, t) { - e.openElements.hasInButtonScope(Po.P) && e._closePElement(), Go(e.openElements.currentTagId) && e.openElements.pop(), e._insertElement(t, vo.HTML) - }(e, t); - break; - case Po.P: - case Po.DL: - case Po.OL: - case Po.UL: - case Po.DIV: - case Po.DIR: - case Po.NAV: - case Po.MAIN: - case Po.MENU: - case Po.ASIDE: - case Po.CENTER: - case Po.FIGURE: - case Po.FOOTER: - case Po.HEADER: - case Po.HGROUP: - case Po.DIALOG: - case Po.DETAILS: - case Po.ADDRESS: - case Po.ARTICLE: - case Po.SECTION: - case Po.SUMMARY: - case Po.FIELDSET: - case Po.BLOCKQUOTE: - case Po.FIGCAPTION: - ! function(e, t) { - e.openElements.hasInButtonScope(Po.P) && e._closePElement(), e._insertElement(t, vo.HTML) - }(e, t); - break; - case Po.LI: - case Po.DD: - case Po.DT: - ! function(e, t) { - e.framesetOk = !1; - const n = t.tagID; - for (let t = e.openElements.stackTop; t >= 0; t--) { - const r = e.openElements.tagIDs[t]; - if (n === Po.LI && r === Po.LI || (n === Po.DD || n === Po.DT) && (r === Po.DD || r === Po.DT)) { - e.openElements.generateImpliedEndTagsWithExclusion(r), e.openElements.popUntilTagNamePopped(r); - break - } - if (r !== Po.ADDRESS && r !== Po.DIV && r !== Po.P && e._isSpecialElement(e.openElements.items[t], r)) break - } - e.openElements.hasInButtonScope(Po.P) && e._closePElement(), e._insertElement(t, vo.HTML) - }(e, t); - break; - case Po.BR: - case Po.IMG: - case Po.WBR: - case Po.AREA: - case Po.EMBED: - case Po.KEYGEN: - rl(e, t); - break; - case Po.HR: - ! function(e, t) { - e.openElements.hasInButtonScope(Po.P) && e._closePElement(), e._appendElement(t, vo.HTML), e.framesetOk = !1, t.ackSelfClosing = !0 - }(e, t); - break; - case Po.RB: - case Po.RTC: - ! function(e, t) { - e.openElements.hasInScope(Po.RUBY) && e.openElements.generateImpliedEndTags(), e._insertElement(t, vo.HTML) - }(e, t); - break; - case Po.RT: - case Po.RP: - ! function(e, t) { - e.openElements.hasInScope(Po.RUBY) && e.openElements.generateImpliedEndTagsWithExclusion(Po.RTC), e._insertElement(t, vo.HTML) - }(e, t); - break; - case Po.PRE: - case Po.LISTING: - ! function(e, t) { - e.openElements.hasInButtonScope(Po.P) && e._closePElement(), e._insertElement(t, vo.HTML), e.skipNextNewLine = !0, e.framesetOk = !1 - }(e, t); - break; - case Po.XMP: - ! function(e, t) { - e.openElements.hasInButtonScope(Po.P) && e._closePElement(), e._reconstructActiveFormattingElements(), e.framesetOk = !1, e._switchToTextParsing(t, jo.RAWTEXT) - }(e, t); - break; - case Po.SVG: - ! function(e, t) { - e._reconstructActiveFormattingElements(), kc(t), vc(t), t.selfClosing ? e._appendElement(t, vo.SVG) : e._insertElement(t, vo.SVG), t.ackSelfClosing = !0 - }(e, t); - break; - case Po.HTML: - ! function(e, t) { - 0 === e.openElements.tmplCount && e.treeAdapter.adoptAttributes(e.openElements.items[0], t.attrs) - }(e, t); - break; - case Po.BASE: - case Po.LINK: - case Po.META: - case Po.STYLE: - case Po.TITLE: - case Po.SCRIPT: - case Po.BGSOUND: - case Po.BASEFONT: - case Po.TEMPLATE: - Xc(e, t); - break; - case Po.BODY: - ! function(e, t) { - const n = e.openElements.tryPeekProperlyNestedBodyElement(); - n && 0 === e.openElements.tmplCount && (e.framesetOk = !1, e.treeAdapter.adoptAttributes(n, t.attrs)) - }(e, t); - break; - case Po.FORM: - ! function(e, t) { - const n = e.openElements.tmplCount > 0; - e.formElement && !n || (e.openElements.hasInButtonScope(Po.P) && e._closePElement(), e._insertElement(t, vo.HTML), n || (e.formElement = e.openElements.current)) - }(e, t); - break; - case Po.NOBR: - ! function(e, t) { - e._reconstructActiveFormattingElements(), e.openElements.hasInScope(Po.NOBR) && (qc(e, t), e._reconstructActiveFormattingElements()), e._insertElement(t, vo.HTML), e.activeFormattingElements.pushElement(e.openElements.current, t) - }(e, t); - break; - case Po.MATH: - ! function(e, t) { - e._reconstructActiveFormattingElements(), Lc(t), vc(t), t.selfClosing ? e._appendElement(t, vo.MATHML) : e._insertElement(t, vo.MATHML), t.ackSelfClosing = !0 - }(e, t); - break; - case Po.TABLE: - ! function(e, t) { - e.treeAdapter.getDocumentMode(e.document) !== Ro.QUIRKS && e.openElements.hasInButtonScope(Po.P) && e._closePElement(), e._insertElement(t, vo.HTML), e.framesetOk = !1, e.insertionMode = Rc.IN_TABLE - }(e, t); - break; - case Po.INPUT: - ! function(e, t) { - e._reconstructActiveFormattingElements(), e._appendElement(t, vo.HTML), il(t) || (e.framesetOk = !1), t.ackSelfClosing = !0 - }(e, t); - break; - case Po.PARAM: - case Po.TRACK: - case Po.SOURCE: - ! function(e, t) { - e._appendElement(t, vo.HTML), t.ackSelfClosing = !0 - }(e, t); - break; - case Po.IMAGE: - ! function(e, t) { - t.tagName = Mo.IMG, t.tagID = Po.IMG, rl(e, t) - }(e, t); - break; - case Po.BUTTON: - ! function(e, t) { - e.openElements.hasInScope(Po.BUTTON) && (e.openElements.generateImpliedEndTags(), e.openElements.popUntilTagNamePopped(Po.BUTTON)), e._reconstructActiveFormattingElements(), e._insertElement(t, vo.HTML), e.framesetOk = !1 - }(e, t); - break; - case Po.APPLET: - case Po.OBJECT: - case Po.MARQUEE: - ! function(e, t) { - e._reconstructActiveFormattingElements(), e._insertElement(t, vo.HTML), e.activeFormattingElements.insertMarker(), e.framesetOk = !1 - }(e, t); - break; - case Po.IFRAME: - ! function(e, t) { - e.framesetOk = !1, e._switchToTextParsing(t, jo.RAWTEXT) - }(e, t); - break; - case Po.SELECT: - ! function(e, t) { - e._reconstructActiveFormattingElements(), e._insertElement(t, vo.HTML), e.framesetOk = !1, e.insertionMode = e.insertionMode === Rc.IN_TABLE || e.insertionMode === Rc.IN_CAPTION || e.insertionMode === Rc.IN_TABLE_BODY || e.insertionMode === Rc.IN_ROW || e.insertionMode === Rc.IN_CELL ? Rc.IN_SELECT_IN_TABLE : Rc.IN_SELECT - }(e, t); - break; - case Po.OPTION: - case Po.OPTGROUP: - ! function(e, t) { - e.openElements.currentTagId === Po.OPTION && e.openElements.pop(), e._reconstructActiveFormattingElements(), e._insertElement(t, vo.HTML) - }(e, t); - break; - case Po.NOEMBED: - sl(e, t); - break; - case Po.FRAMESET: - ! function(e, t) { - const n = e.openElements.tryPeekProperlyNestedBodyElement(); - e.framesetOk && n && (e.treeAdapter.detachNode(n), e.openElements.popAllUpToHtmlElement(), e._insertElement(t, vo.HTML), e.insertionMode = Rc.IN_FRAMESET) - }(e, t); - break; - case Po.TEXTAREA: - ! function(e, t) { - e._insertElement(t, vo.HTML), e.skipNextNewLine = !0, e.tokenizer.state = jo.RCDATA, e.originalInsertionMode = e.insertionMode, e.framesetOk = !1, e.insertionMode = Rc.TEXT - }(e, t); - break; - case Po.NOSCRIPT: - e.options.scriptingEnabled ? sl(e, t) : al(e, t); - break; - case Po.PLAINTEXT: - ! function(e, t) { - e.openElements.hasInButtonScope(Po.P) && e._closePElement(), e._insertElement(t, vo.HTML), e.tokenizer.state = jo.PLAINTEXT - }(e, t); - break; - case Po.COL: - case Po.TH: - case Po.TD: - case Po.TR: - case Po.HEAD: - case Po.FRAME: - case Po.TBODY: - case Po.TFOOT: - case Po.THEAD: - case Po.CAPTION: - case Po.COLGROUP: - break; - default: - al(e, t) - } -} - -function cl(e, t) { - const n = t.tagName, - r = t.tagID; - for (let t = e.openElements.stackTop; t > 0; t--) { - const i = e.openElements.items[t], - s = e.openElements.tagIDs[t]; - if (r === s && (r !== Po.UNKNOWN || e.treeAdapter.getTagName(i) === n)) { - e.openElements.generateImpliedEndTagsWithExclusion(r), e.openElements.stackTop >= t && e.openElements.shortenToLength(t); - break - } - if (e._isSpecialElement(i, s)) break - } -} - -function ll(e, t) { - switch (t.tagID) { - case Po.A: - case Po.B: - case Po.I: - case Po.S: - case Po.U: - case Po.EM: - case Po.TT: - case Po.BIG: - case Po.CODE: - case Po.FONT: - case Po.NOBR: - case Po.SMALL: - case Po.STRIKE: - case Po.STRONG: - qc(e, t); - break; - case Po.P: - ! function(e) { - e.openElements.hasInButtonScope(Po.P) || e._insertFakeElement(Mo.P, Po.P), e._closePElement() - }(e); - break; - case Po.DL: - case Po.UL: - case Po.OL: - case Po.DIR: - case Po.DIV: - case Po.NAV: - case Po.PRE: - case Po.MAIN: - case Po.MENU: - case Po.ASIDE: - case Po.BUTTON: - case Po.CENTER: - case Po.FIGURE: - case Po.FOOTER: - case Po.HEADER: - case Po.HGROUP: - case Po.DIALOG: - case Po.ADDRESS: - case Po.ARTICLE: - case Po.DETAILS: - case Po.SECTION: - case Po.SUMMARY: - case Po.LISTING: - case Po.FIELDSET: - case Po.BLOCKQUOTE: - case Po.FIGCAPTION: - ! function(e, t) { - const n = t.tagID; - e.openElements.hasInScope(n) && (e.openElements.generateImpliedEndTags(), e.openElements.popUntilTagNamePopped(n)) - }(e, t); - break; - case Po.LI: - ! function(e) { - e.openElements.hasInListItemScope(Po.LI) && (e.openElements.generateImpliedEndTagsWithExclusion(Po.LI), e.openElements.popUntilTagNamePopped(Po.LI)) - }(e); - break; - case Po.DD: - case Po.DT: - ! function(e, t) { - const n = t.tagID; - e.openElements.hasInScope(n) && (e.openElements.generateImpliedEndTagsWithExclusion(n), e.openElements.popUntilTagNamePopped(n)) - }(e, t); - break; - case Po.H1: - case Po.H2: - case Po.H3: - case Po.H4: - case Po.H5: - case Po.H6: - ! function(e) { - e.openElements.hasNumberedHeaderInScope() && (e.openElements.generateImpliedEndTags(), e.openElements.popUntilNumberedHeaderPopped()) - }(e); - break; - case Po.BR: - ! function(e) { - e._reconstructActiveFormattingElements(), e._insertFakeElement(Mo.BR, Po.BR), e.openElements.pop(), e.framesetOk = !1 - }(e); - break; - case Po.BODY: - ! function(e, t) { - if (e.openElements.hasInScope(Po.BODY) && (e.insertionMode = Rc.AFTER_BODY, e.options.sourceCodeLocationInfo)) { - const n = e.openElements.tryPeekProperlyNestedBodyElement(); - n && e._setEndLocation(n, t) - } - }(e, t); - break; - case Po.HTML: - ! function(e, t) { - e.openElements.hasInScope(Po.BODY) && (e.insertionMode = Rc.AFTER_BODY, Ll(e, t)) - }(e, t); - break; - case Po.FORM: - ! function(e) { - const t = e.openElements.tmplCount > 0, - { - formElement: n - } = e; - t || (e.formElement = null), (n || t) && e.openElements.hasInScope(Po.FORM) && (e.openElements.generateImpliedEndTags(), t ? e.openElements.popUntilTagNamePopped(Po.FORM) : n && e.openElements.remove(n)) - }(e); - break; - case Po.APPLET: - case Po.OBJECT: - case Po.MARQUEE: - ! function(e, t) { - const n = t.tagID; - e.openElements.hasInScope(n) && (e.openElements.generateImpliedEndTags(), e.openElements.popUntilTagNamePopped(n), e.activeFormattingElements.clearToLastMarker()) - }(e, t); - break; - case Po.TEMPLATE: - $c(e, t); - break; - default: - cl(e, t) - } -} - -function hl(e, t) { - e.tmplInsertionModeStack.length > 0 ? yl(e, t) : jc(e, t) -} - -function ul(e, t) { - if (Pc.has(e.openElements.currentTagId)) switch (e.pendingCharacterTokens.length = 0, e.hasNonWhitespacePendingCharacterToken = !1, e.originalInsertionMode = e.insertionMode, e.insertionMode = Rc.IN_TABLE_TEXT, t.type) { - case To.CHARACTER: - ml(e, t); - break; - case To.WHITESPACE_CHARACTER: - El(e, t) - } else dl(e, t) -} - -function pl(e, t) { - switch (t.tagID) { - case Po.TD: - case Po.TH: - case Po.TR: - ! function(e, t) { - e.openElements.clearBackToTableContext(), e._insertFakeElement(Mo.TBODY, Po.TBODY), e.insertionMode = Rc.IN_TABLE_BODY, Nl(e, t) - }(e, t); - break; - case Po.STYLE: - case Po.SCRIPT: - case Po.TEMPLATE: - Xc(e, t); - break; - case Po.COL: - ! function(e, t) { - e.openElements.clearBackToTableContext(), e._insertFakeElement(Mo.COLGROUP, Po.COLGROUP), e.insertionMode = Rc.IN_COLUMN_GROUP, Al(e, t) - }(e, t); - break; - case Po.FORM: - ! function(e, t) { - e.formElement || 0 !== e.openElements.tmplCount || (e._insertElement(t, vo.HTML), e.formElement = e.openElements.current, e.openElements.pop()) - }(e, t); - break; - case Po.TABLE: - ! function(e, t) { - e.openElements.hasInTableScope(Po.TABLE) && (e.openElements.popUntilTagNamePopped(Po.TABLE), e._resetInsertionMode(), e._processStartTag(t)) - }(e, t); - break; - case Po.TBODY: - case Po.TFOOT: - case Po.THEAD: - ! function(e, t) { - e.openElements.clearBackToTableContext(), e._insertElement(t, vo.HTML), e.insertionMode = Rc.IN_TABLE_BODY - }(e, t); - break; - case Po.INPUT: - ! function(e, t) { - il(t) ? e._appendElement(t, vo.HTML) : dl(e, t), t.ackSelfClosing = !0 - }(e, t); - break; - case Po.CAPTION: - ! function(e, t) { - e.openElements.clearBackToTableContext(), e.activeFormattingElements.insertMarker(), e._insertElement(t, vo.HTML), e.insertionMode = Rc.IN_CAPTION - }(e, t); - break; - case Po.COLGROUP: - ! function(e, t) { - e.openElements.clearBackToTableContext(), e._insertElement(t, vo.HTML), e.insertionMode = Rc.IN_COLUMN_GROUP - }(e, t); - break; - default: - dl(e, t) - } -} - -function fl(e, t) { - switch (t.tagID) { - case Po.TABLE: - e.openElements.hasInTableScope(Po.TABLE) && (e.openElements.popUntilTagNamePopped(Po.TABLE), e._resetInsertionMode()); - break; - case Po.TEMPLATE: - $c(e, t); - break; - case Po.BODY: - case Po.CAPTION: - case Po.COL: - case Po.COLGROUP: - case Po.HTML: - case Po.TBODY: - case Po.TD: - case Po.TFOOT: - case Po.TH: - case Po.THEAD: - case Po.TR: - break; - default: - dl(e, t) - } -} - -function dl(e, t) { - const n = e.fosterParentingEnabled; - e.fosterParentingEnabled = !0, el(e, t), e.fosterParentingEnabled = n -} - -function El(e, t) { - e.pendingCharacterTokens.push(t) -} - -function ml(e, t) { - e.pendingCharacterTokens.push(t), e.hasNonWhitespacePendingCharacterToken = !0 -} - -function Tl(e, t) { - let n = 0; - if (e.hasNonWhitespacePendingCharacterToken) - for (; n < e.pendingCharacterTokens.length; n++) dl(e, e.pendingCharacterTokens[n]); - else - for (; n < e.pendingCharacterTokens.length; n++) e._insertCharacters(e.pendingCharacterTokens[n]); - e.insertionMode = e.originalInsertionMode, e._processToken(t) -} -const _l = new Set([Po.CAPTION, Po.COL, Po.COLGROUP, Po.TBODY, Po.TD, Po.TFOOT, Po.TH, Po.THEAD, Po.TR]); - -function Al(e, t) { - switch (t.tagID) { - case Po.HTML: - ol(e, t); - break; - case Po.COL: - e._appendElement(t, vo.HTML), t.ackSelfClosing = !0; - break; - case Po.TEMPLATE: - Xc(e, t); - break; - default: - gl(e, t) - } -} - -function gl(e, t) { - e.openElements.currentTagId === Po.COLGROUP && (e.openElements.pop(), e.insertionMode = Rc.IN_TABLE, e._processToken(t)) -} - -function Nl(e, t) { - switch (t.tagID) { - case Po.TR: - e.openElements.clearBackToTableBodyContext(), e._insertElement(t, vo.HTML), e.insertionMode = Rc.IN_ROW; - break; - case Po.TH: - case Po.TD: - e.openElements.clearBackToTableBodyContext(), e._insertFakeElement(Mo.TR, Po.TR), e.insertionMode = Rc.IN_ROW, Il(e, t); - break; - case Po.CAPTION: - case Po.COL: - case Po.COLGROUP: - case Po.TBODY: - case Po.TFOOT: - case Po.THEAD: - e.openElements.hasTableBodyContextInTableScope() && (e.openElements.clearBackToTableBodyContext(), e.openElements.pop(), e.insertionMode = Rc.IN_TABLE, pl(e, t)); - break; - default: - pl(e, t) - } -} - -function Cl(e, t) { - const n = t.tagID; - switch (t.tagID) { - case Po.TBODY: - case Po.TFOOT: - case Po.THEAD: - e.openElements.hasInTableScope(n) && (e.openElements.clearBackToTableBodyContext(), e.openElements.pop(), e.insertionMode = Rc.IN_TABLE); - break; - case Po.TABLE: - e.openElements.hasTableBodyContextInTableScope() && (e.openElements.clearBackToTableBodyContext(), e.openElements.pop(), e.insertionMode = Rc.IN_TABLE, fl(e, t)); - break; - case Po.BODY: - case Po.CAPTION: - case Po.COL: - case Po.COLGROUP: - case Po.HTML: - case Po.TD: - case Po.TH: - case Po.TR: - break; - default: - fl(e, t) - } -} - -function Il(e, t) { - switch (t.tagID) { - case Po.TH: - case Po.TD: - e.openElements.clearBackToTableRowContext(), e._insertElement(t, vo.HTML), e.insertionMode = Rc.IN_CELL, e.activeFormattingElements.insertMarker(); - break; - case Po.CAPTION: - case Po.COL: - case Po.COLGROUP: - case Po.TBODY: - case Po.TFOOT: - case Po.THEAD: - case Po.TR: - e.openElements.hasInTableScope(Po.TR) && (e.openElements.clearBackToTableRowContext(), e.openElements.pop(), e.insertionMode = Rc.IN_TABLE_BODY, Nl(e, t)); - break; - default: - pl(e, t) - } -} - -function Sl(e, t) { - switch (t.tagID) { - case Po.TR: - e.openElements.hasInTableScope(Po.TR) && (e.openElements.clearBackToTableRowContext(), e.openElements.pop(), e.insertionMode = Rc.IN_TABLE_BODY); - break; - case Po.TABLE: - e.openElements.hasInTableScope(Po.TR) && (e.openElements.clearBackToTableRowContext(), e.openElements.pop(), e.insertionMode = Rc.IN_TABLE_BODY, Cl(e, t)); - break; - case Po.TBODY: - case Po.TFOOT: - case Po.THEAD: - (e.openElements.hasInTableScope(t.tagID) || e.openElements.hasInTableScope(Po.TR)) && (e.openElements.clearBackToTableRowContext(), e.openElements.pop(), e.insertionMode = Rc.IN_TABLE_BODY, Cl(e, t)); - break; - case Po.BODY: - case Po.CAPTION: - case Po.COL: - case Po.COLGROUP: - case Po.HTML: - case Po.TD: - case Po.TH: - break; - default: - fl(e, t) - } -} - -function bl(e, t) { - switch (t.tagID) { - case Po.HTML: - ol(e, t); - break; - case Po.OPTION: - e.openElements.currentTagId === Po.OPTION && e.openElements.pop(), e._insertElement(t, vo.HTML); - break; - case Po.OPTGROUP: - e.openElements.currentTagId === Po.OPTION && e.openElements.pop(), e.openElements.currentTagId === Po.OPTGROUP && e.openElements.pop(), e._insertElement(t, vo.HTML); - break; - case Po.INPUT: - case Po.KEYGEN: - case Po.TEXTAREA: - case Po.SELECT: - e.openElements.hasInSelectScope(Po.SELECT) && (e.openElements.popUntilTagNamePopped(Po.SELECT), e._resetInsertionMode(), t.tagID !== Po.SELECT && e._processStartTag(t)); - break; - case Po.SCRIPT: - case Po.TEMPLATE: - Xc(e, t) - } -} - -function Ol(e, t) { - switch (t.tagID) { - case Po.OPTGROUP: - e.openElements.stackTop > 0 && e.openElements.currentTagId === Po.OPTION && e.openElements.tagIDs[e.openElements.stackTop - 1] === Po.OPTGROUP && e.openElements.pop(), e.openElements.currentTagId === Po.OPTGROUP && e.openElements.pop(); - break; - case Po.OPTION: - e.openElements.currentTagId === Po.OPTION && e.openElements.pop(); - break; - case Po.SELECT: - e.openElements.hasInSelectScope(Po.SELECT) && (e.openElements.popUntilTagNamePopped(Po.SELECT), e._resetInsertionMode()); - break; - case Po.TEMPLATE: - $c(e, t) - } -} - -function yl(e, t) { - e.openElements.tmplCount > 0 ? (e.openElements.popUntilTagNamePopped(Po.TEMPLATE), e.activeFormattingElements.clearToLastMarker(), e.tmplInsertionModeStack.shift(), e._resetInsertionMode(), e.onEof(t)) : jc(e, t) -} - -function Ll(e, t) { - var n; - if (t.tagID === Po.HTML) { - if (e.fragmentContext || (e.insertionMode = Rc.AFTER_AFTER_BODY), e.options.sourceCodeLocationInfo && e.openElements.tagIDs[0] === Po.HTML) { - e._setEndLocation(e.openElements.items[0], t); - const r = e.openElements.items[1]; - r && !(null === (n = e.treeAdapter.getNodeSourceCodeLocation(r)) || void 0 === n ? void 0 : n.endTag) && e._setEndLocation(r, t) - } - } else kl(e, t) -} - -function kl(e, t) { - e.insertionMode = Rc.IN_BODY, el(e, t) -} - -function vl(e, t) { - e.insertionMode = Rc.IN_BODY, el(e, t) -} - -function Dl(e) { - for (; e.treeAdapter.getNamespaceURI(e.openElements.current) !== vo.HTML && !e._isIntegrationPoint(e.openElements.currentTagId, e.openElements.current);) e.openElements.pop() -} -var Rl = Ke((function(e, t) { - Object.defineProperty(t, "__esModule", { - value: !0 - }), t.escapeText = t.escapeAttribute = t.escapeUTF8 = t.escape = t.encodeXML = t.getCodePoint = t.xmlReplacer = void 0, t.xmlReplacer = /["&'<>$\x80-\uFFFF]/g; - var n = new Map([ - [34, """], - [38, "&"], - [39, "'"], - [60, "<"], - [62, ">"] - ]); - - function r(e) { - for (var r, i = "", s = 0; null !== (r = t.xmlReplacer.exec(e));) { - var a = r.index, - o = e.charCodeAt(a), - c = n.get(o); - void 0 !== c ? (i += e.substring(s, a) + c, s = a + 1) : (i += "".concat(e.substring(s, a), "&#x").concat((0, t.getCodePoint)(e, a).toString(16), ";"), s = t.xmlReplacer.lastIndex += Number(55296 == (64512 & o))) - } - return i + e.substr(s) - } - - function i(e, t) { - return function(n) { - for (var r, i = 0, s = ""; r = e.exec(n);) i !== r.index && (s += n.substring(i, r.index)), s += t.get(r[0].charCodeAt(0)), i = r.index + 1; - return s + n.substring(i) - } - } - t.getCodePoint = null != String.prototype.codePointAt ? function(e, t) { - return e.codePointAt(t) - } : function(e, t) { - return 55296 == (64512 & e.charCodeAt(t)) ? 1024 * (e.charCodeAt(t) - 55296) + e.charCodeAt(t + 1) - 56320 + 65536 : e.charCodeAt(t) - }, t.encodeXML = r, t.escape = r, t.escapeUTF8 = i(/[&<>'"]/g, n), t.escapeAttribute = i(/["&\u00A0]/g, new Map([ - [34, """], - [38, "&"], - [160, " "] - ])), t.escapeText = i(/[&<>\u00A0]/g, new Map([ - [38, "&"], - [60, "<"], - [62, ">"], - [160, " "] - ])) -})); -qe(Rl); -var Ml = Rl.escapeText, - Pl = Rl.escapeAttribute; -Rl.escapeUTF8, Rl.escape, Rl.encodeXML, Rl.getCodePoint, Rl.xmlReplacer; -const xl = new Set([Mo.AREA, Mo.BASE, Mo.BASEFONT, Mo.BGSOUND, Mo.BR, Mo.COL, Mo.EMBED, Mo.FRAME, Mo.HR, Mo.IMG, Mo.INPUT, Mo.KEYGEN, Mo.LINK, Mo.META, Mo.PARAM, Mo.SOURCE, Mo.TRACK, Mo.WBR]); -const wl = { - treeAdapter: Ec, - scriptingEnabled: !0 -}; - -function Bl(e, t) { - return Fl(e, { - ...wl, - ...t - }) -} - -function Fl(e, t) { - return t.treeAdapter.isElementNode(e) ? function(e, t) { - const n = t.treeAdapter.getTagName(e); - return `<${n}${function(e,{treeAdapter:t}){let n="";for(const r of t.getAttrList(e)){if(n+=" ",r.namespace)switch(r.namespace){case vo.XML:n+=` - xml: $ { - r.name - } - `;break;case vo.XMLNS:"xmlns"!==r.name&&(n+="xmlns:"),n+=r.name;break;case vo.XLINK:n+=` - xlink: $ { - r.name - } - `;break;default:n+=` - $ { - r.prefix - }: $ { - r.name - } - `}else n+=r.name;n+=` = "${Pl(r.value)}" - `}return n}(e,t)}>${function(e,t){return t.treeAdapter.isElementNode(e)&&t.treeAdapter.getNamespaceURI(e)===vo.HTML&&xl.has(t.treeAdapter.getTagName(e))}(e,t)?"":` - $ { - function(e, t) { - let n = ""; - const r = t.treeAdapter.isElementNode(e) && t.treeAdapter.getTagName(e) === Mo.TEMPLATE && t.treeAdapter.getNamespaceURI(e) === vo.HTML ? t.treeAdapter.getTemplateContent(e) : e, - i = t.treeAdapter.getChildNodes(r); - if (i) - for (const e of i) n += Fl(e, t); - return n - }(e, t) - } < /${n}>`}`}(e,t):t.treeAdapter.isTextNode(e)?function(e,t){const{treeAdapter:n}=t,r=n.getTextNodeContent(e),i=n.getParentNode(e),s=i&&n.isElementNode(i)&&n.getTagName(i);return s&&n.getNamespaceURI(i)===vo.HTML&&(a=s,o=t.scriptingEnabled,Yo.has(a)||o&&a===Mo.NOSCRIPT)?r:Ml(r);var a,o}(e,t):t.treeAdapter.isCommentNode(e)?function(e,{treeAdapter:t}){return`\x3c!--${t.getCommentNodeContent(e)}--\x3e`}(e,t):t.treeAdapter.isDocumentTypeNode(e)?function(e,{treeAdapter:t}){return``}(e,t):""}function Ul(e){return new m(e)}function Hl(e){const t=e.includes('"')?"'":'"';return t+e+t}const Gl={isCommentNode:O,isElementNode:I,isTextNode:b,createDocument(){const e=new N([]);return e["x-mode"]=Ro.NO_QUIRKS,e},createDocumentFragment:()=>new N([]),createElement(e,t,n){const r=Object.create(null),i=Object.create(null),s=Object.create(null);for(let e=0;enew T(e),appendChild(e,t){const n=e.children[e.children.length-1];n&&(n.next=t,t.prev=n),e.children.push(t),t.parent=e},insertBefore(e,t,n){const r=e.children.indexOf(n),{prev:i}=n;i&&(i.next=t,t.prev=i),n.prev=t,t.next=n,e.children.splice(r,0,t),t.parent=e},setTemplateContent(e,t){Gl.appendChild(e,t)},getTemplateContent:e=>e.children[0],setDocumentType(e,t,n,r){const i=function(e,t,n){let r="!DOCTYPE ";return e&&(r+=e),t?r+=` PUBLIC ${Hl(t)}`:n&&(r+=" SYSTEM"),n&&(r+=` ${Hl(n)}`),r}(t,n,r);let s=e.children.find((e=>y(e)&&"!doctype"===e.name));s?s.data=null!=i?i:null:(s=new _("!doctype",i),Gl.appendChild(e,s)),s["x-name"]=null!=t?t:void 0,s["x-publicId"]=null!=n?n:void 0,s["x-systemId"]=null!=r?r:void 0},setDocumentMode(e,t){e["x-mode"]=t},getDocumentMode:e=>e["x-mode"],detachNode(e){if(e.parent){const t=e.parent.children.indexOf(e),{prev:n,next:r}=e;e.prev=null,e.next=null,n&&(n.next=r),r&&(r.prev=n),e.parent.children.splice(t,1),e.parent=null}},insertText(e,t){const n=e.children[e.children.length-1];n&&b(n)?n.data+=t:Gl.appendChild(e,Ul(t))},insertTextBefore(e,t,n){const r=e.children[e.children.indexOf(n)-1];r&&b(r)?r.data+=t:Gl.insertBefore(e,Ul(t),n)},adoptAttributes(e,t){for(let n=0;ne.children[0],getChildNodes:e=>e.children,getParentNode:e=>e.parent,getAttrList:e=>e.attributes,getTagName:e=>e.name,getNamespaceURI:e=>e.namespace,getTextNodeContent:e=>e.data,getCommentNodeContent:e=>e.data,getDocumentTypeNodeName(e){var t;return null!==(t=e["x-name"])&&void 0!==t?t:""},getDocumentTypeNodePublicId(e){var t;return null!==(t=e["x-publicId"])&&void 0!==t?t:""},getDocumentTypeNodeSystemId(e){var t;return null!==(t=e["x-systemId"])&&void 0!==t?t:""},isDocumentTypeNode:e=>y(e)&&"!doctype"===e.name,setNodeSourceCodeLocation(e,t){t&&(e.startIndex=t.startOffset,e.endIndex=t.endOffset),e.sourceCodeLocation=t},getNodeSourceCodeLocation:e=>e.sourceCodeLocation,updateNodeSourceCodeLocation(e,t){null!=t.endOffset&&(e.endIndex=t.endOffset),e.sourceCodeLocation={...e.sourceCodeLocation,...t}}};var Yl=function(e,t,n){if(n||2===arguments.length)for(var r,i=0,s=t.length;i=Kl.Zero&&e<=Kl.Nine}!function(e){e[e.Tab=9]="Tab",e[e.NewLine=10]="NewLine",e[e.FormFeed=12]="FormFeed",e[e.CarriageReturn=13]="CarriageReturn",e[e.Space=32]="Space",e[e.ExclamationMark=33]="ExclamationMark",e[e.Num=35]="Num",e[e.Amp=38]="Amp",e[e.SingleQuote=39]="SingleQuote",e[e.DoubleQuote=34]="DoubleQuote",e[e.Dash=45]="Dash",e[e.Slash=47]="Slash",e[e.Zero=48]="Zero",e[e.Nine=57]="Nine",e[e.Semi=59]="Semi",e[e.Lt=60]="Lt",e[e.Eq=61]="Eq",e[e.Gt=62]="Gt",e[e.Questionmark=63]="Questionmark",e[e.UpperA=65]="UpperA",e[e.LowerA=97]="LowerA",e[e.UpperF=70]="UpperF",e[e.LowerF=102]="LowerF",e[e.UpperZ=90]="UpperZ",e[e.LowerZ=122]="LowerZ",e[e.LowerX=120]="LowerX",e[e.OpeningSquareBracket=91]="OpeningSquareBracket"}(Kl||(Kl={})),function(e){e[e.Text=1]="Text",e[e.BeforeTagName=2]="BeforeTagName",e[e.InTagName=3]="InTagName",e[e.InSelfClosingTag=4]="InSelfClosingTag",e[e.BeforeClosingTagName=5]="BeforeClosingTagName",e[e.InClosingTagName=6]="InClosingTagName",e[e.AfterClosingTagName=7]="AfterClosingTagName",e[e.BeforeAttributeName=8]="BeforeAttributeName",e[e.InAttributeName=9]="InAttributeName",e[e.AfterAttributeName=10]="AfterAttributeName",e[e.BeforeAttributeValue=11]="BeforeAttributeValue",e[e.InAttributeValueDq=12]="InAttributeValueDq",e[e.InAttributeValueSq=13]="InAttributeValueSq",e[e.InAttributeValueNq=14]="InAttributeValueNq",e[e.BeforeDeclaration=15]="BeforeDeclaration",e[e.InDeclaration=16]="InDeclaration",e[e.InProcessingInstruction=17]="InProcessingInstruction",e[e.BeforeComment=18]="BeforeComment",e[e.CDATASequence=19]="CDATASequence",e[e.InSpecialComment=20]="InSpecialComment",e[e.InCommentLike=21]="InCommentLike",e[e.BeforeSpecialS=22]="BeforeSpecialS",e[e.SpecialStartSequence=23]="SpecialStartSequence",e[e.InSpecialTag=24]="InSpecialTag",e[e.BeforeEntity=25]="BeforeEntity",e[e.BeforeNumericEntity=26]="BeforeNumericEntity",e[e.InNamedEntity=27]="InNamedEntity",e[e.InNumericEntity=28]="InNumericEntity",e[e.InHexEntity=29]="InHexEntity"}(jl||(jl={})),function(e){e[e.NoValue=0]="NoValue",e[e.Unquoted=1]="Unquoted",e[e.Single=2]="Single",e[e.Double=3]="Double"}(Vl||(Vl={}));const zl={Cdata:new Uint8Array([67,68,65,84,65,91]),CdataEnd:new Uint8Array([93,93,62]),CommentEnd:new Uint8Array([45,45,62]),ScriptEnd:new Uint8Array([60,47,115,99,114,105,112,116]),StyleEnd:new Uint8Array([60,47,115,116,121,108,101]),TitleEnd:new Uint8Array([60,47,116,105,116,108,101])};class Jl{constructor({xmlMode:e=!1,decodeEntities:t=!0},n){this.cbs=n,this.state=jl.Text,this.buffer="",this.sectionStart=0,this.index=0,this.baseState=jl.Text,this.isSpecial=!1,this.running=!0,this.offset=0,this.sequenceIndex=0,this.trieIndex=0,this.trieCurrent=0,this.entityResult=0,this.entityExcess=0,this.xmlMode=e,this.decodeEntities=t,this.entityTrie=e?xo:wo}reset(){this.state=jl.Text,this.buffer="",this.sectionStart=0,this.index=0,this.baseState=jl.Text,this.currentSequence=void 0,this.running=!0,this.offset=0}write(e){this.offset+=this.buffer.length,this.buffer=e,this.parse()}end(){this.running&&this.finish()}pause(){this.running=!1}resume(){this.running=!0,this.indexthis.sectionStart&&this.cbs.ontext(this.sectionStart,this.index),this.state=jl.BeforeTagName,this.sectionStart=this.index):this.decodeEntities&&e===Kl.Amp&&(this.state=jl.BeforeEntity)}stateSpecialStartSequence(e){const t=this.sequenceIndex===this.currentSequence.length;if(t?Xl(e):(32|e)===this.currentSequence[this.sequenceIndex]){if(!t)return void this.sequenceIndex++}else this.isSpecial=!1;this.sequenceIndex=0,this.state=jl.InTagName,this.stateInTagName(e)}stateInSpecialTag(e){if(this.sequenceIndex===this.currentSequence.length){if(e===Kl.Gt||Ql(e)){const t=this.index-this.currentSequence.length;if(this.sectionStart=Kl.LowerA&&e<=Kl.LowerZ||e>=Kl.UpperA&&e<=Kl.UpperZ}(e)}startSpecial(e,t){this.isSpecial=!0,this.currentSequence=e,this.sequenceIndex=t,this.state=jl.SpecialStartSequence}stateBeforeTagName(e){if(e===Kl.ExclamationMark)this.state=jl.BeforeDeclaration,this.sectionStart=this.index+1;else if(e===Kl.Questionmark)this.state=jl.InProcessingInstruction,this.sectionStart=this.index+1;else if(this.isTagStartChar(e)){const t=32|e;this.sectionStart=this.index,this.xmlMode||t!==zl.TitleEnd[2]?this.state=this.xmlMode||t!==zl.ScriptEnd[2]?jl.InTagName:jl.BeforeSpecialS:this.startSpecial(zl.TitleEnd,3)}else e===Kl.Slash?this.state=jl.BeforeClosingTagName:(this.state=jl.Text,this.stateText(e))}stateInTagName(e){Xl(e)&&(this.cbs.onopentagname(this.sectionStart,this.index),this.sectionStart=-1,this.state=jl.BeforeAttributeName,this.stateBeforeAttributeName(e))}stateBeforeClosingTagName(e){Ql(e)||(e===Kl.Gt?this.state=jl.Text:(this.state=this.isTagStartChar(e)?jl.InClosingTagName:jl.InSpecialComment,this.sectionStart=this.index))}stateInClosingTagName(e){(e===Kl.Gt||Ql(e))&&(this.cbs.onclosetag(this.sectionStart,this.index),this.sectionStart=-1,this.state=jl.AfterClosingTagName,this.stateAfterClosingTagName(e))}stateAfterClosingTagName(e){(e===Kl.Gt||this.fastForwardTo(Kl.Gt))&&(this.state=jl.Text,this.sectionStart=this.index+1)}stateBeforeAttributeName(e){e===Kl.Gt?(this.cbs.onopentagend(this.index),this.isSpecial?(this.state=jl.InSpecialTag,this.sequenceIndex=0):this.state=jl.Text,this.baseState=this.state,this.sectionStart=this.index+1):e===Kl.Slash?this.state=jl.InSelfClosingTag:Ql(e)||(this.state=jl.InAttributeName,this.sectionStart=this.index)}stateInSelfClosingTag(e){e===Kl.Gt?(this.cbs.onselfclosingtag(this.index),this.state=jl.Text,this.baseState=jl.Text,this.sectionStart=this.index+1,this.isSpecial=!1):Ql(e)||(this.state=jl.BeforeAttributeName,this.stateBeforeAttributeName(e))}stateInAttributeName(e){(e===Kl.Eq||Xl(e))&&(this.cbs.onattribname(this.sectionStart,this.index),this.sectionStart=-1,this.state=jl.AfterAttributeName,this.stateAfterAttributeName(e))}stateAfterAttributeName(e){e===Kl.Eq?this.state=jl.BeforeAttributeValue:e===Kl.Slash||e===Kl.Gt?(this.cbs.onattribend(Vl.NoValue,this.index),this.state=jl.BeforeAttributeName,this.stateBeforeAttributeName(e)):Ql(e)||(this.cbs.onattribend(Vl.NoValue,this.index),this.state=jl.InAttributeName,this.sectionStart=this.index)}stateBeforeAttributeValue(e){e===Kl.DoubleQuote?(this.state=jl.InAttributeValueDq,this.sectionStart=this.index+1):e===Kl.SingleQuote?(this.state=jl.InAttributeValueSq,this.sectionStart=this.index+1):Ql(e)||(this.sectionStart=this.index,this.state=jl.InAttributeValueNq,this.stateInAttributeValueNoQuotes(e))}handleInAttributeValue(e,t){e===t||!this.decodeEntities&&this.fastForwardTo(t)?(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=-1,this.cbs.onattribend(t===Kl.DoubleQuote?Vl.Double:Vl.Single,this.index),this.state=jl.BeforeAttributeName):this.decodeEntities&&e===Kl.Amp&&(this.baseState=this.state,this.state=jl.BeforeEntity)}stateInAttributeValueDoubleQuotes(e){this.handleInAttributeValue(e,Kl.DoubleQuote)}stateInAttributeValueSingleQuotes(e){this.handleInAttributeValue(e,Kl.SingleQuote)}stateInAttributeValueNoQuotes(e){Ql(e)||e===Kl.Gt?(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=-1,this.cbs.onattribend(Vl.Unquoted,this.index),this.state=jl.BeforeAttributeName,this.stateBeforeAttributeName(e)):this.decodeEntities&&e===Kl.Amp&&(this.baseState=this.state,this.state=jl.BeforeEntity)}stateBeforeDeclaration(e){e===Kl.OpeningSquareBracket?(this.state=jl.CDATASequence,this.sequenceIndex=0):this.state=e===Kl.Dash?jl.BeforeComment:jl.InDeclaration}stateInDeclaration(e){(e===Kl.Gt||this.fastForwardTo(Kl.Gt))&&(this.cbs.ondeclaration(this.sectionStart,this.index),this.state=jl.Text,this.sectionStart=this.index+1)}stateInProcessingInstruction(e){(e===Kl.Gt||this.fastForwardTo(Kl.Gt))&&(this.cbs.onprocessinginstruction(this.sectionStart,this.index),this.state=jl.Text,this.sectionStart=this.index+1)}stateBeforeComment(e){e===Kl.Dash?(this.state=jl.InCommentLike,this.currentSequence=zl.CommentEnd,this.sequenceIndex=2,this.sectionStart=this.index+1):this.state=jl.InDeclaration}stateInSpecialComment(e){(e===Kl.Gt||this.fastForwardTo(Kl.Gt))&&(this.cbs.oncomment(this.sectionStart,this.index,0),this.state=jl.Text,this.sectionStart=this.index+1)}stateBeforeSpecialS(e){const t=32|e;t===zl.ScriptEnd[3]?this.startSpecial(zl.ScriptEnd,4):t===zl.StyleEnd[3]?this.startSpecial(zl.StyleEnd,4):(this.state=jl.InTagName,this.stateInTagName(e))}stateBeforeEntity(e){this.entityExcess=1,this.entityResult=0,e===Kl.Num?this.state=jl.BeforeNumericEntity:e===Kl.Amp||(this.trieIndex=0,this.trieCurrent=this.entityTrie[0],this.state=jl.InNamedEntity,this.stateInNamedEntity(e))}stateInNamedEntity(e){if(this.entityExcess+=1,this.trieIndex=Oo(this.entityTrie,this.trieCurrent,this.trieIndex+1,e),this.trieIndex<0)return this.emitNamedEntity(),void this.index--;this.trieCurrent=this.entityTrie[this.trieIndex];const t=this.trieCurrent&yo.VALUE_LENGTH;if(t){const n=(t>>14)-1;if(this.allowLegacyEntity()||e===Kl.Semi){const e=this.index-this.entityExcess+1;e>this.sectionStart&&this.emitPartial(this.sectionStart,e),this.entityResult=this.trieIndex,this.trieIndex+=n,this.entityExcess=0,this.sectionStart=this.index+1,0===n&&this.emitNamedEntity()}else this.trieIndex+=n}}emitNamedEntity(){if(this.state=this.baseState,0===this.entityResult)return;switch((this.entityTrie[this.entityResult]&yo.VALUE_LENGTH)>>14){case 1:this.emitCodePoint(this.entityTrie[this.entityResult]&~yo.VALUE_LENGTH);break;case 2:this.emitCodePoint(this.entityTrie[this.entityResult+1]);break;case 3:this.emitCodePoint(this.entityTrie[this.entityResult+1]),this.emitCodePoint(this.entityTrie[this.entityResult+2])}}stateBeforeNumericEntity(e){(32|e)===Kl.LowerX?(this.entityExcess++,this.state=jl.InHexEntity):(this.state=jl.InNumericEntity,this.stateInNumericEntity(e))}emitNumericEntity(e){const t=this.index-this.entityExcess-1;t+2+Number(this.state===jl.InHexEntity)!==this.index&&(t>this.sectionStart&&this.emitPartial(this.sectionStart,t),this.sectionStart=this.index+Number(e),this.emitCodePoint(ko(this.entityResult))),this.state=this.baseState}stateInNumericEntity(e){e===Kl.Semi?this.emitNumericEntity(!0):$l(e)?(this.entityResult=10*this.entityResult+(e-Kl.Zero),this.entityExcess++):(this.allowLegacyEntity()?this.emitNumericEntity(!1):this.state=this.baseState,this.index--)}stateInHexEntity(e){e===Kl.Semi?this.emitNumericEntity(!0):$l(e)?(this.entityResult=16*this.entityResult+(e-Kl.Zero),this.entityExcess++):!function(e){return e>=Kl.UpperA&&e<=Kl.UpperF||e>=Kl.LowerA&&e<=Kl.LowerF}(e)?(this.allowLegacyEntity()?this.emitNumericEntity(!1):this.state=this.baseState,this.index--):(this.entityResult=16*this.entityResult+((32|e)-Kl.LowerA+10),this.entityExcess++)}allowLegacyEntity(){return!this.xmlMode&&(this.baseState===jl.Text||this.baseState===jl.InSpecialTag)}cleanup(){this.running&&this.sectionStart!==this.index&&(this.state===jl.Text||this.state===jl.InSpecialTag&&0===this.sequenceIndex?(this.cbs.ontext(this.sectionStart,this.index),this.sectionStart=this.index):this.state!==jl.InAttributeValueDq&&this.state!==jl.InAttributeValueSq&&this.state!==jl.InAttributeValueNq||(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=this.index))}shouldContinue(){return this.index0&&s.has(this.stack[this.stack.length-1]);){const e=this.stack.pop();null===(n=(t=this.cbs).onclosetag)||void 0===n||n.call(t,e,!0)}this.isVoidElement(e)||(this.stack.push(e),ah.has(e)?this.foreignContext.push(!0):oh.has(e)&&this.foreignContext.push(!1)),null===(i=(r=this.cbs).onopentagname)||void 0===i||i.call(r,e),this.cbs.onopentag&&(this.attribs={})}endOpenTag(e){var t,n;this.startIndex=this.openTagStart,this.attribs&&(null===(n=(t=this.cbs).onopentag)||void 0===n||n.call(t,this.tagname,this.attribs,e),this.attribs=null),this.cbs.onclosetag&&this.isVoidElement(this.tagname)&&this.cbs.onclosetag(this.tagname,!0),this.tagname=""}onopentagend(e){this.endIndex=e,this.endOpenTag(!1),this.startIndex=e+1}onclosetag(e,t){var n,r,i,s,a,o;this.endIndex=t;let c=this.getSlice(e,t);if(this.lowerCaseTagNames&&(c=c.toLowerCase()),(ah.has(c)||oh.has(c))&&this.foreignContext.pop(),this.isVoidElement(c))this.options.xmlMode||"br"!==c||(null===(r=(n=this.cbs).onopentagname)||void 0===r||r.call(n,"br"),null===(s=(i=this.cbs).onopentag)||void 0===s||s.call(i,"br",{},!0),null===(o=(a=this.cbs).onclosetag)||void 0===o||o.call(a,"br",!1));else{const e=this.stack.lastIndexOf(c);if(-1!==e)if(this.cbs.onclosetag){let t=this.stack.length-e;for(;t--;)this.cbs.onclosetag(this.stack.pop(),0!==t)}else this.stack.length=e;else this.options.xmlMode||"p"!==c||(this.emitOpenTag("p"),this.closeCurrentTag(!0))}this.startIndex=t+1}onselfclosingtag(e){this.endIndex=e,this.options.xmlMode||this.options.recognizeSelfClosing||this.foreignContext[this.foreignContext.length-1]?(this.closeCurrentTag(!1),this.startIndex=e+1):this.onopentagend(e)}closeCurrentTag(e){var t,n;const r=this.tagname;this.endOpenTag(e),this.stack[this.stack.length-1]===r&&(null===(n=(t=this.cbs).onclosetag)||void 0===n||n.call(t,r,!e),this.stack.pop())}onattribname(e,t){this.startIndex=e;const n=this.getSlice(e,t);this.attribname=this.lowerCaseAttributeNames?n.toLowerCase():n}onattribdata(e,t){this.attribvalue+=this.getSlice(e,t)}onattribentity(e){this.attribvalue+=Lo(e)}onattribend(e,t){var n,r;this.endIndex=t,null===(r=(n=this.cbs).onattribute)||void 0===r||r.call(n,this.attribname,this.attribvalue,e===Vl.Double?'"':e===Vl.Single?"'":e===Vl.NoValue?void 0:null),this.attribs&&!Object.prototype.hasOwnProperty.call(this.attribs,this.attribname)&&(this.attribs[this.attribname]=this.attribvalue),this.attribvalue=""}getInstructionName(e){const t=e.search(ch);let n=t<0?e:e.substr(0,t);return this.lowerCaseTagNames&&(n=n.toLowerCase()),n}ondeclaration(e,t){this.endIndex=t;const n=this.getSlice(e,t);if(this.cbs.onprocessinginstruction){const e=this.getInstructionName(n);this.cbs.onprocessinginstruction(`!${e}`,`!${n}`)}this.startIndex=t+1}onprocessinginstruction(e,t){this.endIndex=t;const n=this.getSlice(e,t);if(this.cbs.onprocessinginstruction){const e=this.getInstructionName(n);this.cbs.onprocessinginstruction(`?${e}`,`?${n}`)}this.startIndex=t+1}oncomment(e,t,n){var r,i,s,a;this.endIndex=t,null===(i=(r=this.cbs).oncomment)||void 0===i||i.call(r,this.getSlice(e,t-n)),null===(a=(s=this.cbs).oncommentend)||void 0===a||a.call(s),this.startIndex=t+1}oncdata(e,t,n){var r,i,s,a,o,c,l,h,u,p;this.endIndex=t;const f=this.getSlice(e,t-n);this.options.xmlMode||this.options.recognizeCDATA?(null===(i=(r=this.cbs).oncdatastart)||void 0===i||i.call(r),null===(a=(s=this.cbs).ontext)||void 0===a||a.call(s,f),null===(c=(o=this.cbs).oncdataend)||void 0===c||c.call(o)):(null===(h=(l=this.cbs).oncomment)||void 0===h||h.call(l,`[CDATA[${f}]]`),null===(p=(u=this.cbs).oncommentend)||void 0===p||p.call(u)),this.startIndex=t+1}onend(){var e,t;if(this.cbs.onclosetag){this.endIndex=this.startIndex;for(let e=this.stack.length;e>0;this.cbs.onclosetag(this.stack[--e],!0));}null===(t=(e=this.cbs).onend)||void 0===t||t.call(e)}reset(){var e,t,n,r;null===(t=(e=this.cbs).onreset)||void 0===t||t.call(e),this.tokenizer.reset(),this.tagname="",this.attribname="",this.attribs=null,this.stack.length=0,this.startIndex=0,this.endIndex=0,null===(r=(n=this.cbs).onparserinit)||void 0===r||r.call(n,this),this.buffers.length=0,this.bufferOffset=0,this.writeIndex=0,this.ended=!1}parseComplete(e){this.reset(),this.end(e)}getSlice(e,t){for(;e-this.bufferOffset>=this.buffers[0].length;)this.shiftBuffer();let n=this.buffers[0].slice(e-this.bufferOffset,t-this.bufferOffset);for(;t-this.bufferOffset>this.buffers[0].length;)this.shiftBuffer(),n+=this.buffers[0].slice(0,t-this.bufferOffset);return n}shiftBuffer(){this.bufferOffset+=this.buffers[0].length,this.writeIndex--,this.buffers.shift()}write(e){var t,n;this.ended?null===(n=(t=this.cbs).onerror)||void 0===n||n.call(t,new Error(".write() after done!")):(this.buffers.push(e),this.tokenizer.running&&(this.tokenizer.write(e),this.writeIndex++))}end(e){var t,n;this.ended?null===(n=(t=this.cbs).onerror)||void 0===n||n.call(t,Error(".end() after done!")):(e&&this.write(e),this.ended=!0,this.tokenizer.end())}pause(){this.tokenizer.pause()}resume(){for(this.tokenizer.resume();this.tokenizer.running&&this.writeIndex>> 2] >>> (24 - (i % 4) * 8)) & 0xff; - thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8); - } - } else { - // Copy one word at a time - for (var i = 0; i < thatSigBytes; i += 4) { - thisWords[(thisSigBytes + i) >>> 2] = thatWords[i >>> 2]; - } - } - this.sigBytes += thatSigBytes; - - // Chainable - return this; - }, - - /** - * Removes insignificant bits. - * - * @example - * - * wordArray.clamp(); - */ - clamp: function() { - // Shortcuts - var words = this.words; - var sigBytes = this.sigBytes; - - // Clamp - words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8); - words.length = Math.ceil(sigBytes / 4); - }, - - /** - * Creates a copy of this word array. - * - * @return {WordArray} The clone. - * - * @example - * - * var clone = wordArray.clone(); - */ - clone: function() { - var clone = Base.clone.call(this); - clone.words = this.words.slice(0); - - return clone; - }, - - /** - * Creates a word array filled with random bytes. - * - * @param {number} nBytes The number of random bytes to generate. - * - * @return {WordArray} The random word array. - * - * @static - * - * @example - * - * var wordArray = CryptoJS.lib.WordArray.random(16); - */ - random: function(nBytes) { - var words = []; - - for (var i = 0; i < nBytes; i += 4) { - words.push(cryptoSecureRandomInt()); - } - - return new WordArray.init(words, nBytes); - } - }); - - /** - * Encoder namespace. - */ - var C_enc = C.enc = {}; - - /** - * Hex encoding strategy. - */ - var Hex = C_enc.Hex = { - /** - * Converts a word array to a hex string. - * - * @param {WordArray} wordArray The word array. - * - * @return {string} The hex string. - * - * @static - * - * @example - * - * var hexString = CryptoJS.enc.Hex.stringify(wordArray); - */ - stringify: function(wordArray) { - // Shortcuts - var words = wordArray.words; - var sigBytes = wordArray.sigBytes; - - // Convert - var hexChars = []; - for (var i = 0; i < sigBytes; i++) { - var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; - hexChars.push((bite >>> 4).toString(16)); - hexChars.push((bite & 0x0f).toString(16)); - } - - return hexChars.join(''); - }, - - /** - * Converts a hex string to a word array. - * - * @param {string} hexStr The hex string. - * - * @return {WordArray} The word array. - * - * @static - * - * @example - * - * var wordArray = CryptoJS.enc.Hex.parse(hexString); - */ - parse: function(hexStr) { - // Shortcut - var hexStrLength = hexStr.length; - - // Convert - var words = []; - for (var i = 0; i < hexStrLength; i += 2) { - words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4); - } - - return new WordArray.init(words, hexStrLength / 2); - } - }; - - /** - * Latin1 encoding strategy. - */ - var Latin1 = C_enc.Latin1 = { - /** - * Converts a word array to a Latin1 string. - * - * @param {WordArray} wordArray The word array. - * - * @return {string} The Latin1 string. - * - * @static - * - * @example - * - * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray); - */ - stringify: function(wordArray) { - // Shortcuts - var words = wordArray.words; - var sigBytes = wordArray.sigBytes; - - // Convert - var latin1Chars = []; - for (var i = 0; i < sigBytes; i++) { - var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; - latin1Chars.push(String.fromCharCode(bite)); - } - - return latin1Chars.join(''); - }, - - /** - * Converts a Latin1 string to a word array. - * - * @param {string} latin1Str The Latin1 string. - * - * @return {WordArray} The word array. - * - * @static - * - * @example - * - * var wordArray = CryptoJS.enc.Latin1.parse(latin1String); - */ - parse: function(latin1Str) { - // Shortcut - var latin1StrLength = latin1Str.length; - - // Convert - var words = []; - for (var i = 0; i < latin1StrLength; i++) { - words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8); - } - - return new WordArray.init(words, latin1StrLength); - } - }; - - /** - * UTF-8 encoding strategy. - */ - var Utf8 = C_enc.Utf8 = { - /** - * Converts a word array to a UTF-8 string. - * - * @param {WordArray} wordArray The word array. - * - * @return {string} The UTF-8 string. - * - * @static - * - * @example - * - * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray); - */ - stringify: function(wordArray) { - try { - return decodeURIComponent(escape(Latin1.stringify(wordArray))); - } catch (e) { - throw new Error('Malformed UTF-8 data'); - } - }, - - /** - * Converts a UTF-8 string to a word array. - * - * @param {string} utf8Str The UTF-8 string. - * - * @return {WordArray} The word array. - * - * @static - * - * @example - * - * var wordArray = CryptoJS.enc.Utf8.parse(utf8String); - */ - parse: function(utf8Str) { - return Latin1.parse(unescape(encodeURIComponent(utf8Str))); - } - }; - - /** - * Abstract buffered block algorithm template. - * - * The property blockSize must be implemented in a concrete subtype. - * - * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0 - */ - var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({ - /** - * Resets this block algorithm's data buffer to its initial state. - * - * @example - * - * bufferedBlockAlgorithm.reset(); - */ - reset: function() { - // Initial values - this._data = new WordArray.init(); - this._nDataBytes = 0; - }, - - /** - * Adds new data to this block algorithm's buffer. - * - * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8. - * - * @example - * - * bufferedBlockAlgorithm._append('data'); - * bufferedBlockAlgorithm._append(wordArray); - */ - _append: function(data) { - // Convert string to WordArray, else assume WordArray already - if (typeof data == 'string') { - data = Utf8.parse(data); - } - - // Append - this._data.concat(data); - this._nDataBytes += data.sigBytes; - }, - - /** - * Processes available data blocks. - * - * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype. - * - * @param {boolean} doFlush Whether all blocks and partial blocks should be processed. - * - * @return {WordArray} The processed data. - * - * @example - * - * var processedData = bufferedBlockAlgorithm._process(); - * var processedData = bufferedBlockAlgorithm._process(!!'flush'); - */ - _process: function(doFlush) { - var processedWords; - - // Shortcuts - var data = this._data; - var dataWords = data.words; - var dataSigBytes = data.sigBytes; - var blockSize = this.blockSize; - var blockSizeBytes = blockSize * 4; - - // Count blocks ready - var nBlocksReady = dataSigBytes / blockSizeBytes; - if (doFlush) { - // Round up to include partial blocks - nBlocksReady = Math.ceil(nBlocksReady); - } else { - // Round down to include only full blocks, - // less the number of blocks that must remain in the buffer - nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0); - } - - // Count words ready - var nWordsReady = nBlocksReady * blockSize; - - // Count bytes ready - var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes); - - // Process blocks - if (nWordsReady) { - for (var offset = 0; offset < nWordsReady; offset += blockSize) { - // Perform concrete-algorithm logic - this._doProcessBlock(dataWords, offset); - } - - // Remove processed words - processedWords = dataWords.splice(0, nWordsReady); - data.sigBytes -= nBytesReady; - } - - // Return processed words - return new WordArray.init(processedWords, nBytesReady); - }, - - /** - * Creates a copy of this object. - * - * @return {Object} The clone. - * - * @example - * - * var clone = bufferedBlockAlgorithm.clone(); - */ - clone: function() { - var clone = Base.clone.call(this); - clone._data = this._data.clone(); - - return clone; - }, - - _minBufferSize: 0 - }); - - /** - * Abstract hasher template. - * - * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits) - */ - var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({ - /** - * Configuration options. - */ - cfg: Base.extend(), - - /** - * Initializes a newly created hasher. - * - * @param {Object} cfg (Optional) The configuration options to use for this hash computation. - * - * @example - * - * var hasher = CryptoJS.algo.SHA256.create(); - */ - init: function(cfg) { - // Apply config defaults - this.cfg = this.cfg.extend(cfg); - - // Set initial values - this.reset(); - }, - - /** - * Resets this hasher to its initial state. - * - * @example - * - * hasher.reset(); - */ - reset: function() { - // Reset data buffer - BufferedBlockAlgorithm.reset.call(this); - - // Perform concrete-hasher logic - this._doReset(); - }, - - /** - * Updates this hasher with a message. - * - * @param {WordArray|string} messageUpdate The message to append. - * - * @return {Hasher} This hasher. - * - * @example - * - * hasher.update('message'); - * hasher.update(wordArray); - */ - update: function(messageUpdate) { - // Append - this._append(messageUpdate); - - // Update the hash - this._process(); - - // Chainable - return this; - }, - - /** - * Finalizes the hash computation. - * Note that the finalize operation is effectively a destructive, read-once operation. - * - * @param {WordArray|string} messageUpdate (Optional) A final message update. - * - * @return {WordArray} The hash. - * - * @example - * - * var hash = hasher.finalize(); - * var hash = hasher.finalize('message'); - * var hash = hasher.finalize(wordArray); - */ - finalize: function(messageUpdate) { - // Final message update - if (messageUpdate) { - this._append(messageUpdate); - } - - // Perform concrete-hasher logic - var hash = this._doFinalize(); - - return hash; - }, - - blockSize: 512 / 32, - - /** - * Creates a shortcut function to a hasher's object interface. - * - * @param {Hasher} hasher The hasher to create a helper for. - * - * @return {Function} The shortcut function. - * - * @static - * - * @example - * - * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256); - */ - _createHelper: function(hasher) { - return function(message, cfg) { - return new hasher.init(cfg).finalize(message); - }; - }, - - /** - * Creates a shortcut function to the HMAC's object interface. - * - * @param {Hasher} hasher The hasher to use in this HMAC helper. - * - * @return {Function} The shortcut function. - * - * @static - * - * @example - * - * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256); - */ - _createHmacHelper: function(hasher) { - return function(message, key) { - return new C_algo.HMAC.init(hasher, key).finalize(message); - }; - } - }); - - /** - * Algorithm namespace. - */ - var C_algo = C.algo = {}; - - return C; -}(Math)); - - - - - - - - -(function(undefined) { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var Base = C_lib.Base; - var X32WordArray = C_lib.WordArray; - - /** - * x64 namespace. - */ - var C_x64 = C.x64 = {}; - - /** - * A 64-bit word. - */ - var X64Word = C_x64.Word = Base.extend({ - /** - * Initializes a newly created 64-bit word. - * - * @param {number} high The high 32 bits. - * @param {number} low The low 32 bits. - * - * @example - * - * var x64Word = CryptoJS.x64.Word.create(0x00010203, 0x04050607); - */ - init: function(high, low) { - this.high = high; - this.low = low; - } - - /** - * Bitwise NOTs this word. - * - * @return {X64Word} A new x64-Word object after negating. - * - * @example - * - * var negated = x64Word.not(); - */ - // not: function () { - // var high = ~this.high; - // var low = ~this.low; - - // return X64Word.create(high, low); - // }, - - /** - * Bitwise ANDs this word with the passed word. - * - * @param {X64Word} word The x64-Word to AND with this word. - * - * @return {X64Word} A new x64-Word object after ANDing. - * - * @example - * - * var anded = x64Word.and(anotherX64Word); - */ - // and: function (word) { - // var high = this.high & word.high; - // var low = this.low & word.low; - - // return X64Word.create(high, low); - // }, - - /** - * Bitwise ORs this word with the passed word. - * - * @param {X64Word} word The x64-Word to OR with this word. - * - * @return {X64Word} A new x64-Word object after ORing. - * - * @example - * - * var ored = x64Word.or(anotherX64Word); - */ - // or: function (word) { - // var high = this.high | word.high; - // var low = this.low | word.low; - - // return X64Word.create(high, low); - // }, - - /** - * Bitwise XORs this word with the passed word. - * - * @param {X64Word} word The x64-Word to XOR with this word. - * - * @return {X64Word} A new x64-Word object after XORing. - * - * @example - * - * var xored = x64Word.xor(anotherX64Word); - */ - // xor: function (word) { - // var high = this.high ^ word.high; - // var low = this.low ^ word.low; - - // return X64Word.create(high, low); - // }, - - /** - * Shifts this word n bits to the left. - * - * @param {number} n The number of bits to shift. - * - * @return {X64Word} A new x64-Word object after shifting. - * - * @example - * - * var shifted = x64Word.shiftL(25); - */ - // shiftL: function (n) { - // if (n < 32) { - // var high = (this.high << n) | (this.low >>> (32 - n)); - // var low = this.low << n; - // } else { - // var high = this.low << (n - 32); - // var low = 0; - // } - - // return X64Word.create(high, low); - // }, - - /** - * Shifts this word n bits to the right. - * - * @param {number} n The number of bits to shift. - * - * @return {X64Word} A new x64-Word object after shifting. - * - * @example - * - * var shifted = x64Word.shiftR(7); - */ - // shiftR: function (n) { - // if (n < 32) { - // var low = (this.low >>> n) | (this.high << (32 - n)); - // var high = this.high >>> n; - // } else { - // var low = this.high >>> (n - 32); - // var high = 0; - // } - - // return X64Word.create(high, low); - // }, - - /** - * Rotates this word n bits to the left. - * - * @param {number} n The number of bits to rotate. - * - * @return {X64Word} A new x64-Word object after rotating. - * - * @example - * - * var rotated = x64Word.rotL(25); - */ - // rotL: function (n) { - // return this.shiftL(n).or(this.shiftR(64 - n)); - // }, - - /** - * Rotates this word n bits to the right. - * - * @param {number} n The number of bits to rotate. - * - * @return {X64Word} A new x64-Word object after rotating. - * - * @example - * - * var rotated = x64Word.rotR(7); - */ - // rotR: function (n) { - // return this.shiftR(n).or(this.shiftL(64 - n)); - // }, - - /** - * Adds this word with the passed word. - * - * @param {X64Word} word The x64-Word to add with this word. - * - * @return {X64Word} A new x64-Word object after adding. - * - * @example - * - * var added = x64Word.add(anotherX64Word); - */ - // add: function (word) { - // var low = (this.low + word.low) | 0; - // var carry = (low >>> 0) < (this.low >>> 0) ? 1 : 0; - // var high = (this.high + word.high + carry) | 0; - - // return X64Word.create(high, low); - // } - }); - - /** - * An array of 64-bit words. - * - * @property {Array} words The array of CryptoJS.x64.Word objects. - * @property {number} sigBytes The number of significant bytes in this word array. - */ - var X64WordArray = C_x64.WordArray = Base.extend({ - /** - * Initializes a newly created word array. - * - * @param {Array} words (Optional) An array of CryptoJS.x64.Word objects. - * @param {number} sigBytes (Optional) The number of significant bytes in the words. - * - * @example - * - * var wordArray = CryptoJS.x64.WordArray.create(); - * - * var wordArray = CryptoJS.x64.WordArray.create([ - * CryptoJS.x64.Word.create(0x00010203, 0x04050607), - * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f) - * ]); - * - * var wordArray = CryptoJS.x64.WordArray.create([ - * CryptoJS.x64.Word.create(0x00010203, 0x04050607), - * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f) - * ], 10); - */ - init: function(words, sigBytes) { - words = this.words = words || []; - - if (sigBytes != undefined) { - this.sigBytes = sigBytes; - } else { - this.sigBytes = words.length * 8; - } - }, - - /** - * Converts this 64-bit word array to a 32-bit word array. - * - * @return {CryptoJS.lib.WordArray} This word array's data as a 32-bit word array. - * - * @example - * - * var x32WordArray = x64WordArray.toX32(); - */ - toX32: function() { - // Shortcuts - var x64Words = this.words; - var x64WordsLength = x64Words.length; - - // Convert - var x32Words = []; - for (var i = 0; i < x64WordsLength; i++) { - var x64Word = x64Words[i]; - x32Words.push(x64Word.high); - x32Words.push(x64Word.low); - } - - return X32WordArray.create(x32Words, this.sigBytes); - }, - - /** - * Creates a copy of this word array. - * - * @return {X64WordArray} The clone. - * - * @example - * - * var clone = x64WordArray.clone(); - */ - clone: function() { - var clone = Base.clone.call(this); - - // Clone "words" array - var words = clone.words = this.words.slice(0); - - // Clone each X64Word object - var wordsLength = words.length; - for (var i = 0; i < wordsLength; i++) { - words[i] = words[i].clone(); - } - - return clone; - } - }); -}()); - - - - - - - - - -(function() { - // Check if typed arrays are supported - if (typeof ArrayBuffer != 'function') { - return; - } - - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var WordArray = C_lib.WordArray; - - // Reference original init - var superInit = WordArray.init; - - // Augment WordArray.init to handle typed arrays - var subInit = WordArray.init = function(typedArray) { - // Convert buffers to uint8 - if (typedArray instanceof ArrayBuffer) { - typedArray = new Uint8Array(typedArray); - } - - // Convert other array views to uint8 - if ( - typedArray instanceof Int8Array || - (typeof Uint8ClampedArray !== "undefined" && typedArray instanceof Uint8ClampedArray) || - typedArray instanceof Int16Array || - typedArray instanceof Uint16Array || - typedArray instanceof Int32Array || - typedArray instanceof Uint32Array || - typedArray instanceof Float32Array || - typedArray instanceof Float64Array - ) { - typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength); - } - - // Handle Uint8Array - if (typedArray instanceof Uint8Array) { - // Shortcut - var typedArrayByteLength = typedArray.byteLength; - - // Extract bytes - var words = []; - for (var i = 0; i < typedArrayByteLength; i++) { - words[i >>> 2] |= typedArray[i] << (24 - (i % 4) * 8); - } - - // Initialize this word array - superInit.call(this, words, typedArrayByteLength); - } else { - // Else call normal init - superInit.apply(this, arguments); - } - }; - - subInit.prototype = WordArray; -}()); - - - - - - - - - -(function() { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var WordArray = C_lib.WordArray; - var C_enc = C.enc; - - /** - * UTF-16 BE encoding strategy. - */ - var Utf16BE = C_enc.Utf16 = C_enc.Utf16BE = { - /** - * Converts a word array to a UTF-16 BE string. - * - * @param {WordArray} wordArray The word array. - * - * @return {string} The UTF-16 BE string. - * - * @static - * - * @example - * - * var utf16String = CryptoJS.enc.Utf16.stringify(wordArray); - */ - stringify: function(wordArray) { - // Shortcuts - var words = wordArray.words; - var sigBytes = wordArray.sigBytes; - - // Convert - var utf16Chars = []; - for (var i = 0; i < sigBytes; i += 2) { - var codePoint = (words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff; - utf16Chars.push(String.fromCharCode(codePoint)); - } - - return utf16Chars.join(''); - }, - - /** - * Converts a UTF-16 BE string to a word array. - * - * @param {string} utf16Str The UTF-16 BE string. - * - * @return {WordArray} The word array. - * - * @static - * - * @example - * - * var wordArray = CryptoJS.enc.Utf16.parse(utf16String); - */ - parse: function(utf16Str) { - // Shortcut - var utf16StrLength = utf16Str.length; - - // Convert - var words = []; - for (var i = 0; i < utf16StrLength; i++) { - words[i >>> 1] |= utf16Str.charCodeAt(i) << (16 - (i % 2) * 16); - } - - return WordArray.create(words, utf16StrLength * 2); - } - }; - - /** - * UTF-16 LE encoding strategy. - */ - C_enc.Utf16LE = { - /** - * Converts a word array to a UTF-16 LE string. - * - * @param {WordArray} wordArray The word array. - * - * @return {string} The UTF-16 LE string. - * - * @static - * - * @example - * - * var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray); - */ - stringify: function(wordArray) { - // Shortcuts - var words = wordArray.words; - var sigBytes = wordArray.sigBytes; - - // Convert - var utf16Chars = []; - for (var i = 0; i < sigBytes; i += 2) { - var codePoint = swapEndian((words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff); - utf16Chars.push(String.fromCharCode(codePoint)); - } - - return utf16Chars.join(''); - }, - - /** - * Converts a UTF-16 LE string to a word array. - * - * @param {string} utf16Str The UTF-16 LE string. - * - * @return {WordArray} The word array. - * - * @static - * - * @example - * - * var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str); - */ - parse: function(utf16Str) { - // Shortcut - var utf16StrLength = utf16Str.length; - - // Convert - var words = []; - for (var i = 0; i < utf16StrLength; i++) { - words[i >>> 1] |= swapEndian(utf16Str.charCodeAt(i) << (16 - (i % 2) * 16)); - } - - return WordArray.create(words, utf16StrLength * 2); - } - }; - - function swapEndian(word) { - return ((word << 8) & 0xff00ff00) | ((word >>> 8) & 0x00ff00ff); - } -}()); - - - - - - - - - - -(function() { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var WordArray = C_lib.WordArray; - var C_enc = C.enc; - - /** - * Base64 encoding strategy. - */ - var Base64 = C_enc.Base64 = { - /** - * Converts a word array to a Base64 string. - * - * @param {WordArray} wordArray The word array. - * - * @return {string} The Base64 string. - * - * @static - * - * @example - * - * var base64String = CryptoJS.enc.Base64.stringify(wordArray); - */ - stringify: function(wordArray) { - // Shortcuts - var words = wordArray.words; - var sigBytes = wordArray.sigBytes; - var map = this._map; - - // Clamp excess bits - wordArray.clamp(); - - // Convert - var base64Chars = []; - for (var i = 0; i < sigBytes; i += 3) { - var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; - var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff; - var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff; - - var triplet = (byte1 << 16) | (byte2 << 8) | byte3; - - for (var j = 0; - (j < 4) && (i + j * 0.75 < sigBytes); j++) { - base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f)); - } - } - - // Add padding - var paddingChar = map.charAt(64); - if (paddingChar) { - while (base64Chars.length % 4) { - base64Chars.push(paddingChar); - } - } - - return base64Chars.join(''); - }, - - /** - * Converts a Base64 string to a word array. - * - * @param {string} base64Str The Base64 string. - * - * @return {WordArray} The word array. - * - * @static - * - * @example - * - * var wordArray = CryptoJS.enc.Base64.parse(base64String); - */ - parse: function(base64Str) { - // Shortcuts - var base64StrLength = base64Str.length; - var map = this._map; - var reverseMap = this._reverseMap; - - if (!reverseMap) { - reverseMap = this._reverseMap = []; - for (var j = 0; j < map.length; j++) { - reverseMap[map.charCodeAt(j)] = j; - } - } - - // Ignore padding - var paddingChar = map.charAt(64); - if (paddingChar) { - var paddingIndex = base64Str.indexOf(paddingChar); - if (paddingIndex !== -1) { - base64StrLength = paddingIndex; - } - } - - // Convert - return parseLoop(base64Str, base64StrLength, reverseMap); - - }, - - _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=' - }; - - function parseLoop(base64Str, base64StrLength, reverseMap) { - var words = []; - var nBytes = 0; - for (var i = 0; i < base64StrLength; i++) { - if (i % 4) { - var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2); - var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2); - var bitsCombined = bits1 | bits2; - words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8); - nBytes++; - } - } - return WordArray.create(words, nBytes); - } -}()); - - - - - - - - - - - - - -(function(Math) { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var WordArray = C_lib.WordArray; - var Hasher = C_lib.Hasher; - var C_algo = C.algo; - - // Constants table - var T = []; - - // Compute constants - (function() { - for (var i = 0; i < 64; i++) { - T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0; - } - }()); - - /** - * MD5 hash algorithm. - */ - var MD5 = C_algo.MD5 = Hasher.extend({ - _doReset: function() { - this._hash = new WordArray.init([ - 0x67452301, 0xefcdab89, - 0x98badcfe, 0x10325476 - ]); - }, - - _doProcessBlock: function(M, offset) { - // Swap endian - for (var i = 0; i < 16; i++) { - // Shortcuts - var offset_i = offset + i; - var M_offset_i = M[offset_i]; - - M[offset_i] = ( - (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) | - (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00) - ); - } - - // Shortcuts - var H = this._hash.words; - - var M_offset_0 = M[offset + 0]; - var M_offset_1 = M[offset + 1]; - var M_offset_2 = M[offset + 2]; - var M_offset_3 = M[offset + 3]; - var M_offset_4 = M[offset + 4]; - var M_offset_5 = M[offset + 5]; - var M_offset_6 = M[offset + 6]; - var M_offset_7 = M[offset + 7]; - var M_offset_8 = M[offset + 8]; - var M_offset_9 = M[offset + 9]; - var M_offset_10 = M[offset + 10]; - var M_offset_11 = M[offset + 11]; - var M_offset_12 = M[offset + 12]; - var M_offset_13 = M[offset + 13]; - var M_offset_14 = M[offset + 14]; - var M_offset_15 = M[offset + 15]; - - // Working varialbes - var a = H[0]; - var b = H[1]; - var c = H[2]; - var d = H[3]; - - // Computation - a = FF(a, b, c, d, M_offset_0, 7, T[0]); - d = FF(d, a, b, c, M_offset_1, 12, T[1]); - c = FF(c, d, a, b, M_offset_2, 17, T[2]); - b = FF(b, c, d, a, M_offset_3, 22, T[3]); - a = FF(a, b, c, d, M_offset_4, 7, T[4]); - d = FF(d, a, b, c, M_offset_5, 12, T[5]); - c = FF(c, d, a, b, M_offset_6, 17, T[6]); - b = FF(b, c, d, a, M_offset_7, 22, T[7]); - a = FF(a, b, c, d, M_offset_8, 7, T[8]); - d = FF(d, a, b, c, M_offset_9, 12, T[9]); - c = FF(c, d, a, b, M_offset_10, 17, T[10]); - b = FF(b, c, d, a, M_offset_11, 22, T[11]); - a = FF(a, b, c, d, M_offset_12, 7, T[12]); - d = FF(d, a, b, c, M_offset_13, 12, T[13]); - c = FF(c, d, a, b, M_offset_14, 17, T[14]); - b = FF(b, c, d, a, M_offset_15, 22, T[15]); - - a = GG(a, b, c, d, M_offset_1, 5, T[16]); - d = GG(d, a, b, c, M_offset_6, 9, T[17]); - c = GG(c, d, a, b, M_offset_11, 14, T[18]); - b = GG(b, c, d, a, M_offset_0, 20, T[19]); - a = GG(a, b, c, d, M_offset_5, 5, T[20]); - d = GG(d, a, b, c, M_offset_10, 9, T[21]); - c = GG(c, d, a, b, M_offset_15, 14, T[22]); - b = GG(b, c, d, a, M_offset_4, 20, T[23]); - a = GG(a, b, c, d, M_offset_9, 5, T[24]); - d = GG(d, a, b, c, M_offset_14, 9, T[25]); - c = GG(c, d, a, b, M_offset_3, 14, T[26]); - b = GG(b, c, d, a, M_offset_8, 20, T[27]); - a = GG(a, b, c, d, M_offset_13, 5, T[28]); - d = GG(d, a, b, c, M_offset_2, 9, T[29]); - c = GG(c, d, a, b, M_offset_7, 14, T[30]); - b = GG(b, c, d, a, M_offset_12, 20, T[31]); - - a = HH(a, b, c, d, M_offset_5, 4, T[32]); - d = HH(d, a, b, c, M_offset_8, 11, T[33]); - c = HH(c, d, a, b, M_offset_11, 16, T[34]); - b = HH(b, c, d, a, M_offset_14, 23, T[35]); - a = HH(a, b, c, d, M_offset_1, 4, T[36]); - d = HH(d, a, b, c, M_offset_4, 11, T[37]); - c = HH(c, d, a, b, M_offset_7, 16, T[38]); - b = HH(b, c, d, a, M_offset_10, 23, T[39]); - a = HH(a, b, c, d, M_offset_13, 4, T[40]); - d = HH(d, a, b, c, M_offset_0, 11, T[41]); - c = HH(c, d, a, b, M_offset_3, 16, T[42]); - b = HH(b, c, d, a, M_offset_6, 23, T[43]); - a = HH(a, b, c, d, M_offset_9, 4, T[44]); - d = HH(d, a, b, c, M_offset_12, 11, T[45]); - c = HH(c, d, a, b, M_offset_15, 16, T[46]); - b = HH(b, c, d, a, M_offset_2, 23, T[47]); - - a = II(a, b, c, d, M_offset_0, 6, T[48]); - d = II(d, a, b, c, M_offset_7, 10, T[49]); - c = II(c, d, a, b, M_offset_14, 15, T[50]); - b = II(b, c, d, a, M_offset_5, 21, T[51]); - a = II(a, b, c, d, M_offset_12, 6, T[52]); - d = II(d, a, b, c, M_offset_3, 10, T[53]); - c = II(c, d, a, b, M_offset_10, 15, T[54]); - b = II(b, c, d, a, M_offset_1, 21, T[55]); - a = II(a, b, c, d, M_offset_8, 6, T[56]); - d = II(d, a, b, c, M_offset_15, 10, T[57]); - c = II(c, d, a, b, M_offset_6, 15, T[58]); - b = II(b, c, d, a, M_offset_13, 21, T[59]); - a = II(a, b, c, d, M_offset_4, 6, T[60]); - d = II(d, a, b, c, M_offset_11, 10, T[61]); - c = II(c, d, a, b, M_offset_2, 15, T[62]); - b = II(b, c, d, a, M_offset_9, 21, T[63]); - - // Intermediate hash value - H[0] = (H[0] + a) | 0; - H[1] = (H[1] + b) | 0; - H[2] = (H[2] + c) | 0; - H[3] = (H[3] + d) | 0; - }, - - _doFinalize: function() { - // Shortcuts - var data = this._data; - var dataWords = data.words; - - var nBitsTotal = this._nDataBytes * 8; - var nBitsLeft = data.sigBytes * 8; - - // Add padding - dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32); - - var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000); - var nBitsTotalL = nBitsTotal; - dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = ( - (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) | - (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00) - ); - dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = ( - (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) | - (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00) - ); - - data.sigBytes = (dataWords.length + 1) * 4; - - // Hash final blocks - this._process(); - - // Shortcuts - var hash = this._hash; - var H = hash.words; - - // Swap endian - for (var i = 0; i < 4; i++) { - // Shortcut - var H_i = H[i]; - - H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) | - (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00); - } - - // Return final computed hash - return hash; - }, - - clone: function() { - var clone = Hasher.clone.call(this); - clone._hash = this._hash.clone(); - - return clone; - } - }); - - function FF(a, b, c, d, x, s, t) { - var n = a + ((b & c) | (~b & d)) + x + t; - return ((n << s) | (n >>> (32 - s))) + b; - } - - function GG(a, b, c, d, x, s, t) { - var n = a + ((b & d) | (c & ~d)) + x + t; - return ((n << s) | (n >>> (32 - s))) + b; - } - - function HH(a, b, c, d, x, s, t) { - var n = a + (b ^ c ^ d) + x + t; - return ((n << s) | (n >>> (32 - s))) + b; - } - - function II(a, b, c, d, x, s, t) { - var n = a + (c ^ (b | ~d)) + x + t; - return ((n << s) | (n >>> (32 - s))) + b; - } - - /** - * Shortcut function to the hasher's object interface. - * - * @param {WordArray|string} message The message to hash. - * - * @return {WordArray} The hash. - * - * @static - * - * @example - * - * var hash = CryptoJS.MD5('message'); - * var hash = CryptoJS.MD5(wordArray); - */ - C.MD5 = Hasher._createHelper(MD5); - - /** - * Shortcut function to the HMAC's object interface. - * - * @param {WordArray|string} message The message to hash. - * @param {WordArray|string} key The secret key. - * - * @return {WordArray} The HMAC. - * - * @static - * - * @example - * - * var hmac = CryptoJS.HmacMD5(message, key); - */ - C.HmacMD5 = Hasher._createHmacHelper(MD5); -}(Math)); - - - - - - - - - - - - - - - -(function() { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var WordArray = C_lib.WordArray; - var Hasher = C_lib.Hasher; - var C_algo = C.algo; - - // Reusable object - var W = []; - - /** - * SHA-1 hash algorithm. - */ - var SHA1 = C_algo.SHA1 = Hasher.extend({ - _doReset: function() { - this._hash = new WordArray.init([ - 0x67452301, 0xefcdab89, - 0x98badcfe, 0x10325476, - 0xc3d2e1f0 - ]); - }, - - _doProcessBlock: function(M, offset) { - // Shortcut - var H = this._hash.words; - - // Working variables - var a = H[0]; - var b = H[1]; - var c = H[2]; - var d = H[3]; - var e = H[4]; - - // Computation - for (var i = 0; i < 80; i++) { - if (i < 16) { - W[i] = M[offset + i] | 0; - } else { - var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]; - W[i] = (n << 1) | (n >>> 31); - } - - var t = ((a << 5) | (a >>> 27)) + e + W[i]; - if (i < 20) { - t += ((b & c) | (~b & d)) + 0x5a827999; - } else if (i < 40) { - t += (b ^ c ^ d) + 0x6ed9eba1; - } else if (i < 60) { - t += ((b & c) | (b & d) | (c & d)) - 0x70e44324; - } else /* if (i < 80) */ { - t += (b ^ c ^ d) - 0x359d3e2a; - } - - e = d; - d = c; - c = (b << 30) | (b >>> 2); - b = a; - a = t; - } - - // Intermediate hash value - H[0] = (H[0] + a) | 0; - H[1] = (H[1] + b) | 0; - H[2] = (H[2] + c) | 0; - H[3] = (H[3] + d) | 0; - H[4] = (H[4] + e) | 0; - }, - - _doFinalize: function() { - // Shortcuts - var data = this._data; - var dataWords = data.words; - - var nBitsTotal = this._nDataBytes * 8; - var nBitsLeft = data.sigBytes * 8; - - // Add padding - dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32); - dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000); - dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal; - data.sigBytes = dataWords.length * 4; - - // Hash final blocks - this._process(); - - // Return final computed hash - return this._hash; - }, - - clone: function() { - var clone = Hasher.clone.call(this); - clone._hash = this._hash.clone(); - - return clone; - } - }); - - /** - * Shortcut function to the hasher's object interface. - * - * @param {WordArray|string} message The message to hash. - * - * @return {WordArray} The hash. - * - * @static - * - * @example - * - * var hash = CryptoJS.SHA1('message'); - * var hash = CryptoJS.SHA1(wordArray); - */ - C.SHA1 = Hasher._createHelper(SHA1); - - /** - * Shortcut function to the HMAC's object interface. - * - * @param {WordArray|string} message The message to hash. - * @param {WordArray|string} key The secret key. - * - * @return {WordArray} The HMAC. - * - * @static - * - * @example - * - * var hmac = CryptoJS.HmacSHA1(message, key); - */ - C.HmacSHA1 = Hasher._createHmacHelper(SHA1); -}()); - - - - - - - - - - - - -(function(Math) { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var WordArray = C_lib.WordArray; - var Hasher = C_lib.Hasher; - var C_algo = C.algo; - - // Initialization and round constants tables - var H = []; - var K = []; - - // Compute constants - (function() { - function isPrime(n) { - var sqrtN = Math.sqrt(n); - for (var factor = 2; factor <= sqrtN; factor++) { - if (!(n % factor)) { - return false; - } - } - - return true; - } - - function getFractionalBits(n) { - return ((n - (n | 0)) * 0x100000000) | 0; - } - - var n = 2; - var nPrime = 0; - while (nPrime < 64) { - if (isPrime(n)) { - if (nPrime < 8) { - H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2)); - } - K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3)); - - nPrime++; - } - - n++; - } - }()); - - // Reusable object - var W = []; - - /** - * SHA-256 hash algorithm. - */ - var SHA256 = C_algo.SHA256 = Hasher.extend({ - _doReset: function() { - this._hash = new WordArray.init(H.slice(0)); - }, - - _doProcessBlock: function(M, offset) { - // Shortcut - var H = this._hash.words; - - // Working variables - var a = H[0]; - var b = H[1]; - var c = H[2]; - var d = H[3]; - var e = H[4]; - var f = H[5]; - var g = H[6]; - var h = H[7]; - - // Computation - for (var i = 0; i < 64; i++) { - if (i < 16) { - W[i] = M[offset + i] | 0; - } else { - var gamma0x = W[i - 15]; - var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^ - ((gamma0x << 14) | (gamma0x >>> 18)) ^ - (gamma0x >>> 3); - - var gamma1x = W[i - 2]; - var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^ - ((gamma1x << 13) | (gamma1x >>> 19)) ^ - (gamma1x >>> 10); - - W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]; - } - - var ch = (e & f) ^ (~e & g); - var maj = (a & b) ^ (a & c) ^ (b & c); - - var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22)); - var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25)); - - var t1 = h + sigma1 + ch + K[i] + W[i]; - var t2 = sigma0 + maj; - - h = g; - g = f; - f = e; - e = (d + t1) | 0; - d = c; - c = b; - b = a; - a = (t1 + t2) | 0; - } - - // Intermediate hash value - H[0] = (H[0] + a) | 0; - H[1] = (H[1] + b) | 0; - H[2] = (H[2] + c) | 0; - H[3] = (H[3] + d) | 0; - H[4] = (H[4] + e) | 0; - H[5] = (H[5] + f) | 0; - H[6] = (H[6] + g) | 0; - H[7] = (H[7] + h) | 0; - }, - - _doFinalize: function() { - // Shortcuts - var data = this._data; - var dataWords = data.words; - - var nBitsTotal = this._nDataBytes * 8; - var nBitsLeft = data.sigBytes * 8; - - // Add padding - dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32); - dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000); - dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal; - data.sigBytes = dataWords.length * 4; - - // Hash final blocks - this._process(); - - // Return final computed hash - return this._hash; - }, - - clone: function() { - var clone = Hasher.clone.call(this); - clone._hash = this._hash.clone(); - - return clone; - } - }); - - /** - * Shortcut function to the hasher's object interface. - * - * @param {WordArray|string} message The message to hash. - * - * @return {WordArray} The hash. - * - * @static - * - * @example - * - * var hash = CryptoJS.SHA256('message'); - * var hash = CryptoJS.SHA256(wordArray); - */ - C.SHA256 = Hasher._createHelper(SHA256); - - /** - * Shortcut function to the HMAC's object interface. - * - * @param {WordArray|string} message The message to hash. - * @param {WordArray|string} key The secret key. - * - * @return {WordArray} The HMAC. - * - * @static - * - * @example - * - * var hmac = CryptoJS.HmacSHA256(message, key); - */ - C.HmacSHA256 = Hasher._createHmacHelper(SHA256); -}(Math)); - - - - - - - - - - - - - -(function() { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var WordArray = C_lib.WordArray; - var C_algo = C.algo; - var SHA256 = C_algo.SHA256; - - /** - * SHA-224 hash algorithm. - */ - var SHA224 = C_algo.SHA224 = SHA256.extend({ - _doReset: function() { - this._hash = new WordArray.init([ - 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, - 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 - ]); - }, - - _doFinalize: function() { - var hash = SHA256._doFinalize.call(this); - - hash.sigBytes -= 4; - - return hash; - } - }); - - /** - * Shortcut function to the hasher's object interface. - * - * @param {WordArray|string} message The message to hash. - * - * @return {WordArray} The hash. - * - * @static - * - * @example - * - * var hash = CryptoJS.SHA224('message'); - * var hash = CryptoJS.SHA224(wordArray); - */ - C.SHA224 = SHA256._createHelper(SHA224); - - /** - * Shortcut function to the HMAC's object interface. - * - * @param {WordArray|string} message The message to hash. - * @param {WordArray|string} key The secret key. - * - * @return {WordArray} The HMAC. - * - * @static - * - * @example - * - * var hmac = CryptoJS.HmacSHA224(message, key); - */ - C.HmacSHA224 = SHA256._createHmacHelper(SHA224); -}()); - - - - - - - - - -(function() { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var Hasher = C_lib.Hasher; - var C_x64 = C.x64; - var X64Word = C_x64.Word; - var X64WordArray = C_x64.WordArray; - var C_algo = C.algo; - - function X64Word_create() { - return X64Word.create.apply(X64Word, arguments); - } - - // Constants - var K = [ - X64Word_create(0x428a2f98, 0xd728ae22), X64Word_create(0x71374491, 0x23ef65cd), - X64Word_create(0xb5c0fbcf, 0xec4d3b2f), X64Word_create(0xe9b5dba5, 0x8189dbbc), - X64Word_create(0x3956c25b, 0xf348b538), X64Word_create(0x59f111f1, 0xb605d019), - X64Word_create(0x923f82a4, 0xaf194f9b), X64Word_create(0xab1c5ed5, 0xda6d8118), - X64Word_create(0xd807aa98, 0xa3030242), X64Word_create(0x12835b01, 0x45706fbe), - X64Word_create(0x243185be, 0x4ee4b28c), X64Word_create(0x550c7dc3, 0xd5ffb4e2), - X64Word_create(0x72be5d74, 0xf27b896f), X64Word_create(0x80deb1fe, 0x3b1696b1), - X64Word_create(0x9bdc06a7, 0x25c71235), X64Word_create(0xc19bf174, 0xcf692694), - X64Word_create(0xe49b69c1, 0x9ef14ad2), X64Word_create(0xefbe4786, 0x384f25e3), - X64Word_create(0x0fc19dc6, 0x8b8cd5b5), X64Word_create(0x240ca1cc, 0x77ac9c65), - X64Word_create(0x2de92c6f, 0x592b0275), X64Word_create(0x4a7484aa, 0x6ea6e483), - X64Word_create(0x5cb0a9dc, 0xbd41fbd4), X64Word_create(0x76f988da, 0x831153b5), - X64Word_create(0x983e5152, 0xee66dfab), X64Word_create(0xa831c66d, 0x2db43210), - X64Word_create(0xb00327c8, 0x98fb213f), X64Word_create(0xbf597fc7, 0xbeef0ee4), - X64Word_create(0xc6e00bf3, 0x3da88fc2), X64Word_create(0xd5a79147, 0x930aa725), - X64Word_create(0x06ca6351, 0xe003826f), X64Word_create(0x14292967, 0x0a0e6e70), - X64Word_create(0x27b70a85, 0x46d22ffc), X64Word_create(0x2e1b2138, 0x5c26c926), - X64Word_create(0x4d2c6dfc, 0x5ac42aed), X64Word_create(0x53380d13, 0x9d95b3df), - X64Word_create(0x650a7354, 0x8baf63de), X64Word_create(0x766a0abb, 0x3c77b2a8), - X64Word_create(0x81c2c92e, 0x47edaee6), X64Word_create(0x92722c85, 0x1482353b), - X64Word_create(0xa2bfe8a1, 0x4cf10364), X64Word_create(0xa81a664b, 0xbc423001), - X64Word_create(0xc24b8b70, 0xd0f89791), X64Word_create(0xc76c51a3, 0x0654be30), - X64Word_create(0xd192e819, 0xd6ef5218), X64Word_create(0xd6990624, 0x5565a910), - X64Word_create(0xf40e3585, 0x5771202a), X64Word_create(0x106aa070, 0x32bbd1b8), - X64Word_create(0x19a4c116, 0xb8d2d0c8), X64Word_create(0x1e376c08, 0x5141ab53), - X64Word_create(0x2748774c, 0xdf8eeb99), X64Word_create(0x34b0bcb5, 0xe19b48a8), - X64Word_create(0x391c0cb3, 0xc5c95a63), X64Word_create(0x4ed8aa4a, 0xe3418acb), - X64Word_create(0x5b9cca4f, 0x7763e373), X64Word_create(0x682e6ff3, 0xd6b2b8a3), - X64Word_create(0x748f82ee, 0x5defb2fc), X64Word_create(0x78a5636f, 0x43172f60), - X64Word_create(0x84c87814, 0xa1f0ab72), X64Word_create(0x8cc70208, 0x1a6439ec), - X64Word_create(0x90befffa, 0x23631e28), X64Word_create(0xa4506ceb, 0xde82bde9), - X64Word_create(0xbef9a3f7, 0xb2c67915), X64Word_create(0xc67178f2, 0xe372532b), - X64Word_create(0xca273ece, 0xea26619c), X64Word_create(0xd186b8c7, 0x21c0c207), - X64Word_create(0xeada7dd6, 0xcde0eb1e), X64Word_create(0xf57d4f7f, 0xee6ed178), - X64Word_create(0x06f067aa, 0x72176fba), X64Word_create(0x0a637dc5, 0xa2c898a6), - X64Word_create(0x113f9804, 0xbef90dae), X64Word_create(0x1b710b35, 0x131c471b), - X64Word_create(0x28db77f5, 0x23047d84), X64Word_create(0x32caab7b, 0x40c72493), - X64Word_create(0x3c9ebe0a, 0x15c9bebc), X64Word_create(0x431d67c4, 0x9c100d4c), - X64Word_create(0x4cc5d4be, 0xcb3e42b6), X64Word_create(0x597f299c, 0xfc657e2a), - X64Word_create(0x5fcb6fab, 0x3ad6faec), X64Word_create(0x6c44198c, 0x4a475817) - ]; - - // Reusable objects - var W = []; - (function() { - for (var i = 0; i < 80; i++) { - W[i] = X64Word_create(); - } - }()); - - /** - * SHA-512 hash algorithm. - */ - var SHA512 = C_algo.SHA512 = Hasher.extend({ - _doReset: function() { - this._hash = new X64WordArray.init([ - new X64Word.init(0x6a09e667, 0xf3bcc908), new X64Word.init(0xbb67ae85, 0x84caa73b), - new X64Word.init(0x3c6ef372, 0xfe94f82b), new X64Word.init(0xa54ff53a, 0x5f1d36f1), - new X64Word.init(0x510e527f, 0xade682d1), new X64Word.init(0x9b05688c, 0x2b3e6c1f), - new X64Word.init(0x1f83d9ab, 0xfb41bd6b), new X64Word.init(0x5be0cd19, 0x137e2179) - ]); - }, - - _doProcessBlock: function(M, offset) { - // Shortcuts - var H = this._hash.words; - - var H0 = H[0]; - var H1 = H[1]; - var H2 = H[2]; - var H3 = H[3]; - var H4 = H[4]; - var H5 = H[5]; - var H6 = H[6]; - var H7 = H[7]; - - var H0h = H0.high; - var H0l = H0.low; - var H1h = H1.high; - var H1l = H1.low; - var H2h = H2.high; - var H2l = H2.low; - var H3h = H3.high; - var H3l = H3.low; - var H4h = H4.high; - var H4l = H4.low; - var H5h = H5.high; - var H5l = H5.low; - var H6h = H6.high; - var H6l = H6.low; - var H7h = H7.high; - var H7l = H7.low; - - // Working variables - var ah = H0h; - var al = H0l; - var bh = H1h; - var bl = H1l; - var ch = H2h; - var cl = H2l; - var dh = H3h; - var dl = H3l; - var eh = H4h; - var el = H4l; - var fh = H5h; - var fl = H5l; - var gh = H6h; - var gl = H6l; - var hh = H7h; - var hl = H7l; - - // Rounds - for (var i = 0; i < 80; i++) { - var Wil; - var Wih; - - // Shortcut - var Wi = W[i]; - - // Extend message - if (i < 16) { - Wih = Wi.high = M[offset + i * 2] | 0; - Wil = Wi.low = M[offset + i * 2 + 1] | 0; - } else { - // Gamma0 - var gamma0x = W[i - 15]; - var gamma0xh = gamma0x.high; - var gamma0xl = gamma0x.low; - var gamma0h = ((gamma0xh >>> 1) | (gamma0xl << 31)) ^ ((gamma0xh >>> 8) | (gamma0xl << 24)) ^ (gamma0xh >>> 7); - var gamma0l = ((gamma0xl >>> 1) | (gamma0xh << 31)) ^ ((gamma0xl >>> 8) | (gamma0xh << 24)) ^ ((gamma0xl >>> 7) | (gamma0xh << 25)); - - // Gamma1 - var gamma1x = W[i - 2]; - var gamma1xh = gamma1x.high; - var gamma1xl = gamma1x.low; - var gamma1h = ((gamma1xh >>> 19) | (gamma1xl << 13)) ^ ((gamma1xh << 3) | (gamma1xl >>> 29)) ^ (gamma1xh >>> 6); - var gamma1l = ((gamma1xl >>> 19) | (gamma1xh << 13)) ^ ((gamma1xl << 3) | (gamma1xh >>> 29)) ^ ((gamma1xl >>> 6) | (gamma1xh << 26)); - - // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16] - var Wi7 = W[i - 7]; - var Wi7h = Wi7.high; - var Wi7l = Wi7.low; - - var Wi16 = W[i - 16]; - var Wi16h = Wi16.high; - var Wi16l = Wi16.low; - - Wil = gamma0l + Wi7l; - Wih = gamma0h + Wi7h + ((Wil >>> 0) < (gamma0l >>> 0) ? 1 : 0); - Wil = Wil + gamma1l; - Wih = Wih + gamma1h + ((Wil >>> 0) < (gamma1l >>> 0) ? 1 : 0); - Wil = Wil + Wi16l; - Wih = Wih + Wi16h + ((Wil >>> 0) < (Wi16l >>> 0) ? 1 : 0); - - Wi.high = Wih; - Wi.low = Wil; - } - - var chh = (eh & fh) ^ (~eh & gh); - var chl = (el & fl) ^ (~el & gl); - var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch); - var majl = (al & bl) ^ (al & cl) ^ (bl & cl); - - var sigma0h = ((ah >>> 28) | (al << 4)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7)); - var sigma0l = ((al >>> 28) | (ah << 4)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7)); - var sigma1h = ((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9)); - var sigma1l = ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)); - - // t1 = h + sigma1 + ch + K[i] + W[i] - var Ki = K[i]; - var Kih = Ki.high; - var Kil = Ki.low; - - var t1l = hl + sigma1l; - var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0); - var t1l = t1l + chl; - var t1h = t1h + chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0); - var t1l = t1l + Kil; - var t1h = t1h + Kih + ((t1l >>> 0) < (Kil >>> 0) ? 1 : 0); - var t1l = t1l + Wil; - var t1h = t1h + Wih + ((t1l >>> 0) < (Wil >>> 0) ? 1 : 0); - - // t2 = sigma0 + maj - var t2l = sigma0l + majl; - var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0); - - // Update working variables - hh = gh; - hl = gl; - gh = fh; - gl = fl; - fh = eh; - fl = el; - el = (dl + t1l) | 0; - eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0; - dh = ch; - dl = cl; - ch = bh; - cl = bl; - bh = ah; - bl = al; - al = (t1l + t2l) | 0; - ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0; - } - - // Intermediate hash value - H0l = H0.low = (H0l + al); - H0.high = (H0h + ah + ((H0l >>> 0) < (al >>> 0) ? 1 : 0)); - H1l = H1.low = (H1l + bl); - H1.high = (H1h + bh + ((H1l >>> 0) < (bl >>> 0) ? 1 : 0)); - H2l = H2.low = (H2l + cl); - H2.high = (H2h + ch + ((H2l >>> 0) < (cl >>> 0) ? 1 : 0)); - H3l = H3.low = (H3l + dl); - H3.high = (H3h + dh + ((H3l >>> 0) < (dl >>> 0) ? 1 : 0)); - H4l = H4.low = (H4l + el); - H4.high = (H4h + eh + ((H4l >>> 0) < (el >>> 0) ? 1 : 0)); - H5l = H5.low = (H5l + fl); - H5.high = (H5h + fh + ((H5l >>> 0) < (fl >>> 0) ? 1 : 0)); - H6l = H6.low = (H6l + gl); - H6.high = (H6h + gh + ((H6l >>> 0) < (gl >>> 0) ? 1 : 0)); - H7l = H7.low = (H7l + hl); - H7.high = (H7h + hh + ((H7l >>> 0) < (hl >>> 0) ? 1 : 0)); - }, - - _doFinalize: function() { - // Shortcuts - var data = this._data; - var dataWords = data.words; - - var nBitsTotal = this._nDataBytes * 8; - var nBitsLeft = data.sigBytes * 8; - - // Add padding - dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32); - dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 30] = Math.floor(nBitsTotal / 0x100000000); - dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 31] = nBitsTotal; - data.sigBytes = dataWords.length * 4; - - // Hash final blocks - this._process(); - - // Convert hash to 32-bit word array before returning - var hash = this._hash.toX32(); - - // Return final computed hash - return hash; - }, - - clone: function() { - var clone = Hasher.clone.call(this); - clone._hash = this._hash.clone(); - - return clone; - }, - - blockSize: 1024 / 32 - }); - - /** - * Shortcut function to the hasher's object interface. - * - * @param {WordArray|string} message The message to hash. - * - * @return {WordArray} The hash. - * - * @static - * - * @example - * - * var hash = CryptoJS.SHA512('message'); - * var hash = CryptoJS.SHA512(wordArray); - */ - C.SHA512 = Hasher._createHelper(SHA512); - - /** - * Shortcut function to the HMAC's object interface. - * - * @param {WordArray|string} message The message to hash. - * @param {WordArray|string} key The secret key. - * - * @return {WordArray} The HMAC. - * - * @static - * - * @example - * - * var hmac = CryptoJS.HmacSHA512(message, key); - */ - C.HmacSHA512 = Hasher._createHmacHelper(SHA512); -}()); - - - - - - - - -(function() { - // Shortcuts - var C = CryptoJS; - var C_x64 = C.x64; - var X64Word = C_x64.Word; - var X64WordArray = C_x64.WordArray; - var C_algo = C.algo; - var SHA512 = C_algo.SHA512; - - /** - * SHA-384 hash algorithm. - */ - var SHA384 = C_algo.SHA384 = SHA512.extend({ - _doReset: function() { - this._hash = new X64WordArray.init([ - new X64Word.init(0xcbbb9d5d, 0xc1059ed8), new X64Word.init(0x629a292a, 0x367cd507), - new X64Word.init(0x9159015a, 0x3070dd17), new X64Word.init(0x152fecd8, 0xf70e5939), - new X64Word.init(0x67332667, 0xffc00b31), new X64Word.init(0x8eb44a87, 0x68581511), - new X64Word.init(0xdb0c2e0d, 0x64f98fa7), new X64Word.init(0x47b5481d, 0xbefa4fa4) - ]); - }, - - _doFinalize: function() { - var hash = SHA512._doFinalize.call(this); - - hash.sigBytes -= 16; - - return hash; - } - }); - - /** - * Shortcut function to the hasher's object interface. - * - * @param {WordArray|string} message The message to hash. - * - * @return {WordArray} The hash. - * - * @static - * - * @example - * - * var hash = CryptoJS.SHA384('message'); - * var hash = CryptoJS.SHA384(wordArray); - */ - C.SHA384 = SHA512._createHelper(SHA384); - - /** - * Shortcut function to the HMAC's object interface. - * - * @param {WordArray|string} message The message to hash. - * @param {WordArray|string} key The secret key. - * - * @return {WordArray} The HMAC. - * - * @static - * - * @example - * - * var hmac = CryptoJS.HmacSHA384(message, key); - */ - C.HmacSHA384 = SHA512._createHmacHelper(SHA384); -}()); - - - - - - - - - - -(function(Math) { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var WordArray = C_lib.WordArray; - var Hasher = C_lib.Hasher; - var C_x64 = C.x64; - var X64Word = C_x64.Word; - var C_algo = C.algo; - - // Constants tables - var RHO_OFFSETS = []; - var PI_INDEXES = []; - var ROUND_CONSTANTS = []; - - // Compute Constants - (function() { - // Compute rho offset constants - var x = 1, - y = 0; - for (var t = 0; t < 24; t++) { - RHO_OFFSETS[x + 5 * y] = ((t + 1) * (t + 2) / 2) % 64; - - var newX = y % 5; - var newY = (2 * x + 3 * y) % 5; - x = newX; - y = newY; - } - - // Compute pi index constants - for (var x = 0; x < 5; x++) { - for (var y = 0; y < 5; y++) { - PI_INDEXES[x + 5 * y] = y + ((2 * x + 3 * y) % 5) * 5; - } - } - - // Compute round constants - var LFSR = 0x01; - for (var i = 0; i < 24; i++) { - var roundConstantMsw = 0; - var roundConstantLsw = 0; - - for (var j = 0; j < 7; j++) { - if (LFSR & 0x01) { - var bitPosition = (1 << j) - 1; - if (bitPosition < 32) { - roundConstantLsw ^= 1 << bitPosition; - } else /* if (bitPosition >= 32) */ { - roundConstantMsw ^= 1 << (bitPosition - 32); - } - } - - // Compute next LFSR - if (LFSR & 0x80) { - // Primitive polynomial over GF(2): x^8 + x^6 + x^5 + x^4 + 1 - LFSR = (LFSR << 1) ^ 0x71; - } else { - LFSR <<= 1; - } - } - - ROUND_CONSTANTS[i] = X64Word.create(roundConstantMsw, roundConstantLsw); - } - }()); - - // Reusable objects for temporary values - var T = []; - (function() { - for (var i = 0; i < 25; i++) { - T[i] = X64Word.create(); - } - }()); - - /** - * SHA-3 hash algorithm. - */ - var SHA3 = C_algo.SHA3 = Hasher.extend({ - /** - * Configuration options. - * - * @property {number} outputLength - * The desired number of bits in the output hash. - * Only values permitted are: 224, 256, 384, 512. - * Default: 512 - */ - cfg: Hasher.cfg.extend({ - outputLength: 512 - }), - - _doReset: function() { - var state = this._state = [] - for (var i = 0; i < 25; i++) { - state[i] = new X64Word.init(); - } - - this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32; - }, - - _doProcessBlock: function(M, offset) { - // Shortcuts - var state = this._state; - var nBlockSizeLanes = this.blockSize / 2; - - // Absorb - for (var i = 0; i < nBlockSizeLanes; i++) { - // Shortcuts - var M2i = M[offset + 2 * i]; - var M2i1 = M[offset + 2 * i + 1]; - - // Swap endian - M2i = ( - (((M2i << 8) | (M2i >>> 24)) & 0x00ff00ff) | - (((M2i << 24) | (M2i >>> 8)) & 0xff00ff00) - ); - M2i1 = ( - (((M2i1 << 8) | (M2i1 >>> 24)) & 0x00ff00ff) | - (((M2i1 << 24) | (M2i1 >>> 8)) & 0xff00ff00) - ); - - // Absorb message into state - var lane = state[i]; - lane.high ^= M2i1; - lane.low ^= M2i; - } - - // Rounds - for (var round = 0; round < 24; round++) { - // Theta - for (var x = 0; x < 5; x++) { - // Mix column lanes - var tMsw = 0, - tLsw = 0; - for (var y = 0; y < 5; y++) { - var lane = state[x + 5 * y]; - tMsw ^= lane.high; - tLsw ^= lane.low; - } - - // Temporary values - var Tx = T[x]; - Tx.high = tMsw; - Tx.low = tLsw; - } - for (var x = 0; x < 5; x++) { - // Shortcuts - var Tx4 = T[(x + 4) % 5]; - var Tx1 = T[(x + 1) % 5]; - var Tx1Msw = Tx1.high; - var Tx1Lsw = Tx1.low; - - // Mix surrounding columns - var tMsw = Tx4.high ^ ((Tx1Msw << 1) | (Tx1Lsw >>> 31)); - var tLsw = Tx4.low ^ ((Tx1Lsw << 1) | (Tx1Msw >>> 31)); - for (var y = 0; y < 5; y++) { - var lane = state[x + 5 * y]; - lane.high ^= tMsw; - lane.low ^= tLsw; - } - } - - // Rho Pi - for (var laneIndex = 1; laneIndex < 25; laneIndex++) { - var tMsw; - var tLsw; - - // Shortcuts - var lane = state[laneIndex]; - var laneMsw = lane.high; - var laneLsw = lane.low; - var rhoOffset = RHO_OFFSETS[laneIndex]; - - // Rotate lanes - if (rhoOffset < 32) { - tMsw = (laneMsw << rhoOffset) | (laneLsw >>> (32 - rhoOffset)); - tLsw = (laneLsw << rhoOffset) | (laneMsw >>> (32 - rhoOffset)); - } else /* if (rhoOffset >= 32) */ { - tMsw = (laneLsw << (rhoOffset - 32)) | (laneMsw >>> (64 - rhoOffset)); - tLsw = (laneMsw << (rhoOffset - 32)) | (laneLsw >>> (64 - rhoOffset)); - } - - // Transpose lanes - var TPiLane = T[PI_INDEXES[laneIndex]]; - TPiLane.high = tMsw; - TPiLane.low = tLsw; - } - - // Rho pi at x = y = 0 - var T0 = T[0]; - var state0 = state[0]; - T0.high = state0.high; - T0.low = state0.low; - - // Chi - for (var x = 0; x < 5; x++) { - for (var y = 0; y < 5; y++) { - // Shortcuts - var laneIndex = x + 5 * y; - var lane = state[laneIndex]; - var TLane = T[laneIndex]; - var Tx1Lane = T[((x + 1) % 5) + 5 * y]; - var Tx2Lane = T[((x + 2) % 5) + 5 * y]; - - // Mix rows - lane.high = TLane.high ^ (~Tx1Lane.high & Tx2Lane.high); - lane.low = TLane.low ^ (~Tx1Lane.low & Tx2Lane.low); - } - } - - // Iota - var lane = state[0]; - var roundConstant = ROUND_CONSTANTS[round]; - lane.high ^= roundConstant.high; - lane.low ^= roundConstant.low; - } - }, - - _doFinalize: function() { - // Shortcuts - var data = this._data; - var dataWords = data.words; - var nBitsTotal = this._nDataBytes * 8; - var nBitsLeft = data.sigBytes * 8; - var blockSizeBits = this.blockSize * 32; - - // Add padding - dataWords[nBitsLeft >>> 5] |= 0x1 << (24 - nBitsLeft % 32); - dataWords[((Math.ceil((nBitsLeft + 1) / blockSizeBits) * blockSizeBits) >>> 5) - 1] |= 0x80; - data.sigBytes = dataWords.length * 4; - - // Hash final blocks - this._process(); - - // Shortcuts - var state = this._state; - var outputLengthBytes = this.cfg.outputLength / 8; - var outputLengthLanes = outputLengthBytes / 8; - - // Squeeze - var hashWords = []; - for (var i = 0; i < outputLengthLanes; i++) { - // Shortcuts - var lane = state[i]; - var laneMsw = lane.high; - var laneLsw = lane.low; - - // Swap endian - laneMsw = ( - (((laneMsw << 8) | (laneMsw >>> 24)) & 0x00ff00ff) | - (((laneMsw << 24) | (laneMsw >>> 8)) & 0xff00ff00) - ); - laneLsw = ( - (((laneLsw << 8) | (laneLsw >>> 24)) & 0x00ff00ff) | - (((laneLsw << 24) | (laneLsw >>> 8)) & 0xff00ff00) - ); - - // Squeeze state to retrieve hash - hashWords.push(laneLsw); - hashWords.push(laneMsw); - } - - // Return final computed hash - return new WordArray.init(hashWords, outputLengthBytes); - }, - - clone: function() { - var clone = Hasher.clone.call(this); - - var state = clone._state = this._state.slice(0); - for (var i = 0; i < 25; i++) { - state[i] = state[i].clone(); - } - - return clone; - } - }); - - /** - * Shortcut function to the hasher's object interface. - * - * @param {WordArray|string} message The message to hash. - * - * @return {WordArray} The hash. - * - * @static - * - * @example - * - * var hash = CryptoJS.SHA3('message'); - * var hash = CryptoJS.SHA3(wordArray); - */ - C.SHA3 = Hasher._createHelper(SHA3); - - /** - * Shortcut function to the HMAC's object interface. - * - * @param {WordArray|string} message The message to hash. - * @param {WordArray|string} key The secret key. - * - * @return {WordArray} The HMAC. - * - * @static - * - * @example - * - * var hmac = CryptoJS.HmacSHA3(message, key); - */ - C.HmacSHA3 = Hasher._createHmacHelper(SHA3); -}(Math)); - - - - - - - - - - -/** @preserve -(c) 2012 by Cédric Mesnil. All rights reserved. -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -(function(Math) { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var WordArray = C_lib.WordArray; - var Hasher = C_lib.Hasher; - var C_algo = C.algo; - - // Constants table - var _zl = WordArray.create([ - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, - 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, - 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, - 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13 - ]); - var _zr = WordArray.create([ - 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, - 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, - 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, - 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, - 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11 - ]); - var _sl = WordArray.create([ - 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, - 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, - 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, - 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, - 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 - ]); - var _sr = WordArray.create([ - 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, - 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, - 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, - 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, - 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 - ]); - - var _hl = WordArray.create([0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]); - var _hr = WordArray.create([0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]); - - /** - * RIPEMD160 hash algorithm. - */ - var RIPEMD160 = C_algo.RIPEMD160 = Hasher.extend({ - _doReset: function() { - this._hash = WordArray.create([0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]); - }, - - _doProcessBlock: function(M, offset) { - - // Swap endian - for (var i = 0; i < 16; i++) { - // Shortcuts - var offset_i = offset + i; - var M_offset_i = M[offset_i]; - - // Swap - M[offset_i] = ( - (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) | - (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00) - ); - } - // Shortcut - var H = this._hash.words; - var hl = _hl.words; - var hr = _hr.words; - var zl = _zl.words; - var zr = _zr.words; - var sl = _sl.words; - var sr = _sr.words; - - // Working variables - var al, bl, cl, dl, el; - var ar, br, cr, dr, er; - - ar = al = H[0]; - br = bl = H[1]; - cr = cl = H[2]; - dr = dl = H[3]; - er = el = H[4]; - // Computation - var t; - for (var i = 0; i < 80; i += 1) { - t = (al + M[offset + zl[i]]) | 0; - if (i < 16) { - t += f1(bl, cl, dl) + hl[0]; - } else if (i < 32) { - t += f2(bl, cl, dl) + hl[1]; - } else if (i < 48) { - t += f3(bl, cl, dl) + hl[2]; - } else if (i < 64) { - t += f4(bl, cl, dl) + hl[3]; - } else { // if (i<80) { - t += f5(bl, cl, dl) + hl[4]; - } - t = t | 0; - t = rotl(t, sl[i]); - t = (t + el) | 0; - al = el; - el = dl; - dl = rotl(cl, 10); - cl = bl; - bl = t; - - t = (ar + M[offset + zr[i]]) | 0; - if (i < 16) { - t += f5(br, cr, dr) + hr[0]; - } else if (i < 32) { - t += f4(br, cr, dr) + hr[1]; - } else if (i < 48) { - t += f3(br, cr, dr) + hr[2]; - } else if (i < 64) { - t += f2(br, cr, dr) + hr[3]; - } else { // if (i<80) { - t += f1(br, cr, dr) + hr[4]; - } - t = t | 0; - t = rotl(t, sr[i]); - t = (t + er) | 0; - ar = er; - er = dr; - dr = rotl(cr, 10); - cr = br; - br = t; - } - // Intermediate hash value - t = (H[1] + cl + dr) | 0; - H[1] = (H[2] + dl + er) | 0; - H[2] = (H[3] + el + ar) | 0; - H[3] = (H[4] + al + br) | 0; - H[4] = (H[0] + bl + cr) | 0; - H[0] = t; - }, - - _doFinalize: function() { - // Shortcuts - var data = this._data; - var dataWords = data.words; - - var nBitsTotal = this._nDataBytes * 8; - var nBitsLeft = data.sigBytes * 8; - - // Add padding - dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32); - dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = ( - (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) | - (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00) - ); - data.sigBytes = (dataWords.length + 1) * 4; - - // Hash final blocks - this._process(); - - // Shortcuts - var hash = this._hash; - var H = hash.words; - - // Swap endian - for (var i = 0; i < 5; i++) { - // Shortcut - var H_i = H[i]; - - // Swap - H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) | - (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00); - } - - // Return final computed hash - return hash; - }, - - clone: function() { - var clone = Hasher.clone.call(this); - clone._hash = this._hash.clone(); - - return clone; - } - }); - - - function f1(x, y, z) { - return ((x) ^ (y) ^ (z)); - - } - - function f2(x, y, z) { - return (((x) & (y)) | ((~x) & (z))); - } - - function f3(x, y, z) { - return (((x) | (~(y))) ^ (z)); - } - - function f4(x, y, z) { - return (((x) & (z)) | ((y) & (~(z)))); - } - - function f5(x, y, z) { - return ((x) ^ ((y) | (~(z)))); - - } - - function rotl(x, n) { - return (x << n) | (x >>> (32 - n)); - } - - - /** - * Shortcut function to the hasher's object interface. - * - * @param {WordArray|string} message The message to hash. - * - * @return {WordArray} The hash. - * - * @static - * - * @example - * - * var hash = CryptoJS.RIPEMD160('message'); - * var hash = CryptoJS.RIPEMD160(wordArray); - */ - C.RIPEMD160 = Hasher._createHelper(RIPEMD160); - - /** - * Shortcut function to the HMAC's object interface. - * - * @param {WordArray|string} message The message to hash. - * @param {WordArray|string} key The secret key. - * - * @return {WordArray} The HMAC. - * - * @static - * - * @example - * - * var hmac = CryptoJS.HmacRIPEMD160(message, key); - */ - C.HmacRIPEMD160 = Hasher._createHmacHelper(RIPEMD160); -}(Math)); - - - - - - - - - - -(function() { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var Base = C_lib.Base; - var C_enc = C.enc; - var Utf8 = C_enc.Utf8; - var C_algo = C.algo; - - /** - * HMAC algorithm. - */ - var HMAC = C_algo.HMAC = Base.extend({ - /** - * Initializes a newly created HMAC. - * - * @param {Hasher} hasher The hash algorithm to use. - * @param {WordArray|string} key The secret key. - * - * @example - * - * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key); - */ - init: function(hasher, key) { - // Init hasher - hasher = this._hasher = new hasher.init(); - - // Convert string to WordArray, else assume WordArray already - if (typeof key == 'string') { - key = Utf8.parse(key); - } - - // Shortcuts - var hasherBlockSize = hasher.blockSize; - var hasherBlockSizeBytes = hasherBlockSize * 4; - - // Allow arbitrary length keys - if (key.sigBytes > hasherBlockSizeBytes) { - key = hasher.finalize(key); - } - - // Clamp excess bits - key.clamp(); - - // Clone key for inner and outer pads - var oKey = this._oKey = key.clone(); - var iKey = this._iKey = key.clone(); - - // Shortcuts - var oKeyWords = oKey.words; - var iKeyWords = iKey.words; - - // XOR keys with pad constants - for (var i = 0; i < hasherBlockSize; i++) { - oKeyWords[i] ^= 0x5c5c5c5c; - iKeyWords[i] ^= 0x36363636; - } - oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes; - - // Set initial values - this.reset(); - }, - - /** - * Resets this HMAC to its initial state. - * - * @example - * - * hmacHasher.reset(); - */ - reset: function() { - // Shortcut - var hasher = this._hasher; - - // Reset - hasher.reset(); - hasher.update(this._iKey); - }, - - /** - * Updates this HMAC with a message. - * - * @param {WordArray|string} messageUpdate The message to append. - * - * @return {HMAC} This HMAC instance. - * - * @example - * - * hmacHasher.update('message'); - * hmacHasher.update(wordArray); - */ - update: function(messageUpdate) { - this._hasher.update(messageUpdate); - - // Chainable - return this; - }, - - /** - * Finalizes the HMAC computation. - * Note that the finalize operation is effectively a destructive, read-once operation. - * - * @param {WordArray|string} messageUpdate (Optional) A final message update. - * - * @return {WordArray} The HMAC. - * - * @example - * - * var hmac = hmacHasher.finalize(); - * var hmac = hmacHasher.finalize('message'); - * var hmac = hmacHasher.finalize(wordArray); - */ - finalize: function(messageUpdate) { - // Shortcut - var hasher = this._hasher; - - // Compute HMAC - var innerHash = hasher.finalize(messageUpdate); - hasher.reset(); - var hmac = hasher.finalize(this._oKey.clone().concat(innerHash)); - - return hmac; - } - }); -}()); - - - - - - - - - - - -(function() { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var Base = C_lib.Base; - var WordArray = C_lib.WordArray; - var C_algo = C.algo; - var SHA1 = C_algo.SHA1; - var HMAC = C_algo.HMAC; - - /** - * Password-Based Key Derivation Function 2 algorithm. - */ - var PBKDF2 = C_algo.PBKDF2 = Base.extend({ - /** - * Configuration options. - * - * @property {number} keySize The key size in words to generate. Default: 4 (128 bits) - * @property {Hasher} hasher The hasher to use. Default: SHA1 - * @property {number} iterations The number of iterations to perform. Default: 1 - */ - cfg: Base.extend({ - keySize: 128 / 32, - hasher: SHA1, - iterations: 1 - }), - - /** - * Initializes a newly created key derivation function. - * - * @param {Object} cfg (Optional) The configuration options to use for the derivation. - * - * @example - * - * var kdf = CryptoJS.algo.PBKDF2.create(); - * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 }); - * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 }); - */ - init: function(cfg) { - this.cfg = this.cfg.extend(cfg); - }, - - /** - * Computes the Password-Based Key Derivation Function 2. - * - * @param {WordArray|string} password The password. - * @param {WordArray|string} salt A salt. - * - * @return {WordArray} The derived key. - * - * @example - * - * var key = kdf.compute(password, salt); - */ - compute: function(password, salt) { - // Shortcut - var cfg = this.cfg; - - // Init HMAC - var hmac = HMAC.create(cfg.hasher, password); - - // Initial values - var derivedKey = WordArray.create(); - var blockIndex = WordArray.create([0x00000001]); - - // Shortcuts - var derivedKeyWords = derivedKey.words; - var blockIndexWords = blockIndex.words; - var keySize = cfg.keySize; - var iterations = cfg.iterations; - - // Generate key - while (derivedKeyWords.length < keySize) { - var block = hmac.update(salt).finalize(blockIndex); - hmac.reset(); - - // Shortcuts - var blockWords = block.words; - var blockWordsLength = blockWords.length; - - // Iterations - var intermediate = block; - for (var i = 1; i < iterations; i++) { - intermediate = hmac.finalize(intermediate); - hmac.reset(); - - // Shortcut - var intermediateWords = intermediate.words; - - // XOR intermediate with block - for (var j = 0; j < blockWordsLength; j++) { - blockWords[j] ^= intermediateWords[j]; - } - } - - derivedKey.concat(block); - blockIndexWords[0]++; - } - derivedKey.sigBytes = keySize * 4; - - return derivedKey; - } - }); - - /** - * Computes the Password-Based Key Derivation Function 2. - * - * @param {WordArray|string} password The password. - * @param {WordArray|string} salt A salt. - * @param {Object} cfg (Optional) The configuration options to use for this computation. - * - * @return {WordArray} The derived key. - * - * @static - * - * @example - * - * var key = CryptoJS.PBKDF2(password, salt); - * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 }); - * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 }); - */ - C.PBKDF2 = function(password, salt, cfg) { - return PBKDF2.create(cfg).compute(password, salt); - }; -}()); - - - - - - - - - - - - -/** - * Cipher core components. - */ -CryptoJS.lib.Cipher || (function(undefined) { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var Base = C_lib.Base; - var WordArray = C_lib.WordArray; - var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm; - var C_enc = C.enc; - var Utf8 = C_enc.Utf8; - var Base64 = C_enc.Base64; - var C_algo = C.algo; - var EvpKDF = C_algo.EvpKDF; - - /** - * Abstract base cipher template. - * - * @property {number} keySize This cipher's key size. Default: 4 (128 bits) - * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits) - * @property {number} _ENC_XFORM_MODE A constant representing encryption mode. - * @property {number} _DEC_XFORM_MODE A constant representing decryption mode. - */ - var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({ - /** - * Configuration options. - * - * @property {WordArray} iv The IV to use for this operation. - */ - cfg: Base.extend(), - - /** - * Creates this cipher in encryption mode. - * - * @param {WordArray} key The key. - * @param {Object} cfg (Optional) The configuration options to use for this operation. - * - * @return {Cipher} A cipher instance. - * - * @static - * - * @example - * - * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray }); - */ - createEncryptor: function(key, cfg) { - return this.create(this._ENC_XFORM_MODE, key, cfg); - }, - - /** - * Creates this cipher in decryption mode. - * - * @param {WordArray} key The key. - * @param {Object} cfg (Optional) The configuration options to use for this operation. - * - * @return {Cipher} A cipher instance. - * - * @static - * - * @example - * - * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray }); - */ - createDecryptor: function(key, cfg) { - return this.create(this._DEC_XFORM_MODE, key, cfg); - }, - - /** - * Initializes a newly created cipher. - * - * @param {number} xformMode Either the encryption or decryption transormation mode constant. - * @param {WordArray} key The key. - * @param {Object} cfg (Optional) The configuration options to use for this operation. - * - * @example - * - * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray }); - */ - init: function(xformMode, key, cfg) { - // Apply config defaults - this.cfg = this.cfg.extend(cfg); - - // Store transform mode and key - this._xformMode = xformMode; - this._key = key; - - // Set initial values - this.reset(); - }, - - /** - * Resets this cipher to its initial state. - * - * @example - * - * cipher.reset(); - */ - reset: function() { - // Reset data buffer - BufferedBlockAlgorithm.reset.call(this); - - // Perform concrete-cipher logic - this._doReset(); - }, - - /** - * Adds data to be encrypted or decrypted. - * - * @param {WordArray|string} dataUpdate The data to encrypt or decrypt. - * - * @return {WordArray} The data after processing. - * - * @example - * - * var encrypted = cipher.process('data'); - * var encrypted = cipher.process(wordArray); - */ - process: function(dataUpdate) { - // Append - this._append(dataUpdate); - - // Process available blocks - return this._process(); - }, - - /** - * Finalizes the encryption or decryption process. - * Note that the finalize operation is effectively a destructive, read-once operation. - * - * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt. - * - * @return {WordArray} The data after final processing. - * - * @example - * - * var encrypted = cipher.finalize(); - * var encrypted = cipher.finalize('data'); - * var encrypted = cipher.finalize(wordArray); - */ - finalize: function(dataUpdate) { - // Final data update - if (dataUpdate) { - this._append(dataUpdate); - } - - // Perform concrete-cipher logic - var finalProcessedData = this._doFinalize(); - - return finalProcessedData; - }, - - keySize: 128 / 32, - - ivSize: 128 / 32, - - _ENC_XFORM_MODE: 1, - - _DEC_XFORM_MODE: 2, - - /** - * Creates shortcut functions to a cipher's object interface. - * - * @param {Cipher} cipher The cipher to create a helper for. - * - * @return {Object} An object with encrypt and decrypt shortcut functions. - * - * @static - * - * @example - * - * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES); - */ - _createHelper: (function() { - function selectCipherStrategy(key) { - if (typeof key == 'string') { - return PasswordBasedCipher; - } else { - return SerializableCipher; - } - } - - return function(cipher) { - return { - encrypt: function(message, key, cfg) { - return selectCipherStrategy(key).encrypt(cipher, message, key, cfg); - }, - - decrypt: function(ciphertext, key, cfg) { - return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg); - } - }; - }; - }()) - }); - - /** - * Abstract base stream cipher template. - * - * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits) - */ - var StreamCipher = C_lib.StreamCipher = Cipher.extend({ - _doFinalize: function() { - // Process partial blocks - var finalProcessedBlocks = this._process(!!'flush'); - - return finalProcessedBlocks; - }, - - blockSize: 1 - }); - - /** - * Mode namespace. - */ - var C_mode = C.mode = {}; - - /** - * Abstract base block cipher mode template. - */ - var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({ - /** - * Creates this mode for encryption. - * - * @param {Cipher} cipher A block cipher instance. - * @param {Array} iv The IV words. - * - * @static - * - * @example - * - * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words); - */ - createEncryptor: function(cipher, iv) { - return this.Encryptor.create(cipher, iv); - }, - - /** - * Creates this mode for decryption. - * - * @param {Cipher} cipher A block cipher instance. - * @param {Array} iv The IV words. - * - * @static - * - * @example - * - * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words); - */ - createDecryptor: function(cipher, iv) { - return this.Decryptor.create(cipher, iv); - }, - - /** - * Initializes a newly created mode. - * - * @param {Cipher} cipher A block cipher instance. - * @param {Array} iv The IV words. - * - * @example - * - * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words); - */ - init: function(cipher, iv) { - this._cipher = cipher; - this._iv = iv; - } - }); - - /** - * Cipher Block Chaining mode. - */ - var CBC = C_mode.CBC = (function() { - /** - * Abstract base CBC mode. - */ - var CBC = BlockCipherMode.extend(); - - /** - * CBC encryptor. - */ - CBC.Encryptor = CBC.extend({ - /** - * Processes the data block at offset. - * - * @param {Array} words The data words to operate on. - * @param {number} offset The offset where the block starts. - * - * @example - * - * mode.processBlock(data.words, offset); - */ - processBlock: function(words, offset) { - // Shortcuts - var cipher = this._cipher; - var blockSize = cipher.blockSize; - - // XOR and encrypt - xorBlock.call(this, words, offset, blockSize); - cipher.encryptBlock(words, offset); - - // Remember this block to use with next block - this._prevBlock = words.slice(offset, offset + blockSize); - } - }); - - /** - * CBC decryptor. - */ - CBC.Decryptor = CBC.extend({ - /** - * Processes the data block at offset. - * - * @param {Array} words The data words to operate on. - * @param {number} offset The offset where the block starts. - * - * @example - * - * mode.processBlock(data.words, offset); - */ - processBlock: function(words, offset) { - // Shortcuts - var cipher = this._cipher; - var blockSize = cipher.blockSize; - - // Remember this block to use with next block - var thisBlock = words.slice(offset, offset + blockSize); - - // Decrypt and XOR - cipher.decryptBlock(words, offset); - xorBlock.call(this, words, offset, blockSize); - - // This block becomes the previous block - this._prevBlock = thisBlock; - } - }); - - function xorBlock(words, offset, blockSize) { - var block; - - // Shortcut - var iv = this._iv; - - // Choose mixing block - if (iv) { - block = iv; - - // Remove IV for subsequent blocks - this._iv = undefined; - } else { - block = this._prevBlock; - } - - // XOR blocks - for (var i = 0; i < blockSize; i++) { - words[offset + i] ^= block[i]; - } - } - - return CBC; - }()); - - /** - * Padding namespace. - */ - var C_pad = C.pad = {}; - - /** - * PKCS #5/7 padding strategy. - */ - var Pkcs7 = C_pad.Pkcs7 = { - /** - * Pads data using the algorithm defined in PKCS #5/7. - * - * @param {WordArray} data The data to pad. - * @param {number} blockSize The multiple that the data should be padded to. - * - * @static - * - * @example - * - * CryptoJS.pad.Pkcs7.pad(wordArray, 4); - */ - pad: function(data, blockSize) { - // Shortcut - var blockSizeBytes = blockSize * 4; - - // Count padding bytes - var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes; - - // Create padding word - var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes; - - // Create padding - var paddingWords = []; - for (var i = 0; i < nPaddingBytes; i += 4) { - paddingWords.push(paddingWord); - } - var padding = WordArray.create(paddingWords, nPaddingBytes); - - // Add padding - data.concat(padding); - }, - - /** - * Unpads data that had been padded using the algorithm defined in PKCS #5/7. - * - * @param {WordArray} data The data to unpad. - * - * @static - * - * @example - * - * CryptoJS.pad.Pkcs7.unpad(wordArray); - */ - unpad: function(data) { - // Get number of padding bytes from last byte - var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff; - - // Remove padding - data.sigBytes -= nPaddingBytes; - } - }; - - /** - * Abstract base block cipher template. - * - * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits) - */ - var BlockCipher = C_lib.BlockCipher = Cipher.extend({ - /** - * Configuration options. - * - * @property {Mode} mode The block mode to use. Default: CBC - * @property {Padding} padding The padding strategy to use. Default: Pkcs7 - */ - cfg: Cipher.cfg.extend({ - mode: CBC, - padding: Pkcs7 - }), - - reset: function() { - var modeCreator; - - // Reset cipher - Cipher.reset.call(this); - - // Shortcuts - var cfg = this.cfg; - var iv = cfg.iv; - var mode = cfg.mode; - - // Reset block mode - if (this._xformMode == this._ENC_XFORM_MODE) { - modeCreator = mode.createEncryptor; - } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ { - modeCreator = mode.createDecryptor; - // Keep at least one block in the buffer for unpadding - this._minBufferSize = 1; - } - - if (this._mode && this._mode.__creator == modeCreator) { - this._mode.init(this, iv && iv.words); - } else { - this._mode = modeCreator.call(mode, this, iv && iv.words); - this._mode.__creator = modeCreator; - } - }, - - _doProcessBlock: function(words, offset) { - this._mode.processBlock(words, offset); - }, - - _doFinalize: function() { - var finalProcessedBlocks; - - // Shortcut - var padding = this.cfg.padding; - - // Finalize - if (this._xformMode == this._ENC_XFORM_MODE) { - // Pad data - padding.pad(this._data, this.blockSize); - - // Process final blocks - finalProcessedBlocks = this._process(!!'flush'); - } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ { - // Process final blocks - finalProcessedBlocks = this._process(!!'flush'); - - // Unpad data - padding.unpad(finalProcessedBlocks); - } - - return finalProcessedBlocks; - }, - - blockSize: 128 / 32 - }); - - /** - * A collection of cipher parameters. - * - * @property {WordArray} ciphertext The raw ciphertext. - * @property {WordArray} key The key to this ciphertext. - * @property {WordArray} iv The IV used in the ciphering operation. - * @property {WordArray} salt The salt used with a key derivation function. - * @property {Cipher} algorithm The cipher algorithm. - * @property {Mode} mode The block mode used in the ciphering operation. - * @property {Padding} padding The padding scheme used in the ciphering operation. - * @property {number} blockSize The block size of the cipher. - * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string. - */ - var CipherParams = C_lib.CipherParams = Base.extend({ - /** - * Initializes a newly created cipher params object. - * - * @param {Object} cipherParams An object with any of the possible cipher parameters. - * - * @example - * - * var cipherParams = CryptoJS.lib.CipherParams.create({ - * ciphertext: ciphertextWordArray, - * key: keyWordArray, - * iv: ivWordArray, - * salt: saltWordArray, - * algorithm: CryptoJS.algo.AES, - * mode: CryptoJS.mode.CBC, - * padding: CryptoJS.pad.PKCS7, - * blockSize: 4, - * formatter: CryptoJS.format.OpenSSL - * }); - */ - init: function(cipherParams) { - this.mixIn(cipherParams); - }, - - /** - * Converts this cipher params object to a string. - * - * @param {Format} formatter (Optional) The formatting strategy to use. - * - * @return {string} The stringified cipher params. - * - * @throws Error If neither the formatter nor the default formatter is set. - * - * @example - * - * var string = cipherParams + ''; - * var string = cipherParams.toString(); - * var string = cipherParams.toString(CryptoJS.format.OpenSSL); - */ - toString: function(formatter) { - return (formatter || this.formatter).stringify(this); - } - }); - - /** - * Format namespace. - */ - var C_format = C.format = {}; - - /** - * OpenSSL formatting strategy. - */ - var OpenSSLFormatter = C_format.OpenSSL = { - /** - * Converts a cipher params object to an OpenSSL-compatible string. - * - * @param {CipherParams} cipherParams The cipher params object. - * - * @return {string} The OpenSSL-compatible string. - * - * @static - * - * @example - * - * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams); - */ - stringify: function(cipherParams) { - var wordArray; - - // Shortcuts - var ciphertext = cipherParams.ciphertext; - var salt = cipherParams.salt; - - // Format - if (salt) { - wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext); - } else { - wordArray = ciphertext; - } - - return wordArray.toString(Base64); - }, - - /** - * Converts an OpenSSL-compatible string to a cipher params object. - * - * @param {string} openSSLStr The OpenSSL-compatible string. - * - * @return {CipherParams} The cipher params object. - * - * @static - * - * @example - * - * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString); - */ - parse: function(openSSLStr) { - var salt; - - // Parse base64 - var ciphertext = Base64.parse(openSSLStr); - - // Shortcut - var ciphertextWords = ciphertext.words; - - // Test for salt - if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) { - // Extract salt - salt = WordArray.create(ciphertextWords.slice(2, 4)); - - // Remove salt from ciphertext - ciphertextWords.splice(0, 4); - ciphertext.sigBytes -= 16; - } - - return CipherParams.create({ - ciphertext: ciphertext, - salt: salt - }); - } - }; - - /** - * A cipher wrapper that returns ciphertext as a serializable cipher params object. - */ - var SerializableCipher = C_lib.SerializableCipher = Base.extend({ - /** - * Configuration options. - * - * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL - */ - cfg: Base.extend({ - format: OpenSSLFormatter - }), - - /** - * Encrypts a message. - * - * @param {Cipher} cipher The cipher algorithm to use. - * @param {WordArray|string} message The message to encrypt. - * @param {WordArray} key The key. - * @param {Object} cfg (Optional) The configuration options to use for this operation. - * - * @return {CipherParams} A cipher params object. - * - * @static - * - * @example - * - * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key); - * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv }); - * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL }); - */ - encrypt: function(cipher, message, key, cfg) { - // Apply config defaults - cfg = this.cfg.extend(cfg); - - // Encrypt - var encryptor = cipher.createEncryptor(key, cfg); - var ciphertext = encryptor.finalize(message); - - // Shortcut - var cipherCfg = encryptor.cfg; - - // Create and return serializable cipher params - return CipherParams.create({ - ciphertext: ciphertext, - key: key, - iv: cipherCfg.iv, - algorithm: cipher, - mode: cipherCfg.mode, - padding: cipherCfg.padding, - blockSize: cipher.blockSize, - formatter: cfg.format - }); - }, - - /** - * Decrypts serialized ciphertext. - * - * @param {Cipher} cipher The cipher algorithm to use. - * @param {CipherParams|string} ciphertext The ciphertext to decrypt. - * @param {WordArray} key The key. - * @param {Object} cfg (Optional) The configuration options to use for this operation. - * - * @return {WordArray} The plaintext. - * - * @static - * - * @example - * - * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL }); - * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL }); - */ - decrypt: function(cipher, ciphertext, key, cfg) { - // Apply config defaults - cfg = this.cfg.extend(cfg); - - // Convert string to CipherParams - ciphertext = this._parse(ciphertext, cfg.format); - - // Decrypt - var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext); - - return plaintext; - }, - - /** - * Converts serialized ciphertext to CipherParams, - * else assumed CipherParams already and returns ciphertext unchanged. - * - * @param {CipherParams|string} ciphertext The ciphertext. - * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext. - * - * @return {CipherParams} The unserialized ciphertext. - * - * @static - * - * @example - * - * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format); - */ - _parse: function(ciphertext, format) { - if (typeof ciphertext == 'string') { - return format.parse(ciphertext, this); - } else { - return ciphertext; - } - } - }); - - /** - * Key derivation function namespace. - */ - var C_kdf = C.kdf = {}; - - /** - * OpenSSL key derivation function. - */ - var OpenSSLKdf = C_kdf.OpenSSL = { - /** - * Derives a key and IV from a password. - * - * @param {string} password The password to derive from. - * @param {number} keySize The size in words of the key to generate. - * @param {number} ivSize The size in words of the IV to generate. - * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly. - * - * @return {CipherParams} A cipher params object with the key, IV, and salt. - * - * @static - * - * @example - * - * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32); - * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt'); - */ - execute: function(password, keySize, ivSize, salt) { - // Generate random salt - if (!salt) { - salt = WordArray.random(64 / 8); - } - - // Derive key and IV - var key = EvpKDF.create({ - keySize: keySize + ivSize - }).compute(password, salt); - - // Separate key and IV - var iv = WordArray.create(key.words.slice(keySize), ivSize * 4); - key.sigBytes = keySize * 4; - - // Return params - return CipherParams.create({ - key: key, - iv: iv, - salt: salt - }); - } - }; - - /** - * A serializable cipher wrapper that derives the key from a password, - * and returns ciphertext as a serializable cipher params object. - */ - var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({ - /** - * Configuration options. - * - * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL - */ - cfg: SerializableCipher.cfg.extend({ - kdf: OpenSSLKdf - }), - - /** - * Encrypts a message using a password. - * - * @param {Cipher} cipher The cipher algorithm to use. - * @param {WordArray|string} message The message to encrypt. - * @param {string} password The password. - * @param {Object} cfg (Optional) The configuration options to use for this operation. - * - * @return {CipherParams} A cipher params object. - * - * @static - * - * @example - * - * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password'); - * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL }); - */ - encrypt: function(cipher, message, password, cfg) { - // Apply config defaults - cfg = this.cfg.extend(cfg); - - // Derive key and other params - var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize); - - // Add IV to config - cfg.iv = derivedParams.iv; - - // Encrypt - var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg); - - // Mix in derived params - ciphertext.mixIn(derivedParams); - - return ciphertext; - }, - - /** - * Decrypts serialized ciphertext using a password. - * - * @param {Cipher} cipher The cipher algorithm to use. - * @param {CipherParams|string} ciphertext The ciphertext to decrypt. - * @param {string} password The password. - * @param {Object} cfg (Optional) The configuration options to use for this operation. - * - * @return {WordArray} The plaintext. - * - * @static - * - * @example - * - * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL }); - * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL }); - */ - decrypt: function(cipher, ciphertext, password, cfg) { - // Apply config defaults - cfg = this.cfg.extend(cfg); - - // Convert string to CipherParams - ciphertext = this._parse(ciphertext, cfg.format); - - // Derive key and other params - var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt); - - // Add IV to config - cfg.iv = derivedParams.iv; - - // Decrypt - var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg); - - return plaintext; - } - }); -}()); - - - - - - - - - -/** - * Cipher Feedback block mode. - */ -CryptoJS.mode.CFB = (function() { - var CFB = CryptoJS.lib.BlockCipherMode.extend(); - - CFB.Encryptor = CFB.extend({ - processBlock: function(words, offset) { - // Shortcuts - var cipher = this._cipher; - var blockSize = cipher.blockSize; - - generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher); - - // Remember this block to use with next block - this._prevBlock = words.slice(offset, offset + blockSize); - } - }); - - CFB.Decryptor = CFB.extend({ - processBlock: function(words, offset) { - // Shortcuts - var cipher = this._cipher; - var blockSize = cipher.blockSize; - - // Remember this block to use with next block - var thisBlock = words.slice(offset, offset + blockSize); - - generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher); - - // This block becomes the previous block - this._prevBlock = thisBlock; - } - }); - - function generateKeystreamAndEncrypt(words, offset, blockSize, cipher) { - var keystream; - - // Shortcut - var iv = this._iv; - - // Generate keystream - if (iv) { - keystream = iv.slice(0); - - // Remove IV for subsequent blocks - this._iv = undefined; - } else { - keystream = this._prevBlock; - } - cipher.encryptBlock(keystream, 0); - - // Encrypt - for (var i = 0; i < blockSize; i++) { - words[offset + i] ^= keystream[i]; - } - } - - return CFB; -}()); - - - - - - - - -/** - * Counter block mode. - */ -CryptoJS.mode.CTR = (function() { - var CTR = CryptoJS.lib.BlockCipherMode.extend(); - - var Encryptor = CTR.Encryptor = CTR.extend({ - processBlock: function(words, offset) { - // Shortcuts - var cipher = this._cipher - var blockSize = cipher.blockSize; - var iv = this._iv; - var counter = this._counter; - - // Generate keystream - if (iv) { - counter = this._counter = iv.slice(0); - - // Remove IV for subsequent blocks - this._iv = undefined; - } - var keystream = counter.slice(0); - cipher.encryptBlock(keystream, 0); - - // Increment counter - counter[blockSize - 1] = (counter[blockSize - 1] + 1) | 0 - - // Encrypt - for (var i = 0; i < blockSize; i++) { - words[offset + i] ^= keystream[i]; - } - } - }); - - CTR.Decryptor = Encryptor; - - return CTR; -}()); - - - - - - -/** @preserve - * Counter block mode compatible with Dr Brian Gladman fileenc.c - * derived from CryptoJS.mode.CTR - * Jan Hruby jhruby.web@gmail.com - */ -CryptoJS.mode.CTRGladman = (function() { - var CTRGladman = CryptoJS.lib.BlockCipherMode.extend(); - - function incWord(word) { - if (((word >> 24) & 0xff) === 0xff) { //overflow - var b1 = (word >> 16) & 0xff; - var b2 = (word >> 8) & 0xff; - var b3 = word & 0xff; - - if (b1 === 0xff) // overflow b1 - { - b1 = 0; - if (b2 === 0xff) { - b2 = 0; - if (b3 === 0xff) { - b3 = 0; - } else { - ++b3; - } - } else { - ++b2; - } - } else { - ++b1; - } - - word = 0; - word += (b1 << 16); - word += (b2 << 8); - word += b3; - } else { - word += (0x01 << 24); - } - return word; - } - - function incCounter(counter) { - if ((counter[0] = incWord(counter[0])) === 0) { - // encr_data in fileenc.c from Dr Brian Gladman's counts only with DWORD j < 8 - counter[1] = incWord(counter[1]); - } - return counter; - } - - var Encryptor = CTRGladman.Encryptor = CTRGladman.extend({ - processBlock: function(words, offset) { - // Shortcuts - var cipher = this._cipher - var blockSize = cipher.blockSize; - var iv = this._iv; - var counter = this._counter; - - // Generate keystream - if (iv) { - counter = this._counter = iv.slice(0); - - // Remove IV for subsequent blocks - this._iv = undefined; - } - - incCounter(counter); - - var keystream = counter.slice(0); - cipher.encryptBlock(keystream, 0); - - // Encrypt - for (var i = 0; i < blockSize; i++) { - words[offset + i] ^= keystream[i]; - } - } - }); - - CTRGladman.Decryptor = Encryptor; - - return CTRGladman; -}()); - - - - - - - - - -/** - * Output Feedback block mode. - */ -CryptoJS.mode.OFB = (function() { - var OFB = CryptoJS.lib.BlockCipherMode.extend(); - - var Encryptor = OFB.Encryptor = OFB.extend({ - processBlock: function(words, offset) { - // Shortcuts - var cipher = this._cipher - var blockSize = cipher.blockSize; - var iv = this._iv; - var keystream = this._keystream; - - // Generate keystream - if (iv) { - keystream = this._keystream = iv.slice(0); - - // Remove IV for subsequent blocks - this._iv = undefined; - } - cipher.encryptBlock(keystream, 0); - - // Encrypt - for (var i = 0; i < blockSize; i++) { - words[offset + i] ^= keystream[i]; - } - } - }); - - OFB.Decryptor = Encryptor; - - return OFB; -}()); - - - - - - - - -/** - * Electronic Codebook block mode. - */ -CryptoJS.mode.ECB = (function() { - var ECB = CryptoJS.lib.BlockCipherMode.extend(); - - ECB.Encryptor = ECB.extend({ - processBlock: function(words, offset) { - this._cipher.encryptBlock(words, offset); - } - }); - - ECB.Decryptor = ECB.extend({ - processBlock: function(words, offset) { - this._cipher.decryptBlock(words, offset); - } - }); - - return ECB; -}()); - - - - - - - - - -/** - * ANSI X.923 padding strategy. - */ -CryptoJS.pad.AnsiX923 = { - pad: function(data, blockSize) { - // Shortcuts - var dataSigBytes = data.sigBytes; - var blockSizeBytes = blockSize * 4; - - // Count padding bytes - var nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes; - - // Compute last byte position - var lastBytePos = dataSigBytes + nPaddingBytes - 1; - - // Pad - data.clamp(); - data.words[lastBytePos >>> 2] |= nPaddingBytes << (24 - (lastBytePos % 4) * 8); - data.sigBytes += nPaddingBytes; - }, - - unpad: function(data) { - // Get number of padding bytes from last byte - var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff; - - // Remove padding - data.sigBytes -= nPaddingBytes; - } -}; - - - - - - - - -/** - * ISO 10126 padding strategy. - */ -CryptoJS.pad.Iso10126 = { - pad: function(data, blockSize) { - // Shortcut - var blockSizeBytes = blockSize * 4; - - // Count padding bytes - var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes; - - // Pad - data.concat(CryptoJS.lib.WordArray.random(nPaddingBytes - 1)). - concat(CryptoJS.lib.WordArray.create([nPaddingBytes << 24], 1)); - }, - - unpad: function(data) { - // Get number of padding bytes from last byte - var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff; - - // Remove padding - data.sigBytes -= nPaddingBytes; - } -}; - - - - - - -/** - * ISO/IEC 9797-1 Padding Method 2. - */ -CryptoJS.pad.Iso97971 = { - pad: function(data, blockSize) { - // Add 0x80 byte - data.concat(CryptoJS.lib.WordArray.create([0x80000000], 1)); - - // Zero pad the rest - CryptoJS.pad.ZeroPadding.pad(data, blockSize); - }, - - unpad: function(data) { - // Remove zero padding - CryptoJS.pad.ZeroPadding.unpad(data); - - // Remove one more byte -- the 0x80 byte - data.sigBytes--; - } -}; - - - - - - - - - -/** - * Zero padding strategy. - */ -CryptoJS.pad.ZeroPadding = { - pad: function(data, blockSize) { - // Shortcut - var blockSizeBytes = blockSize * 4; - - // Pad - data.clamp(); - data.sigBytes += blockSizeBytes - ((data.sigBytes % blockSizeBytes) || blockSizeBytes); - }, - - unpad: function(data) { - // Shortcut - var dataWords = data.words; - - // Unpad - var i = data.sigBytes - 1; - for (var i = data.sigBytes - 1; i >= 0; i--) { - if (((dataWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff)) { - data.sigBytes = i + 1; - break; - } - } - } -}; - - - - - - - -/** - * A noop padding strategy. - */ -CryptoJS.pad.NoPadding = { - pad: function() {}, - - unpad: function() {} -}; - - -(function(undefined) { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var CipherParams = C_lib.CipherParams; - var C_enc = C.enc; - var Hex = C_enc.Hex; - var C_format = C.format; - - var HexFormatter = C_format.Hex = { - /** - * Converts the ciphertext of a cipher params object to a hexadecimally encoded string. - * - * @param {CipherParams} cipherParams The cipher params object. - * - * @return {string} The hexadecimally encoded string. - * - * @static - * - * @example - * - * var hexString = CryptoJS.format.Hex.stringify(cipherParams); - */ - stringify: function(cipherParams) { - return cipherParams.ciphertext.toString(Hex); - }, - - /** - * Converts a hexadecimally encoded ciphertext string to a cipher params object. - * - * @param {string} input The hexadecimally encoded string. - * - * @return {CipherParams} The cipher params object. - * - * @static - * - * @example - * - * var cipherParams = CryptoJS.format.Hex.parse(hexString); - */ - parse: function(input) { - var ciphertext = Hex.parse(input); - return CipherParams.create({ - ciphertext: ciphertext - }); - } - }; -}()); - - - - - - - - - -(function() { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var BlockCipher = C_lib.BlockCipher; - var C_algo = C.algo; - - // Lookup tables - var SBOX = []; - var INV_SBOX = []; - var SUB_MIX_0 = []; - var SUB_MIX_1 = []; - var SUB_MIX_2 = []; - var SUB_MIX_3 = []; - var INV_SUB_MIX_0 = []; - var INV_SUB_MIX_1 = []; - var INV_SUB_MIX_2 = []; - var INV_SUB_MIX_3 = []; - - // Compute lookup tables - (function() { - // Compute double table - var d = []; - for (var i = 0; i < 256; i++) { - if (i < 128) { - d[i] = i << 1; - } else { - d[i] = (i << 1) ^ 0x11b; - } - } - - // Walk GF(2^8) - var x = 0; - var xi = 0; - for (var i = 0; i < 256; i++) { - // Compute sbox - var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4); - sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63; - SBOX[x] = sx; - INV_SBOX[sx] = x; - - // Compute multiplication - var x2 = d[x]; - var x4 = d[x2]; - var x8 = d[x4]; - - // Compute sub bytes, mix columns tables - var t = (d[sx] * 0x101) ^ (sx * 0x1010100); - SUB_MIX_0[x] = (t << 24) | (t >>> 8); - SUB_MIX_1[x] = (t << 16) | (t >>> 16); - SUB_MIX_2[x] = (t << 8) | (t >>> 24); - SUB_MIX_3[x] = t; - - // Compute inv sub bytes, inv mix columns tables - var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100); - INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8); - INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16); - INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24); - INV_SUB_MIX_3[sx] = t; - - // Compute next counter - if (!x) { - x = xi = 1; - } else { - x = x2 ^ d[d[d[x8 ^ x2]]]; - xi ^= d[d[xi]]; - } - } - }()); - - // Precomputed Rcon lookup - var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]; - - /** - * AES block cipher algorithm. - */ - var AES = C_algo.AES = BlockCipher.extend({ - _doReset: function() { - var t; - - // Skip reset of nRounds has been set before and key did not change - if (this._nRounds && this._keyPriorReset === this._key) { - return; - } - - // Shortcuts - var key = this._keyPriorReset = this._key; - var keyWords = key.words; - var keySize = key.sigBytes / 4; - - // Compute number of rounds - var nRounds = this._nRounds = keySize + 6; - - // Compute number of key schedule rows - var ksRows = (nRounds + 1) * 4; - - // Compute key schedule - var keySchedule = this._keySchedule = []; - for (var ksRow = 0; ksRow < ksRows; ksRow++) { - if (ksRow < keySize) { - keySchedule[ksRow] = keyWords[ksRow]; - } else { - t = keySchedule[ksRow - 1]; - - if (!(ksRow % keySize)) { - // Rot word - t = (t << 8) | (t >>> 24); - - // Sub word - t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff]; - - // Mix Rcon - t ^= RCON[(ksRow / keySize) | 0] << 24; - } else if (keySize > 6 && ksRow % keySize == 4) { - // Sub word - t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff]; - } - - keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t; - } - } - - // Compute inv key schedule - var invKeySchedule = this._invKeySchedule = []; - for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) { - var ksRow = ksRows - invKsRow; - - if (invKsRow % 4) { - var t = keySchedule[ksRow]; - } else { - var t = keySchedule[ksRow - 4]; - } - - if (invKsRow < 4 || ksRow <= 4) { - invKeySchedule[invKsRow] = t; - } else { - invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^ - INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]]; - } - } - }, - - encryptBlock: function(M, offset) { - this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX); - }, - - decryptBlock: function(M, offset) { - // Swap 2nd and 4th rows - var t = M[offset + 1]; - M[offset + 1] = M[offset + 3]; - M[offset + 3] = t; - - this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX); - - // Inv swap 2nd and 4th rows - var t = M[offset + 1]; - M[offset + 1] = M[offset + 3]; - M[offset + 3] = t; - }, - - _doCryptBlock: function(M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) { - // Shortcut - var nRounds = this._nRounds; - - // Get input, add round key - var s0 = M[offset] ^ keySchedule[0]; - var s1 = M[offset + 1] ^ keySchedule[1]; - var s2 = M[offset + 2] ^ keySchedule[2]; - var s3 = M[offset + 3] ^ keySchedule[3]; - - // Key schedule row counter - var ksRow = 4; - - // Rounds - for (var round = 1; round < nRounds; round++) { - // Shift rows, sub bytes, mix columns, add round key - var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++]; - var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++]; - var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++]; - var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++]; - - // Update state - s0 = t0; - s1 = t1; - s2 = t2; - s3 = t3; - } - - // Shift rows, sub bytes, add round key - var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++]; - var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++]; - var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++]; - var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]; - - // Set output - M[offset] = t0; - M[offset + 1] = t1; - M[offset + 2] = t2; - M[offset + 3] = t3; - }, - - keySize: 256 / 32 - }); - - /** - * Shortcut functions to the cipher's object interface. - * - * @example - * - * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg); - * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg); - */ - C.AES = BlockCipher._createHelper(AES); -}()); - - - - - - -(function() { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var WordArray = C_lib.WordArray; - var BlockCipher = C_lib.BlockCipher; - var C_algo = C.algo; - - // Permuted Choice 1 constants - var PC1 = [ - 57, 49, 41, 33, 25, 17, 9, 1, - 58, 50, 42, 34, 26, 18, 10, 2, - 59, 51, 43, 35, 27, 19, 11, 3, - 60, 52, 44, 36, 63, 55, 47, 39, - 31, 23, 15, 7, 62, 54, 46, 38, - 30, 22, 14, 6, 61, 53, 45, 37, - 29, 21, 13, 5, 28, 20, 12, 4 - ]; - - // Permuted Choice 2 constants - var PC2 = [ - 14, 17, 11, 24, 1, 5, - 3, 28, 15, 6, 21, 10, - 23, 19, 12, 4, 26, 8, - 16, 7, 27, 20, 13, 2, - 41, 52, 31, 37, 47, 55, - 30, 40, 51, 45, 33, 48, - 44, 49, 39, 56, 34, 53, - 46, 42, 50, 36, 29, 32 - ]; - - // Cumulative bit shift constants - var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28]; - - // SBOXes and round permutation constants - var SBOX_P = [{ - 0x0: 0x808200, - 0x10000000: 0x8000, - 0x20000000: 0x808002, - 0x30000000: 0x2, - 0x40000000: 0x200, - 0x50000000: 0x808202, - 0x60000000: 0x800202, - 0x70000000: 0x800000, - 0x80000000: 0x202, - 0x90000000: 0x800200, - 0xa0000000: 0x8200, - 0xb0000000: 0x808000, - 0xc0000000: 0x8002, - 0xd0000000: 0x800002, - 0xe0000000: 0x0, - 0xf0000000: 0x8202, - 0x8000000: 0x0, - 0x18000000: 0x808202, - 0x28000000: 0x8202, - 0x38000000: 0x8000, - 0x48000000: 0x808200, - 0x58000000: 0x200, - 0x68000000: 0x808002, - 0x78000000: 0x2, - 0x88000000: 0x800200, - 0x98000000: 0x8200, - 0xa8000000: 0x808000, - 0xb8000000: 0x800202, - 0xc8000000: 0x800002, - 0xd8000000: 0x8002, - 0xe8000000: 0x202, - 0xf8000000: 0x800000, - 0x1: 0x8000, - 0x10000001: 0x2, - 0x20000001: 0x808200, - 0x30000001: 0x800000, - 0x40000001: 0x808002, - 0x50000001: 0x8200, - 0x60000001: 0x200, - 0x70000001: 0x800202, - 0x80000001: 0x808202, - 0x90000001: 0x808000, - 0xa0000001: 0x800002, - 0xb0000001: 0x8202, - 0xc0000001: 0x202, - 0xd0000001: 0x800200, - 0xe0000001: 0x8002, - 0xf0000001: 0x0, - 0x8000001: 0x808202, - 0x18000001: 0x808000, - 0x28000001: 0x800000, - 0x38000001: 0x200, - 0x48000001: 0x8000, - 0x58000001: 0x800002, - 0x68000001: 0x2, - 0x78000001: 0x8202, - 0x88000001: 0x8002, - 0x98000001: 0x800202, - 0xa8000001: 0x202, - 0xb8000001: 0x808200, - 0xc8000001: 0x800200, - 0xd8000001: 0x0, - 0xe8000001: 0x8200, - 0xf8000001: 0x808002 - }, - { - 0x0: 0x40084010, - 0x1000000: 0x4000, - 0x2000000: 0x80000, - 0x3000000: 0x40080010, - 0x4000000: 0x40000010, - 0x5000000: 0x40084000, - 0x6000000: 0x40004000, - 0x7000000: 0x10, - 0x8000000: 0x84000, - 0x9000000: 0x40004010, - 0xa000000: 0x40000000, - 0xb000000: 0x84010, - 0xc000000: 0x80010, - 0xd000000: 0x0, - 0xe000000: 0x4010, - 0xf000000: 0x40080000, - 0x800000: 0x40004000, - 0x1800000: 0x84010, - 0x2800000: 0x10, - 0x3800000: 0x40004010, - 0x4800000: 0x40084010, - 0x5800000: 0x40000000, - 0x6800000: 0x80000, - 0x7800000: 0x40080010, - 0x8800000: 0x80010, - 0x9800000: 0x0, - 0xa800000: 0x4000, - 0xb800000: 0x40080000, - 0xc800000: 0x40000010, - 0xd800000: 0x84000, - 0xe800000: 0x40084000, - 0xf800000: 0x4010, - 0x10000000: 0x0, - 0x11000000: 0x40080010, - 0x12000000: 0x40004010, - 0x13000000: 0x40084000, - 0x14000000: 0x40080000, - 0x15000000: 0x10, - 0x16000000: 0x84010, - 0x17000000: 0x4000, - 0x18000000: 0x4010, - 0x19000000: 0x80000, - 0x1a000000: 0x80010, - 0x1b000000: 0x40000010, - 0x1c000000: 0x84000, - 0x1d000000: 0x40004000, - 0x1e000000: 0x40000000, - 0x1f000000: 0x40084010, - 0x10800000: 0x84010, - 0x11800000: 0x80000, - 0x12800000: 0x40080000, - 0x13800000: 0x4000, - 0x14800000: 0x40004000, - 0x15800000: 0x40084010, - 0x16800000: 0x10, - 0x17800000: 0x40000000, - 0x18800000: 0x40084000, - 0x19800000: 0x40000010, - 0x1a800000: 0x40004010, - 0x1b800000: 0x80010, - 0x1c800000: 0x0, - 0x1d800000: 0x4010, - 0x1e800000: 0x40080010, - 0x1f800000: 0x84000 - }, - { - 0x0: 0x104, - 0x100000: 0x0, - 0x200000: 0x4000100, - 0x300000: 0x10104, - 0x400000: 0x10004, - 0x500000: 0x4000004, - 0x600000: 0x4010104, - 0x700000: 0x4010000, - 0x800000: 0x4000000, - 0x900000: 0x4010100, - 0xa00000: 0x10100, - 0xb00000: 0x4010004, - 0xc00000: 0x4000104, - 0xd00000: 0x10000, - 0xe00000: 0x4, - 0xf00000: 0x100, - 0x80000: 0x4010100, - 0x180000: 0x4010004, - 0x280000: 0x0, - 0x380000: 0x4000100, - 0x480000: 0x4000004, - 0x580000: 0x10000, - 0x680000: 0x10004, - 0x780000: 0x104, - 0x880000: 0x4, - 0x980000: 0x100, - 0xa80000: 0x4010000, - 0xb80000: 0x10104, - 0xc80000: 0x10100, - 0xd80000: 0x4000104, - 0xe80000: 0x4010104, - 0xf80000: 0x4000000, - 0x1000000: 0x4010100, - 0x1100000: 0x10004, - 0x1200000: 0x10000, - 0x1300000: 0x4000100, - 0x1400000: 0x100, - 0x1500000: 0x4010104, - 0x1600000: 0x4000004, - 0x1700000: 0x0, - 0x1800000: 0x4000104, - 0x1900000: 0x4000000, - 0x1a00000: 0x4, - 0x1b00000: 0x10100, - 0x1c00000: 0x4010000, - 0x1d00000: 0x104, - 0x1e00000: 0x10104, - 0x1f00000: 0x4010004, - 0x1080000: 0x4000000, - 0x1180000: 0x104, - 0x1280000: 0x4010100, - 0x1380000: 0x0, - 0x1480000: 0x10004, - 0x1580000: 0x4000100, - 0x1680000: 0x100, - 0x1780000: 0x4010004, - 0x1880000: 0x10000, - 0x1980000: 0x4010104, - 0x1a80000: 0x10104, - 0x1b80000: 0x4000004, - 0x1c80000: 0x4000104, - 0x1d80000: 0x4010000, - 0x1e80000: 0x4, - 0x1f80000: 0x10100 - }, - { - 0x0: 0x80401000, - 0x10000: 0x80001040, - 0x20000: 0x401040, - 0x30000: 0x80400000, - 0x40000: 0x0, - 0x50000: 0x401000, - 0x60000: 0x80000040, - 0x70000: 0x400040, - 0x80000: 0x80000000, - 0x90000: 0x400000, - 0xa0000: 0x40, - 0xb0000: 0x80001000, - 0xc0000: 0x80400040, - 0xd0000: 0x1040, - 0xe0000: 0x1000, - 0xf0000: 0x80401040, - 0x8000: 0x80001040, - 0x18000: 0x40, - 0x28000: 0x80400040, - 0x38000: 0x80001000, - 0x48000: 0x401000, - 0x58000: 0x80401040, - 0x68000: 0x0, - 0x78000: 0x80400000, - 0x88000: 0x1000, - 0x98000: 0x80401000, - 0xa8000: 0x400000, - 0xb8000: 0x1040, - 0xc8000: 0x80000000, - 0xd8000: 0x400040, - 0xe8000: 0x401040, - 0xf8000: 0x80000040, - 0x100000: 0x400040, - 0x110000: 0x401000, - 0x120000: 0x80000040, - 0x130000: 0x0, - 0x140000: 0x1040, - 0x150000: 0x80400040, - 0x160000: 0x80401000, - 0x170000: 0x80001040, - 0x180000: 0x80401040, - 0x190000: 0x80000000, - 0x1a0000: 0x80400000, - 0x1b0000: 0x401040, - 0x1c0000: 0x80001000, - 0x1d0000: 0x400000, - 0x1e0000: 0x40, - 0x1f0000: 0x1000, - 0x108000: 0x80400000, - 0x118000: 0x80401040, - 0x128000: 0x0, - 0x138000: 0x401000, - 0x148000: 0x400040, - 0x158000: 0x80000000, - 0x168000: 0x80001040, - 0x178000: 0x40, - 0x188000: 0x80000040, - 0x198000: 0x1000, - 0x1a8000: 0x80001000, - 0x1b8000: 0x80400040, - 0x1c8000: 0x1040, - 0x1d8000: 0x80401000, - 0x1e8000: 0x400000, - 0x1f8000: 0x401040 - }, - { - 0x0: 0x80, - 0x1000: 0x1040000, - 0x2000: 0x40000, - 0x3000: 0x20000000, - 0x4000: 0x20040080, - 0x5000: 0x1000080, - 0x6000: 0x21000080, - 0x7000: 0x40080, - 0x8000: 0x1000000, - 0x9000: 0x20040000, - 0xa000: 0x20000080, - 0xb000: 0x21040080, - 0xc000: 0x21040000, - 0xd000: 0x0, - 0xe000: 0x1040080, - 0xf000: 0x21000000, - 0x800: 0x1040080, - 0x1800: 0x21000080, - 0x2800: 0x80, - 0x3800: 0x1040000, - 0x4800: 0x40000, - 0x5800: 0x20040080, - 0x6800: 0x21040000, - 0x7800: 0x20000000, - 0x8800: 0x20040000, - 0x9800: 0x0, - 0xa800: 0x21040080, - 0xb800: 0x1000080, - 0xc800: 0x20000080, - 0xd800: 0x21000000, - 0xe800: 0x1000000, - 0xf800: 0x40080, - 0x10000: 0x40000, - 0x11000: 0x80, - 0x12000: 0x20000000, - 0x13000: 0x21000080, - 0x14000: 0x1000080, - 0x15000: 0x21040000, - 0x16000: 0x20040080, - 0x17000: 0x1000000, - 0x18000: 0x21040080, - 0x19000: 0x21000000, - 0x1a000: 0x1040000, - 0x1b000: 0x20040000, - 0x1c000: 0x40080, - 0x1d000: 0x20000080, - 0x1e000: 0x0, - 0x1f000: 0x1040080, - 0x10800: 0x21000080, - 0x11800: 0x1000000, - 0x12800: 0x1040000, - 0x13800: 0x20040080, - 0x14800: 0x20000000, - 0x15800: 0x1040080, - 0x16800: 0x80, - 0x17800: 0x21040000, - 0x18800: 0x40080, - 0x19800: 0x21040080, - 0x1a800: 0x0, - 0x1b800: 0x21000000, - 0x1c800: 0x1000080, - 0x1d800: 0x40000, - 0x1e800: 0x20040000, - 0x1f800: 0x20000080 - }, - { - 0x0: 0x10000008, - 0x100: 0x2000, - 0x200: 0x10200000, - 0x300: 0x10202008, - 0x400: 0x10002000, - 0x500: 0x200000, - 0x600: 0x200008, - 0x700: 0x10000000, - 0x800: 0x0, - 0x900: 0x10002008, - 0xa00: 0x202000, - 0xb00: 0x8, - 0xc00: 0x10200008, - 0xd00: 0x202008, - 0xe00: 0x2008, - 0xf00: 0x10202000, - 0x80: 0x10200000, - 0x180: 0x10202008, - 0x280: 0x8, - 0x380: 0x200000, - 0x480: 0x202008, - 0x580: 0x10000008, - 0x680: 0x10002000, - 0x780: 0x2008, - 0x880: 0x200008, - 0x980: 0x2000, - 0xa80: 0x10002008, - 0xb80: 0x10200008, - 0xc80: 0x0, - 0xd80: 0x10202000, - 0xe80: 0x202000, - 0xf80: 0x10000000, - 0x1000: 0x10002000, - 0x1100: 0x10200008, - 0x1200: 0x10202008, - 0x1300: 0x2008, - 0x1400: 0x200000, - 0x1500: 0x10000000, - 0x1600: 0x10000008, - 0x1700: 0x202000, - 0x1800: 0x202008, - 0x1900: 0x0, - 0x1a00: 0x8, - 0x1b00: 0x10200000, - 0x1c00: 0x2000, - 0x1d00: 0x10002008, - 0x1e00: 0x10202000, - 0x1f00: 0x200008, - 0x1080: 0x8, - 0x1180: 0x202000, - 0x1280: 0x200000, - 0x1380: 0x10000008, - 0x1480: 0x10002000, - 0x1580: 0x2008, - 0x1680: 0x10202008, - 0x1780: 0x10200000, - 0x1880: 0x10202000, - 0x1980: 0x10200008, - 0x1a80: 0x2000, - 0x1b80: 0x202008, - 0x1c80: 0x200008, - 0x1d80: 0x0, - 0x1e80: 0x10000000, - 0x1f80: 0x10002008 - }, - { - 0x0: 0x100000, - 0x10: 0x2000401, - 0x20: 0x400, - 0x30: 0x100401, - 0x40: 0x2100401, - 0x50: 0x0, - 0x60: 0x1, - 0x70: 0x2100001, - 0x80: 0x2000400, - 0x90: 0x100001, - 0xa0: 0x2000001, - 0xb0: 0x2100400, - 0xc0: 0x2100000, - 0xd0: 0x401, - 0xe0: 0x100400, - 0xf0: 0x2000000, - 0x8: 0x2100001, - 0x18: 0x0, - 0x28: 0x2000401, - 0x38: 0x2100400, - 0x48: 0x100000, - 0x58: 0x2000001, - 0x68: 0x2000000, - 0x78: 0x401, - 0x88: 0x100401, - 0x98: 0x2000400, - 0xa8: 0x2100000, - 0xb8: 0x100001, - 0xc8: 0x400, - 0xd8: 0x2100401, - 0xe8: 0x1, - 0xf8: 0x100400, - 0x100: 0x2000000, - 0x110: 0x100000, - 0x120: 0x2000401, - 0x130: 0x2100001, - 0x140: 0x100001, - 0x150: 0x2000400, - 0x160: 0x2100400, - 0x170: 0x100401, - 0x180: 0x401, - 0x190: 0x2100401, - 0x1a0: 0x100400, - 0x1b0: 0x1, - 0x1c0: 0x0, - 0x1d0: 0x2100000, - 0x1e0: 0x2000001, - 0x1f0: 0x400, - 0x108: 0x100400, - 0x118: 0x2000401, - 0x128: 0x2100001, - 0x138: 0x1, - 0x148: 0x2000000, - 0x158: 0x100000, - 0x168: 0x401, - 0x178: 0x2100400, - 0x188: 0x2000001, - 0x198: 0x2100000, - 0x1a8: 0x0, - 0x1b8: 0x2100401, - 0x1c8: 0x100401, - 0x1d8: 0x400, - 0x1e8: 0x2000400, - 0x1f8: 0x100001 - }, - { - 0x0: 0x8000820, - 0x1: 0x20000, - 0x2: 0x8000000, - 0x3: 0x20, - 0x4: 0x20020, - 0x5: 0x8020820, - 0x6: 0x8020800, - 0x7: 0x800, - 0x8: 0x8020000, - 0x9: 0x8000800, - 0xa: 0x20800, - 0xb: 0x8020020, - 0xc: 0x820, - 0xd: 0x0, - 0xe: 0x8000020, - 0xf: 0x20820, - 0x80000000: 0x800, - 0x80000001: 0x8020820, - 0x80000002: 0x8000820, - 0x80000003: 0x8000000, - 0x80000004: 0x8020000, - 0x80000005: 0x20800, - 0x80000006: 0x20820, - 0x80000007: 0x20, - 0x80000008: 0x8000020, - 0x80000009: 0x820, - 0x8000000a: 0x20020, - 0x8000000b: 0x8020800, - 0x8000000c: 0x0, - 0x8000000d: 0x8020020, - 0x8000000e: 0x8000800, - 0x8000000f: 0x20000, - 0x10: 0x20820, - 0x11: 0x8020800, - 0x12: 0x20, - 0x13: 0x800, - 0x14: 0x8000800, - 0x15: 0x8000020, - 0x16: 0x8020020, - 0x17: 0x20000, - 0x18: 0x0, - 0x19: 0x20020, - 0x1a: 0x8020000, - 0x1b: 0x8000820, - 0x1c: 0x8020820, - 0x1d: 0x20800, - 0x1e: 0x820, - 0x1f: 0x8000000, - 0x80000010: 0x20000, - 0x80000011: 0x800, - 0x80000012: 0x8020020, - 0x80000013: 0x20820, - 0x80000014: 0x20, - 0x80000015: 0x8020000, - 0x80000016: 0x8000000, - 0x80000017: 0x8000820, - 0x80000018: 0x8020820, - 0x80000019: 0x8000020, - 0x8000001a: 0x8000800, - 0x8000001b: 0x0, - 0x8000001c: 0x20800, - 0x8000001d: 0x820, - 0x8000001e: 0x20020, - 0x8000001f: 0x8020800 - } - ]; - - // Masks that select the SBOX input - var SBOX_MASK = [ - 0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000, - 0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f - ]; - - /** - * DES block cipher algorithm. - */ - var DES = C_algo.DES = BlockCipher.extend({ - _doReset: function() { - // Shortcuts - var key = this._key; - var keyWords = key.words; - - // Select 56 bits according to PC1 - var keyBits = []; - for (var i = 0; i < 56; i++) { - var keyBitPos = PC1[i] - 1; - keyBits[i] = (keyWords[keyBitPos >>> 5] >>> (31 - keyBitPos % 32)) & 1; - } - - // Assemble 16 subkeys - var subKeys = this._subKeys = []; - for (var nSubKey = 0; nSubKey < 16; nSubKey++) { - // Create subkey - var subKey = subKeys[nSubKey] = []; - - // Shortcut - var bitShift = BIT_SHIFTS[nSubKey]; - - // Select 48 bits according to PC2 - for (var i = 0; i < 24; i++) { - // Select from the left 28 key bits - subKey[(i / 6) | 0] |= keyBits[((PC2[i] - 1) + bitShift) % 28] << (31 - i % 6); - - // Select from the right 28 key bits - subKey[4 + ((i / 6) | 0)] |= keyBits[28 + (((PC2[i + 24] - 1) + bitShift) % 28)] << (31 - i % 6); - } - - // Since each subkey is applied to an expanded 32-bit input, - // the subkey can be broken into 8 values scaled to 32-bits, - // which allows the key to be used without expansion - subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31); - for (var i = 1; i < 7; i++) { - subKey[i] = subKey[i] >>> ((i - 1) * 4 + 3); - } - subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27); - } - - // Compute inverse subkeys - var invSubKeys = this._invSubKeys = []; - for (var i = 0; i < 16; i++) { - invSubKeys[i] = subKeys[15 - i]; - } - }, - - encryptBlock: function(M, offset) { - this._doCryptBlock(M, offset, this._subKeys); - }, - - decryptBlock: function(M, offset) { - this._doCryptBlock(M, offset, this._invSubKeys); - }, - - _doCryptBlock: function(M, offset, subKeys) { - // Get input - this._lBlock = M[offset]; - this._rBlock = M[offset + 1]; - - // Initial permutation - exchangeLR.call(this, 4, 0x0f0f0f0f); - exchangeLR.call(this, 16, 0x0000ffff); - exchangeRL.call(this, 2, 0x33333333); - exchangeRL.call(this, 8, 0x00ff00ff); - exchangeLR.call(this, 1, 0x55555555); - - // Rounds - for (var round = 0; round < 16; round++) { - // Shortcuts - var subKey = subKeys[round]; - var lBlock = this._lBlock; - var rBlock = this._rBlock; - - // Feistel function - var f = 0; - for (var i = 0; i < 8; i++) { - f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0]; - } - this._lBlock = rBlock; - this._rBlock = lBlock ^ f; - } - - // Undo swap from last round - var t = this._lBlock; - this._lBlock = this._rBlock; - this._rBlock = t; - - // Final permutation - exchangeLR.call(this, 1, 0x55555555); - exchangeRL.call(this, 8, 0x00ff00ff); - exchangeRL.call(this, 2, 0x33333333); - exchangeLR.call(this, 16, 0x0000ffff); - exchangeLR.call(this, 4, 0x0f0f0f0f); - - // Set output - M[offset] = this._lBlock; - M[offset + 1] = this._rBlock; - }, - - keySize: 64 / 32, - - ivSize: 64 / 32, - - blockSize: 64 / 32 - }); - - // Swap bits across the left and right words - function exchangeLR(offset, mask) { - var t = ((this._lBlock >>> offset) ^ this._rBlock) & mask; - this._rBlock ^= t; - this._lBlock ^= t << offset; - } - - function exchangeRL(offset, mask) { - var t = ((this._rBlock >>> offset) ^ this._lBlock) & mask; - this._lBlock ^= t; - this._rBlock ^= t << offset; - } - - /** - * Shortcut functions to the cipher's object interface. - * - * @example - * - * var ciphertext = CryptoJS.DES.encrypt(message, key, cfg); - * var plaintext = CryptoJS.DES.decrypt(ciphertext, key, cfg); - */ - C.DES = BlockCipher._createHelper(DES); - - /** - * Triple-DES block cipher algorithm. - */ - var TripleDES = C_algo.TripleDES = BlockCipher.extend({ - _doReset: function() { - // Shortcuts - var key = this._key; - var keyWords = key.words; - // Make sure the key length is valid (64, 128 or >= 192 bit) - if (keyWords.length !== 2 && keyWords.length !== 4 && keyWords.length < 6) { - throw new Error('Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192.'); - } - - // Extend the key according to the keying options defined in 3DES standard - var key1 = keyWords.slice(0, 2); - var key2 = keyWords.length < 4 ? keyWords.slice(0, 2) : keyWords.slice(2, 4); - var key3 = keyWords.length < 6 ? keyWords.slice(0, 2) : keyWords.slice(4, 6); - - // Create DES instances - this._des1 = DES.createEncryptor(WordArray.create(key1)); - this._des2 = DES.createEncryptor(WordArray.create(key2)); - this._des3 = DES.createEncryptor(WordArray.create(key3)); - }, - - encryptBlock: function(M, offset) { - this._des1.encryptBlock(M, offset); - this._des2.decryptBlock(M, offset); - this._des3.encryptBlock(M, offset); - }, - - decryptBlock: function(M, offset) { - this._des3.decryptBlock(M, offset); - this._des2.encryptBlock(M, offset); - this._des1.decryptBlock(M, offset); - }, - - keySize: 192 / 32, - - ivSize: 64 / 32, - - blockSize: 64 / 32 - }); - - /** - * Shortcut functions to the cipher's object interface. - * - * @example - * - * var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg); - * var plaintext = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg); - */ - C.TripleDES = BlockCipher._createHelper(TripleDES); -}()); - - - - - - - - - - - -(function() { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var StreamCipher = C_lib.StreamCipher; - var C_algo = C.algo; - - /** - * RC4 stream cipher algorithm. - */ - var RC4 = C_algo.RC4 = StreamCipher.extend({ - _doReset: function() { - // Shortcuts - var key = this._key; - var keyWords = key.words; - var keySigBytes = key.sigBytes; - - // Init sbox - var S = this._S = []; - for (var i = 0; i < 256; i++) { - S[i] = i; - } - - // Key setup - for (var i = 0, j = 0; i < 256; i++) { - var keyByteIndex = i % keySigBytes; - var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff; - - j = (j + S[i] + keyByte) % 256; - - // Swap - var t = S[i]; - S[i] = S[j]; - S[j] = t; - } - - // Counters - this._i = this._j = 0; - }, - - _doProcessBlock: function(M, offset) { - M[offset] ^= generateKeystreamWord.call(this); - }, - - keySize: 256 / 32, - - ivSize: 0 - }); - - function generateKeystreamWord() { - // Shortcuts - var S = this._S; - var i = this._i; - var j = this._j; - - // Generate keystream word - var keystreamWord = 0; - for (var n = 0; n < 4; n++) { - i = (i + 1) % 256; - j = (j + S[i]) % 256; - - // Swap - var t = S[i]; - S[i] = S[j]; - S[j] = t; - - keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8); - } - - // Update counters - this._i = i; - this._j = j; - - return keystreamWord; - } - - /** - * Shortcut functions to the cipher's object interface. - * - * @example - * - * var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg); - * var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg); - */ - C.RC4 = StreamCipher._createHelper(RC4); - - /** - * Modified RC4 stream cipher algorithm. - */ - var RC4Drop = C_algo.RC4Drop = RC4.extend({ - /** - * Configuration options. - * - * @property {number} drop The number of keystream words to drop. Default 192 - */ - cfg: RC4.cfg.extend({ - drop: 192 - }), - - _doReset: function() { - RC4._doReset.call(this); - - // Drop - for (var i = this.cfg.drop; i > 0; i--) { - generateKeystreamWord.call(this); - } - } - }); - - /** - * Shortcut functions to the cipher's object interface. - * - * @example - * - * var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg); - * var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg); - */ - C.RC4Drop = StreamCipher._createHelper(RC4Drop); -}()); - - - - - - - - - -(function() { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var StreamCipher = C_lib.StreamCipher; - var C_algo = C.algo; - - // Reusable objects - var S = []; - var C_ = []; - var G = []; - - /** - * Rabbit stream cipher algorithm - */ - var Rabbit = C_algo.Rabbit = StreamCipher.extend({ - _doReset: function() { - // Shortcuts - var K = this._key.words; - var iv = this.cfg.iv; - - // Swap endian - for (var i = 0; i < 4; i++) { - K[i] = (((K[i] << 8) | (K[i] >>> 24)) & 0x00ff00ff) | - (((K[i] << 24) | (K[i] >>> 8)) & 0xff00ff00); - } - - // Generate initial state values - var X = this._X = [ - K[0], (K[3] << 16) | (K[2] >>> 16), - K[1], (K[0] << 16) | (K[3] >>> 16), - K[2], (K[1] << 16) | (K[0] >>> 16), - K[3], (K[2] << 16) | (K[1] >>> 16) - ]; - - // Generate initial counter values - var C = this._C = [ - (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff), - (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff), - (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff), - (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff) - ]; - - // Carry bit - this._b = 0; - - // Iterate the system four times - for (var i = 0; i < 4; i++) { - nextState.call(this); - } - - // Modify the counters - for (var i = 0; i < 8; i++) { - C[i] ^= X[(i + 4) & 7]; - } - - // IV setup - if (iv) { - // Shortcuts - var IV = iv.words; - var IV_0 = IV[0]; - var IV_1 = IV[1]; - - // Generate four subvectors - var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00); - var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00); - var i1 = (i0 >>> 16) | (i2 & 0xffff0000); - var i3 = (i2 << 16) | (i0 & 0x0000ffff); - - // Modify counter values - C[0] ^= i0; - C[1] ^= i1; - C[2] ^= i2; - C[3] ^= i3; - C[4] ^= i0; - C[5] ^= i1; - C[6] ^= i2; - C[7] ^= i3; - - // Iterate the system four times - for (var i = 0; i < 4; i++) { - nextState.call(this); - } - } - }, - - _doProcessBlock: function(M, offset) { - // Shortcut - var X = this._X; - - // Iterate the system - nextState.call(this); - - // Generate four keystream words - S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16); - S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16); - S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16); - S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16); - - for (var i = 0; i < 4; i++) { - // Swap endian - S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) | - (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00); - - // Encrypt - M[offset + i] ^= S[i]; - } - }, - - blockSize: 128 / 32, - - ivSize: 64 / 32 - }); - - function nextState() { - // Shortcuts - var X = this._X; - var C = this._C; - - // Save old counter values - for (var i = 0; i < 8; i++) { - C_[i] = C[i]; - } - - // Calculate new counter values - C[0] = (C[0] + 0x4d34d34d + this._b) | 0; - C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0; - C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0; - C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0; - C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0; - C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0; - C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0; - C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0; - this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0; - - // Calculate the g-values - for (var i = 0; i < 8; i++) { - var gx = X[i] + C[i]; - - // Construct high and low argument for squaring - var ga = gx & 0xffff; - var gb = gx >>> 16; - - // Calculate high and low result of squaring - var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb; - var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0); - - // High XOR low - G[i] = gh ^ gl; - } - - // Calculate new state values - X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0; - X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0; - X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0; - X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0; - X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0; - X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0; - X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0; - X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0; - } - - /** - * Shortcut functions to the cipher's object interface. - * - * @example - * - * var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg); - * var plaintext = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg); - */ - C.Rabbit = StreamCipher._createHelper(Rabbit); -}()); - - - - - - - - - - -(function() { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var StreamCipher = C_lib.StreamCipher; - var C_algo = C.algo; - - // Reusable objects - var S = []; - var C_ = []; - var G = []; - - /** - * Rabbit stream cipher algorithm. - * - * This is a legacy version that neglected to convert the key to little-endian. - * This error doesn't affect the cipher's security, - * but it does affect its compatibility with other implementations. - */ - var RabbitLegacy = C_algo.RabbitLegacy = StreamCipher.extend({ - _doReset: function() { - // Shortcuts - var K = this._key.words; - var iv = this.cfg.iv; - - // Generate initial state values - var X = this._X = [ - K[0], (K[3] << 16) | (K[2] >>> 16), - K[1], (K[0] << 16) | (K[3] >>> 16), - K[2], (K[1] << 16) | (K[0] >>> 16), - K[3], (K[2] << 16) | (K[1] >>> 16) - ]; - - // Generate initial counter values - var C = this._C = [ - (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff), - (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff), - (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff), - (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff) - ]; - - // Carry bit - this._b = 0; - - // Iterate the system four times - for (var i = 0; i < 4; i++) { - nextState.call(this); - } - - // Modify the counters - for (var i = 0; i < 8; i++) { - C[i] ^= X[(i + 4) & 7]; - } - - // IV setup - if (iv) { - // Shortcuts - var IV = iv.words; - var IV_0 = IV[0]; - var IV_1 = IV[1]; - - // Generate four subvectors - var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00); - var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00); - var i1 = (i0 >>> 16) | (i2 & 0xffff0000); - var i3 = (i2 << 16) | (i0 & 0x0000ffff); - - // Modify counter values - C[0] ^= i0; - C[1] ^= i1; - C[2] ^= i2; - C[3] ^= i3; - C[4] ^= i0; - C[5] ^= i1; - C[6] ^= i2; - C[7] ^= i3; - - // Iterate the system four times - for (var i = 0; i < 4; i++) { - nextState.call(this); - } - } - }, - - _doProcessBlock: function(M, offset) { - // Shortcut - var X = this._X; - - // Iterate the system - nextState.call(this); - - // Generate four keystream words - S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16); - S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16); - S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16); - S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16); - - for (var i = 0; i < 4; i++) { - // Swap endian - S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) | - (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00); - - // Encrypt - M[offset + i] ^= S[i]; - } - }, - - blockSize: 128 / 32, - - ivSize: 64 / 32 - }); - - function nextState() { - // Shortcuts - var X = this._X; - var C = this._C; - - // Save old counter values - for (var i = 0; i < 8; i++) { - C_[i] = C[i]; - } - - // Calculate new counter values - C[0] = (C[0] + 0x4d34d34d + this._b) | 0; - C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0; - C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0; - C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0; - C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0; - C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0; - C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0; - C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0; - this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0; - - // Calculate the g-values - for (var i = 0; i < 8; i++) { - var gx = X[i] + C[i]; - - // Construct high and low argument for squaring - var ga = gx & 0xffff; - var gb = gx >>> 16; - - // Calculate high and low result of squaring - var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb; - var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0); - - // High XOR low - G[i] = gh ^ gl; - } - - // Calculate new state values - X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0; - X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0; - X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0; - X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0; - X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0; - X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0; - X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0; - X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0; - } - - /** - * Shortcut functions to the cipher's object interface. - * - * @example - * - * var ciphertext = CryptoJS.RabbitLegacy.encrypt(message, key, cfg); - * var plaintext = CryptoJS.RabbitLegacy.decrypt(ciphertext, key, cfg); - */ - C.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy); -}()); \ No newline at end of file diff --git a/潇洒/js/crypto-js.js b/潇洒/js/crypto-js.js deleted file mode 100644 index 0dd3ca8..0000000 --- a/潇洒/js/crypto-js.js +++ /dev/null @@ -1,6192 +0,0 @@ -; -(function(root, factory) { - if (typeof exports === "object") { - // CommonJS - module.exports = exports = factory(); - } else if (typeof define === "function" && define.amd) { - // AMD - define([], factory); - } else { - // Global (browser) - globalThis.CryptoJS = factory(); - } -}(this, function() { - - /*globals window, global, require*/ - - /** - * CryptoJS core components. - */ - var CryptoJS = CryptoJS || (function(Math, undefined) { - - var crypto; - - // Native crypto from window (Browser) - if (typeof window !== 'undefined' && window.crypto) { - crypto = window.crypto; - } - - // Native crypto in web worker (Browser) - if (typeof self !== 'undefined' && self.crypto) { - crypto = self.crypto; - } - - // Native crypto from worker - if (typeof globalThis !== 'undefined' && globalThis.crypto) { - crypto = globalThis.crypto; - } - - // Native (experimental IE 11) crypto from window (Browser) - if (!crypto && typeof window !== 'undefined' && window.msCrypto) { - crypto = window.msCrypto; - } - - // Native crypto from global (NodeJS) - if (!crypto && typeof global !== 'undefined' && global.crypto) { - crypto = global.crypto; - } - - // Native crypto import via require (NodeJS) - if (!crypto && typeof require === 'function') { - try { - crypto = require('crypto'); - } catch (err) {} - } - - /* - * Cryptographically secure pseudorandom number generator - * - * As Math.random() is cryptographically not safe to use - */ - var cryptoSecureRandomInt = function() { - if (crypto) { - // Use getRandomValues method (Browser) - if (typeof crypto.getRandomValues === 'function') { - try { - return crypto.getRandomValues(new Uint32Array(1))[0]; - } catch (err) {} - } - - // Use randomBytes method (NodeJS) - if (typeof crypto.randomBytes === 'function') { - try { - return crypto.randomBytes(4).readInt32LE(); - } catch (err) {} - } - } - - throw new Error('Native crypto module could not be used to get secure random number.'); - }; - - /* - * Local polyfill of Object.create - - */ - var create = Object.create || (function() { - function F() {} - - return function(obj) { - var subtype; - - F.prototype = obj; - - subtype = new F(); - - F.prototype = null; - - return subtype; - }; - }()); - - /** - * CryptoJS namespace. - */ - var C = {}; - - /** - * Library namespace. - */ - var C_lib = C.lib = {}; - - /** - * Base object for prototypal inheritance. - */ - var Base = C_lib.Base = (function() { - - - return { - /** - * Creates a new object that inherits from this object. - * - * @param {Object} overrides Properties to copy into the new object. - * - * @return {Object} The new object. - * - * @static - * - * @example - * - * var MyType = CryptoJS.lib.Base.extend({ - * field: 'value', - * - * method: function () { - * } - * }); - */ - extend: function(overrides) { - // Spawn - var subtype = create(this); - - // Augment - if (overrides) { - subtype.mixIn(overrides); - } - - // Create default initializer - if (!subtype.hasOwnProperty('init') || this.init === subtype.init) { - subtype.init = function() { - subtype.$super.init.apply(this, arguments); - }; - } - - // Initializer's prototype is the subtype object - subtype.init.prototype = subtype; - - // Reference supertype - subtype.$super = this; - - return subtype; - }, - - /** - * Extends this object and runs the init method. - * Arguments to create() will be passed to init(). - * - * @return {Object} The new object. - * - * @static - * - * @example - * - * var instance = MyType.create(); - */ - create: function() { - var instance = this.extend(); - instance.init.apply(instance, arguments); - - return instance; - }, - - /** - * Initializes a newly created object. - * Override this method to add some logic when your objects are created. - * - * @example - * - * var MyType = CryptoJS.lib.Base.extend({ - * init: function () { - * // ... - * } - * }); - */ - init: function() {}, - - /** - * Copies properties into this object. - * - * @param {Object} properties The properties to mix in. - * - * @example - * - * MyType.mixIn({ - * field: 'value' - * }); - */ - mixIn: function(properties) { - for (var propertyName in properties) { - if (properties.hasOwnProperty(propertyName)) { - this[propertyName] = properties[propertyName]; - } - } - - // IE won't copy toString using the loop above - if (properties.hasOwnProperty('toString')) { - this.toString = properties.toString; - } - }, - - /** - * Creates a copy of this object. - * - * @return {Object} The clone. - * - * @example - * - * var clone = instance.clone(); - */ - clone: function() { - return this.init.prototype.extend(this); - } - }; - }()); - - /** - * An array of 32-bit words. - * - * @property {Array} words The array of 32-bit words. - * @property {number} sigBytes The number of significant bytes in this word array. - */ - var WordArray = C_lib.WordArray = Base.extend({ - /** - * Initializes a newly created word array. - * - * @param {Array} words (Optional) An array of 32-bit words. - * @param {number} sigBytes (Optional) The number of significant bytes in the words. - * - * @example - * - * var wordArray = CryptoJS.lib.WordArray.create(); - * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]); - * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6); - */ - init: function(words, sigBytes) { - words = this.words = words || []; - - if (sigBytes != undefined) { - this.sigBytes = sigBytes; - } else { - this.sigBytes = words.length * 4; - } - }, - - /** - * Converts this word array to a string. - * - * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex - * - * @return {string} The stringified word array. - * - * @example - * - * var string = wordArray + ''; - * var string = wordArray.toString(); - * var string = wordArray.toString(CryptoJS.enc.Utf8); - */ - toString: function(encoder) { - return (encoder || Hex).stringify(this); - }, - - /** - * Concatenates a word array to this word array. - * - * @param {WordArray} wordArray The word array to append. - * - * @return {WordArray} This word array. - * - * @example - * - * wordArray1.concat(wordArray2); - */ - concat: function(wordArray) { - // Shortcuts - var thisWords = this.words; - var thatWords = wordArray.words; - var thisSigBytes = this.sigBytes; - var thatSigBytes = wordArray.sigBytes; - - // Clamp excess bits - this.clamp(); - - // Concat - if (thisSigBytes % 4) { - // Copy one byte at a time - for (var i = 0; i < thatSigBytes; i++) { - var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; - thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8); - } - } else { - // Copy one word at a time - for (var j = 0; j < thatSigBytes; j += 4) { - thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2]; - } - } - this.sigBytes += thatSigBytes; - - // Chainable - return this; - }, - - /** - * Removes insignificant bits. - * - * @example - * - * wordArray.clamp(); - */ - clamp: function() { - // Shortcuts - var words = this.words; - var sigBytes = this.sigBytes; - - // Clamp - words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8); - words.length = Math.ceil(sigBytes / 4); - }, - - /** - * Creates a copy of this word array. - * - * @return {WordArray} The clone. - * - * @example - * - * var clone = wordArray.clone(); - */ - clone: function() { - var clone = Base.clone.call(this); - clone.words = this.words.slice(0); - - return clone; - }, - - /** - * Creates a word array filled with random bytes. - * - * @param {number} nBytes The number of random bytes to generate. - * - * @return {WordArray} The random word array. - * - * @static - * - * @example - * - * var wordArray = CryptoJS.lib.WordArray.random(16); - */ - random: function(nBytes) { - var words = []; - - for (var i = 0; i < nBytes; i += 4) { - words.push(cryptoSecureRandomInt()); - } - - return new WordArray.init(words, nBytes); - } - }); - - /** - * Encoder namespace. - */ - var C_enc = C.enc = {}; - - /** - * Hex encoding strategy. - */ - var Hex = C_enc.Hex = { - /** - * Converts a word array to a hex string. - * - * @param {WordArray} wordArray The word array. - * - * @return {string} The hex string. - * - * @static - * - * @example - * - * var hexString = CryptoJS.enc.Hex.stringify(wordArray); - */ - stringify: function(wordArray) { - // Shortcuts - var words = wordArray.words; - var sigBytes = wordArray.sigBytes; - - // Convert - var hexChars = []; - for (var i = 0; i < sigBytes; i++) { - var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; - hexChars.push((bite >>> 4).toString(16)); - hexChars.push((bite & 0x0f).toString(16)); - } - - return hexChars.join(''); - }, - - /** - * Converts a hex string to a word array. - * - * @param {string} hexStr The hex string. - * - * @return {WordArray} The word array. - * - * @static - * - * @example - * - * var wordArray = CryptoJS.enc.Hex.parse(hexString); - */ - parse: function(hexStr) { - // Shortcut - var hexStrLength = hexStr.length; - - // Convert - var words = []; - for (var i = 0; i < hexStrLength; i += 2) { - words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4); - } - - return new WordArray.init(words, hexStrLength / 2); - } - }; - - /** - * Latin1 encoding strategy. - */ - var Latin1 = C_enc.Latin1 = { - /** - * Converts a word array to a Latin1 string. - * - * @param {WordArray} wordArray The word array. - * - * @return {string} The Latin1 string. - * - * @static - * - * @example - * - * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray); - */ - stringify: function(wordArray) { - // Shortcuts - var words = wordArray.words; - var sigBytes = wordArray.sigBytes; - - // Convert - var latin1Chars = []; - for (var i = 0; i < sigBytes; i++) { - var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; - latin1Chars.push(String.fromCharCode(bite)); - } - - return latin1Chars.join(''); - }, - - /** - * Converts a Latin1 string to a word array. - * - * @param {string} latin1Str The Latin1 string. - * - * @return {WordArray} The word array. - * - * @static - * - * @example - * - * var wordArray = CryptoJS.enc.Latin1.parse(latin1String); - */ - parse: function(latin1Str) { - // Shortcut - var latin1StrLength = latin1Str.length; - - // Convert - var words = []; - for (var i = 0; i < latin1StrLength; i++) { - words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8); - } - - return new WordArray.init(words, latin1StrLength); - } - }; - - /** - * UTF-8 encoding strategy. - */ - var Utf8 = C_enc.Utf8 = { - /** - * Converts a word array to a UTF-8 string. - * - * @param {WordArray} wordArray The word array. - * - * @return {string} The UTF-8 string. - * - * @static - * - * @example - * - * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray); - */ - stringify: function(wordArray) { - try { - return decodeURIComponent(escape(Latin1.stringify(wordArray))); - } catch (e) { - throw new Error('Malformed UTF-8 data'); - } - }, - - /** - * Converts a UTF-8 string to a word array. - * - * @param {string} utf8Str The UTF-8 string. - * - * @return {WordArray} The word array. - * - * @static - * - * @example - * - * var wordArray = CryptoJS.enc.Utf8.parse(utf8String); - */ - parse: function(utf8Str) { - return Latin1.parse(unescape(encodeURIComponent(utf8Str))); - } - }; - - /** - * Abstract buffered block algorithm template. - * - * The property blockSize must be implemented in a concrete subtype. - * - * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0 - */ - var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({ - /** - * Resets this block algorithm's data buffer to its initial state. - * - * @example - * - * bufferedBlockAlgorithm.reset(); - */ - reset: function() { - // Initial values - this._data = new WordArray.init(); - this._nDataBytes = 0; - }, - - /** - * Adds new data to this block algorithm's buffer. - * - * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8. - * - * @example - * - * bufferedBlockAlgorithm._append('data'); - * bufferedBlockAlgorithm._append(wordArray); - */ - _append: function(data) { - // Convert string to WordArray, else assume WordArray already - if (typeof data == 'string') { - data = Utf8.parse(data); - } - - // Append - this._data.concat(data); - this._nDataBytes += data.sigBytes; - }, - - /** - * Processes available data blocks. - * - * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype. - * - * @param {boolean} doFlush Whether all blocks and partial blocks should be processed. - * - * @return {WordArray} The processed data. - * - * @example - * - * var processedData = bufferedBlockAlgorithm._process(); - * var processedData = bufferedBlockAlgorithm._process(!!'flush'); - */ - _process: function(doFlush) { - var processedWords; - - // Shortcuts - var data = this._data; - var dataWords = data.words; - var dataSigBytes = data.sigBytes; - var blockSize = this.blockSize; - var blockSizeBytes = blockSize * 4; - - // Count blocks ready - var nBlocksReady = dataSigBytes / blockSizeBytes; - if (doFlush) { - // Round up to include partial blocks - nBlocksReady = Math.ceil(nBlocksReady); - } else { - // Round down to include only full blocks, - // less the number of blocks that must remain in the buffer - nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0); - } - - // Count words ready - var nWordsReady = nBlocksReady * blockSize; - - // Count bytes ready - var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes); - - // Process blocks - if (nWordsReady) { - for (var offset = 0; offset < nWordsReady; offset += blockSize) { - // Perform concrete-algorithm logic - this._doProcessBlock(dataWords, offset); - } - - // Remove processed words - processedWords = dataWords.splice(0, nWordsReady); - data.sigBytes -= nBytesReady; - } - - // Return processed words - return new WordArray.init(processedWords, nBytesReady); - }, - - /** - * Creates a copy of this object. - * - * @return {Object} The clone. - * - * @example - * - * var clone = bufferedBlockAlgorithm.clone(); - */ - clone: function() { - var clone = Base.clone.call(this); - clone._data = this._data.clone(); - - return clone; - }, - - _minBufferSize: 0 - }); - - /** - * Abstract hasher template. - * - * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits) - */ - var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({ - /** - * Configuration options. - */ - cfg: Base.extend(), - - /** - * Initializes a newly created hasher. - * - * @param {Object} cfg (Optional) The configuration options to use for this hash computation. - * - * @example - * - * var hasher = CryptoJS.algo.SHA256.create(); - */ - init: function(cfg) { - // Apply config defaults - this.cfg = this.cfg.extend(cfg); - - // Set initial values - this.reset(); - }, - - /** - * Resets this hasher to its initial state. - * - * @example - * - * hasher.reset(); - */ - reset: function() { - // Reset data buffer - BufferedBlockAlgorithm.reset.call(this); - - // Perform concrete-hasher logic - this._doReset(); - }, - - /** - * Updates this hasher with a message. - * - * @param {WordArray|string} messageUpdate The message to append. - * - * @return {Hasher} This hasher. - * - * @example - * - * hasher.update('message'); - * hasher.update(wordArray); - */ - update: function(messageUpdate) { - // Append - this._append(messageUpdate); - - // Update the hash - this._process(); - - // Chainable - return this; - }, - - /** - * Finalizes the hash computation. - * Note that the finalize operation is effectively a destructive, read-once operation. - * - * @param {WordArray|string} messageUpdate (Optional) A final message update. - * - * @return {WordArray} The hash. - * - * @example - * - * var hash = hasher.finalize(); - * var hash = hasher.finalize('message'); - * var hash = hasher.finalize(wordArray); - */ - finalize: function(messageUpdate) { - // Final message update - if (messageUpdate) { - this._append(messageUpdate); - } - - // Perform concrete-hasher logic - var hash = this._doFinalize(); - - return hash; - }, - - blockSize: 512 / 32, - - /** - * Creates a shortcut function to a hasher's object interface. - * - * @param {Hasher} hasher The hasher to create a helper for. - * - * @return {Function} The shortcut function. - * - * @static - * - * @example - * - * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256); - */ - _createHelper: function(hasher) { - return function(message, cfg) { - return new hasher.init(cfg).finalize(message); - }; - }, - - /** - * Creates a shortcut function to the HMAC's object interface. - * - * @param {Hasher} hasher The hasher to use in this HMAC helper. - * - * @return {Function} The shortcut function. - * - * @static - * - * @example - * - * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256); - */ - _createHmacHelper: function(hasher) { - return function(message, key) { - return new C_algo.HMAC.init(hasher, key).finalize(message); - }; - } - }); - - /** - * Algorithm namespace. - */ - var C_algo = C.algo = {}; - - return C; - }(Math)); - - - (function(undefined) { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var Base = C_lib.Base; - var X32WordArray = C_lib.WordArray; - - /** - * x64 namespace. - */ - var C_x64 = C.x64 = {}; - - /** - * A 64-bit word. - */ - var X64Word = C_x64.Word = Base.extend({ - /** - * Initializes a newly created 64-bit word. - * - * @param {number} high The high 32 bits. - * @param {number} low The low 32 bits. - * - * @example - * - * var x64Word = CryptoJS.x64.Word.create(0x00010203, 0x04050607); - */ - init: function(high, low) { - this.high = high; - this.low = low; - } - - /** - * Bitwise NOTs this word. - * - * @return {X64Word} A new x64-Word object after negating. - * - * @example - * - * var negated = x64Word.not(); - */ - // not: function () { - // var high = ~this.high; - // var low = ~this.low; - - // return X64Word.create(high, low); - // }, - - /** - * Bitwise ANDs this word with the passed word. - * - * @param {X64Word} word The x64-Word to AND with this word. - * - * @return {X64Word} A new x64-Word object after ANDing. - * - * @example - * - * var anded = x64Word.and(anotherX64Word); - */ - // and: function (word) { - // var high = this.high & word.high; - // var low = this.low & word.low; - - // return X64Word.create(high, low); - // }, - - /** - * Bitwise ORs this word with the passed word. - * - * @param {X64Word} word The x64-Word to OR with this word. - * - * @return {X64Word} A new x64-Word object after ORing. - * - * @example - * - * var ored = x64Word.or(anotherX64Word); - */ - // or: function (word) { - // var high = this.high | word.high; - // var low = this.low | word.low; - - // return X64Word.create(high, low); - // }, - - /** - * Bitwise XORs this word with the passed word. - * - * @param {X64Word} word The x64-Word to XOR with this word. - * - * @return {X64Word} A new x64-Word object after XORing. - * - * @example - * - * var xored = x64Word.xor(anotherX64Word); - */ - // xor: function (word) { - // var high = this.high ^ word.high; - // var low = this.low ^ word.low; - - // return X64Word.create(high, low); - // }, - - /** - * Shifts this word n bits to the left. - * - * @param {number} n The number of bits to shift. - * - * @return {X64Word} A new x64-Word object after shifting. - * - * @example - * - * var shifted = x64Word.shiftL(25); - */ - // shiftL: function (n) { - // if (n < 32) { - // var high = (this.high << n) | (this.low >>> (32 - n)); - // var low = this.low << n; - // } else { - // var high = this.low << (n - 32); - // var low = 0; - // } - - // return X64Word.create(high, low); - // }, - - /** - * Shifts this word n bits to the right. - * - * @param {number} n The number of bits to shift. - * - * @return {X64Word} A new x64-Word object after shifting. - * - * @example - * - * var shifted = x64Word.shiftR(7); - */ - // shiftR: function (n) { - // if (n < 32) { - // var low = (this.low >>> n) | (this.high << (32 - n)); - // var high = this.high >>> n; - // } else { - // var low = this.high >>> (n - 32); - // var high = 0; - // } - - // return X64Word.create(high, low); - // }, - - /** - * Rotates this word n bits to the left. - * - * @param {number} n The number of bits to rotate. - * - * @return {X64Word} A new x64-Word object after rotating. - * - * @example - * - * var rotated = x64Word.rotL(25); - */ - // rotL: function (n) { - // return this.shiftL(n).or(this.shiftR(64 - n)); - // }, - - /** - * Rotates this word n bits to the right. - * - * @param {number} n The number of bits to rotate. - * - * @return {X64Word} A new x64-Word object after rotating. - * - * @example - * - * var rotated = x64Word.rotR(7); - */ - // rotR: function (n) { - // return this.shiftR(n).or(this.shiftL(64 - n)); - // }, - - /** - * Adds this word with the passed word. - * - * @param {X64Word} word The x64-Word to add with this word. - * - * @return {X64Word} A new x64-Word object after adding. - * - * @example - * - * var added = x64Word.add(anotherX64Word); - */ - // add: function (word) { - // var low = (this.low + word.low) | 0; - // var carry = (low >>> 0) < (this.low >>> 0) ? 1 : 0; - // var high = (this.high + word.high + carry) | 0; - - // return X64Word.create(high, low); - // } - }); - - /** - * An array of 64-bit words. - * - * @property {Array} words The array of CryptoJS.x64.Word objects. - * @property {number} sigBytes The number of significant bytes in this word array. - */ - var X64WordArray = C_x64.WordArray = Base.extend({ - /** - * Initializes a newly created word array. - * - * @param {Array} words (Optional) An array of CryptoJS.x64.Word objects. - * @param {number} sigBytes (Optional) The number of significant bytes in the words. - * - * @example - * - * var wordArray = CryptoJS.x64.WordArray.create(); - * - * var wordArray = CryptoJS.x64.WordArray.create([ - * CryptoJS.x64.Word.create(0x00010203, 0x04050607), - * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f) - * ]); - * - * var wordArray = CryptoJS.x64.WordArray.create([ - * CryptoJS.x64.Word.create(0x00010203, 0x04050607), - * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f) - * ], 10); - */ - init: function(words, sigBytes) { - words = this.words = words || []; - - if (sigBytes != undefined) { - this.sigBytes = sigBytes; - } else { - this.sigBytes = words.length * 8; - } - }, - - /** - * Converts this 64-bit word array to a 32-bit word array. - * - * @return {CryptoJS.lib.WordArray} This word array's data as a 32-bit word array. - * - * @example - * - * var x32WordArray = x64WordArray.toX32(); - */ - toX32: function() { - // Shortcuts - var x64Words = this.words; - var x64WordsLength = x64Words.length; - - // Convert - var x32Words = []; - for (var i = 0; i < x64WordsLength; i++) { - var x64Word = x64Words[i]; - x32Words.push(x64Word.high); - x32Words.push(x64Word.low); - } - - return X32WordArray.create(x32Words, this.sigBytes); - }, - - /** - * Creates a copy of this word array. - * - * @return {X64WordArray} The clone. - * - * @example - * - * var clone = x64WordArray.clone(); - */ - clone: function() { - var clone = Base.clone.call(this); - - // Clone "words" array - var words = clone.words = this.words.slice(0); - - // Clone each X64Word object - var wordsLength = words.length; - for (var i = 0; i < wordsLength; i++) { - words[i] = words[i].clone(); - } - - return clone; - } - }); - }()); - - - (function() { - // Check if typed arrays are supported - if (typeof ArrayBuffer != 'function') { - return; - } - - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var WordArray = C_lib.WordArray; - - // Reference original init - var superInit = WordArray.init; - - // Augment WordArray.init to handle typed arrays - var subInit = WordArray.init = function(typedArray) { - // Convert buffers to uint8 - if (typedArray instanceof ArrayBuffer) { - typedArray = new Uint8Array(typedArray); - } - - // Convert other array views to uint8 - if ( - typedArray instanceof Int8Array || - (typeof Uint8ClampedArray !== "undefined" && typedArray instanceof Uint8ClampedArray) || - typedArray instanceof Int16Array || - typedArray instanceof Uint16Array || - typedArray instanceof Int32Array || - typedArray instanceof Uint32Array || - typedArray instanceof Float32Array || - typedArray instanceof Float64Array - ) { - typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength); - } - - // Handle Uint8Array - if (typedArray instanceof Uint8Array) { - // Shortcut - var typedArrayByteLength = typedArray.byteLength; - - // Extract bytes - var words = []; - for (var i = 0; i < typedArrayByteLength; i++) { - words[i >>> 2] |= typedArray[i] << (24 - (i % 4) * 8); - } - - // Initialize this word array - superInit.call(this, words, typedArrayByteLength); - } else { - // Else call normal init - superInit.apply(this, arguments); - } - }; - - subInit.prototype = WordArray; - }()); - - - (function() { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var WordArray = C_lib.WordArray; - var C_enc = C.enc; - - /** - * UTF-16 BE encoding strategy. - */ - var Utf16BE = C_enc.Utf16 = C_enc.Utf16BE = { - /** - * Converts a word array to a UTF-16 BE string. - * - * @param {WordArray} wordArray The word array. - * - * @return {string} The UTF-16 BE string. - * - * @static - * - * @example - * - * var utf16String = CryptoJS.enc.Utf16.stringify(wordArray); - */ - stringify: function(wordArray) { - // Shortcuts - var words = wordArray.words; - var sigBytes = wordArray.sigBytes; - - // Convert - var utf16Chars = []; - for (var i = 0; i < sigBytes; i += 2) { - var codePoint = (words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff; - utf16Chars.push(String.fromCharCode(codePoint)); - } - - return utf16Chars.join(''); - }, - - /** - * Converts a UTF-16 BE string to a word array. - * - * @param {string} utf16Str The UTF-16 BE string. - * - * @return {WordArray} The word array. - * - * @static - * - * @example - * - * var wordArray = CryptoJS.enc.Utf16.parse(utf16String); - */ - parse: function(utf16Str) { - // Shortcut - var utf16StrLength = utf16Str.length; - - // Convert - var words = []; - for (var i = 0; i < utf16StrLength; i++) { - words[i >>> 1] |= utf16Str.charCodeAt(i) << (16 - (i % 2) * 16); - } - - return WordArray.create(words, utf16StrLength * 2); - } - }; - - /** - * UTF-16 LE encoding strategy. - */ - C_enc.Utf16LE = { - /** - * Converts a word array to a UTF-16 LE string. - * - * @param {WordArray} wordArray The word array. - * - * @return {string} The UTF-16 LE string. - * - * @static - * - * @example - * - * var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray); - */ - stringify: function(wordArray) { - // Shortcuts - var words = wordArray.words; - var sigBytes = wordArray.sigBytes; - - // Convert - var utf16Chars = []; - for (var i = 0; i < sigBytes; i += 2) { - var codePoint = swapEndian((words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff); - utf16Chars.push(String.fromCharCode(codePoint)); - } - - return utf16Chars.join(''); - }, - - /** - * Converts a UTF-16 LE string to a word array. - * - * @param {string} utf16Str The UTF-16 LE string. - * - * @return {WordArray} The word array. - * - * @static - * - * @example - * - * var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str); - */ - parse: function(utf16Str) { - // Shortcut - var utf16StrLength = utf16Str.length; - - // Convert - var words = []; - for (var i = 0; i < utf16StrLength; i++) { - words[i >>> 1] |= swapEndian(utf16Str.charCodeAt(i) << (16 - (i % 2) * 16)); - } - - return WordArray.create(words, utf16StrLength * 2); - } - }; - - function swapEndian(word) { - return ((word << 8) & 0xff00ff00) | ((word >>> 8) & 0x00ff00ff); - } - }()); - - - (function() { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var WordArray = C_lib.WordArray; - var C_enc = C.enc; - - /** - * Base64 encoding strategy. - */ - var Base64 = C_enc.Base64 = { - /** - * Converts a word array to a Base64 string. - * - * @param {WordArray} wordArray The word array. - * - * @return {string} The Base64 string. - * - * @static - * - * @example - * - * var base64String = CryptoJS.enc.Base64.stringify(wordArray); - */ - stringify: function(wordArray) { - // Shortcuts - var words = wordArray.words; - var sigBytes = wordArray.sigBytes; - var map = this._map; - - // Clamp excess bits - wordArray.clamp(); - - // Convert - var base64Chars = []; - for (var i = 0; i < sigBytes; i += 3) { - var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; - var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff; - var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff; - - var triplet = (byte1 << 16) | (byte2 << 8) | byte3; - - for (var j = 0; - (j < 4) && (i + j * 0.75 < sigBytes); j++) { - base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f)); - } - } - - // Add padding - var paddingChar = map.charAt(64); - if (paddingChar) { - while (base64Chars.length % 4) { - base64Chars.push(paddingChar); - } - } - - return base64Chars.join(''); - }, - - /** - * Converts a Base64 string to a word array. - * - * @param {string} base64Str The Base64 string. - * - * @return {WordArray} The word array. - * - * @static - * - * @example - * - * var wordArray = CryptoJS.enc.Base64.parse(base64String); - */ - parse: function(base64Str) { - // Shortcuts - var base64StrLength = base64Str.length; - var map = this._map; - var reverseMap = this._reverseMap; - - if (!reverseMap) { - reverseMap = this._reverseMap = []; - for (var j = 0; j < map.length; j++) { - reverseMap[map.charCodeAt(j)] = j; - } - } - - // Ignore padding - var paddingChar = map.charAt(64); - if (paddingChar) { - var paddingIndex = base64Str.indexOf(paddingChar); - if (paddingIndex !== -1) { - base64StrLength = paddingIndex; - } - } - - // Convert - return parseLoop(base64Str, base64StrLength, reverseMap); - - }, - - _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=' - }; - - function parseLoop(base64Str, base64StrLength, reverseMap) { - var words = []; - var nBytes = 0; - for (var i = 0; i < base64StrLength; i++) { - if (i % 4) { - var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2); - var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2); - var bitsCombined = bits1 | bits2; - words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8); - nBytes++; - } - } - return WordArray.create(words, nBytes); - } - }()); - - - (function() { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var WordArray = C_lib.WordArray; - var C_enc = C.enc; - - /** - * Base64url encoding strategy. - */ - var Base64url = C_enc.Base64url = { - /** - * Converts a word array to a Base64url string. - * - * @param {WordArray} wordArray The word array. - * - * @param {boolean} urlSafe Whether to use url safe - * - * @return {string} The Base64url string. - * - * @static - * - * @example - * - * var base64String = CryptoJS.enc.Base64url.stringify(wordArray); - */ - stringify: function(wordArray, urlSafe = true) { - // Shortcuts - var words = wordArray.words; - var sigBytes = wordArray.sigBytes; - var map = urlSafe ? this._safe_map : this._map; - - // Clamp excess bits - wordArray.clamp(); - - // Convert - var base64Chars = []; - for (var i = 0; i < sigBytes; i += 3) { - var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; - var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff; - var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff; - - var triplet = (byte1 << 16) | (byte2 << 8) | byte3; - - for (var j = 0; - (j < 4) && (i + j * 0.75 < sigBytes); j++) { - base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f)); - } - } - - // Add padding - var paddingChar = map.charAt(64); - if (paddingChar) { - while (base64Chars.length % 4) { - base64Chars.push(paddingChar); - } - } - - return base64Chars.join(''); - }, - - /** - * Converts a Base64url string to a word array. - * - * @param {string} base64Str The Base64url string. - * - * @param {boolean} urlSafe Whether to use url safe - * - * @return {WordArray} The word array. - * - * @static - * - * @example - * - * var wordArray = CryptoJS.enc.Base64url.parse(base64String); - */ - parse: function(base64Str, urlSafe = true) { - // Shortcuts - var base64StrLength = base64Str.length; - var map = urlSafe ? this._safe_map : this._map; - var reverseMap = this._reverseMap; - - if (!reverseMap) { - reverseMap = this._reverseMap = []; - for (var j = 0; j < map.length; j++) { - reverseMap[map.charCodeAt(j)] = j; - } - } - - // Ignore padding - var paddingChar = map.charAt(64); - if (paddingChar) { - var paddingIndex = base64Str.indexOf(paddingChar); - if (paddingIndex !== -1) { - base64StrLength = paddingIndex; - } - } - - // Convert - return parseLoop(base64Str, base64StrLength, reverseMap); - - }, - - _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=', - _safe_map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_', - }; - - function parseLoop(base64Str, base64StrLength, reverseMap) { - var words = []; - var nBytes = 0; - for (var i = 0; i < base64StrLength; i++) { - if (i % 4) { - var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2); - var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2); - var bitsCombined = bits1 | bits2; - words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8); - nBytes++; - } - } - return WordArray.create(words, nBytes); - } - }()); - - (function(Math) { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var WordArray = C_lib.WordArray; - var Hasher = C_lib.Hasher; - var C_algo = C.algo; - - // Constants table - var T = []; - - // Compute constants - (function() { - for (var i = 0; i < 64; i++) { - T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0; - } - }()); - - /** - * MD5 hash algorithm. - */ - var MD5 = C_algo.MD5 = Hasher.extend({ - _doReset: function() { - this._hash = new WordArray.init([ - 0x67452301, 0xefcdab89, - 0x98badcfe, 0x10325476 - ]); - }, - - _doProcessBlock: function(M, offset) { - // Swap endian - for (var i = 0; i < 16; i++) { - // Shortcuts - var offset_i = offset + i; - var M_offset_i = M[offset_i]; - - M[offset_i] = ( - (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) | - (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00) - ); - } - - // Shortcuts - var H = this._hash.words; - - var M_offset_0 = M[offset + 0]; - var M_offset_1 = M[offset + 1]; - var M_offset_2 = M[offset + 2]; - var M_offset_3 = M[offset + 3]; - var M_offset_4 = M[offset + 4]; - var M_offset_5 = M[offset + 5]; - var M_offset_6 = M[offset + 6]; - var M_offset_7 = M[offset + 7]; - var M_offset_8 = M[offset + 8]; - var M_offset_9 = M[offset + 9]; - var M_offset_10 = M[offset + 10]; - var M_offset_11 = M[offset + 11]; - var M_offset_12 = M[offset + 12]; - var M_offset_13 = M[offset + 13]; - var M_offset_14 = M[offset + 14]; - var M_offset_15 = M[offset + 15]; - - // Working varialbes - var a = H[0]; - var b = H[1]; - var c = H[2]; - var d = H[3]; - - // Computation - a = FF(a, b, c, d, M_offset_0, 7, T[0]); - d = FF(d, a, b, c, M_offset_1, 12, T[1]); - c = FF(c, d, a, b, M_offset_2, 17, T[2]); - b = FF(b, c, d, a, M_offset_3, 22, T[3]); - a = FF(a, b, c, d, M_offset_4, 7, T[4]); - d = FF(d, a, b, c, M_offset_5, 12, T[5]); - c = FF(c, d, a, b, M_offset_6, 17, T[6]); - b = FF(b, c, d, a, M_offset_7, 22, T[7]); - a = FF(a, b, c, d, M_offset_8, 7, T[8]); - d = FF(d, a, b, c, M_offset_9, 12, T[9]); - c = FF(c, d, a, b, M_offset_10, 17, T[10]); - b = FF(b, c, d, a, M_offset_11, 22, T[11]); - a = FF(a, b, c, d, M_offset_12, 7, T[12]); - d = FF(d, a, b, c, M_offset_13, 12, T[13]); - c = FF(c, d, a, b, M_offset_14, 17, T[14]); - b = FF(b, c, d, a, M_offset_15, 22, T[15]); - - a = GG(a, b, c, d, M_offset_1, 5, T[16]); - d = GG(d, a, b, c, M_offset_6, 9, T[17]); - c = GG(c, d, a, b, M_offset_11, 14, T[18]); - b = GG(b, c, d, a, M_offset_0, 20, T[19]); - a = GG(a, b, c, d, M_offset_5, 5, T[20]); - d = GG(d, a, b, c, M_offset_10, 9, T[21]); - c = GG(c, d, a, b, M_offset_15, 14, T[22]); - b = GG(b, c, d, a, M_offset_4, 20, T[23]); - a = GG(a, b, c, d, M_offset_9, 5, T[24]); - d = GG(d, a, b, c, M_offset_14, 9, T[25]); - c = GG(c, d, a, b, M_offset_3, 14, T[26]); - b = GG(b, c, d, a, M_offset_8, 20, T[27]); - a = GG(a, b, c, d, M_offset_13, 5, T[28]); - d = GG(d, a, b, c, M_offset_2, 9, T[29]); - c = GG(c, d, a, b, M_offset_7, 14, T[30]); - b = GG(b, c, d, a, M_offset_12, 20, T[31]); - - a = HH(a, b, c, d, M_offset_5, 4, T[32]); - d = HH(d, a, b, c, M_offset_8, 11, T[33]); - c = HH(c, d, a, b, M_offset_11, 16, T[34]); - b = HH(b, c, d, a, M_offset_14, 23, T[35]); - a = HH(a, b, c, d, M_offset_1, 4, T[36]); - d = HH(d, a, b, c, M_offset_4, 11, T[37]); - c = HH(c, d, a, b, M_offset_7, 16, T[38]); - b = HH(b, c, d, a, M_offset_10, 23, T[39]); - a = HH(a, b, c, d, M_offset_13, 4, T[40]); - d = HH(d, a, b, c, M_offset_0, 11, T[41]); - c = HH(c, d, a, b, M_offset_3, 16, T[42]); - b = HH(b, c, d, a, M_offset_6, 23, T[43]); - a = HH(a, b, c, d, M_offset_9, 4, T[44]); - d = HH(d, a, b, c, M_offset_12, 11, T[45]); - c = HH(c, d, a, b, M_offset_15, 16, T[46]); - b = HH(b, c, d, a, M_offset_2, 23, T[47]); - - a = II(a, b, c, d, M_offset_0, 6, T[48]); - d = II(d, a, b, c, M_offset_7, 10, T[49]); - c = II(c, d, a, b, M_offset_14, 15, T[50]); - b = II(b, c, d, a, M_offset_5, 21, T[51]); - a = II(a, b, c, d, M_offset_12, 6, T[52]); - d = II(d, a, b, c, M_offset_3, 10, T[53]); - c = II(c, d, a, b, M_offset_10, 15, T[54]); - b = II(b, c, d, a, M_offset_1, 21, T[55]); - a = II(a, b, c, d, M_offset_8, 6, T[56]); - d = II(d, a, b, c, M_offset_15, 10, T[57]); - c = II(c, d, a, b, M_offset_6, 15, T[58]); - b = II(b, c, d, a, M_offset_13, 21, T[59]); - a = II(a, b, c, d, M_offset_4, 6, T[60]); - d = II(d, a, b, c, M_offset_11, 10, T[61]); - c = II(c, d, a, b, M_offset_2, 15, T[62]); - b = II(b, c, d, a, M_offset_9, 21, T[63]); - - // Intermediate hash value - H[0] = (H[0] + a) | 0; - H[1] = (H[1] + b) | 0; - H[2] = (H[2] + c) | 0; - H[3] = (H[3] + d) | 0; - }, - - _doFinalize: function() { - // Shortcuts - var data = this._data; - var dataWords = data.words; - - var nBitsTotal = this._nDataBytes * 8; - var nBitsLeft = data.sigBytes * 8; - - // Add padding - dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32); - - var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000); - var nBitsTotalL = nBitsTotal; - dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = ( - (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) | - (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00) - ); - dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = ( - (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) | - (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00) - ); - - data.sigBytes = (dataWords.length + 1) * 4; - - // Hash final blocks - this._process(); - - // Shortcuts - var hash = this._hash; - var H = hash.words; - - // Swap endian - for (var i = 0; i < 4; i++) { - // Shortcut - var H_i = H[i]; - - H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) | - (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00); - } - - // Return final computed hash - return hash; - }, - - clone: function() { - var clone = Hasher.clone.call(this); - clone._hash = this._hash.clone(); - - return clone; - } - }); - - function FF(a, b, c, d, x, s, t) { - var n = a + ((b & c) | (~b & d)) + x + t; - return ((n << s) | (n >>> (32 - s))) + b; - } - - function GG(a, b, c, d, x, s, t) { - var n = a + ((b & d) | (c & ~d)) + x + t; - return ((n << s) | (n >>> (32 - s))) + b; - } - - function HH(a, b, c, d, x, s, t) { - var n = a + (b ^ c ^ d) + x + t; - return ((n << s) | (n >>> (32 - s))) + b; - } - - function II(a, b, c, d, x, s, t) { - var n = a + (c ^ (b | ~d)) + x + t; - return ((n << s) | (n >>> (32 - s))) + b; - } - - /** - * Shortcut function to the hasher's object interface. - * - * @param {WordArray|string} message The message to hash. - * - * @return {WordArray} The hash. - * - * @static - * - * @example - * - * var hash = CryptoJS.MD5('message'); - * var hash = CryptoJS.MD5(wordArray); - */ - C.MD5 = Hasher._createHelper(MD5); - - /** - * Shortcut function to the HMAC's object interface. - * - * @param {WordArray|string} message The message to hash. - * @param {WordArray|string} key The secret key. - * - * @return {WordArray} The HMAC. - * - * @static - * - * @example - * - * var hmac = CryptoJS.HmacMD5(message, key); - */ - C.HmacMD5 = Hasher._createHmacHelper(MD5); - }(Math)); - - - (function() { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var WordArray = C_lib.WordArray; - var Hasher = C_lib.Hasher; - var C_algo = C.algo; - - // Reusable object - var W = []; - - /** - * SHA-1 hash algorithm. - */ - var SHA1 = C_algo.SHA1 = Hasher.extend({ - _doReset: function() { - this._hash = new WordArray.init([ - 0x67452301, 0xefcdab89, - 0x98badcfe, 0x10325476, - 0xc3d2e1f0 - ]); - }, - - _doProcessBlock: function(M, offset) { - // Shortcut - var H = this._hash.words; - - // Working variables - var a = H[0]; - var b = H[1]; - var c = H[2]; - var d = H[3]; - var e = H[4]; - - // Computation - for (var i = 0; i < 80; i++) { - if (i < 16) { - W[i] = M[offset + i] | 0; - } else { - var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]; - W[i] = (n << 1) | (n >>> 31); - } - - var t = ((a << 5) | (a >>> 27)) + e + W[i]; - if (i < 20) { - t += ((b & c) | (~b & d)) + 0x5a827999; - } else if (i < 40) { - t += (b ^ c ^ d) + 0x6ed9eba1; - } else if (i < 60) { - t += ((b & c) | (b & d) | (c & d)) - 0x70e44324; - } else /* if (i < 80) */ { - t += (b ^ c ^ d) - 0x359d3e2a; - } - - e = d; - d = c; - c = (b << 30) | (b >>> 2); - b = a; - a = t; - } - - // Intermediate hash value - H[0] = (H[0] + a) | 0; - H[1] = (H[1] + b) | 0; - H[2] = (H[2] + c) | 0; - H[3] = (H[3] + d) | 0; - H[4] = (H[4] + e) | 0; - }, - - _doFinalize: function() { - // Shortcuts - var data = this._data; - var dataWords = data.words; - - var nBitsTotal = this._nDataBytes * 8; - var nBitsLeft = data.sigBytes * 8; - - // Add padding - dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32); - dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000); - dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal; - data.sigBytes = dataWords.length * 4; - - // Hash final blocks - this._process(); - - // Return final computed hash - return this._hash; - }, - - clone: function() { - var clone = Hasher.clone.call(this); - clone._hash = this._hash.clone(); - - return clone; - } - }); - - /** - * Shortcut function to the hasher's object interface. - * - * @param {WordArray|string} message The message to hash. - * - * @return {WordArray} The hash. - * - * @static - * - * @example - * - * var hash = CryptoJS.SHA1('message'); - * var hash = CryptoJS.SHA1(wordArray); - */ - C.SHA1 = Hasher._createHelper(SHA1); - - /** - * Shortcut function to the HMAC's object interface. - * - * @param {WordArray|string} message The message to hash. - * @param {WordArray|string} key The secret key. - * - * @return {WordArray} The HMAC. - * - * @static - * - * @example - * - * var hmac = CryptoJS.HmacSHA1(message, key); - */ - C.HmacSHA1 = Hasher._createHmacHelper(SHA1); - }()); - - - (function(Math) { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var WordArray = C_lib.WordArray; - var Hasher = C_lib.Hasher; - var C_algo = C.algo; - - // Initialization and round constants tables - var H = []; - var K = []; - - // Compute constants - (function() { - function isPrime(n) { - var sqrtN = Math.sqrt(n); - for (var factor = 2; factor <= sqrtN; factor++) { - if (!(n % factor)) { - return false; - } - } - - return true; - } - - function getFractionalBits(n) { - return ((n - (n | 0)) * 0x100000000) | 0; - } - - var n = 2; - var nPrime = 0; - while (nPrime < 64) { - if (isPrime(n)) { - if (nPrime < 8) { - H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2)); - } - K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3)); - - nPrime++; - } - - n++; - } - }()); - - // Reusable object - var W = []; - - /** - * SHA-256 hash algorithm. - */ - var SHA256 = C_algo.SHA256 = Hasher.extend({ - _doReset: function() { - this._hash = new WordArray.init(H.slice(0)); - }, - - _doProcessBlock: function(M, offset) { - // Shortcut - var H = this._hash.words; - - // Working variables - var a = H[0]; - var b = H[1]; - var c = H[2]; - var d = H[3]; - var e = H[4]; - var f = H[5]; - var g = H[6]; - var h = H[7]; - - // Computation - for (var i = 0; i < 64; i++) { - if (i < 16) { - W[i] = M[offset + i] | 0; - } else { - var gamma0x = W[i - 15]; - var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^ - ((gamma0x << 14) | (gamma0x >>> 18)) ^ - (gamma0x >>> 3); - - var gamma1x = W[i - 2]; - var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^ - ((gamma1x << 13) | (gamma1x >>> 19)) ^ - (gamma1x >>> 10); - - W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]; - } - - var ch = (e & f) ^ (~e & g); - var maj = (a & b) ^ (a & c) ^ (b & c); - - var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22)); - var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25)); - - var t1 = h + sigma1 + ch + K[i] + W[i]; - var t2 = sigma0 + maj; - - h = g; - g = f; - f = e; - e = (d + t1) | 0; - d = c; - c = b; - b = a; - a = (t1 + t2) | 0; - } - - // Intermediate hash value - H[0] = (H[0] + a) | 0; - H[1] = (H[1] + b) | 0; - H[2] = (H[2] + c) | 0; - H[3] = (H[3] + d) | 0; - H[4] = (H[4] + e) | 0; - H[5] = (H[5] + f) | 0; - H[6] = (H[6] + g) | 0; - H[7] = (H[7] + h) | 0; - }, - - _doFinalize: function() { - // Shortcuts - var data = this._data; - var dataWords = data.words; - - var nBitsTotal = this._nDataBytes * 8; - var nBitsLeft = data.sigBytes * 8; - - // Add padding - dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32); - dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000); - dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal; - data.sigBytes = dataWords.length * 4; - - // Hash final blocks - this._process(); - - // Return final computed hash - return this._hash; - }, - - clone: function() { - var clone = Hasher.clone.call(this); - clone._hash = this._hash.clone(); - - return clone; - } - }); - - /** - * Shortcut function to the hasher's object interface. - * - * @param {WordArray|string} message The message to hash. - * - * @return {WordArray} The hash. - * - * @static - * - * @example - * - * var hash = CryptoJS.SHA256('message'); - * var hash = CryptoJS.SHA256(wordArray); - */ - C.SHA256 = Hasher._createHelper(SHA256); - - /** - * Shortcut function to the HMAC's object interface. - * - * @param {WordArray|string} message The message to hash. - * @param {WordArray|string} key The secret key. - * - * @return {WordArray} The HMAC. - * - * @static - * - * @example - * - * var hmac = CryptoJS.HmacSHA256(message, key); - */ - C.HmacSHA256 = Hasher._createHmacHelper(SHA256); - }(Math)); - - - (function() { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var WordArray = C_lib.WordArray; - var C_algo = C.algo; - var SHA256 = C_algo.SHA256; - - /** - * SHA-224 hash algorithm. - */ - var SHA224 = C_algo.SHA224 = SHA256.extend({ - _doReset: function() { - this._hash = new WordArray.init([ - 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, - 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 - ]); - }, - - _doFinalize: function() { - var hash = SHA256._doFinalize.call(this); - - hash.sigBytes -= 4; - - return hash; - } - }); - - /** - * Shortcut function to the hasher's object interface. - * - * @param {WordArray|string} message The message to hash. - * - * @return {WordArray} The hash. - * - * @static - * - * @example - * - * var hash = CryptoJS.SHA224('message'); - * var hash = CryptoJS.SHA224(wordArray); - */ - C.SHA224 = SHA256._createHelper(SHA224); - - /** - * Shortcut function to the HMAC's object interface. - * - * @param {WordArray|string} message The message to hash. - * @param {WordArray|string} key The secret key. - * - * @return {WordArray} The HMAC. - * - * @static - * - * @example - * - * var hmac = CryptoJS.HmacSHA224(message, key); - */ - C.HmacSHA224 = SHA256._createHmacHelper(SHA224); - }()); - - - (function() { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var Hasher = C_lib.Hasher; - var C_x64 = C.x64; - var X64Word = C_x64.Word; - var X64WordArray = C_x64.WordArray; - var C_algo = C.algo; - - function X64Word_create() { - return X64Word.create.apply(X64Word, arguments); - } - - // Constants - var K = [ - X64Word_create(0x428a2f98, 0xd728ae22), X64Word_create(0x71374491, 0x23ef65cd), - X64Word_create(0xb5c0fbcf, 0xec4d3b2f), X64Word_create(0xe9b5dba5, 0x8189dbbc), - X64Word_create(0x3956c25b, 0xf348b538), X64Word_create(0x59f111f1, 0xb605d019), - X64Word_create(0x923f82a4, 0xaf194f9b), X64Word_create(0xab1c5ed5, 0xda6d8118), - X64Word_create(0xd807aa98, 0xa3030242), X64Word_create(0x12835b01, 0x45706fbe), - X64Word_create(0x243185be, 0x4ee4b28c), X64Word_create(0x550c7dc3, 0xd5ffb4e2), - X64Word_create(0x72be5d74, 0xf27b896f), X64Word_create(0x80deb1fe, 0x3b1696b1), - X64Word_create(0x9bdc06a7, 0x25c71235), X64Word_create(0xc19bf174, 0xcf692694), - X64Word_create(0xe49b69c1, 0x9ef14ad2), X64Word_create(0xefbe4786, 0x384f25e3), - X64Word_create(0x0fc19dc6, 0x8b8cd5b5), X64Word_create(0x240ca1cc, 0x77ac9c65), - X64Word_create(0x2de92c6f, 0x592b0275), X64Word_create(0x4a7484aa, 0x6ea6e483), - X64Word_create(0x5cb0a9dc, 0xbd41fbd4), X64Word_create(0x76f988da, 0x831153b5), - X64Word_create(0x983e5152, 0xee66dfab), X64Word_create(0xa831c66d, 0x2db43210), - X64Word_create(0xb00327c8, 0x98fb213f), X64Word_create(0xbf597fc7, 0xbeef0ee4), - X64Word_create(0xc6e00bf3, 0x3da88fc2), X64Word_create(0xd5a79147, 0x930aa725), - X64Word_create(0x06ca6351, 0xe003826f), X64Word_create(0x14292967, 0x0a0e6e70), - X64Word_create(0x27b70a85, 0x46d22ffc), X64Word_create(0x2e1b2138, 0x5c26c926), - X64Word_create(0x4d2c6dfc, 0x5ac42aed), X64Word_create(0x53380d13, 0x9d95b3df), - X64Word_create(0x650a7354, 0x8baf63de), X64Word_create(0x766a0abb, 0x3c77b2a8), - X64Word_create(0x81c2c92e, 0x47edaee6), X64Word_create(0x92722c85, 0x1482353b), - X64Word_create(0xa2bfe8a1, 0x4cf10364), X64Word_create(0xa81a664b, 0xbc423001), - X64Word_create(0xc24b8b70, 0xd0f89791), X64Word_create(0xc76c51a3, 0x0654be30), - X64Word_create(0xd192e819, 0xd6ef5218), X64Word_create(0xd6990624, 0x5565a910), - X64Word_create(0xf40e3585, 0x5771202a), X64Word_create(0x106aa070, 0x32bbd1b8), - X64Word_create(0x19a4c116, 0xb8d2d0c8), X64Word_create(0x1e376c08, 0x5141ab53), - X64Word_create(0x2748774c, 0xdf8eeb99), X64Word_create(0x34b0bcb5, 0xe19b48a8), - X64Word_create(0x391c0cb3, 0xc5c95a63), X64Word_create(0x4ed8aa4a, 0xe3418acb), - X64Word_create(0x5b9cca4f, 0x7763e373), X64Word_create(0x682e6ff3, 0xd6b2b8a3), - X64Word_create(0x748f82ee, 0x5defb2fc), X64Word_create(0x78a5636f, 0x43172f60), - X64Word_create(0x84c87814, 0xa1f0ab72), X64Word_create(0x8cc70208, 0x1a6439ec), - X64Word_create(0x90befffa, 0x23631e28), X64Word_create(0xa4506ceb, 0xde82bde9), - X64Word_create(0xbef9a3f7, 0xb2c67915), X64Word_create(0xc67178f2, 0xe372532b), - X64Word_create(0xca273ece, 0xea26619c), X64Word_create(0xd186b8c7, 0x21c0c207), - X64Word_create(0xeada7dd6, 0xcde0eb1e), X64Word_create(0xf57d4f7f, 0xee6ed178), - X64Word_create(0x06f067aa, 0x72176fba), X64Word_create(0x0a637dc5, 0xa2c898a6), - X64Word_create(0x113f9804, 0xbef90dae), X64Word_create(0x1b710b35, 0x131c471b), - X64Word_create(0x28db77f5, 0x23047d84), X64Word_create(0x32caab7b, 0x40c72493), - X64Word_create(0x3c9ebe0a, 0x15c9bebc), X64Word_create(0x431d67c4, 0x9c100d4c), - X64Word_create(0x4cc5d4be, 0xcb3e42b6), X64Word_create(0x597f299c, 0xfc657e2a), - X64Word_create(0x5fcb6fab, 0x3ad6faec), X64Word_create(0x6c44198c, 0x4a475817) - ]; - - // Reusable objects - var W = []; - (function() { - for (var i = 0; i < 80; i++) { - W[i] = X64Word_create(); - } - }()); - - /** - * SHA-512 hash algorithm. - */ - var SHA512 = C_algo.SHA512 = Hasher.extend({ - _doReset: function() { - this._hash = new X64WordArray.init([ - new X64Word.init(0x6a09e667, 0xf3bcc908), new X64Word.init(0xbb67ae85, 0x84caa73b), - new X64Word.init(0x3c6ef372, 0xfe94f82b), new X64Word.init(0xa54ff53a, 0x5f1d36f1), - new X64Word.init(0x510e527f, 0xade682d1), new X64Word.init(0x9b05688c, 0x2b3e6c1f), - new X64Word.init(0x1f83d9ab, 0xfb41bd6b), new X64Word.init(0x5be0cd19, 0x137e2179) - ]); - }, - - _doProcessBlock: function(M, offset) { - // Shortcuts - var H = this._hash.words; - - var H0 = H[0]; - var H1 = H[1]; - var H2 = H[2]; - var H3 = H[3]; - var H4 = H[4]; - var H5 = H[5]; - var H6 = H[6]; - var H7 = H[7]; - - var H0h = H0.high; - var H0l = H0.low; - var H1h = H1.high; - var H1l = H1.low; - var H2h = H2.high; - var H2l = H2.low; - var H3h = H3.high; - var H3l = H3.low; - var H4h = H4.high; - var H4l = H4.low; - var H5h = H5.high; - var H5l = H5.low; - var H6h = H6.high; - var H6l = H6.low; - var H7h = H7.high; - var H7l = H7.low; - - // Working variables - var ah = H0h; - var al = H0l; - var bh = H1h; - var bl = H1l; - var ch = H2h; - var cl = H2l; - var dh = H3h; - var dl = H3l; - var eh = H4h; - var el = H4l; - var fh = H5h; - var fl = H5l; - var gh = H6h; - var gl = H6l; - var hh = H7h; - var hl = H7l; - - // Rounds - for (var i = 0; i < 80; i++) { - var Wil; - var Wih; - - // Shortcut - var Wi = W[i]; - - // Extend message - if (i < 16) { - Wih = Wi.high = M[offset + i * 2] | 0; - Wil = Wi.low = M[offset + i * 2 + 1] | 0; - } else { - // Gamma0 - var gamma0x = W[i - 15]; - var gamma0xh = gamma0x.high; - var gamma0xl = gamma0x.low; - var gamma0h = ((gamma0xh >>> 1) | (gamma0xl << 31)) ^ ((gamma0xh >>> 8) | (gamma0xl << 24)) ^ (gamma0xh >>> 7); - var gamma0l = ((gamma0xl >>> 1) | (gamma0xh << 31)) ^ ((gamma0xl >>> 8) | (gamma0xh << 24)) ^ ((gamma0xl >>> 7) | (gamma0xh << 25)); - - // Gamma1 - var gamma1x = W[i - 2]; - var gamma1xh = gamma1x.high; - var gamma1xl = gamma1x.low; - var gamma1h = ((gamma1xh >>> 19) | (gamma1xl << 13)) ^ ((gamma1xh << 3) | (gamma1xl >>> 29)) ^ (gamma1xh >>> 6); - var gamma1l = ((gamma1xl >>> 19) | (gamma1xh << 13)) ^ ((gamma1xl << 3) | (gamma1xh >>> 29)) ^ ((gamma1xl >>> 6) | (gamma1xh << 26)); - - // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16] - var Wi7 = W[i - 7]; - var Wi7h = Wi7.high; - var Wi7l = Wi7.low; - - var Wi16 = W[i - 16]; - var Wi16h = Wi16.high; - var Wi16l = Wi16.low; - - Wil = gamma0l + Wi7l; - Wih = gamma0h + Wi7h + ((Wil >>> 0) < (gamma0l >>> 0) ? 1 : 0); - Wil = Wil + gamma1l; - Wih = Wih + gamma1h + ((Wil >>> 0) < (gamma1l >>> 0) ? 1 : 0); - Wil = Wil + Wi16l; - Wih = Wih + Wi16h + ((Wil >>> 0) < (Wi16l >>> 0) ? 1 : 0); - - Wi.high = Wih; - Wi.low = Wil; - } - - var chh = (eh & fh) ^ (~eh & gh); - var chl = (el & fl) ^ (~el & gl); - var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch); - var majl = (al & bl) ^ (al & cl) ^ (bl & cl); - - var sigma0h = ((ah >>> 28) | (al << 4)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7)); - var sigma0l = ((al >>> 28) | (ah << 4)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7)); - var sigma1h = ((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9)); - var sigma1l = ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)); - - // t1 = h + sigma1 + ch + K[i] + W[i] - var Ki = K[i]; - var Kih = Ki.high; - var Kil = Ki.low; - - var t1l = hl + sigma1l; - var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0); - var t1l = t1l + chl; - var t1h = t1h + chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0); - var t1l = t1l + Kil; - var t1h = t1h + Kih + ((t1l >>> 0) < (Kil >>> 0) ? 1 : 0); - var t1l = t1l + Wil; - var t1h = t1h + Wih + ((t1l >>> 0) < (Wil >>> 0) ? 1 : 0); - - // t2 = sigma0 + maj - var t2l = sigma0l + majl; - var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0); - - // Update working variables - hh = gh; - hl = gl; - gh = fh; - gl = fl; - fh = eh; - fl = el; - el = (dl + t1l) | 0; - eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0; - dh = ch; - dl = cl; - ch = bh; - cl = bl; - bh = ah; - bl = al; - al = (t1l + t2l) | 0; - ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0; - } - - // Intermediate hash value - H0l = H0.low = (H0l + al); - H0.high = (H0h + ah + ((H0l >>> 0) < (al >>> 0) ? 1 : 0)); - H1l = H1.low = (H1l + bl); - H1.high = (H1h + bh + ((H1l >>> 0) < (bl >>> 0) ? 1 : 0)); - H2l = H2.low = (H2l + cl); - H2.high = (H2h + ch + ((H2l >>> 0) < (cl >>> 0) ? 1 : 0)); - H3l = H3.low = (H3l + dl); - H3.high = (H3h + dh + ((H3l >>> 0) < (dl >>> 0) ? 1 : 0)); - H4l = H4.low = (H4l + el); - H4.high = (H4h + eh + ((H4l >>> 0) < (el >>> 0) ? 1 : 0)); - H5l = H5.low = (H5l + fl); - H5.high = (H5h + fh + ((H5l >>> 0) < (fl >>> 0) ? 1 : 0)); - H6l = H6.low = (H6l + gl); - H6.high = (H6h + gh + ((H6l >>> 0) < (gl >>> 0) ? 1 : 0)); - H7l = H7.low = (H7l + hl); - H7.high = (H7h + hh + ((H7l >>> 0) < (hl >>> 0) ? 1 : 0)); - }, - - _doFinalize: function() { - // Shortcuts - var data = this._data; - var dataWords = data.words; - - var nBitsTotal = this._nDataBytes * 8; - var nBitsLeft = data.sigBytes * 8; - - // Add padding - dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32); - dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 30] = Math.floor(nBitsTotal / 0x100000000); - dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 31] = nBitsTotal; - data.sigBytes = dataWords.length * 4; - - // Hash final blocks - this._process(); - - // Convert hash to 32-bit word array before returning - var hash = this._hash.toX32(); - - // Return final computed hash - return hash; - }, - - clone: function() { - var clone = Hasher.clone.call(this); - clone._hash = this._hash.clone(); - - return clone; - }, - - blockSize: 1024 / 32 - }); - - /** - * Shortcut function to the hasher's object interface. - * - * @param {WordArray|string} message The message to hash. - * - * @return {WordArray} The hash. - * - * @static - * - * @example - * - * var hash = CryptoJS.SHA512('message'); - * var hash = CryptoJS.SHA512(wordArray); - */ - C.SHA512 = Hasher._createHelper(SHA512); - - /** - * Shortcut function to the HMAC's object interface. - * - * @param {WordArray|string} message The message to hash. - * @param {WordArray|string} key The secret key. - * - * @return {WordArray} The HMAC. - * - * @static - * - * @example - * - * var hmac = CryptoJS.HmacSHA512(message, key); - */ - C.HmacSHA512 = Hasher._createHmacHelper(SHA512); - }()); - - - (function() { - // Shortcuts - var C = CryptoJS; - var C_x64 = C.x64; - var X64Word = C_x64.Word; - var X64WordArray = C_x64.WordArray; - var C_algo = C.algo; - var SHA512 = C_algo.SHA512; - - /** - * SHA-384 hash algorithm. - */ - var SHA384 = C_algo.SHA384 = SHA512.extend({ - _doReset: function() { - this._hash = new X64WordArray.init([ - new X64Word.init(0xcbbb9d5d, 0xc1059ed8), new X64Word.init(0x629a292a, 0x367cd507), - new X64Word.init(0x9159015a, 0x3070dd17), new X64Word.init(0x152fecd8, 0xf70e5939), - new X64Word.init(0x67332667, 0xffc00b31), new X64Word.init(0x8eb44a87, 0x68581511), - new X64Word.init(0xdb0c2e0d, 0x64f98fa7), new X64Word.init(0x47b5481d, 0xbefa4fa4) - ]); - }, - - _doFinalize: function() { - var hash = SHA512._doFinalize.call(this); - - hash.sigBytes -= 16; - - return hash; - } - }); - - /** - * Shortcut function to the hasher's object interface. - * - * @param {WordArray|string} message The message to hash. - * - * @return {WordArray} The hash. - * - * @static - * - * @example - * - * var hash = CryptoJS.SHA384('message'); - * var hash = CryptoJS.SHA384(wordArray); - */ - C.SHA384 = SHA512._createHelper(SHA384); - - /** - * Shortcut function to the HMAC's object interface. - * - * @param {WordArray|string} message The message to hash. - * @param {WordArray|string} key The secret key. - * - * @return {WordArray} The HMAC. - * - * @static - * - * @example - * - * var hmac = CryptoJS.HmacSHA384(message, key); - */ - C.HmacSHA384 = SHA512._createHmacHelper(SHA384); - }()); - - - (function(Math) { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var WordArray = C_lib.WordArray; - var Hasher = C_lib.Hasher; - var C_x64 = C.x64; - var X64Word = C_x64.Word; - var C_algo = C.algo; - - // Constants tables - var RHO_OFFSETS = []; - var PI_INDEXES = []; - var ROUND_CONSTANTS = []; - - // Compute Constants - (function() { - // Compute rho offset constants - var x = 1, - y = 0; - for (var t = 0; t < 24; t++) { - RHO_OFFSETS[x + 5 * y] = ((t + 1) * (t + 2) / 2) % 64; - - var newX = y % 5; - var newY = (2 * x + 3 * y) % 5; - x = newX; - y = newY; - } - - // Compute pi index constants - for (var x = 0; x < 5; x++) { - for (var y = 0; y < 5; y++) { - PI_INDEXES[x + 5 * y] = y + ((2 * x + 3 * y) % 5) * 5; - } - } - - // Compute round constants - var LFSR = 0x01; - for (var i = 0; i < 24; i++) { - var roundConstantMsw = 0; - var roundConstantLsw = 0; - - for (var j = 0; j < 7; j++) { - if (LFSR & 0x01) { - var bitPosition = (1 << j) - 1; - if (bitPosition < 32) { - roundConstantLsw ^= 1 << bitPosition; - } else /* if (bitPosition >= 32) */ { - roundConstantMsw ^= 1 << (bitPosition - 32); - } - } - - // Compute next LFSR - if (LFSR & 0x80) { - // Primitive polynomial over GF(2): x^8 + x^6 + x^5 + x^4 + 1 - LFSR = (LFSR << 1) ^ 0x71; - } else { - LFSR <<= 1; - } - } - - ROUND_CONSTANTS[i] = X64Word.create(roundConstantMsw, roundConstantLsw); - } - }()); - - // Reusable objects for temporary values - var T = []; - (function() { - for (var i = 0; i < 25; i++) { - T[i] = X64Word.create(); - } - }()); - - /** - * SHA-3 hash algorithm. - */ - var SHA3 = C_algo.SHA3 = Hasher.extend({ - /** - * Configuration options. - * - * @property {number} outputLength - * The desired number of bits in the output hash. - * Only values permitted are: 224, 256, 384, 512. - * Default: 512 - */ - cfg: Hasher.cfg.extend({ - outputLength: 512 - }), - - _doReset: function() { - var state = this._state = [] - for (var i = 0; i < 25; i++) { - state[i] = new X64Word.init(); - } - - this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32; - }, - - _doProcessBlock: function(M, offset) { - // Shortcuts - var state = this._state; - var nBlockSizeLanes = this.blockSize / 2; - - // Absorb - for (var i = 0; i < nBlockSizeLanes; i++) { - // Shortcuts - var M2i = M[offset + 2 * i]; - var M2i1 = M[offset + 2 * i + 1]; - - // Swap endian - M2i = ( - (((M2i << 8) | (M2i >>> 24)) & 0x00ff00ff) | - (((M2i << 24) | (M2i >>> 8)) & 0xff00ff00) - ); - M2i1 = ( - (((M2i1 << 8) | (M2i1 >>> 24)) & 0x00ff00ff) | - (((M2i1 << 24) | (M2i1 >>> 8)) & 0xff00ff00) - ); - - // Absorb message into state - var lane = state[i]; - lane.high ^= M2i1; - lane.low ^= M2i; - } - - // Rounds - for (var round = 0; round < 24; round++) { - // Theta - for (var x = 0; x < 5; x++) { - // Mix column lanes - var tMsw = 0, - tLsw = 0; - for (var y = 0; y < 5; y++) { - var lane = state[x + 5 * y]; - tMsw ^= lane.high; - tLsw ^= lane.low; - } - - // Temporary values - var Tx = T[x]; - Tx.high = tMsw; - Tx.low = tLsw; - } - for (var x = 0; x < 5; x++) { - // Shortcuts - var Tx4 = T[(x + 4) % 5]; - var Tx1 = T[(x + 1) % 5]; - var Tx1Msw = Tx1.high; - var Tx1Lsw = Tx1.low; - - // Mix surrounding columns - var tMsw = Tx4.high ^ ((Tx1Msw << 1) | (Tx1Lsw >>> 31)); - var tLsw = Tx4.low ^ ((Tx1Lsw << 1) | (Tx1Msw >>> 31)); - for (var y = 0; y < 5; y++) { - var lane = state[x + 5 * y]; - lane.high ^= tMsw; - lane.low ^= tLsw; - } - } - - // Rho Pi - for (var laneIndex = 1; laneIndex < 25; laneIndex++) { - var tMsw; - var tLsw; - - // Shortcuts - var lane = state[laneIndex]; - var laneMsw = lane.high; - var laneLsw = lane.low; - var rhoOffset = RHO_OFFSETS[laneIndex]; - - // Rotate lanes - if (rhoOffset < 32) { - tMsw = (laneMsw << rhoOffset) | (laneLsw >>> (32 - rhoOffset)); - tLsw = (laneLsw << rhoOffset) | (laneMsw >>> (32 - rhoOffset)); - } else /* if (rhoOffset >= 32) */ { - tMsw = (laneLsw << (rhoOffset - 32)) | (laneMsw >>> (64 - rhoOffset)); - tLsw = (laneMsw << (rhoOffset - 32)) | (laneLsw >>> (64 - rhoOffset)); - } - - // Transpose lanes - var TPiLane = T[PI_INDEXES[laneIndex]]; - TPiLane.high = tMsw; - TPiLane.low = tLsw; - } - - // Rho pi at x = y = 0 - var T0 = T[0]; - var state0 = state[0]; - T0.high = state0.high; - T0.low = state0.low; - - // Chi - for (var x = 0; x < 5; x++) { - for (var y = 0; y < 5; y++) { - // Shortcuts - var laneIndex = x + 5 * y; - var lane = state[laneIndex]; - var TLane = T[laneIndex]; - var Tx1Lane = T[((x + 1) % 5) + 5 * y]; - var Tx2Lane = T[((x + 2) % 5) + 5 * y]; - - // Mix rows - lane.high = TLane.high ^ (~Tx1Lane.high & Tx2Lane.high); - lane.low = TLane.low ^ (~Tx1Lane.low & Tx2Lane.low); - } - } - - // Iota - var lane = state[0]; - var roundConstant = ROUND_CONSTANTS[round]; - lane.high ^= roundConstant.high; - lane.low ^= roundConstant.low; - } - }, - - _doFinalize: function() { - // Shortcuts - var data = this._data; - var dataWords = data.words; - var nBitsTotal = this._nDataBytes * 8; - var nBitsLeft = data.sigBytes * 8; - var blockSizeBits = this.blockSize * 32; - - // Add padding - dataWords[nBitsLeft >>> 5] |= 0x1 << (24 - nBitsLeft % 32); - dataWords[((Math.ceil((nBitsLeft + 1) / blockSizeBits) * blockSizeBits) >>> 5) - 1] |= 0x80; - data.sigBytes = dataWords.length * 4; - - // Hash final blocks - this._process(); - - // Shortcuts - var state = this._state; - var outputLengthBytes = this.cfg.outputLength / 8; - var outputLengthLanes = outputLengthBytes / 8; - - // Squeeze - var hashWords = []; - for (var i = 0; i < outputLengthLanes; i++) { - // Shortcuts - var lane = state[i]; - var laneMsw = lane.high; - var laneLsw = lane.low; - - // Swap endian - laneMsw = ( - (((laneMsw << 8) | (laneMsw >>> 24)) & 0x00ff00ff) | - (((laneMsw << 24) | (laneMsw >>> 8)) & 0xff00ff00) - ); - laneLsw = ( - (((laneLsw << 8) | (laneLsw >>> 24)) & 0x00ff00ff) | - (((laneLsw << 24) | (laneLsw >>> 8)) & 0xff00ff00) - ); - - // Squeeze state to retrieve hash - hashWords.push(laneLsw); - hashWords.push(laneMsw); - } - - // Return final computed hash - return new WordArray.init(hashWords, outputLengthBytes); - }, - - clone: function() { - var clone = Hasher.clone.call(this); - - var state = clone._state = this._state.slice(0); - for (var i = 0; i < 25; i++) { - state[i] = state[i].clone(); - } - - return clone; - } - }); - - /** - * Shortcut function to the hasher's object interface. - * - * @param {WordArray|string} message The message to hash. - * - * @return {WordArray} The hash. - * - * @static - * - * @example - * - * var hash = CryptoJS.SHA3('message'); - * var hash = CryptoJS.SHA3(wordArray); - */ - C.SHA3 = Hasher._createHelper(SHA3); - - /** - * Shortcut function to the HMAC's object interface. - * - * @param {WordArray|string} message The message to hash. - * @param {WordArray|string} key The secret key. - * - * @return {WordArray} The HMAC. - * - * @static - * - * @example - * - * var hmac = CryptoJS.HmacSHA3(message, key); - */ - C.HmacSHA3 = Hasher._createHmacHelper(SHA3); - }(Math)); - - - /** @preserve - (c) 2012 by Cédric Mesnil. All rights reserved. - - Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - - - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - - (function(Math) { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var WordArray = C_lib.WordArray; - var Hasher = C_lib.Hasher; - var C_algo = C.algo; - - // Constants table - var _zl = WordArray.create([ - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, - 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, - 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, - 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13 - ]); - var _zr = WordArray.create([ - 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, - 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, - 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, - 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, - 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11 - ]); - var _sl = WordArray.create([ - 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, - 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, - 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, - 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, - 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 - ]); - var _sr = WordArray.create([ - 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, - 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, - 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, - 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, - 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 - ]); - - var _hl = WordArray.create([0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]); - var _hr = WordArray.create([0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]); - - /** - * RIPEMD160 hash algorithm. - */ - var RIPEMD160 = C_algo.RIPEMD160 = Hasher.extend({ - _doReset: function() { - this._hash = WordArray.create([0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]); - }, - - _doProcessBlock: function(M, offset) { - - // Swap endian - for (var i = 0; i < 16; i++) { - // Shortcuts - var offset_i = offset + i; - var M_offset_i = M[offset_i]; - - // Swap - M[offset_i] = ( - (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) | - (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00) - ); - } - // Shortcut - var H = this._hash.words; - var hl = _hl.words; - var hr = _hr.words; - var zl = _zl.words; - var zr = _zr.words; - var sl = _sl.words; - var sr = _sr.words; - - // Working variables - var al, bl, cl, dl, el; - var ar, br, cr, dr, er; - - ar = al = H[0]; - br = bl = H[1]; - cr = cl = H[2]; - dr = dl = H[3]; - er = el = H[4]; - // Computation - var t; - for (var i = 0; i < 80; i += 1) { - t = (al + M[offset + zl[i]]) | 0; - if (i < 16) { - t += f1(bl, cl, dl) + hl[0]; - } else if (i < 32) { - t += f2(bl, cl, dl) + hl[1]; - } else if (i < 48) { - t += f3(bl, cl, dl) + hl[2]; - } else if (i < 64) { - t += f4(bl, cl, dl) + hl[3]; - } else { // if (i<80) { - t += f5(bl, cl, dl) + hl[4]; - } - t = t | 0; - t = rotl(t, sl[i]); - t = (t + el) | 0; - al = el; - el = dl; - dl = rotl(cl, 10); - cl = bl; - bl = t; - - t = (ar + M[offset + zr[i]]) | 0; - if (i < 16) { - t += f5(br, cr, dr) + hr[0]; - } else if (i < 32) { - t += f4(br, cr, dr) + hr[1]; - } else if (i < 48) { - t += f3(br, cr, dr) + hr[2]; - } else if (i < 64) { - t += f2(br, cr, dr) + hr[3]; - } else { // if (i<80) { - t += f1(br, cr, dr) + hr[4]; - } - t = t | 0; - t = rotl(t, sr[i]); - t = (t + er) | 0; - ar = er; - er = dr; - dr = rotl(cr, 10); - cr = br; - br = t; - } - // Intermediate hash value - t = (H[1] + cl + dr) | 0; - H[1] = (H[2] + dl + er) | 0; - H[2] = (H[3] + el + ar) | 0; - H[3] = (H[4] + al + br) | 0; - H[4] = (H[0] + bl + cr) | 0; - H[0] = t; - }, - - _doFinalize: function() { - // Shortcuts - var data = this._data; - var dataWords = data.words; - - var nBitsTotal = this._nDataBytes * 8; - var nBitsLeft = data.sigBytes * 8; - - // Add padding - dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32); - dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = ( - (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) | - (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00) - ); - data.sigBytes = (dataWords.length + 1) * 4; - - // Hash final blocks - this._process(); - - // Shortcuts - var hash = this._hash; - var H = hash.words; - - // Swap endian - for (var i = 0; i < 5; i++) { - // Shortcut - var H_i = H[i]; - - // Swap - H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) | - (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00); - } - - // Return final computed hash - return hash; - }, - - clone: function() { - var clone = Hasher.clone.call(this); - clone._hash = this._hash.clone(); - - return clone; - } - }); - - - function f1(x, y, z) { - return ((x) ^ (y) ^ (z)); - - } - - function f2(x, y, z) { - return (((x) & (y)) | ((~x) & (z))); - } - - function f3(x, y, z) { - return (((x) | (~(y))) ^ (z)); - } - - function f4(x, y, z) { - return (((x) & (z)) | ((y) & (~(z)))); - } - - function f5(x, y, z) { - return ((x) ^ ((y) | (~(z)))); - - } - - function rotl(x, n) { - return (x << n) | (x >>> (32 - n)); - } - - - /** - * Shortcut function to the hasher's object interface. - * - * @param {WordArray|string} message The message to hash. - * - * @return {WordArray} The hash. - * - * @static - * - * @example - * - * var hash = CryptoJS.RIPEMD160('message'); - * var hash = CryptoJS.RIPEMD160(wordArray); - */ - C.RIPEMD160 = Hasher._createHelper(RIPEMD160); - - /** - * Shortcut function to the HMAC's object interface. - * - * @param {WordArray|string} message The message to hash. - * @param {WordArray|string} key The secret key. - * - * @return {WordArray} The HMAC. - * - * @static - * - * @example - * - * var hmac = CryptoJS.HmacRIPEMD160(message, key); - */ - C.HmacRIPEMD160 = Hasher._createHmacHelper(RIPEMD160); - }(Math)); - - - (function() { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var Base = C_lib.Base; - var C_enc = C.enc; - var Utf8 = C_enc.Utf8; - var C_algo = C.algo; - - /** - * HMAC algorithm. - */ - var HMAC = C_algo.HMAC = Base.extend({ - /** - * Initializes a newly created HMAC. - * - * @param {Hasher} hasher The hash algorithm to use. - * @param {WordArray|string} key The secret key. - * - * @example - * - * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key); - */ - init: function(hasher, key) { - // Init hasher - hasher = this._hasher = new hasher.init(); - - // Convert string to WordArray, else assume WordArray already - if (typeof key == 'string') { - key = Utf8.parse(key); - } - - // Shortcuts - var hasherBlockSize = hasher.blockSize; - var hasherBlockSizeBytes = hasherBlockSize * 4; - - // Allow arbitrary length keys - if (key.sigBytes > hasherBlockSizeBytes) { - key = hasher.finalize(key); - } - - // Clamp excess bits - key.clamp(); - - // Clone key for inner and outer pads - var oKey = this._oKey = key.clone(); - var iKey = this._iKey = key.clone(); - - // Shortcuts - var oKeyWords = oKey.words; - var iKeyWords = iKey.words; - - // XOR keys with pad constants - for (var i = 0; i < hasherBlockSize; i++) { - oKeyWords[i] ^= 0x5c5c5c5c; - iKeyWords[i] ^= 0x36363636; - } - oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes; - - // Set initial values - this.reset(); - }, - - /** - * Resets this HMAC to its initial state. - * - * @example - * - * hmacHasher.reset(); - */ - reset: function() { - // Shortcut - var hasher = this._hasher; - - // Reset - hasher.reset(); - hasher.update(this._iKey); - }, - - /** - * Updates this HMAC with a message. - * - * @param {WordArray|string} messageUpdate The message to append. - * - * @return {HMAC} This HMAC instance. - * - * @example - * - * hmacHasher.update('message'); - * hmacHasher.update(wordArray); - */ - update: function(messageUpdate) { - this._hasher.update(messageUpdate); - - // Chainable - return this; - }, - - /** - * Finalizes the HMAC computation. - * Note that the finalize operation is effectively a destructive, read-once operation. - * - * @param {WordArray|string} messageUpdate (Optional) A final message update. - * - * @return {WordArray} The HMAC. - * - * @example - * - * var hmac = hmacHasher.finalize(); - * var hmac = hmacHasher.finalize('message'); - * var hmac = hmacHasher.finalize(wordArray); - */ - finalize: function(messageUpdate) { - // Shortcut - var hasher = this._hasher; - - // Compute HMAC - var innerHash = hasher.finalize(messageUpdate); - hasher.reset(); - var hmac = hasher.finalize(this._oKey.clone().concat(innerHash)); - - return hmac; - } - }); - }()); - - - (function() { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var Base = C_lib.Base; - var WordArray = C_lib.WordArray; - var C_algo = C.algo; - var SHA1 = C_algo.SHA1; - var HMAC = C_algo.HMAC; - - /** - * Password-Based Key Derivation Function 2 algorithm. - */ - var PBKDF2 = C_algo.PBKDF2 = Base.extend({ - /** - * Configuration options. - * - * @property {number} keySize The key size in words to generate. Default: 4 (128 bits) - * @property {Hasher} hasher The hasher to use. Default: SHA1 - * @property {number} iterations The number of iterations to perform. Default: 1 - */ - cfg: Base.extend({ - keySize: 128 / 32, - hasher: SHA1, - iterations: 1 - }), - - /** - * Initializes a newly created key derivation function. - * - * @param {Object} cfg (Optional) The configuration options to use for the derivation. - * - * @example - * - * var kdf = CryptoJS.algo.PBKDF2.create(); - * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 }); - * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 }); - */ - init: function(cfg) { - this.cfg = this.cfg.extend(cfg); - }, - - /** - * Computes the Password-Based Key Derivation Function 2. - * - * @param {WordArray|string} password The password. - * @param {WordArray|string} salt A salt. - * - * @return {WordArray} The derived key. - * - * @example - * - * var key = kdf.compute(password, salt); - */ - compute: function(password, salt) { - // Shortcut - var cfg = this.cfg; - - // Init HMAC - var hmac = HMAC.create(cfg.hasher, password); - - // Initial values - var derivedKey = WordArray.create(); - var blockIndex = WordArray.create([0x00000001]); - - // Shortcuts - var derivedKeyWords = derivedKey.words; - var blockIndexWords = blockIndex.words; - var keySize = cfg.keySize; - var iterations = cfg.iterations; - - // Generate key - while (derivedKeyWords.length < keySize) { - var block = hmac.update(salt).finalize(blockIndex); - hmac.reset(); - - // Shortcuts - var blockWords = block.words; - var blockWordsLength = blockWords.length; - - // Iterations - var intermediate = block; - for (var i = 1; i < iterations; i++) { - intermediate = hmac.finalize(intermediate); - hmac.reset(); - - // Shortcut - var intermediateWords = intermediate.words; - - // XOR intermediate with block - for (var j = 0; j < blockWordsLength; j++) { - blockWords[j] ^= intermediateWords[j]; - } - } - - derivedKey.concat(block); - blockIndexWords[0]++; - } - derivedKey.sigBytes = keySize * 4; - - return derivedKey; - } - }); - - /** - * Computes the Password-Based Key Derivation Function 2. - * - * @param {WordArray|string} password The password. - * @param {WordArray|string} salt A salt. - * @param {Object} cfg (Optional) The configuration options to use for this computation. - * - * @return {WordArray} The derived key. - * - * @static - * - * @example - * - * var key = CryptoJS.PBKDF2(password, salt); - * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 }); - * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 }); - */ - C.PBKDF2 = function(password, salt, cfg) { - return PBKDF2.create(cfg).compute(password, salt); - }; - }()); - - - (function() { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var Base = C_lib.Base; - var WordArray = C_lib.WordArray; - var C_algo = C.algo; - var MD5 = C_algo.MD5; - - /** - * This key derivation function is meant to conform with EVP_BytesToKey. - * www.openssl.org/docs/crypto/EVP_BytesToKey.html - */ - var EvpKDF = C_algo.EvpKDF = Base.extend({ - /** - * Configuration options. - * - * @property {number} keySize The key size in words to generate. Default: 4 (128 bits) - * @property {Hasher} hasher The hash algorithm to use. Default: MD5 - * @property {number} iterations The number of iterations to perform. Default: 1 - */ - cfg: Base.extend({ - keySize: 128 / 32, - hasher: MD5, - iterations: 1 - }), - - /** - * Initializes a newly created key derivation function. - * - * @param {Object} cfg (Optional) The configuration options to use for the derivation. - * - * @example - * - * var kdf = CryptoJS.algo.EvpKDF.create(); - * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 }); - * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 }); - */ - init: function(cfg) { - this.cfg = this.cfg.extend(cfg); - }, - - /** - * Derives a key from a password. - * - * @param {WordArray|string} password The password. - * @param {WordArray|string} salt A salt. - * - * @return {WordArray} The derived key. - * - * @example - * - * var key = kdf.compute(password, salt); - */ - compute: function(password, salt) { - var block; - - // Shortcut - var cfg = this.cfg; - - // Init hasher - var hasher = cfg.hasher.create(); - - // Initial values - var derivedKey = WordArray.create(); - - // Shortcuts - var derivedKeyWords = derivedKey.words; - var keySize = cfg.keySize; - var iterations = cfg.iterations; - - // Generate key - while (derivedKeyWords.length < keySize) { - if (block) { - hasher.update(block); - } - block = hasher.update(password).finalize(salt); - hasher.reset(); - - // Iterations - for (var i = 1; i < iterations; i++) { - block = hasher.finalize(block); - hasher.reset(); - } - - derivedKey.concat(block); - } - derivedKey.sigBytes = keySize * 4; - - return derivedKey; - } - }); - - /** - * Derives a key from a password. - * - * @param {WordArray|string} password The password. - * @param {WordArray|string} salt A salt. - * @param {Object} cfg (Optional) The configuration options to use for this computation. - * - * @return {WordArray} The derived key. - * - * @static - * - * @example - * - * var key = CryptoJS.EvpKDF(password, salt); - * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 }); - * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 }); - */ - C.EvpKDF = function(password, salt, cfg) { - return EvpKDF.create(cfg).compute(password, salt); - }; - }()); - - - /** - * Cipher core components. - */ - CryptoJS.lib.Cipher || (function(undefined) { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var Base = C_lib.Base; - var WordArray = C_lib.WordArray; - var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm; - var C_enc = C.enc; - var Utf8 = C_enc.Utf8; - var Base64 = C_enc.Base64; - var C_algo = C.algo; - var EvpKDF = C_algo.EvpKDF; - - /** - * Abstract base cipher template. - * - * @property {number} keySize This cipher's key size. Default: 4 (128 bits) - * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits) - * @property {number} _ENC_XFORM_MODE A constant representing encryption mode. - * @property {number} _DEC_XFORM_MODE A constant representing decryption mode. - */ - var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({ - /** - * Configuration options. - * - * @property {WordArray} iv The IV to use for this operation. - */ - cfg: Base.extend(), - - /** - * Creates this cipher in encryption mode. - * - * @param {WordArray} key The key. - * @param {Object} cfg (Optional) The configuration options to use for this operation. - * - * @return {Cipher} A cipher instance. - * - * @static - * - * @example - * - * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray }); - */ - createEncryptor: function(key, cfg) { - return this.create(this._ENC_XFORM_MODE, key, cfg); - }, - - /** - * Creates this cipher in decryption mode. - * - * @param {WordArray} key The key. - * @param {Object} cfg (Optional) The configuration options to use for this operation. - * - * @return {Cipher} A cipher instance. - * - * @static - * - * @example - * - * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray }); - */ - createDecryptor: function(key, cfg) { - return this.create(this._DEC_XFORM_MODE, key, cfg); - }, - - /** - * Initializes a newly created cipher. - * - * @param {number} xformMode Either the encryption or decryption transormation mode constant. - * @param {WordArray} key The key. - * @param {Object} cfg (Optional) The configuration options to use for this operation. - * - * @example - * - * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray }); - */ - init: function(xformMode, key, cfg) { - // Apply config defaults - this.cfg = this.cfg.extend(cfg); - - // Store transform mode and key - this._xformMode = xformMode; - this._key = key; - - // Set initial values - this.reset(); - }, - - /** - * Resets this cipher to its initial state. - * - * @example - * - * cipher.reset(); - */ - reset: function() { - // Reset data buffer - BufferedBlockAlgorithm.reset.call(this); - - // Perform concrete-cipher logic - this._doReset(); - }, - - /** - * Adds data to be encrypted or decrypted. - * - * @param {WordArray|string} dataUpdate The data to encrypt or decrypt. - * - * @return {WordArray} The data after processing. - * - * @example - * - * var encrypted = cipher.process('data'); - * var encrypted = cipher.process(wordArray); - */ - process: function(dataUpdate) { - // Append - this._append(dataUpdate); - - // Process available blocks - return this._process(); - }, - - /** - * Finalizes the encryption or decryption process. - * Note that the finalize operation is effectively a destructive, read-once operation. - * - * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt. - * - * @return {WordArray} The data after final processing. - * - * @example - * - * var encrypted = cipher.finalize(); - * var encrypted = cipher.finalize('data'); - * var encrypted = cipher.finalize(wordArray); - */ - finalize: function(dataUpdate) { - // Final data update - if (dataUpdate) { - this._append(dataUpdate); - } - - // Perform concrete-cipher logic - var finalProcessedData = this._doFinalize(); - - return finalProcessedData; - }, - - keySize: 128 / 32, - - ivSize: 128 / 32, - - _ENC_XFORM_MODE: 1, - - _DEC_XFORM_MODE: 2, - - /** - * Creates shortcut functions to a cipher's object interface. - * - * @param {Cipher} cipher The cipher to create a helper for. - * - * @return {Object} An object with encrypt and decrypt shortcut functions. - * - * @static - * - * @example - * - * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES); - */ - _createHelper: (function() { - function selectCipherStrategy(key) { - if (typeof key == 'string') { - return PasswordBasedCipher; - } else { - return SerializableCipher; - } - } - - return function(cipher) { - return { - encrypt: function(message, key, cfg) { - return selectCipherStrategy(key).encrypt(cipher, message, key, cfg); - }, - - decrypt: function(ciphertext, key, cfg) { - return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg); - } - }; - }; - }()) - }); - - /** - * Abstract base stream cipher template. - * - * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits) - */ - var StreamCipher = C_lib.StreamCipher = Cipher.extend({ - _doFinalize: function() { - // Process partial blocks - var finalProcessedBlocks = this._process(!!'flush'); - - return finalProcessedBlocks; - }, - - blockSize: 1 - }); - - /** - * Mode namespace. - */ - var C_mode = C.mode = {}; - - /** - * Abstract base block cipher mode template. - */ - var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({ - /** - * Creates this mode for encryption. - * - * @param {Cipher} cipher A block cipher instance. - * @param {Array} iv The IV words. - * - * @static - * - * @example - * - * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words); - */ - createEncryptor: function(cipher, iv) { - return this.Encryptor.create(cipher, iv); - }, - - /** - * Creates this mode for decryption. - * - * @param {Cipher} cipher A block cipher instance. - * @param {Array} iv The IV words. - * - * @static - * - * @example - * - * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words); - */ - createDecryptor: function(cipher, iv) { - return this.Decryptor.create(cipher, iv); - }, - - /** - * Initializes a newly created mode. - * - * @param {Cipher} cipher A block cipher instance. - * @param {Array} iv The IV words. - * - * @example - * - * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words); - */ - init: function(cipher, iv) { - this._cipher = cipher; - this._iv = iv; - } - }); - - /** - * Cipher Block Chaining mode. - */ - var CBC = C_mode.CBC = (function() { - /** - * Abstract base CBC mode. - */ - var CBC = BlockCipherMode.extend(); - - /** - * CBC encryptor. - */ - CBC.Encryptor = CBC.extend({ - /** - * Processes the data block at offset. - * - * @param {Array} words The data words to operate on. - * @param {number} offset The offset where the block starts. - * - * @example - * - * mode.processBlock(data.words, offset); - */ - processBlock: function(words, offset) { - // Shortcuts - var cipher = this._cipher; - var blockSize = cipher.blockSize; - - // XOR and encrypt - xorBlock.call(this, words, offset, blockSize); - cipher.encryptBlock(words, offset); - - // Remember this block to use with next block - this._prevBlock = words.slice(offset, offset + blockSize); - } - }); - - /** - * CBC decryptor. - */ - CBC.Decryptor = CBC.extend({ - /** - * Processes the data block at offset. - * - * @param {Array} words The data words to operate on. - * @param {number} offset The offset where the block starts. - * - * @example - * - * mode.processBlock(data.words, offset); - */ - processBlock: function(words, offset) { - // Shortcuts - var cipher = this._cipher; - var blockSize = cipher.blockSize; - - // Remember this block to use with next block - var thisBlock = words.slice(offset, offset + blockSize); - - // Decrypt and XOR - cipher.decryptBlock(words, offset); - xorBlock.call(this, words, offset, blockSize); - - // This block becomes the previous block - this._prevBlock = thisBlock; - } - }); - - function xorBlock(words, offset, blockSize) { - var block; - - // Shortcut - var iv = this._iv; - - // Choose mixing block - if (iv) { - block = iv; - - // Remove IV for subsequent blocks - this._iv = undefined; - } else { - block = this._prevBlock; - } - - // XOR blocks - for (var i = 0; i < blockSize; i++) { - words[offset + i] ^= block[i]; - } - } - - return CBC; - }()); - - /** - * Padding namespace. - */ - var C_pad = C.pad = {}; - - /** - * PKCS #5/7 padding strategy. - */ - var Pkcs7 = C_pad.Pkcs7 = { - /** - * Pads data using the algorithm defined in PKCS #5/7. - * - * @param {WordArray} data The data to pad. - * @param {number} blockSize The multiple that the data should be padded to. - * - * @static - * - * @example - * - * CryptoJS.pad.Pkcs7.pad(wordArray, 4); - */ - pad: function(data, blockSize) { - // Shortcut - var blockSizeBytes = blockSize * 4; - - // Count padding bytes - var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes; - - // Create padding word - var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes; - - // Create padding - var paddingWords = []; - for (var i = 0; i < nPaddingBytes; i += 4) { - paddingWords.push(paddingWord); - } - var padding = WordArray.create(paddingWords, nPaddingBytes); - - // Add padding - data.concat(padding); - }, - - /** - * Unpads data that had been padded using the algorithm defined in PKCS #5/7. - * - * @param {WordArray} data The data to unpad. - * - * @static - * - * @example - * - * CryptoJS.pad.Pkcs7.unpad(wordArray); - */ - unpad: function(data) { - // Get number of padding bytes from last byte - var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff; - - // Remove padding - data.sigBytes -= nPaddingBytes; - } - }; - - /** - * Abstract base block cipher template. - * - * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits) - */ - var BlockCipher = C_lib.BlockCipher = Cipher.extend({ - /** - * Configuration options. - * - * @property {Mode} mode The block mode to use. Default: CBC - * @property {Padding} padding The padding strategy to use. Default: Pkcs7 - */ - cfg: Cipher.cfg.extend({ - mode: CBC, - padding: Pkcs7 - }), - - reset: function() { - var modeCreator; - - // Reset cipher - Cipher.reset.call(this); - - // Shortcuts - var cfg = this.cfg; - var iv = cfg.iv; - var mode = cfg.mode; - - // Reset block mode - if (this._xformMode == this._ENC_XFORM_MODE) { - modeCreator = mode.createEncryptor; - } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ { - modeCreator = mode.createDecryptor; - // Keep at least one block in the buffer for unpadding - this._minBufferSize = 1; - } - - if (this._mode && this._mode.__creator == modeCreator) { - this._mode.init(this, iv && iv.words); - } else { - this._mode = modeCreator.call(mode, this, iv && iv.words); - this._mode.__creator = modeCreator; - } - }, - - _doProcessBlock: function(words, offset) { - this._mode.processBlock(words, offset); - }, - - _doFinalize: function() { - var finalProcessedBlocks; - - // Shortcut - var padding = this.cfg.padding; - - // Finalize - if (this._xformMode == this._ENC_XFORM_MODE) { - // Pad data - padding.pad(this._data, this.blockSize); - - // Process final blocks - finalProcessedBlocks = this._process(!!'flush'); - } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ { - // Process final blocks - finalProcessedBlocks = this._process(!!'flush'); - - // Unpad data - padding.unpad(finalProcessedBlocks); - } - - return finalProcessedBlocks; - }, - - blockSize: 128 / 32 - }); - - /** - * A collection of cipher parameters. - * - * @property {WordArray} ciphertext The raw ciphertext. - * @property {WordArray} key The key to this ciphertext. - * @property {WordArray} iv The IV used in the ciphering operation. - * @property {WordArray} salt The salt used with a key derivation function. - * @property {Cipher} algorithm The cipher algorithm. - * @property {Mode} mode The block mode used in the ciphering operation. - * @property {Padding} padding The padding scheme used in the ciphering operation. - * @property {number} blockSize The block size of the cipher. - * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string. - */ - var CipherParams = C_lib.CipherParams = Base.extend({ - /** - * Initializes a newly created cipher params object. - * - * @param {Object} cipherParams An object with any of the possible cipher parameters. - * - * @example - * - * var cipherParams = CryptoJS.lib.CipherParams.create({ - * ciphertext: ciphertextWordArray, - * key: keyWordArray, - * iv: ivWordArray, - * salt: saltWordArray, - * algorithm: CryptoJS.algo.AES, - * mode: CryptoJS.mode.CBC, - * padding: CryptoJS.pad.PKCS7, - * blockSize: 4, - * formatter: CryptoJS.format.OpenSSL - * }); - */ - init: function(cipherParams) { - this.mixIn(cipherParams); - }, - - /** - * Converts this cipher params object to a string. - * - * @param {Format} formatter (Optional) The formatting strategy to use. - * - * @return {string} The stringified cipher params. - * - * @throws Error If neither the formatter nor the default formatter is set. - * - * @example - * - * var string = cipherParams + ''; - * var string = cipherParams.toString(); - * var string = cipherParams.toString(CryptoJS.format.OpenSSL); - */ - toString: function(formatter) { - return (formatter || this.formatter).stringify(this); - } - }); - - /** - * Format namespace. - */ - var C_format = C.format = {}; - - /** - * OpenSSL formatting strategy. - */ - var OpenSSLFormatter = C_format.OpenSSL = { - /** - * Converts a cipher params object to an OpenSSL-compatible string. - * - * @param {CipherParams} cipherParams The cipher params object. - * - * @return {string} The OpenSSL-compatible string. - * - * @static - * - * @example - * - * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams); - */ - stringify: function(cipherParams) { - var wordArray; - - // Shortcuts - var ciphertext = cipherParams.ciphertext; - var salt = cipherParams.salt; - - // Format - if (salt) { - wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext); - } else { - wordArray = ciphertext; - } - - return wordArray.toString(Base64); - }, - - /** - * Converts an OpenSSL-compatible string to a cipher params object. - * - * @param {string} openSSLStr The OpenSSL-compatible string. - * - * @return {CipherParams} The cipher params object. - * - * @static - * - * @example - * - * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString); - */ - parse: function(openSSLStr) { - var salt; - - // Parse base64 - var ciphertext = Base64.parse(openSSLStr); - - // Shortcut - var ciphertextWords = ciphertext.words; - - // Test for salt - if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) { - // Extract salt - salt = WordArray.create(ciphertextWords.slice(2, 4)); - - // Remove salt from ciphertext - ciphertextWords.splice(0, 4); - ciphertext.sigBytes -= 16; - } - - return CipherParams.create({ - ciphertext: ciphertext, - salt: salt - }); - } - }; - - /** - * A cipher wrapper that returns ciphertext as a serializable cipher params object. - */ - var SerializableCipher = C_lib.SerializableCipher = Base.extend({ - /** - * Configuration options. - * - * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL - */ - cfg: Base.extend({ - format: OpenSSLFormatter - }), - - /** - * Encrypts a message. - * - * @param {Cipher} cipher The cipher algorithm to use. - * @param {WordArray|string} message The message to encrypt. - * @param {WordArray} key The key. - * @param {Object} cfg (Optional) The configuration options to use for this operation. - * - * @return {CipherParams} A cipher params object. - * - * @static - * - * @example - * - * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key); - * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv }); - * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL }); - */ - encrypt: function(cipher, message, key, cfg) { - // Apply config defaults - cfg = this.cfg.extend(cfg); - - // Encrypt - var encryptor = cipher.createEncryptor(key, cfg); - var ciphertext = encryptor.finalize(message); - - // Shortcut - var cipherCfg = encryptor.cfg; - - // Create and return serializable cipher params - return CipherParams.create({ - ciphertext: ciphertext, - key: key, - iv: cipherCfg.iv, - algorithm: cipher, - mode: cipherCfg.mode, - padding: cipherCfg.padding, - blockSize: cipher.blockSize, - formatter: cfg.format - }); - }, - - /** - * Decrypts serialized ciphertext. - * - * @param {Cipher} cipher The cipher algorithm to use. - * @param {CipherParams|string} ciphertext The ciphertext to decrypt. - * @param {WordArray} key The key. - * @param {Object} cfg (Optional) The configuration options to use for this operation. - * - * @return {WordArray} The plaintext. - * - * @static - * - * @example - * - * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL }); - * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL }); - */ - decrypt: function(cipher, ciphertext, key, cfg) { - // Apply config defaults - cfg = this.cfg.extend(cfg); - - // Convert string to CipherParams - ciphertext = this._parse(ciphertext, cfg.format); - - // Decrypt - var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext); - - return plaintext; - }, - - /** - * Converts serialized ciphertext to CipherParams, - * else assumed CipherParams already and returns ciphertext unchanged. - * - * @param {CipherParams|string} ciphertext The ciphertext. - * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext. - * - * @return {CipherParams} The unserialized ciphertext. - * - * @static - * - * @example - * - * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format); - */ - _parse: function(ciphertext, format) { - if (typeof ciphertext == 'string') { - return format.parse(ciphertext, this); - } else { - return ciphertext; - } - } - }); - - /** - * Key derivation function namespace. - */ - var C_kdf = C.kdf = {}; - - /** - * OpenSSL key derivation function. - */ - var OpenSSLKdf = C_kdf.OpenSSL = { - /** - * Derives a key and IV from a password. - * - * @param {string} password The password to derive from. - * @param {number} keySize The size in words of the key to generate. - * @param {number} ivSize The size in words of the IV to generate. - * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly. - * - * @return {CipherParams} A cipher params object with the key, IV, and salt. - * - * @static - * - * @example - * - * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32); - * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt'); - */ - execute: function(password, keySize, ivSize, salt) { - // Generate random salt - if (!salt) { - salt = WordArray.random(64 / 8); - } - - // Derive key and IV - var key = EvpKDF.create({ - keySize: keySize + ivSize - }).compute(password, salt); - - // Separate key and IV - var iv = WordArray.create(key.words.slice(keySize), ivSize * 4); - key.sigBytes = keySize * 4; - - // Return params - return CipherParams.create({ - key: key, - iv: iv, - salt: salt - }); - } - }; - - /** - * A serializable cipher wrapper that derives the key from a password, - * and returns ciphertext as a serializable cipher params object. - */ - var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({ - /** - * Configuration options. - * - * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL - */ - cfg: SerializableCipher.cfg.extend({ - kdf: OpenSSLKdf - }), - - /** - * Encrypts a message using a password. - * - * @param {Cipher} cipher The cipher algorithm to use. - * @param {WordArray|string} message The message to encrypt. - * @param {string} password The password. - * @param {Object} cfg (Optional) The configuration options to use for this operation. - * - * @return {CipherParams} A cipher params object. - * - * @static - * - * @example - * - * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password'); - * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL }); - */ - encrypt: function(cipher, message, password, cfg) { - // Apply config defaults - cfg = this.cfg.extend(cfg); - - // Derive key and other params - var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize); - - // Add IV to config - cfg.iv = derivedParams.iv; - - // Encrypt - var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg); - - // Mix in derived params - ciphertext.mixIn(derivedParams); - - return ciphertext; - }, - - /** - * Decrypts serialized ciphertext using a password. - * - * @param {Cipher} cipher The cipher algorithm to use. - * @param {CipherParams|string} ciphertext The ciphertext to decrypt. - * @param {string} password The password. - * @param {Object} cfg (Optional) The configuration options to use for this operation. - * - * @return {WordArray} The plaintext. - * - * @static - * - * @example - * - * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL }); - * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL }); - */ - decrypt: function(cipher, ciphertext, password, cfg) { - // Apply config defaults - cfg = this.cfg.extend(cfg); - - // Convert string to CipherParams - ciphertext = this._parse(ciphertext, cfg.format); - - // Derive key and other params - var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt); - - // Add IV to config - cfg.iv = derivedParams.iv; - - // Decrypt - var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg); - - return plaintext; - } - }); - }()); - - - /** - * Cipher Feedback block mode. - */ - CryptoJS.mode.CFB = (function() { - var CFB = CryptoJS.lib.BlockCipherMode.extend(); - - CFB.Encryptor = CFB.extend({ - processBlock: function(words, offset) { - // Shortcuts - var cipher = this._cipher; - var blockSize = cipher.blockSize; - - generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher); - - // Remember this block to use with next block - this._prevBlock = words.slice(offset, offset + blockSize); - } - }); - - CFB.Decryptor = CFB.extend({ - processBlock: function(words, offset) { - // Shortcuts - var cipher = this._cipher; - var blockSize = cipher.blockSize; - - // Remember this block to use with next block - var thisBlock = words.slice(offset, offset + blockSize); - - generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher); - - // This block becomes the previous block - this._prevBlock = thisBlock; - } - }); - - function generateKeystreamAndEncrypt(words, offset, blockSize, cipher) { - var keystream; - - // Shortcut - var iv = this._iv; - - // Generate keystream - if (iv) { - keystream = iv.slice(0); - - // Remove IV for subsequent blocks - this._iv = undefined; - } else { - keystream = this._prevBlock; - } - cipher.encryptBlock(keystream, 0); - - // Encrypt - for (var i = 0; i < blockSize; i++) { - words[offset + i] ^= keystream[i]; - } - } - - return CFB; - }()); - - - /** - * Counter block mode. - */ - CryptoJS.mode.CTR = (function() { - var CTR = CryptoJS.lib.BlockCipherMode.extend(); - - var Encryptor = CTR.Encryptor = CTR.extend({ - processBlock: function(words, offset) { - // Shortcuts - var cipher = this._cipher - var blockSize = cipher.blockSize; - var iv = this._iv; - var counter = this._counter; - - // Generate keystream - if (iv) { - counter = this._counter = iv.slice(0); - - // Remove IV for subsequent blocks - this._iv = undefined; - } - var keystream = counter.slice(0); - cipher.encryptBlock(keystream, 0); - - // Increment counter - counter[blockSize - 1] = (counter[blockSize - 1] + 1) | 0 - - // Encrypt - for (var i = 0; i < blockSize; i++) { - words[offset + i] ^= keystream[i]; - } - } - }); - - CTR.Decryptor = Encryptor; - - return CTR; - }()); - - - /** @preserve - * Counter block mode compatible with Dr Brian Gladman fileenc.c - * derived from CryptoJS.mode.CTR - * Jan Hruby jhruby.web@gmail.com - */ - CryptoJS.mode.CTRGladman = (function() { - var CTRGladman = CryptoJS.lib.BlockCipherMode.extend(); - - function incWord(word) { - if (((word >> 24) & 0xff) === 0xff) { //overflow - var b1 = (word >> 16) & 0xff; - var b2 = (word >> 8) & 0xff; - var b3 = word & 0xff; - - if (b1 === 0xff) // overflow b1 - { - b1 = 0; - if (b2 === 0xff) { - b2 = 0; - if (b3 === 0xff) { - b3 = 0; - } else { - ++b3; - } - } else { - ++b2; - } - } else { - ++b1; - } - - word = 0; - word += (b1 << 16); - word += (b2 << 8); - word += b3; - } else { - word += (0x01 << 24); - } - return word; - } - - function incCounter(counter) { - if ((counter[0] = incWord(counter[0])) === 0) { - // encr_data in fileenc.c from Dr Brian Gladman's counts only with DWORD j < 8 - counter[1] = incWord(counter[1]); - } - return counter; - } - - var Encryptor = CTRGladman.Encryptor = CTRGladman.extend({ - processBlock: function(words, offset) { - // Shortcuts - var cipher = this._cipher - var blockSize = cipher.blockSize; - var iv = this._iv; - var counter = this._counter; - - // Generate keystream - if (iv) { - counter = this._counter = iv.slice(0); - - // Remove IV for subsequent blocks - this._iv = undefined; - } - - incCounter(counter); - - var keystream = counter.slice(0); - cipher.encryptBlock(keystream, 0); - - // Encrypt - for (var i = 0; i < blockSize; i++) { - words[offset + i] ^= keystream[i]; - } - } - }); - - CTRGladman.Decryptor = Encryptor; - - return CTRGladman; - }()); - - - - - /** - * Output Feedback block mode. - */ - CryptoJS.mode.OFB = (function() { - var OFB = CryptoJS.lib.BlockCipherMode.extend(); - - var Encryptor = OFB.Encryptor = OFB.extend({ - processBlock: function(words, offset) { - // Shortcuts - var cipher = this._cipher - var blockSize = cipher.blockSize; - var iv = this._iv; - var keystream = this._keystream; - - // Generate keystream - if (iv) { - keystream = this._keystream = iv.slice(0); - - // Remove IV for subsequent blocks - this._iv = undefined; - } - cipher.encryptBlock(keystream, 0); - - // Encrypt - for (var i = 0; i < blockSize; i++) { - words[offset + i] ^= keystream[i]; - } - } - }); - - OFB.Decryptor = Encryptor; - - return OFB; - }()); - - - /** - * Electronic Codebook block mode. - */ - CryptoJS.mode.ECB = (function() { - var ECB = CryptoJS.lib.BlockCipherMode.extend(); - - ECB.Encryptor = ECB.extend({ - processBlock: function(words, offset) { - this._cipher.encryptBlock(words, offset); - } - }); - - ECB.Decryptor = ECB.extend({ - processBlock: function(words, offset) { - this._cipher.decryptBlock(words, offset); - } - }); - - return ECB; - }()); - - - /** - * ANSI X.923 padding strategy. - */ - CryptoJS.pad.AnsiX923 = { - pad: function(data, blockSize) { - // Shortcuts - var dataSigBytes = data.sigBytes; - var blockSizeBytes = blockSize * 4; - - // Count padding bytes - var nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes; - - // Compute last byte position - var lastBytePos = dataSigBytes + nPaddingBytes - 1; - - // Pad - data.clamp(); - data.words[lastBytePos >>> 2] |= nPaddingBytes << (24 - (lastBytePos % 4) * 8); - data.sigBytes += nPaddingBytes; - }, - - unpad: function(data) { - // Get number of padding bytes from last byte - var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff; - - // Remove padding - data.sigBytes -= nPaddingBytes; - } - }; - - - /** - * ISO 10126 padding strategy. - */ - CryptoJS.pad.Iso10126 = { - pad: function(data, blockSize) { - // Shortcut - var blockSizeBytes = blockSize * 4; - - // Count padding bytes - var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes; - - // Pad - data.concat(CryptoJS.lib.WordArray.random(nPaddingBytes - 1)). - concat(CryptoJS.lib.WordArray.create([nPaddingBytes << 24], 1)); - }, - - unpad: function(data) { - // Get number of padding bytes from last byte - var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff; - - // Remove padding - data.sigBytes -= nPaddingBytes; - } - }; - - - /** - * ISO/IEC 9797-1 Padding Method 2. - */ - CryptoJS.pad.Iso97971 = { - pad: function(data, blockSize) { - // Add 0x80 byte - data.concat(CryptoJS.lib.WordArray.create([0x80000000], 1)); - - // Zero pad the rest - CryptoJS.pad.ZeroPadding.pad(data, blockSize); - }, - - unpad: function(data) { - // Remove zero padding - CryptoJS.pad.ZeroPadding.unpad(data); - - // Remove one more byte -- the 0x80 byte - data.sigBytes--; - } - }; - - - /** - * Zero padding strategy. - */ - CryptoJS.pad.ZeroPadding = { - pad: function(data, blockSize) { - // Shortcut - var blockSizeBytes = blockSize * 4; - - // Pad - data.clamp(); - data.sigBytes += blockSizeBytes - ((data.sigBytes % blockSizeBytes) || blockSizeBytes); - }, - - unpad: function(data) { - // Shortcut - var dataWords = data.words; - - // Unpad - var i = data.sigBytes - 1; - for (var i = data.sigBytes - 1; i >= 0; i--) { - if (((dataWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff)) { - data.sigBytes = i + 1; - break; - } - } - } - }; - - - /** - * A noop padding strategy. - */ - CryptoJS.pad.NoPadding = { - pad: function() {}, - - unpad: function() {} - }; - - - (function(undefined) { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var CipherParams = C_lib.CipherParams; - var C_enc = C.enc; - var Hex = C_enc.Hex; - var C_format = C.format; - - var HexFormatter = C_format.Hex = { - /** - * Converts the ciphertext of a cipher params object to a hexadecimally encoded string. - * - * @param {CipherParams} cipherParams The cipher params object. - * - * @return {string} The hexadecimally encoded string. - * - * @static - * - * @example - * - * var hexString = CryptoJS.format.Hex.stringify(cipherParams); - */ - stringify: function(cipherParams) { - return cipherParams.ciphertext.toString(Hex); - }, - - /** - * Converts a hexadecimally encoded ciphertext string to a cipher params object. - * - * @param {string} input The hexadecimally encoded string. - * - * @return {CipherParams} The cipher params object. - * - * @static - * - * @example - * - * var cipherParams = CryptoJS.format.Hex.parse(hexString); - */ - parse: function(input) { - var ciphertext = Hex.parse(input); - return CipherParams.create({ - ciphertext: ciphertext - }); - } - }; - }()); - - - (function() { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var BlockCipher = C_lib.BlockCipher; - var C_algo = C.algo; - - // Lookup tables - var SBOX = []; - var INV_SBOX = []; - var SUB_MIX_0 = []; - var SUB_MIX_1 = []; - var SUB_MIX_2 = []; - var SUB_MIX_3 = []; - var INV_SUB_MIX_0 = []; - var INV_SUB_MIX_1 = []; - var INV_SUB_MIX_2 = []; - var INV_SUB_MIX_3 = []; - - // Compute lookup tables - (function() { - // Compute double table - var d = []; - for (var i = 0; i < 256; i++) { - if (i < 128) { - d[i] = i << 1; - } else { - d[i] = (i << 1) ^ 0x11b; - } - } - - // Walk GF(2^8) - var x = 0; - var xi = 0; - for (var i = 0; i < 256; i++) { - // Compute sbox - var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4); - sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63; - SBOX[x] = sx; - INV_SBOX[sx] = x; - - // Compute multiplication - var x2 = d[x]; - var x4 = d[x2]; - var x8 = d[x4]; - - // Compute sub bytes, mix columns tables - var t = (d[sx] * 0x101) ^ (sx * 0x1010100); - SUB_MIX_0[x] = (t << 24) | (t >>> 8); - SUB_MIX_1[x] = (t << 16) | (t >>> 16); - SUB_MIX_2[x] = (t << 8) | (t >>> 24); - SUB_MIX_3[x] = t; - - // Compute inv sub bytes, inv mix columns tables - var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100); - INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8); - INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16); - INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24); - INV_SUB_MIX_3[sx] = t; - - // Compute next counter - if (!x) { - x = xi = 1; - } else { - x = x2 ^ d[d[d[x8 ^ x2]]]; - xi ^= d[d[xi]]; - } - } - }()); - - // Precomputed Rcon lookup - var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]; - - /** - * AES block cipher algorithm. - */ - var AES = C_algo.AES = BlockCipher.extend({ - _doReset: function() { - var t; - - // Skip reset of nRounds has been set before and key did not change - if (this._nRounds && this._keyPriorReset === this._key) { - return; - } - - // Shortcuts - var key = this._keyPriorReset = this._key; - var keyWords = key.words; - var keySize = key.sigBytes / 4; - - // Compute number of rounds - var nRounds = this._nRounds = keySize + 6; - - // Compute number of key schedule rows - var ksRows = (nRounds + 1) * 4; - - // Compute key schedule - var keySchedule = this._keySchedule = []; - for (var ksRow = 0; ksRow < ksRows; ksRow++) { - if (ksRow < keySize) { - keySchedule[ksRow] = keyWords[ksRow]; - } else { - t = keySchedule[ksRow - 1]; - - if (!(ksRow % keySize)) { - // Rot word - t = (t << 8) | (t >>> 24); - - // Sub word - t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff]; - - // Mix Rcon - t ^= RCON[(ksRow / keySize) | 0] << 24; - } else if (keySize > 6 && ksRow % keySize == 4) { - // Sub word - t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff]; - } - - keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t; - } - } - - // Compute inv key schedule - var invKeySchedule = this._invKeySchedule = []; - for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) { - var ksRow = ksRows - invKsRow; - - if (invKsRow % 4) { - var t = keySchedule[ksRow]; - } else { - var t = keySchedule[ksRow - 4]; - } - - if (invKsRow < 4 || ksRow <= 4) { - invKeySchedule[invKsRow] = t; - } else { - invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^ - INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]]; - } - } - }, - - encryptBlock: function(M, offset) { - this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX); - }, - - decryptBlock: function(M, offset) { - // Swap 2nd and 4th rows - var t = M[offset + 1]; - M[offset + 1] = M[offset + 3]; - M[offset + 3] = t; - - this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX); - - // Inv swap 2nd and 4th rows - var t = M[offset + 1]; - M[offset + 1] = M[offset + 3]; - M[offset + 3] = t; - }, - - _doCryptBlock: function(M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) { - // Shortcut - var nRounds = this._nRounds; - - // Get input, add round key - var s0 = M[offset] ^ keySchedule[0]; - var s1 = M[offset + 1] ^ keySchedule[1]; - var s2 = M[offset + 2] ^ keySchedule[2]; - var s3 = M[offset + 3] ^ keySchedule[3]; - - // Key schedule row counter - var ksRow = 4; - - // Rounds - for (var round = 1; round < nRounds; round++) { - // Shift rows, sub bytes, mix columns, add round key - var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++]; - var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++]; - var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++]; - var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++]; - - // Update state - s0 = t0; - s1 = t1; - s2 = t2; - s3 = t3; - } - - // Shift rows, sub bytes, add round key - var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++]; - var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++]; - var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++]; - var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]; - - // Set output - M[offset] = t0; - M[offset + 1] = t1; - M[offset + 2] = t2; - M[offset + 3] = t3; - }, - - keySize: 256 / 32 - }); - - /** - * Shortcut functions to the cipher's object interface. - * - * @example - * - * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg); - * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg); - */ - C.AES = BlockCipher._createHelper(AES); - }()); - - - (function() { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var WordArray = C_lib.WordArray; - var BlockCipher = C_lib.BlockCipher; - var C_algo = C.algo; - - // Permuted Choice 1 constants - var PC1 = [ - 57, 49, 41, 33, 25, 17, 9, 1, - 58, 50, 42, 34, 26, 18, 10, 2, - 59, 51, 43, 35, 27, 19, 11, 3, - 60, 52, 44, 36, 63, 55, 47, 39, - 31, 23, 15, 7, 62, 54, 46, 38, - 30, 22, 14, 6, 61, 53, 45, 37, - 29, 21, 13, 5, 28, 20, 12, 4 - ]; - - // Permuted Choice 2 constants - var PC2 = [ - 14, 17, 11, 24, 1, 5, - 3, 28, 15, 6, 21, 10, - 23, 19, 12, 4, 26, 8, - 16, 7, 27, 20, 13, 2, - 41, 52, 31, 37, 47, 55, - 30, 40, 51, 45, 33, 48, - 44, 49, 39, 56, 34, 53, - 46, 42, 50, 36, 29, 32 - ]; - - // Cumulative bit shift constants - var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28]; - - // SBOXes and round permutation constants - var SBOX_P = [{ - 0x0: 0x808200, - 0x10000000: 0x8000, - 0x20000000: 0x808002, - 0x30000000: 0x2, - 0x40000000: 0x200, - 0x50000000: 0x808202, - 0x60000000: 0x800202, - 0x70000000: 0x800000, - 0x80000000: 0x202, - 0x90000000: 0x800200, - 0xa0000000: 0x8200, - 0xb0000000: 0x808000, - 0xc0000000: 0x8002, - 0xd0000000: 0x800002, - 0xe0000000: 0x0, - 0xf0000000: 0x8202, - 0x8000000: 0x0, - 0x18000000: 0x808202, - 0x28000000: 0x8202, - 0x38000000: 0x8000, - 0x48000000: 0x808200, - 0x58000000: 0x200, - 0x68000000: 0x808002, - 0x78000000: 0x2, - 0x88000000: 0x800200, - 0x98000000: 0x8200, - 0xa8000000: 0x808000, - 0xb8000000: 0x800202, - 0xc8000000: 0x800002, - 0xd8000000: 0x8002, - 0xe8000000: 0x202, - 0xf8000000: 0x800000, - 0x1: 0x8000, - 0x10000001: 0x2, - 0x20000001: 0x808200, - 0x30000001: 0x800000, - 0x40000001: 0x808002, - 0x50000001: 0x8200, - 0x60000001: 0x200, - 0x70000001: 0x800202, - 0x80000001: 0x808202, - 0x90000001: 0x808000, - 0xa0000001: 0x800002, - 0xb0000001: 0x8202, - 0xc0000001: 0x202, - 0xd0000001: 0x800200, - 0xe0000001: 0x8002, - 0xf0000001: 0x0, - 0x8000001: 0x808202, - 0x18000001: 0x808000, - 0x28000001: 0x800000, - 0x38000001: 0x200, - 0x48000001: 0x8000, - 0x58000001: 0x800002, - 0x68000001: 0x2, - 0x78000001: 0x8202, - 0x88000001: 0x8002, - 0x98000001: 0x800202, - 0xa8000001: 0x202, - 0xb8000001: 0x808200, - 0xc8000001: 0x800200, - 0xd8000001: 0x0, - 0xe8000001: 0x8200, - 0xf8000001: 0x808002 - }, - { - 0x0: 0x40084010, - 0x1000000: 0x4000, - 0x2000000: 0x80000, - 0x3000000: 0x40080010, - 0x4000000: 0x40000010, - 0x5000000: 0x40084000, - 0x6000000: 0x40004000, - 0x7000000: 0x10, - 0x8000000: 0x84000, - 0x9000000: 0x40004010, - 0xa000000: 0x40000000, - 0xb000000: 0x84010, - 0xc000000: 0x80010, - 0xd000000: 0x0, - 0xe000000: 0x4010, - 0xf000000: 0x40080000, - 0x800000: 0x40004000, - 0x1800000: 0x84010, - 0x2800000: 0x10, - 0x3800000: 0x40004010, - 0x4800000: 0x40084010, - 0x5800000: 0x40000000, - 0x6800000: 0x80000, - 0x7800000: 0x40080010, - 0x8800000: 0x80010, - 0x9800000: 0x0, - 0xa800000: 0x4000, - 0xb800000: 0x40080000, - 0xc800000: 0x40000010, - 0xd800000: 0x84000, - 0xe800000: 0x40084000, - 0xf800000: 0x4010, - 0x10000000: 0x0, - 0x11000000: 0x40080010, - 0x12000000: 0x40004010, - 0x13000000: 0x40084000, - 0x14000000: 0x40080000, - 0x15000000: 0x10, - 0x16000000: 0x84010, - 0x17000000: 0x4000, - 0x18000000: 0x4010, - 0x19000000: 0x80000, - 0x1a000000: 0x80010, - 0x1b000000: 0x40000010, - 0x1c000000: 0x84000, - 0x1d000000: 0x40004000, - 0x1e000000: 0x40000000, - 0x1f000000: 0x40084010, - 0x10800000: 0x84010, - 0x11800000: 0x80000, - 0x12800000: 0x40080000, - 0x13800000: 0x4000, - 0x14800000: 0x40004000, - 0x15800000: 0x40084010, - 0x16800000: 0x10, - 0x17800000: 0x40000000, - 0x18800000: 0x40084000, - 0x19800000: 0x40000010, - 0x1a800000: 0x40004010, - 0x1b800000: 0x80010, - 0x1c800000: 0x0, - 0x1d800000: 0x4010, - 0x1e800000: 0x40080010, - 0x1f800000: 0x84000 - }, - { - 0x0: 0x104, - 0x100000: 0x0, - 0x200000: 0x4000100, - 0x300000: 0x10104, - 0x400000: 0x10004, - 0x500000: 0x4000004, - 0x600000: 0x4010104, - 0x700000: 0x4010000, - 0x800000: 0x4000000, - 0x900000: 0x4010100, - 0xa00000: 0x10100, - 0xb00000: 0x4010004, - 0xc00000: 0x4000104, - 0xd00000: 0x10000, - 0xe00000: 0x4, - 0xf00000: 0x100, - 0x80000: 0x4010100, - 0x180000: 0x4010004, - 0x280000: 0x0, - 0x380000: 0x4000100, - 0x480000: 0x4000004, - 0x580000: 0x10000, - 0x680000: 0x10004, - 0x780000: 0x104, - 0x880000: 0x4, - 0x980000: 0x100, - 0xa80000: 0x4010000, - 0xb80000: 0x10104, - 0xc80000: 0x10100, - 0xd80000: 0x4000104, - 0xe80000: 0x4010104, - 0xf80000: 0x4000000, - 0x1000000: 0x4010100, - 0x1100000: 0x10004, - 0x1200000: 0x10000, - 0x1300000: 0x4000100, - 0x1400000: 0x100, - 0x1500000: 0x4010104, - 0x1600000: 0x4000004, - 0x1700000: 0x0, - 0x1800000: 0x4000104, - 0x1900000: 0x4000000, - 0x1a00000: 0x4, - 0x1b00000: 0x10100, - 0x1c00000: 0x4010000, - 0x1d00000: 0x104, - 0x1e00000: 0x10104, - 0x1f00000: 0x4010004, - 0x1080000: 0x4000000, - 0x1180000: 0x104, - 0x1280000: 0x4010100, - 0x1380000: 0x0, - 0x1480000: 0x10004, - 0x1580000: 0x4000100, - 0x1680000: 0x100, - 0x1780000: 0x4010004, - 0x1880000: 0x10000, - 0x1980000: 0x4010104, - 0x1a80000: 0x10104, - 0x1b80000: 0x4000004, - 0x1c80000: 0x4000104, - 0x1d80000: 0x4010000, - 0x1e80000: 0x4, - 0x1f80000: 0x10100 - }, - { - 0x0: 0x80401000, - 0x10000: 0x80001040, - 0x20000: 0x401040, - 0x30000: 0x80400000, - 0x40000: 0x0, - 0x50000: 0x401000, - 0x60000: 0x80000040, - 0x70000: 0x400040, - 0x80000: 0x80000000, - 0x90000: 0x400000, - 0xa0000: 0x40, - 0xb0000: 0x80001000, - 0xc0000: 0x80400040, - 0xd0000: 0x1040, - 0xe0000: 0x1000, - 0xf0000: 0x80401040, - 0x8000: 0x80001040, - 0x18000: 0x40, - 0x28000: 0x80400040, - 0x38000: 0x80001000, - 0x48000: 0x401000, - 0x58000: 0x80401040, - 0x68000: 0x0, - 0x78000: 0x80400000, - 0x88000: 0x1000, - 0x98000: 0x80401000, - 0xa8000: 0x400000, - 0xb8000: 0x1040, - 0xc8000: 0x80000000, - 0xd8000: 0x400040, - 0xe8000: 0x401040, - 0xf8000: 0x80000040, - 0x100000: 0x400040, - 0x110000: 0x401000, - 0x120000: 0x80000040, - 0x130000: 0x0, - 0x140000: 0x1040, - 0x150000: 0x80400040, - 0x160000: 0x80401000, - 0x170000: 0x80001040, - 0x180000: 0x80401040, - 0x190000: 0x80000000, - 0x1a0000: 0x80400000, - 0x1b0000: 0x401040, - 0x1c0000: 0x80001000, - 0x1d0000: 0x400000, - 0x1e0000: 0x40, - 0x1f0000: 0x1000, - 0x108000: 0x80400000, - 0x118000: 0x80401040, - 0x128000: 0x0, - 0x138000: 0x401000, - 0x148000: 0x400040, - 0x158000: 0x80000000, - 0x168000: 0x80001040, - 0x178000: 0x40, - 0x188000: 0x80000040, - 0x198000: 0x1000, - 0x1a8000: 0x80001000, - 0x1b8000: 0x80400040, - 0x1c8000: 0x1040, - 0x1d8000: 0x80401000, - 0x1e8000: 0x400000, - 0x1f8000: 0x401040 - }, - { - 0x0: 0x80, - 0x1000: 0x1040000, - 0x2000: 0x40000, - 0x3000: 0x20000000, - 0x4000: 0x20040080, - 0x5000: 0x1000080, - 0x6000: 0x21000080, - 0x7000: 0x40080, - 0x8000: 0x1000000, - 0x9000: 0x20040000, - 0xa000: 0x20000080, - 0xb000: 0x21040080, - 0xc000: 0x21040000, - 0xd000: 0x0, - 0xe000: 0x1040080, - 0xf000: 0x21000000, - 0x800: 0x1040080, - 0x1800: 0x21000080, - 0x2800: 0x80, - 0x3800: 0x1040000, - 0x4800: 0x40000, - 0x5800: 0x20040080, - 0x6800: 0x21040000, - 0x7800: 0x20000000, - 0x8800: 0x20040000, - 0x9800: 0x0, - 0xa800: 0x21040080, - 0xb800: 0x1000080, - 0xc800: 0x20000080, - 0xd800: 0x21000000, - 0xe800: 0x1000000, - 0xf800: 0x40080, - 0x10000: 0x40000, - 0x11000: 0x80, - 0x12000: 0x20000000, - 0x13000: 0x21000080, - 0x14000: 0x1000080, - 0x15000: 0x21040000, - 0x16000: 0x20040080, - 0x17000: 0x1000000, - 0x18000: 0x21040080, - 0x19000: 0x21000000, - 0x1a000: 0x1040000, - 0x1b000: 0x20040000, - 0x1c000: 0x40080, - 0x1d000: 0x20000080, - 0x1e000: 0x0, - 0x1f000: 0x1040080, - 0x10800: 0x21000080, - 0x11800: 0x1000000, - 0x12800: 0x1040000, - 0x13800: 0x20040080, - 0x14800: 0x20000000, - 0x15800: 0x1040080, - 0x16800: 0x80, - 0x17800: 0x21040000, - 0x18800: 0x40080, - 0x19800: 0x21040080, - 0x1a800: 0x0, - 0x1b800: 0x21000000, - 0x1c800: 0x1000080, - 0x1d800: 0x40000, - 0x1e800: 0x20040000, - 0x1f800: 0x20000080 - }, - { - 0x0: 0x10000008, - 0x100: 0x2000, - 0x200: 0x10200000, - 0x300: 0x10202008, - 0x400: 0x10002000, - 0x500: 0x200000, - 0x600: 0x200008, - 0x700: 0x10000000, - 0x800: 0x0, - 0x900: 0x10002008, - 0xa00: 0x202000, - 0xb00: 0x8, - 0xc00: 0x10200008, - 0xd00: 0x202008, - 0xe00: 0x2008, - 0xf00: 0x10202000, - 0x80: 0x10200000, - 0x180: 0x10202008, - 0x280: 0x8, - 0x380: 0x200000, - 0x480: 0x202008, - 0x580: 0x10000008, - 0x680: 0x10002000, - 0x780: 0x2008, - 0x880: 0x200008, - 0x980: 0x2000, - 0xa80: 0x10002008, - 0xb80: 0x10200008, - 0xc80: 0x0, - 0xd80: 0x10202000, - 0xe80: 0x202000, - 0xf80: 0x10000000, - 0x1000: 0x10002000, - 0x1100: 0x10200008, - 0x1200: 0x10202008, - 0x1300: 0x2008, - 0x1400: 0x200000, - 0x1500: 0x10000000, - 0x1600: 0x10000008, - 0x1700: 0x202000, - 0x1800: 0x202008, - 0x1900: 0x0, - 0x1a00: 0x8, - 0x1b00: 0x10200000, - 0x1c00: 0x2000, - 0x1d00: 0x10002008, - 0x1e00: 0x10202000, - 0x1f00: 0x200008, - 0x1080: 0x8, - 0x1180: 0x202000, - 0x1280: 0x200000, - 0x1380: 0x10000008, - 0x1480: 0x10002000, - 0x1580: 0x2008, - 0x1680: 0x10202008, - 0x1780: 0x10200000, - 0x1880: 0x10202000, - 0x1980: 0x10200008, - 0x1a80: 0x2000, - 0x1b80: 0x202008, - 0x1c80: 0x200008, - 0x1d80: 0x0, - 0x1e80: 0x10000000, - 0x1f80: 0x10002008 - }, - { - 0x0: 0x100000, - 0x10: 0x2000401, - 0x20: 0x400, - 0x30: 0x100401, - 0x40: 0x2100401, - 0x50: 0x0, - 0x60: 0x1, - 0x70: 0x2100001, - 0x80: 0x2000400, - 0x90: 0x100001, - 0xa0: 0x2000001, - 0xb0: 0x2100400, - 0xc0: 0x2100000, - 0xd0: 0x401, - 0xe0: 0x100400, - 0xf0: 0x2000000, - 0x8: 0x2100001, - 0x18: 0x0, - 0x28: 0x2000401, - 0x38: 0x2100400, - 0x48: 0x100000, - 0x58: 0x2000001, - 0x68: 0x2000000, - 0x78: 0x401, - 0x88: 0x100401, - 0x98: 0x2000400, - 0xa8: 0x2100000, - 0xb8: 0x100001, - 0xc8: 0x400, - 0xd8: 0x2100401, - 0xe8: 0x1, - 0xf8: 0x100400, - 0x100: 0x2000000, - 0x110: 0x100000, - 0x120: 0x2000401, - 0x130: 0x2100001, - 0x140: 0x100001, - 0x150: 0x2000400, - 0x160: 0x2100400, - 0x170: 0x100401, - 0x180: 0x401, - 0x190: 0x2100401, - 0x1a0: 0x100400, - 0x1b0: 0x1, - 0x1c0: 0x0, - 0x1d0: 0x2100000, - 0x1e0: 0x2000001, - 0x1f0: 0x400, - 0x108: 0x100400, - 0x118: 0x2000401, - 0x128: 0x2100001, - 0x138: 0x1, - 0x148: 0x2000000, - 0x158: 0x100000, - 0x168: 0x401, - 0x178: 0x2100400, - 0x188: 0x2000001, - 0x198: 0x2100000, - 0x1a8: 0x0, - 0x1b8: 0x2100401, - 0x1c8: 0x100401, - 0x1d8: 0x400, - 0x1e8: 0x2000400, - 0x1f8: 0x100001 - }, - { - 0x0: 0x8000820, - 0x1: 0x20000, - 0x2: 0x8000000, - 0x3: 0x20, - 0x4: 0x20020, - 0x5: 0x8020820, - 0x6: 0x8020800, - 0x7: 0x800, - 0x8: 0x8020000, - 0x9: 0x8000800, - 0xa: 0x20800, - 0xb: 0x8020020, - 0xc: 0x820, - 0xd: 0x0, - 0xe: 0x8000020, - 0xf: 0x20820, - 0x80000000: 0x800, - 0x80000001: 0x8020820, - 0x80000002: 0x8000820, - 0x80000003: 0x8000000, - 0x80000004: 0x8020000, - 0x80000005: 0x20800, - 0x80000006: 0x20820, - 0x80000007: 0x20, - 0x80000008: 0x8000020, - 0x80000009: 0x820, - 0x8000000a: 0x20020, - 0x8000000b: 0x8020800, - 0x8000000c: 0x0, - 0x8000000d: 0x8020020, - 0x8000000e: 0x8000800, - 0x8000000f: 0x20000, - 0x10: 0x20820, - 0x11: 0x8020800, - 0x12: 0x20, - 0x13: 0x800, - 0x14: 0x8000800, - 0x15: 0x8000020, - 0x16: 0x8020020, - 0x17: 0x20000, - 0x18: 0x0, - 0x19: 0x20020, - 0x1a: 0x8020000, - 0x1b: 0x8000820, - 0x1c: 0x8020820, - 0x1d: 0x20800, - 0x1e: 0x820, - 0x1f: 0x8000000, - 0x80000010: 0x20000, - 0x80000011: 0x800, - 0x80000012: 0x8020020, - 0x80000013: 0x20820, - 0x80000014: 0x20, - 0x80000015: 0x8020000, - 0x80000016: 0x8000000, - 0x80000017: 0x8000820, - 0x80000018: 0x8020820, - 0x80000019: 0x8000020, - 0x8000001a: 0x8000800, - 0x8000001b: 0x0, - 0x8000001c: 0x20800, - 0x8000001d: 0x820, - 0x8000001e: 0x20020, - 0x8000001f: 0x8020800 - } - ]; - - // Masks that select the SBOX input - var SBOX_MASK = [ - 0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000, - 0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f - ]; - - /** - * DES block cipher algorithm. - */ - var DES = C_algo.DES = BlockCipher.extend({ - _doReset: function() { - // Shortcuts - var key = this._key; - var keyWords = key.words; - - // Select 56 bits according to PC1 - var keyBits = []; - for (var i = 0; i < 56; i++) { - var keyBitPos = PC1[i] - 1; - keyBits[i] = (keyWords[keyBitPos >>> 5] >>> (31 - keyBitPos % 32)) & 1; - } - - // Assemble 16 subkeys - var subKeys = this._subKeys = []; - for (var nSubKey = 0; nSubKey < 16; nSubKey++) { - // Create subkey - var subKey = subKeys[nSubKey] = []; - - // Shortcut - var bitShift = BIT_SHIFTS[nSubKey]; - - // Select 48 bits according to PC2 - for (var i = 0; i < 24; i++) { - // Select from the left 28 key bits - subKey[(i / 6) | 0] |= keyBits[((PC2[i] - 1) + bitShift) % 28] << (31 - i % 6); - - // Select from the right 28 key bits - subKey[4 + ((i / 6) | 0)] |= keyBits[28 + (((PC2[i + 24] - 1) + bitShift) % 28)] << (31 - i % 6); - } - - // Since each subkey is applied to an expanded 32-bit input, - // the subkey can be broken into 8 values scaled to 32-bits, - // which allows the key to be used without expansion - subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31); - for (var i = 1; i < 7; i++) { - subKey[i] = subKey[i] >>> ((i - 1) * 4 + 3); - } - subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27); - } - - // Compute inverse subkeys - var invSubKeys = this._invSubKeys = []; - for (var i = 0; i < 16; i++) { - invSubKeys[i] = subKeys[15 - i]; - } - }, - - encryptBlock: function(M, offset) { - this._doCryptBlock(M, offset, this._subKeys); - }, - - decryptBlock: function(M, offset) { - this._doCryptBlock(M, offset, this._invSubKeys); - }, - - _doCryptBlock: function(M, offset, subKeys) { - // Get input - this._lBlock = M[offset]; - this._rBlock = M[offset + 1]; - - // Initial permutation - exchangeLR.call(this, 4, 0x0f0f0f0f); - exchangeLR.call(this, 16, 0x0000ffff); - exchangeRL.call(this, 2, 0x33333333); - exchangeRL.call(this, 8, 0x00ff00ff); - exchangeLR.call(this, 1, 0x55555555); - - // Rounds - for (var round = 0; round < 16; round++) { - // Shortcuts - var subKey = subKeys[round]; - var lBlock = this._lBlock; - var rBlock = this._rBlock; - - // Feistel function - var f = 0; - for (var i = 0; i < 8; i++) { - f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0]; - } - this._lBlock = rBlock; - this._rBlock = lBlock ^ f; - } - - // Undo swap from last round - var t = this._lBlock; - this._lBlock = this._rBlock; - this._rBlock = t; - - // Final permutation - exchangeLR.call(this, 1, 0x55555555); - exchangeRL.call(this, 8, 0x00ff00ff); - exchangeRL.call(this, 2, 0x33333333); - exchangeLR.call(this, 16, 0x0000ffff); - exchangeLR.call(this, 4, 0x0f0f0f0f); - - // Set output - M[offset] = this._lBlock; - M[offset + 1] = this._rBlock; - }, - - keySize: 64 / 32, - - ivSize: 64 / 32, - - blockSize: 64 / 32 - }); - - // Swap bits across the left and right words - function exchangeLR(offset, mask) { - var t = ((this._lBlock >>> offset) ^ this._rBlock) & mask; - this._rBlock ^= t; - this._lBlock ^= t << offset; - } - - function exchangeRL(offset, mask) { - var t = ((this._rBlock >>> offset) ^ this._lBlock) & mask; - this._lBlock ^= t; - this._rBlock ^= t << offset; - } - - /** - * Shortcut functions to the cipher's object interface. - * - * @example - * - * var ciphertext = CryptoJS.DES.encrypt(message, key, cfg); - * var plaintext = CryptoJS.DES.decrypt(ciphertext, key, cfg); - */ - C.DES = BlockCipher._createHelper(DES); - - /** - * Triple-DES block cipher algorithm. - */ - var TripleDES = C_algo.TripleDES = BlockCipher.extend({ - _doReset: function() { - // Shortcuts - var key = this._key; - var keyWords = key.words; - // Make sure the key length is valid (64, 128 or >= 192 bit) - if (keyWords.length !== 2 && keyWords.length !== 4 && keyWords.length < 6) { - throw new Error('Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192.'); - } - - // Extend the key according to the keying options defined in 3DES standard - var key1 = keyWords.slice(0, 2); - var key2 = keyWords.length < 4 ? keyWords.slice(0, 2) : keyWords.slice(2, 4); - var key3 = keyWords.length < 6 ? keyWords.slice(0, 2) : keyWords.slice(4, 6); - - // Create DES instances - this._des1 = DES.createEncryptor(WordArray.create(key1)); - this._des2 = DES.createEncryptor(WordArray.create(key2)); - this._des3 = DES.createEncryptor(WordArray.create(key3)); - }, - - encryptBlock: function(M, offset) { - this._des1.encryptBlock(M, offset); - this._des2.decryptBlock(M, offset); - this._des3.encryptBlock(M, offset); - }, - - decryptBlock: function(M, offset) { - this._des3.decryptBlock(M, offset); - this._des2.encryptBlock(M, offset); - this._des1.decryptBlock(M, offset); - }, - - keySize: 192 / 32, - - ivSize: 64 / 32, - - blockSize: 64 / 32 - }); - - /** - * Shortcut functions to the cipher's object interface. - * - * @example - * - * var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg); - * var plaintext = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg); - */ - C.TripleDES = BlockCipher._createHelper(TripleDES); - }()); - - - (function() { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var StreamCipher = C_lib.StreamCipher; - var C_algo = C.algo; - - /** - * RC4 stream cipher algorithm. - */ - var RC4 = C_algo.RC4 = StreamCipher.extend({ - _doReset: function() { - // Shortcuts - var key = this._key; - var keyWords = key.words; - var keySigBytes = key.sigBytes; - - // Init sbox - var S = this._S = []; - for (var i = 0; i < 256; i++) { - S[i] = i; - } - - // Key setup - for (var i = 0, j = 0; i < 256; i++) { - var keyByteIndex = i % keySigBytes; - var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff; - - j = (j + S[i] + keyByte) % 256; - - // Swap - var t = S[i]; - S[i] = S[j]; - S[j] = t; - } - - // Counters - this._i = this._j = 0; - }, - - _doProcessBlock: function(M, offset) { - M[offset] ^= generateKeystreamWord.call(this); - }, - - keySize: 256 / 32, - - ivSize: 0 - }); - - function generateKeystreamWord() { - // Shortcuts - var S = this._S; - var i = this._i; - var j = this._j; - - // Generate keystream word - var keystreamWord = 0; - for (var n = 0; n < 4; n++) { - i = (i + 1) % 256; - j = (j + S[i]) % 256; - - // Swap - var t = S[i]; - S[i] = S[j]; - S[j] = t; - - keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8); - } - - // Update counters - this._i = i; - this._j = j; - - return keystreamWord; - } - - /** - * Shortcut functions to the cipher's object interface. - * - * @example - * - * var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg); - * var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg); - */ - C.RC4 = StreamCipher._createHelper(RC4); - - /** - * Modified RC4 stream cipher algorithm. - */ - var RC4Drop = C_algo.RC4Drop = RC4.extend({ - /** - * Configuration options. - * - * @property {number} drop The number of keystream words to drop. Default 192 - */ - cfg: RC4.cfg.extend({ - drop: 192 - }), - - _doReset: function() { - RC4._doReset.call(this); - - // Drop - for (var i = this.cfg.drop; i > 0; i--) { - generateKeystreamWord.call(this); - } - } - }); - - /** - * Shortcut functions to the cipher's object interface. - * - * @example - * - * var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg); - * var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg); - */ - C.RC4Drop = StreamCipher._createHelper(RC4Drop); - }()); - - - (function() { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var StreamCipher = C_lib.StreamCipher; - var C_algo = C.algo; - - // Reusable objects - var S = []; - var C_ = []; - var G = []; - - /** - * Rabbit stream cipher algorithm - */ - var Rabbit = C_algo.Rabbit = StreamCipher.extend({ - _doReset: function() { - // Shortcuts - var K = this._key.words; - var iv = this.cfg.iv; - - // Swap endian - for (var i = 0; i < 4; i++) { - K[i] = (((K[i] << 8) | (K[i] >>> 24)) & 0x00ff00ff) | - (((K[i] << 24) | (K[i] >>> 8)) & 0xff00ff00); - } - - // Generate initial state values - var X = this._X = [ - K[0], (K[3] << 16) | (K[2] >>> 16), - K[1], (K[0] << 16) | (K[3] >>> 16), - K[2], (K[1] << 16) | (K[0] >>> 16), - K[3], (K[2] << 16) | (K[1] >>> 16) - ]; - - // Generate initial counter values - var C = this._C = [ - (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff), - (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff), - (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff), - (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff) - ]; - - // Carry bit - this._b = 0; - - // Iterate the system four times - for (var i = 0; i < 4; i++) { - nextState.call(this); - } - - // Modify the counters - for (var i = 0; i < 8; i++) { - C[i] ^= X[(i + 4) & 7]; - } - - // IV setup - if (iv) { - // Shortcuts - var IV = iv.words; - var IV_0 = IV[0]; - var IV_1 = IV[1]; - - // Generate four subvectors - var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00); - var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00); - var i1 = (i0 >>> 16) | (i2 & 0xffff0000); - var i3 = (i2 << 16) | (i0 & 0x0000ffff); - - // Modify counter values - C[0] ^= i0; - C[1] ^= i1; - C[2] ^= i2; - C[3] ^= i3; - C[4] ^= i0; - C[5] ^= i1; - C[6] ^= i2; - C[7] ^= i3; - - // Iterate the system four times - for (var i = 0; i < 4; i++) { - nextState.call(this); - } - } - }, - - _doProcessBlock: function(M, offset) { - // Shortcut - var X = this._X; - - // Iterate the system - nextState.call(this); - - // Generate four keystream words - S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16); - S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16); - S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16); - S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16); - - for (var i = 0; i < 4; i++) { - // Swap endian - S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) | - (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00); - - // Encrypt - M[offset + i] ^= S[i]; - } - }, - - blockSize: 128 / 32, - - ivSize: 64 / 32 - }); - - function nextState() { - // Shortcuts - var X = this._X; - var C = this._C; - - // Save old counter values - for (var i = 0; i < 8; i++) { - C_[i] = C[i]; - } - - // Calculate new counter values - C[0] = (C[0] + 0x4d34d34d + this._b) | 0; - C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0; - C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0; - C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0; - C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0; - C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0; - C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0; - C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0; - this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0; - - // Calculate the g-values - for (var i = 0; i < 8; i++) { - var gx = X[i] + C[i]; - - // Construct high and low argument for squaring - var ga = gx & 0xffff; - var gb = gx >>> 16; - - // Calculate high and low result of squaring - var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb; - var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0); - - // High XOR low - G[i] = gh ^ gl; - } - - // Calculate new state values - X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0; - X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0; - X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0; - X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0; - X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0; - X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0; - X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0; - X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0; - } - - /** - * Shortcut functions to the cipher's object interface. - * - * @example - * - * var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg); - * var plaintext = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg); - */ - C.Rabbit = StreamCipher._createHelper(Rabbit); - }()); - - - (function() { - // Shortcuts - var C = CryptoJS; - var C_lib = C.lib; - var StreamCipher = C_lib.StreamCipher; - var C_algo = C.algo; - - // Reusable objects - var S = []; - var C_ = []; - var G = []; - - /** - * Rabbit stream cipher algorithm. - * - * This is a legacy version that neglected to convert the key to little-endian. - * This error doesn't affect the cipher's security, - * but it does affect its compatibility with other implementations. - */ - var RabbitLegacy = C_algo.RabbitLegacy = StreamCipher.extend({ - _doReset: function() { - // Shortcuts - var K = this._key.words; - var iv = this.cfg.iv; - - // Generate initial state values - var X = this._X = [ - K[0], (K[3] << 16) | (K[2] >>> 16), - K[1], (K[0] << 16) | (K[3] >>> 16), - K[2], (K[1] << 16) | (K[0] >>> 16), - K[3], (K[2] << 16) | (K[1] >>> 16) - ]; - - // Generate initial counter values - var C = this._C = [ - (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff), - (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff), - (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff), - (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff) - ]; - - // Carry bit - this._b = 0; - - // Iterate the system four times - for (var i = 0; i < 4; i++) { - nextState.call(this); - } - - // Modify the counters - for (var i = 0; i < 8; i++) { - C[i] ^= X[(i + 4) & 7]; - } - - // IV setup - if (iv) { - // Shortcuts - var IV = iv.words; - var IV_0 = IV[0]; - var IV_1 = IV[1]; - - // Generate four subvectors - var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00); - var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00); - var i1 = (i0 >>> 16) | (i2 & 0xffff0000); - var i3 = (i2 << 16) | (i0 & 0x0000ffff); - - // Modify counter values - C[0] ^= i0; - C[1] ^= i1; - C[2] ^= i2; - C[3] ^= i3; - C[4] ^= i0; - C[5] ^= i1; - C[6] ^= i2; - C[7] ^= i3; - - // Iterate the system four times - for (var i = 0; i < 4; i++) { - nextState.call(this); - } - } - }, - - _doProcessBlock: function(M, offset) { - // Shortcut - var X = this._X; - - // Iterate the system - nextState.call(this); - - // Generate four keystream words - S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16); - S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16); - S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16); - S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16); - - for (var i = 0; i < 4; i++) { - // Swap endian - S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) | - (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00); - - // Encrypt - M[offset + i] ^= S[i]; - } - }, - - blockSize: 128 / 32, - - ivSize: 64 / 32 - }); - - function nextState() { - // Shortcuts - var X = this._X; - var C = this._C; - - // Save old counter values - for (var i = 0; i < 8; i++) { - C_[i] = C[i]; - } - - // Calculate new counter values - C[0] = (C[0] + 0x4d34d34d + this._b) | 0; - C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0; - C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0; - C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0; - C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0; - C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0; - C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0; - C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0; - this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0; - - // Calculate the g-values - for (var i = 0; i < 8; i++) { - var gx = X[i] + C[i]; - - // Construct high and low argument for squaring - var ga = gx & 0xffff; - var gb = gx >>> 16; - - // Calculate high and low result of squaring - var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb; - var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0); - - // High XOR low - G[i] = gh ^ gl; - } - - // Calculate new state values - X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0; - X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0; - X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0; - X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0; - X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0; - X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0; - X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0; - X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0; - } - - /** - * Shortcut functions to the cipher's object interface. - * - * @example - * - * var ciphertext = CryptoJS.RabbitLegacy.encrypt(message, key, cfg); - * var plaintext = CryptoJS.RabbitLegacy.decrypt(ciphertext, key, cfg); - */ - C.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy); - }()); - - - return CryptoJS; - -})); \ No newline at end of file diff --git a/潇洒/js/drpy2.js b/潇洒/js/drpy2.js deleted file mode 100644 index 47b82c6..0000000 --- a/潇洒/js/drpy2.js +++ /dev/null @@ -1,3862 +0,0 @@ -import cheerio from 'assets://js/lib/cheerio.min.js'; -import 'assets://js/lib/crypto-js.js'; -import './jsencrypt.js'; -import './node-rsa.js'; -import './pako.min.js'; -// import JSEncrypt from './jsencrypt.js'; // 会导致壳子崩溃的 -import 模板 from './模板.js' -import { - gbkTool -} from './gbk.js' -import './json5.js' -// 下面是尝试对jinja2库进行更换 -import './jinja.js' - -const _jinja2 = cheerio.jinja2; -cheerio.jinja2 = function(template, obj) { - try { - return jinja.render(template, obj); - } catch (e) { - console.log('新的jinja2库渲染失败,换回原始cheerio:' + e.message); - return _jinja2(template, obj) - } -}; -// import cheerio from "https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/libs/cheerio.min.js"; -// import "https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/libs/crypto-js.js"; -// import 模板 from"https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/js/模板.js"; -// import {gbkTool} from 'https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/libs/gbk.js' - -let vercode = typeof(pdfl) === 'function' ? 'drpy2.1' : 'drpy2'; -const VERSION = vercode + ' 3.9.51beta6 20241126'; -const UpdateInfo = [{ - date: '20241126', - title: 'drpy更新,优化去广告算法', - version: '3.9.51beta6 20241126', - msg: ` - 1. 更新龙头大佬提供的去广告算法 - ` - }, - { - date: '20241104', - title: 'drpy更新,增加新特性', - version: '3.9.51beta5 20241104', - msg: ` - 1. rule增加 搜索验证标识 属性,可以不定义,默认为 '系统安全验证|请输入验证码' - 2. rule增加 searchNoPage 属性,可以不定义,如果定义 1 将关闭该源的搜索翻页功能,超过1页直接返回空 - ` - }, -]; - -function getUpdateInfo() { - return UpdateInfo.map((_o) => { - _o.msg = _o.msg.trim().split('\n').map(_it => _it.trim()).join('\n') - return _o - }) -} - -function init_test() { - // console.log(typeof(JSON5)); - // let a = `{'SHOW':'10','UK':'43a7dc59-e87b-449e-8b74-ba40db28e674','albumlist':[{'DC_TARGETID':'30965086','DC_TARGETTYPE':'','PAY':'0','PLAYCNT':'17294','aartist':'','ad_subtype':'102,103,501,101,301','ad_type':'1,3,5','albumid':'30965086','artist':'小白不做凤尾','artistid':'10442011','artistpic':'http://img4.kuwo.cn/star/starheads/120/92/53/247071944.jpg','color':'[#FFE2F2C6,#FF85A476]','company':'独立发行','content_type':'0','falbum':'','fartist':'小白不做凤尾','finished':'0','hts_img':'https://img2.kuwo.cn/star/albumcover/240/51/40/547190780.jpg','id':'30965086','img':'http://img2.sycdn.kuwo.cn/star/albumcover/240/51/40/547190780.jpg','info':'来听听','isstar':'1','lang':'','musiccnt':'37','name':'我的','new':'0','payvalue':'0','pic':'120/51/40/547190780.jpg','pub':'2022-08-28','score':'0','showtime':'','spPrivilege':'0','startype':'有声小说','timing_online':'0000-00-00 00:00:00','title':'','vip':'0'},{'DC_TARGETID':'28041980','DC_TARGETTYPE':'','PAY':'0','PLAYCNT':'0','aartist':'','ad_subtype':'','ad_type':'','albumid':'28041980','artist':'玄琛','artistid':'9688248','artistpic':'http://img4.kuwo.cn/star/starheads/120/96/39/3155308302.jpg','color':'[#FFE2F2C6,#FF85A476]','company':'独立发行','content_type':'0','falbum':'','fartist':'玄琛','finished':'0','hts_img':'https://img2.kuwo.cn/star/albumcover/240/72/16/2510768590.jpg','id':'28041980','img':'http://img2.sycdn.kuwo.cn/star/albumcover/240/72/16/2510768590.jpg','info':'我来诉说我的故事,请你认真聆听,做最好的聆听者','isstar':'1','lang':'','musiccnt':'2','name':'我的','new':'0','payvalue':'0','pic':'120/72/16/2510768590.jpg','pub':'2020-08-18','score':'0','showtime':'','spPrivilege':'0','startype':'历史人文','timing_online':'0000-00-00 00:00:00','title':'','vip':'0'},{'DC_TARGETID':'17245200','DC_TARGETTYPE':'','PAY':'0','PLAYCNT':'5529096','aartist':'','ad_subtype':'','ad_type':'','albumid':'17245200','artist':'我和我的家乡','artistid':'5037564','artistpic':'http://img4.kuwo.cn/star/starheads/0/10/27/3738071257.jpg','color':'[#FFD8F3F1,#FF719794]','company':'中青在线','content_type':'0','falbum':'','fartist':'我和我的家乡','finished':'1','hts_img':'https://img2.kuwo.cn/star/albumcover/240/85/51/1350940634.jpg','id':'17245200','img':'http://img2.sycdn.kuwo.cn/star/albumcover/240/85/51/1350940634.jpg','info':'《我和我的家乡2》是融媒体音频节目《我和我的家乡》第二季。为解读中国人的乡土情结,汇聚同心追梦的力量。【歌曲篇】每期节目将推出一个主题城市,邀请一位青春正能量明星,演唱与家乡有关的原创或翻唱歌曲,曲传乡音。','isstar':'1','lang':'','musiccnt':'5','name':'我和我的家乡第二季「歌曲篇」','new':'0','payvalue':'0','pic':'120/85/51/1350940634.jpg','pub':'2020-12-25','score':'0','showtime':'','spPrivilege':'0','startype':'历史人文','timing_online':'0000-00-00 00:00:00','title':'解读中国人的乡土情结','vip':'0'},{'DC_TARGETID':'12854978','DC_TARGETTYPE':'','PAY':'0','PLAYCNT':'21482961','aartist':'','ad_subtype':'','ad_type':'','albumid':'12854978','artist':'佛学听我的','artistid':'3651480','artistpic':'http://img4.kuwo.cn/star/starheads/120/21/42/3683883829.jpg','color':'[#FFD8F3F1,#FF719794]','company':'暂无','content_type':'0','falbum':'','fartist':'佛学听我的','finished':'0','hts_img':'https://img2.kuwo.cn/star/albumcover/240/99/12/1066669641.jpg','id':'12854978','img':'http://img2.sycdn.kuwo.cn/star/albumcover/240/99/12/1066669641.jpg','info':'禅音静心:禅茶一味','isstar':'1','lang':'普通话','musiccnt':'407','name':'禅音静心:禅茶一味','new':'0','payvalue':'0','pic':'120/99/12/1066669641.jpg','pub':'2020-02-23','score':'0','showtime':'','spPrivilege':'0','startype':'历史人文','timing_online':'0000-00-00 00:00:00','title':'禅音静心:禅茶一味','vip':'0'},{'DC_TARGETID':'13884852','DC_TARGETTYPE':'','PAY':'0','PLAYCNT':'17396226','aartist':'','ad_subtype':'','ad_type':'','albumid':'13884852','artist':'佛学听我的','artistid':'3651480','artistpic':'http://img4.kuwo.cn/star/starheads/120/21/42/3683883829.jpg','color':'[#FFD8F3F1,#FF719794]','company':'暂无','content_type':'0','falbum':'','fartist':'佛学听我的','finished':'0','hts_img':'https://img2.kuwo.cn/star/albumcover/240/91/94/4253604466.jpg','id':'13884852','img':'http://img2.sycdn.kuwo.cn/star/albumcover/240/91/94/4253604466.jpg','info':'静心听佛乐','isstar':'1','lang':'普通话','musiccnt':'228','name':'静心听佛乐','new':'0','payvalue':'0','pic':'120/91/94/4253604466.jpg','pub':'2020-04-27','score':'0','showtime':'','spPrivilege':'0','startype':'历史人文','timing_online':'0000-00-00 00:00:00','title':'静心听佛乐','vip':'0'},{'DC_TARGETID':'17172751','DC_TARGETTYPE':'','PAY':'0','PLAYCNT':'553401','aartist':'','ad_subtype':'102,103,101,501','ad_type':'1,5','albumid':'17172751','artist':'我和我的家乡','artistid':'5037564','artistpic':'http://img4.kuwo.cn/star/starheads/0/10/27/3738071257.jpg','color':'[#FFD8F3F1,#FF719794]','company':'中青在线','content_type':'0','falbum':'','fartist':'我和我的家乡','finished':'1','hts_img':'https://img2.kuwo.cn/star/albumcover/240/63/45/3978411674.jpg','id':'17172751','img':'http://img2.sycdn.kuwo.cn/star/albumcover/240/63/45/3978411674.jpg','info':'《我和我的家乡2》是融媒体音频节目《我和我的家乡》第二季。为解读中国人的乡土情结,汇聚同心追梦的力量。每期节目将推出一个主题城市,邀请一位青春正能量明星,用笔者独有的乡愁情感,配以讲述者也为此乡人的身份,着力刻画该城市的魅力形象,展现一座城的普通百姓生活和经济社会发展。','isstar':'1','lang':'','musiccnt':'11','name':'我和我的家乡第二季「有声篇」','new':'0','payvalue':'0','pic':'120/63/45/3978411674.jpg','pub':'2020-12-21','score':'0','showtime':'2020-12-20','spPrivilege':'0','startype':'娱乐','timing_online':'2020-12-20 23:40:00','title':'','vip':'0'},{'DC_TARGETID':'18769609','DC_TARGETTYPE':'','PAY':'0','PLAYCNT':'69987','aartist':'','ad_subtype':'101,102,103,501','ad_type':'1,5','albumid':'18769609','artist':'你是我的荣耀','artistid':'6998984','artistpic':'http://img4.kuwo.cn/star/starheads/120/41/44/262468637.jpg','color':'[#FFD8F3F1,#FF719794]','company':'暂无','content_type':'0','falbum':'','fartist':'你是我的荣耀','finished':'0','hts_img':'https://img2.kuwo.cn/star/albumcover/240/44/72/4080853707.jpg','id':'18769609','img':'http://img2.sycdn.kuwo.cn/star/albumcover/240/44/72/4080853707.jpg','info':'《你是我的荣耀》是由王之执导,潘粤明、胡可、王彦霖、杨洋、迪丽热巴、郑合惠子主演的都市爱情剧。该剧改编自顾漫创作的同名小说,主要讲述了人气女星乔晶晶在游戏中与曾经的高中同学于途意外重逢后发生的故事。\\\\\\\\\\\\\\\\\\n;跟随《你是我的荣耀》之声,一起见证航天工程师于途与人气女星乔晶晶,携手砥砺前行成为彼此荣耀的爱情故事!\\\\\\\\\\\\\\\\\\n;\\\\\\\\\\\\\\\\\\n;\\\\\\\\\\\\\\\\\\n;\\\\\\\\\\\\\\\\\\n;\\\\\\\\\\\\\\\\\\n;','isstar':'1','lang':'普通话','musiccnt':'1','name':'你是我的荣耀','new':'0','payvalue':'0','pic':'120/44/72/4080853707.jpg','pub':'2021-03-05','score':'0','showtime':'2021-03-09','spPrivilege':'0','startype':'有声小说','timing_online':'2021-03-09 00:00:00','title':'大明星恋上航天工程师 热巴杨洋甜蜜相守','vip':'0'},{'DC_TARGETID':'23641999','DC_TARGETTYPE':'','PAY':'0','PLAYCNT':'1292491','aartist':'','ad_subtype':'102,103,501,101,301','ad_type':'1,3,5','albumid':'23641999','artist':'我的存在','artistid':'8102787','artistpic':'http://img4.kuwo.cn/star/starheads/120/31/87/632983033.jpg','color':'[#FFE2F2C6,#FF85A476]','company':'独立发行','content_type':'0','falbum':'','fartist':'我的存在','finished':'1','hts_img':'https://img2.kuwo.cn/star/albumcover/240/50/6/2193571523.jpg','id':'23641999','img':'http://img2.sycdn.kuwo.cn/star/albumcover/240/50/6/2193571523.jpg','info':'为给老驸马冲喜,长亭长公主庶孙迎娶陆家女,新娘子当天却吊死在洞房,现代女医生陆漫穿越而来。委屈的某人,我要功成名就,我的生活我作主。陆漫,还你自由,我也自由……','isstar':'1','lang':'','musiccnt':'726','name':'金玉良医(完结)','new':'0','payvalue':'0','pic':'120/50/6/2193571523.jpg','pub':'2021-10-11','score':'0','showtime':'','spPrivilege':'0','startype':'有声小说','timing_online':'0000-00-00 00:00:00','title':'现代女医生陆漫穿越到古代发生的事情','vip':'0'},{'DC_TARGETID':'28177105','DC_TARGETTYPE':'','PAY':'0','PLAYCNT':'10448','aartist':'','ad_subtype':'102,103,501,101,301','ad_type':'1,3,5','albumid':'28177105','artist':'我的青糖','artistid':'9650993','artistpic':'http://img4.kuwo.cn/star/starheads/120/40/93/1019968534.jpg','color':'[#FFE2F2C6,#FF85A476]','company':'独立发行','content_type':'0','falbum':'','fartist':'我的青糖','finished':'0','hts_img':'https://img2.kuwo.cn/star/albumcover/240/62/97/3136446870.jpg','id':'28177105','img':'http://img2.sycdn.kuwo.cn/star/albumcover/240/62/97/3136446870.jpg','info':'【字数:16万字】<br>裴子墨和丁辰是一对夫妻,妻子丁辰深爱裴子墨,但裴子墨难以忘怀初恋总是对她若即若离。婚后两年,裴子墨前女友于筝突然回国,使得他和丁辰原本就不稳定的婚姻更加雪上加霜。于筝当初背叛裴子墨,受伤后才意识到裴子墨的好,于是不择手段夺回了裴子墨。丁辰和裴子墨离婚后,裴子墨才意识到两年相处,他早已习惯有丁辰的陪伴。裴子墨决心重新赢回丁辰的心,但此时丁辰身边已经有了一位极其出色的追求者,前景不容乐观……','isstar':'1','lang':'','musiccnt':'80','name':'如果你是我的传说','new':'0','payvalue':'0','pic':'120/62/97/3136446870.jpg','pub':'2022-04-21','score':'0','showtime':'1979-10-05','spPrivilege':'0','startype':'有声小说','timing_online':'2022-05-01 19:26:48','title':'','vip':'0'},{'DC_TARGETID':'12896662','DC_TARGETTYPE':'','PAY':'0','PLAYCNT':'2412258','aartist':'','ad_subtype':'','ad_type':'','albumid':'12896662','artist':'佛学听我的','artistid':'3651480','artistpic':'http://img4.kuwo.cn/star/starheads/120/21/42/3683883829.jpg','color':'[#FFD8F3F1,#FF719794]','company':'暂无','content_type':'0','falbum':'','fartist':'佛学听我的','finished':'0','hts_img':'https://img2.kuwo.cn/star/albumcover/240/93/41/3670973086.jpg','id':'12896662','img':'http://img2.sycdn.kuwo.cn/star/albumcover/240/93/41/3670973086.jpg','info':'佛书梵唱100篇','isstar':'1','lang':'普通话','musiccnt':'50','name':'佛书梵唱100篇','new':'0','payvalue':'0','pic':'120/93/41/3670973086.jpg','pub':'2020-02-24','score':'0','showtime':'','spPrivilege':'0','startype':'历史人文','timing_online':'0000-00-00 00:00:00','title':'佛书梵唱100篇','vip':'0'}],'pn':'0','rn':'10','total':'257'}`; - // log(JSON5.parse(a)); - // console.log(typeof(CryptoJS)); - console.log("init_test_start"); - // print(模板); - // print(typeof(模板.getMubans)); - console.log("当前版本号:" + VERSION); - console.log('本地代理地址:' + getProxyUrl()); - console.log(RKEY); - // ocr_demo_test(); - // rsa_demo_test(); - - // console.log('Uint8Array:'+typeof(Uint8Array)+' '+'Uint16Array:'+typeof(Uint16Array)); - // console.log('encodeURIComponent:'+typeof(encodeURIComponent)+' '+'decodeURIComponent:'+typeof(decodeURIComponent)); - // console.log('atob:'+typeof(atob)+' '+'btoa:'+typeof(btoa)); - // log('typeof (JSEncrypt):'+typeof (JSEncrypt)); - // log('typeof (pako):'+typeof (pako)); - // let b64_str = btoa('hello hipy'); - // let str = atob(b64_str); - // console.log(`btoa加密文本:${b64_str},atob解密文本:${str}`) - // let gzip_str = gzip('{"a":"电影","b":"电影","c":"电影","d":"电影","e":"电影","f":"电影"}'); - // let ungzip_str = ungzip(gzip_str); - // console.log(`gzip加密文本:${gzip_str},长度:${gzip_str.length},ungzip解密文本:${ungzip_str},长度:${ungzip_str.length}`); - // let a = {"1":[{"key":"类型","name":"类型","value":[{"n":"全部","v":""},{"n":"Netflix","v":"NETFLIX"},{"n":"剧情","v":"剧情"},{"n":"喜剧","v":"喜剧"},{"n":"动作","v":"动作"},{"n":"爱情","v":"爱情"},{"n":"恐怖","v":"恐怖"},{"n":"惊悚","v":"惊悚"},{"n":"犯罪","v":"犯罪"},{"n":"科幻","v":"科幻"},{"n":"悬疑","v":"悬疑"},{"n":"奇幻","v":"奇幻"},{"n":"冒险","v":"冒险"},{"n":"战争","v":"战争"},{"n":"历史","v":"历史"},{"n":"古装","v":"古装"},{"n":"家庭","v":"家庭"},{"n":"传记","v":"传记"},{"n":"武侠","v":"武侠"},{"n":"歌舞","v":"歌舞"},{"n":"短片","v":"短片"},{"n":"动画","v":"动画"},{"n":"儿童","v":"儿童"},{"n":"职场","v":"职场"}]},{"key":"地区","name":"地区","value":[{"n":"全部","v":""},{"n":"大陆","v":"中国大陆"},{"n":"香港","v":"中国香港"},{"n":"台湾","v":"中国台湾"},{"n":"美国","v":"美国"},{"n":"日本","v":"日本"},{"n":"韩国","v":"韩国"},{"n":"英国","v":"英国"},{"n":"法国","v":"法国"},{"n":"德国","v":"德国"},{"n":"印度","v":"印度"},{"n":"泰国","v":"泰国"},{"n":"丹麦","v":"丹麦"},{"n":"瑞典","v":"瑞典"},{"n":"巴西","v":"巴西"},{"n":"加拿大","v":"加拿大"},{"n":"俄罗斯","v":"俄罗斯"},{"n":"意大利","v":"意大利"},{"n":"比利时","v":"比利时"},{"n":"爱尔兰","v":"爱尔兰"},{"n":"西班牙","v":"西班牙"},{"n":"澳大利亚","v":"澳大利亚"},{"n":"其他","v":"其他"}]},{"key":"语言","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"粤语","v":"粤语"},{"n":"英语","v":"英语"},{"n":"日语","v":"日语"},{"n":"韩语","v":"韩语"},{"n":"法语","v":"法语"},{"n":"其他","v":"其他"}]},{"key":"年份","name":"年份","value":[{"n":"全部","v":""},{"n":"2024","v":"2024"},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"10年代","v":"2010_2019"},{"n":"00年代","v":"2000_2009"},{"n":"90年代","v":"1990_1999"},{"n":"80年代","v":"1980_1989"},{"n":"更早","v":"0_1979"}]},{"key":"排序","name":"排序","value":[{"n":"综合","v":""},{"n":"最新","v":"2"},{"n":"最热","v":"3"},{"n":"评分","v":"4"}]}],"2":[{"key":"类型","name":"类型","value":[{"n":"全部","v":""},{"n":"Netflix","v":"Netflix"},{"n":"剧情","v":"剧情"},{"n":"爱情","v":"爱情"},{"n":"喜剧","v":"喜剧"},{"n":"犯罪","v":"犯罪"},{"n":"悬疑","v":"悬疑"},{"n":"古装","v":"古装"},{"n":"动作","v":"动作"},{"n":"家庭","v":"家庭"},{"n":"惊悚","v":"惊悚"},{"n":"奇幻","v":"奇幻"},{"n":"美剧","v":"美剧"},{"n":"科幻","v":"科幻"},{"n":"历史","v":"历史"},{"n":"战争","v":"战争"},{"n":"韩剧","v":"韩剧"},{"n":"武侠","v":"武侠"},{"n":"言情","v":"言情"},{"n":"恐怖","v":"恐怖"},{"n":"冒险","v":"冒险"},{"n":"都市","v":"都市"},{"n":"职场","v":"职场"}]},{"key":"地区","name":"地区","value":[{"n":"地区","v":""},{"n":"大陆","v":"中国大陆"},{"n":"香港","v":"中国香港"},{"n":"韩国","v":"韩国"},{"n":"美国","v":"美国"},{"n":"日本","v":"日本"},{"n":"法国","v":"法国"},{"n":"英国","v":"英国"},{"n":"德国","v":"德国"},{"n":"台湾","v":"中国台湾"},{"n":"泰国","v":"泰国"},{"n":"印度","v":"印度"},{"n":"其他","v":"其他"}]},{"key":"语言","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"粤语","v":"粤语"},{"n":"英语","v":"英语"},{"n":"日语","v":"日语"},{"n":"韩语","v":"韩语"},{"n":"法语","v":"法语"},{"n":"其他","v":"其他"}]},{"key":"年份","name":"年份","value":[{"n":"全部","v":""},{"n":"2024","v":"2024"},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"10年代","v":"2010_2019"},{"n":"00年代","v":"2000_2009"},{"n":"90年代","v":"1990_1999"},{"n":"80年代","v":"1980_1989"},{"n":"更早","v":"0_1979"}]},{"key":"排序","name":"排序","value":[{"n":"综合","v":""},{"n":"最新","v":"2"},{"n":"最热","v":"3"},{"n":"评分","v":"4"}]}],"3":[{"key":"类型","name":"类型","value":[{"n":"全部","v":""},{"n":"Netflix","v":"Netflix"},{"n":"动态漫画","v":"动态漫画"},{"n":"剧情","v":"剧情"},{"n":"动画","v":"动画"},{"n":"喜剧","v":"喜剧"},{"n":"冒险","v":"冒险"},{"n":"动作","v":"动作"},{"n":"奇幻","v":"奇幻"},{"n":"科幻","v":"科幻"},{"n":"儿童","v":"儿童"},{"n":"搞笑","v":"搞笑"},{"n":"爱情","v":"爱情"},{"n":"家庭","v":"家庭"},{"n":"短片","v":"短片"},{"n":"热血","v":"热血"},{"n":"益智","v":"益智"},{"n":"悬疑","v":"悬疑"},{"n":"经典","v":"经典"},{"n":"校园","v":"校园"},{"n":"Anime","v":"Anime"},{"n":"运动","v":"运动"},{"n":"亲子","v":"亲子"},{"n":"青春","v":"青春"},{"n":"恋爱","v":"恋爱"},{"n":"武侠","v":"武侠"},{"n":"惊悚","v":"惊悚"}]},{"key":"地区","name":"地区","value":[{"n":"全部","v":""},{"n":"日本","v":"日本"},{"n":"大陆","v":"中国大陆"},{"n":"台湾","v":"中国台湾"},{"n":"美国","v":"美国"},{"n":"香港","v":"中国香港"},{"n":"韩国","v":"韩国"},{"n":"英国","v":"英国"},{"n":"法国","v":"法国"},{"n":"德国","v":"德国"},{"n":"印度","v":"印度"},{"n":"泰国","v":"泰国"},{"n":"丹麦","v":"丹麦"},{"n":"瑞典","v":"瑞典"},{"n":"巴西","v":"巴西"},{"n":"加拿大","v":"加拿大"},{"n":"俄罗斯","v":"俄罗斯"},{"n":"意大利","v":"意大利"},{"n":"比利时","v":"比利时"},{"n":"爱尔兰","v":"爱尔兰"},{"n":"西班牙","v":"西班牙"},{"n":"澳大利亚","v":"澳大利亚"},{"n":"其他","v":"其他"}]},{"key":"语言","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"粤语","v":"粤语"},{"n":"英语","v":"英语"},{"n":"日语","v":"日语"},{"n":"韩语","v":"韩语"},{"n":"法语","v":"法语"},{"n":"其他","v":"其他"}]},{"key":"年份","name":"年份","value":[{"n":"全部","v":""},{"n":"2024","v":"2024"},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"10年代","v":"2010_2019"},{"n":"00年代","v":"2000_2009"},{"n":"90年代","v":"1990_1999"},{"n":"80年代","v":"1980_1989"},{"n":"更早","v":"0_1979"}]},{"key":"排序","name":"排序","value":[{"n":"综合","v":""},{"n":"最新","v":"2"},{"n":"最热","v":"3"},{"n":"评分","v":"4"}]}],"4":[{"key":"类型","name":"类型","value":[{"n":"全部","v":""},{"n":"纪录","v":"纪录"},{"n":"真人秀","v":"真人秀"},{"n":"记录","v":"记录"},{"n":"脱口秀","v":"脱口秀"},{"n":"剧情","v":"剧情"},{"n":"历史","v":"历史"},{"n":"喜剧","v":"喜剧"},{"n":"传记","v":"传记"},{"n":"相声","v":"相声"},{"n":"节目","v":"节目"},{"n":"歌舞","v":"歌舞"},{"n":"冒险","v":"冒险"},{"n":"运动","v":"运动"},{"n":"Season","v":"Season"},{"n":"犯罪","v":"犯罪"},{"n":"短片","v":"短片"},{"n":"搞笑","v":"搞笑"},{"n":"晚会","v":"晚会"}]},{"key":"地区","name":"地区","value":[{"n":"全部","v":""},{"n":"大陆","v":"中国大陆"},{"n":"香港","v":"中国香港"},{"n":"台湾","v":"中国台湾"},{"n":"美国","v":"美国"},{"n":"日本","v":"日本"},{"n":"韩国","v":"韩国"},{"n":"其他","v":"其他"}]},{"key":"语言","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"粤语","v":"粤语"},{"n":"英语","v":"英语"},{"n":"日语","v":"日语"},{"n":"韩语","v":"韩语"},{"n":"法语","v":"法语"},{"n":"其他","v":"其他"}]},{"key":"年份","name":"年份","value":[{"n":"全部","v":""},{"n":"2024","v":"2024"},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"10年代","v":"2010_2019"},{"n":"00年代","v":"2000_2009"},{"n":"90年代","v":"1990_1999"},{"n":"80年代","v":"1980_1989"},{"n":"更早","v":"0_1979"}]},{"key":"排序","name":"排序","value":[{"n":"综合","v":""},{"n":"最新","v":"2"},{"n":"最热","v":"3"},{"n":"评分","v":"4"}]}],"6":[{"key":"类型","name":"类型","value":[{"n":"类型","v":""},{"n":"逆袭","v":"逆袭"},{"n":"甜宠","v":"甜宠"},{"n":"虐恋","v":"虐恋"},{"n":"穿越","v":"穿越"},{"n":"重生","v":"重生"},{"n":"剧情","v":"剧情"},{"n":"科幻","v":"科幻"},{"n":"武侠","v":"武侠"},{"n":"爱情","v":"爱情"},{"n":"动作","v":"动作"},{"n":"战争","v":"战争"},{"n":"冒险","v":"冒险"},{"n":"其它","v":"其它"}]},{"key":"排序","name":"排序","value":[{"n":"综合","v":""},{"n":"最新","v":"2"},{"n":"最热","v":"3"}]}]}; - // log(gzip(JSON.stringify(a))); - - console.log(JSON.stringify(rule)); - console.log("init_test_end"); - - - // log('typeof (JSEncrypt):'+typeof (JSEncrypt)); - // let publicKey = 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwEc7wBMtYKkxvrQNI3+ITBZwAkPkGvsv4TsAHFskKGZWz9eYl3scivhmlEfWHlEkdyb0m82CmB1qAgef+pD4cZu+Cdmm2e9lnExhLwm8cBgpkAen9QRNdjojZgxM0W+JcReH4W6pw+uFXiLRn4AIQkDftWGNLg6wlNS+39Z/RvP9zyATJLZ9AKDdHp62XMxEK1KZvWBuIg+Oa5UzgA9jy+2XyIqwhBtO8tPbUl21t2pvTzHoLUjSkPNm2LurcUk6+jQ2r6aiS2CN1NXIucPJU6mkuIQ821SjvkYPtIdRMntW4y2u4cyiqVEEQwlzWVMHh+/vfrWAQr9fgjDuYYtvPQIDAQAB'; - // let privateKey = 'MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDARzvAEy1gqTG+tA0jf4hMFnACQ+Qa+y/hOwAcWyQoZlbP15iXexyK+GaUR9YeUSR3JvSbzYKYHWoCB5/6kPhxm74J2abZ72WcTGEvCbxwGCmQB6f1BE12OiNmDEzRb4lxF4fhbqnD64VeItGfgAhCQN+1YY0uDrCU1L7f1n9G8/3PIBMktn0AoN0enrZczEQrUpm9YG4iD45rlTOAD2PL7ZfIirCEG07y09tSXbW3am9PMegtSNKQ82bYu6txSTr6NDavpqJLYI3U1ci5w8lTqaS4hDzbVKO+Rg+0h1Eye1bjLa7hzKKpUQRDCXNZUweH7+9+tYBCv1+CMO5hi289AgMBAAECggEBAIRbRJUWXmEwdq64kGbELlV6CIZ2p3mvOSlIjO34Cy7IK7AMz9xOgbpj/XDK9miOIJTouu7ZC7GcZdGZ4BUCYBMMS0fKjGFuurpZlXhkslNTPqEHtCUkXhIpOR7RDrwIlErGEOIsZC4aXQcM3tF1t7mroJLh4OY4dHMu82lv5NM4hhFMNvHzXVvrPXeTzw26gddHVG/ke0WUYOcB5j3cPp8xaVp7JV8bdxtGtkqIfBLY/dIczzJu/3F3cBpU2nNwt8uVUF/w/HKlr7j8FqqFHXWh182beU0n5AIdRyRJBrRUAEhdtsUnvJOVBDqzZa+9DJ5395F7V8KRlQptxETdhCECgYEA4x/2HM9fnVIhG6wTbEt1LhGTKYb/igMAHLqquEMfRsB44tobI8gVNwR3qJQY/nKXxcQemQV29PcdqpENCKyXUXGD8SI1UPg15rHFBI8CIqlCXfzJybdHjmzlhaA9I5lofIVh+5MW7WkvHZoRy7NeDMhHUuaiveuqC4OJ8n+dD2kCgYEA2LkmUVef3WkBBwUBRdkyoog3DMwR+/ubb0ncJVYy3ItYVJltQ4HqmrRiJc8xBAoFnG8rbiqDnmTnDR3WbuxU1G2hml09fqId+rQds2UfESswCXHU43A4f77m1XyA6PprBxpozVIcmK69N4rR9jOXflLWo3O+p2ipUbmNpId7+rUCgYBSpcbBJRT+AmzZzPwkZDD32p1ady114zGfQq3s7z/qVw+mPQezNZPCuXVxerK9pKVl6b/Ynwxyh5nb/3xms6c8k7oXfQM5u5ihof63cfKs+jqUSPCE3pTDVw0OWwjkc2Z6KW9GRHgLXEMw2mevYE3RCPArUpHV2nO+TNddzuIwQQKBgQDOZwdnUNygMfEYjlu3+jOPN8u2FGTMZ8SRKPbRWFb4VH27lKPLN2AIFuOivsEf56uQYRAry7GumMq0Y0ZmPg5Mglz2dvaqNBv5OLFQuW3tHAST+iWWtroYb+fISts7B8QG79AAO8OgZksvKrbslBYj6SEiaomZRsR7YQzVNXOOQQKBgQCovElZ50c8ZJ6m9D9fw3Nes7u9vshpyyac5tt4tZ7yfU4l5pWGrIUqCE703qZp4NAqEvlZUCJbj9kkysaj/2MfFb2b9jSvdNB+V/YW9Cwg+5TziYoOcQzN1z2u4p4goTAv0S+pTNSr3qWaTUI4TXUXQajif45Fexv+MrP5AAXQyw==' - // // let text = '你好'; - // let text = '[{"vod_name":"兔小贝原创儿歌","vod_pic":"https://resource-cdn.tuxiaobei.com/video-album/FnQ8ieJHgsbgCKWXNBg4uoOmKgG5.jpg","vod_remarks":"共229首","vod_content":"","vod_id":"/subject/17@@兔小贝原创儿歌@@https://resource-cdn.tuxiaobei.com/video-album/FnQ8ieJHgsbgCKWXNBg4uoOmKgG5.jpg"},{"vod_name":"英文儿歌","vod_pic":"https://resource-cdn.tuxiaobei.com/video-album/Fqjpx2H_-QaYNAYn2MekRuDpeyUv.jpg","vod_remarks":"共10首","vod_content":"","vod_id":"/subject/23@@英文儿歌@@https://resource-cdn.tuxiaobei.com/video-album/Fqjpx2H_-QaYNAYn2MekRuDpeyUv.jpg"}]'; - // let str = RSA.encode(text, publicKey); - // console.log("加密数据:" + str); - // let str1 = 'Wa2c/868VOm0PgpGG2s2aMrDbGOlJRdZXlSGswjFgywd3nZNB7ND8kVMdNB/OsNFoQXJXSJMvPaE73BH7rs8fz54JGdYQK+qTgfQRqQZvomCjbzseSR4bm4NOrtIOOslL3WqxlzOuU0M1P1eERmkLEVU2WSyc3RGtJro3b3MOWYCNdKMoZdncfOHJndkl4wm9V3GGc3uH98hs6OxLvBWgXoW9jZQ3n0vR2FtS2KYrPGuSuKGkxlt9Kw5TD6nri142NOimz05WK55Xe04YUQ1VZd51t0wzJGXolWgfzIQaK2zzhk5Zjlm+IQJxXqEWiJ2+O6TJ+lIttvsDSaUflcDXQ=='; - // let str2 = 'R86mW9DzBw05pxBSh9ECh1stXxINmnudgZBbzU/cz1EcFgrEgdk0Zk4ruAiJZB2fP5c7d3gMmN8+Dv19IfARWSzw85xCEjUhpdcMJ0jn6ZE5H+muadND9LzjeVisojqwYxot3YVdKof7HMhPFN8QR0jfzqhjmnGFTlY1jMXzJK0MSOLNRLDar480CdKNb/cxALC8+xKIlhM9E4B31t8J4rNMUWSCAr49lbZ3jx3PxieBpTQUdDJz96AttR93Pc+c51wrxh0Ch/Mt4Rs09HGMXwIpNV+CxsGwSGRQUlyJo2k3d0WqsVzpz6S8A4VGEMTRLGI3IjEt+eWt7wM3nAXarg=='; - // let str3 = 'D4eOsRqua+jYA5+ZOR9PLI2PExKjKfArQfv9/wGeG50bQSjWypShJPY6RQfO+rghyf0juzHIUSxqH91OxinhCFkONaF2Vod2QVyphyn9eh73dAcEFKIFFKGXoPCjbMWrr3p4d+hgVrHzrFeGqkRq8JFOvG2L5XDxVfWbV8KmUA0DKuz6QwWg7P4kesy+C7BbLALy5W/wfZchD3gnsBvx/pjFoe11VfAify9isLxg9a15jj52xr6lzQ9kge9C2JcV8yq85bFKaUpJWgobzz+BSIv3lVMU6vgcldmOrhkyiETpFGFGGF00DphGCEoK6uAyyNDh7+Jn8P17zf/DW1wV3A=='; - // let uncrypted = RSA.decode(str, privateKey); - // log('解密数据:'+uncrypted); - // uncrypted = RSA.decode(str1, privateKey); - // log('解密数据1:'+uncrypted); - // uncrypted = RSA.decode(str2, privateKey); - // log('解密数据2:'+uncrypted); - // uncrypted = RSA.decode(str3, privateKey); - // log('解密数据3:'+uncrypted); - - // log('rsax:'+typeof(rsax)); - // log('rsaX:'+typeof(rsaX)); - // let data = base64Encode('你好'); - // let publicKey = 'dzyyds'; - // console.log(typeof (RSA.encode)); - // let encryptBase64Data = RSA.encode(data,publicKey); - // log('encryptBase64Data:'+encryptBase64Data); - // let str = RSA.decode(data,publicKey); - // log('str:'+str); -} - -/** - * 验证码ocr识别的测试案例 - */ -function ocr_demo_test() { - // 这张图片为4113的验证码 - let img_base64 = `iVBORw0KGgoAAAANSUhEUgAAAIAAAAAoBAMAAADEX+97AAAAG1BMVEXz+/4thQTa7N6QwIFFkyNeokKozqDB3b93sWHFR+MEAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABN0lEQVRIie2TQU+DQBCFt9vScvQpxR4xrcSjJCZ67JDGXsX+AdR4B3vpsSYm/m2HXaRLmuySepR3Gdidb/btDAjRq5dT96eCMlfBuzi1QLZUoZy2yz5sOvI+9iomaPEZ6nWnEtxqIyiM1RcAy44GNDhBXUjot/VVNweV1ah68FqWRyjKIOqAcyYF6rGcmpYnHzGt3fycNoMw0d3/THFu7hFSJ/8OXO6iTM8/KSg09obAzIHLO250LgQ0txOZSfgrV4Exdw98uGycJ0ErAeExZGhOmFHV9zHO6qVSj0MpLq7xZON56o++MjlsEgfVhbQWWME+xQX7J4V6zfi9A1Ly9rP1BvEXp+BbVJ/M77n+wfOIDVp51pZ4iBxvmj9AGrtvry6emwfKnVkW+ZRKd5ZNMvob36vXP9YPDmQki8QiCFAAAAAASUVORK5CYII=`; - // 更换api-可以通过这个代码换掉默认的ocr接口 - OcrApi.api = OCR_API; - let code = OcrApi.classification(img_base64); - log('测试验证码图片的ocr识别结果为:' + code); -} - -/** - * rsa加解密的全方位测试案例 - */ -function rsa_demo_test() { - let t1 = new Date().getTime(); - let pkcs1_public = ` ------BEGIN RSA PUBLIC KEY----- -MEgCQQCrI0pQ/ERRpJ3Ou190XJedFq846nDYP52rOtXyDxlFK5D3p6JJu2RwsKwy -lsQ9xY0xYPpRZUZKMEeR7e9gmRNLAgMBAAE= ------END RSA PUBLIC KEY----- -`.trim(); - - let pkcs1_public_pem = ` -MEgCQQCrI0pQ/ERRpJ3Ou190XJedFq846nDYP52rOtXyDxlFK5D3p6JJu2RwsKwy -lsQ9xY0xYPpRZUZKMEeR7e9gmRNLAgMBAAE= -`.trim(); - - let pkcs8_public = ` ------BEGIN PUBLIC KEY----- -MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKsjSlD8RFGknc67X3Rcl50WrzjqcNg/ -nas61fIPGUUrkPenokm7ZHCwrDKWxD3FjTFg+lFlRkowR5Ht72CZE0sCAwEAAQ== ------END PUBLIC KEY-----`.trim(); - - let pkcs8_public_pem = ` -MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKsjSlD8RFGknc67X3Rcl50WrzjqcNg/ -nas61fIPGUUrkPenokm7ZHCwrDKWxD3FjTFg+lFlRkowR5Ht72CZE0sCAwEAAQ== -`.trim(); - - let pkcs1_private = ` ------BEGIN RSA PRIVATE KEY----- -MIIBOAIBAAJBAKsjSlD8RFGknc67X3Rcl50WrzjqcNg/nas61fIPGUUrkPenokm7 -ZHCwrDKWxD3FjTFg+lFlRkowR5Ht72CZE0sCAwEAAQI/b6OV1z65UokQaMvSeRXt -0Yv6wiYtduQI9qpq5nzy/ytaqsbBfClNTi/HifKPKxlRouWFkc518EQI8LBxoarJ -AiEA4DaONMplV8PQNa3TKn2F+SDEvLOCjdL0kHKdN90Ti28CIQDDZnTBaHgZwZbA -hS7Bbf5yvwjWMhO6Y7l04/Qm7R+35QIgPuQuqXIoUSD080mp1N5WyRW++atksIF+ -5lGv9e6GP/MCICnj8y/rl6Pd7tXDN6zcSeqLrfdNsREKhB3dKOCXgW9JAiAFYtFS -EJNBXVRTK42SNsZ2hJ/9xLwOwnH2epT8Q43s3Q== ------END RSA PRIVATE KEY----- -`.trim() - - let pkcs8_private = ` ------BEGIN PRIVATE KEY----- -MIIBUgIBADANBgkqhkiG9w0BAQEFAASCATwwggE4AgEAAkEAqyNKUPxEUaSdzrtf -dFyXnRavOOpw2D+dqzrV8g8ZRSuQ96eiSbtkcLCsMpbEPcWNMWD6UWVGSjBHke3v -YJkTSwIDAQABAj9vo5XXPrlSiRBoy9J5Fe3Ri/rCJi125Aj2qmrmfPL/K1qqxsF8 -KU1OL8eJ8o8rGVGi5YWRznXwRAjwsHGhqskCIQDgNo40ymVXw9A1rdMqfYX5IMS8 -s4KN0vSQcp033ROLbwIhAMNmdMFoeBnBlsCFLsFt/nK/CNYyE7pjuXTj9CbtH7fl -AiA+5C6pcihRIPTzSanU3lbJFb75q2SwgX7mUa/17oY/8wIgKePzL+uXo93u1cM3 -rNxJ6out902xEQqEHd0o4JeBb0kCIAVi0VIQk0FdVFMrjZI2xnaEn/3EvA7CcfZ6 -lPxDjezd ------END PRIVATE KEY----- -`.trim() - - let data = ` -NodeRsa -这是node-rsa 现在修改集成在drpy里使用`.trim(); - - let encryptedWithPublic = NODERSA.encryptRSAWithPublicKey(data, pkcs1_public, { - // PublicFormat: "pkcs1-public-pem", - outputEncoding: "base64", - options: { - environment: "browser", - encryptionScheme: 'pkcs1_oaep' - }, - }); - console.log("公钥加密"); - console.log(encryptedWithPublic); - - - let decryptedWithPrivate = NODERSA.decryptRSAWithPrivateKey(encryptedWithPublic, pkcs1_private, { - // PublicFormat: "pkcs1-private", - // outEncoding: "hex" - options: { - environment: "browser", - encryptionScheme: 'pkcs1_oaep' - }, - }); - console.log("私钥解密"); - console.log(decryptedWithPrivate); - - - // https://www.btool.cn/rsa-sign - let pkcs1_sha256_sign = NODERSA.sign("1", pkcs1_private, { - outputEncoding: "base64", - options: { - environment: "browser", - encryptionScheme: 'pkcs1', - signingScheme: "pkcs1-sha256" - }, - }); - console.log("pkcs1_sha256_sign"); - console.log(pkcs1_sha256_sign); - - let pkcs1_sha256_sign_verify = NODERSA.verify("1", "Oulx2QrgeipKYBtqEDqFb2s/+ndk2cGQxO4CkhU7iBM1vyNmmvqubpsmeoUuN3waGrYZLknSEdwBkfv0tUMpFQ==", pkcs1_private, { - options: { - environment: "browser", - encryptionScheme: 'pkcs1', - signingScheme: "pkcs1-sha256" - }, - }); - console.log("pkcs1_sha256_sign_verify"); - console.log(pkcs1_sha256_sign_verify); - - let pkcs1_oaep_sha256 = NODERSA.encryptRSAWithPublicKey(data, `-----BEGIN RSA PUBLIC KEY----- -MIIBCgKCAQEA5KOq1gRNyllLNWKQy8sGpZE3Q1ULLSmzZw+eaAhj9lvqn7IsT1du -SYn08FfoOA2qMwtz+1O2l1mgzNoSVCyVpVabnTG+C9XKeZXAnJHd8aYA7l7Sxhdm -kte+iymYZ0ZBPzijo8938iugtVvqi9UgDmnY3u/NlQDqiL5BGqSxSTd/Sgmy3zD8 -PYzEa3wD9vehQ5fZZ45vKIq8GNVh2Z8+IGO85FF1OsN7+b2yGJa/FmDDNn0+HP+m -PfI+kYBqEVpo0Ztbc3UdxgFwGC8O1n8AQyriwHnSOtIiuBH62J/7qyC/3LEAApRb -Dd9YszqzmODjQUddZKHmvc638VW+azc0EwIDAQAB ------END RSA PUBLIC KEY----- -`, { - outputEncoding: "base64", - options: { - environment: "browser", - encryptionScheme: { - scheme: "pkcs1_oaep", - hash: "sha256", - }, - } - // options: { environment: "browser", encryptionScheme: 'pkcs1' }, - }); - console.log("pkcs1_oaep_sha256"); - console.log(pkcs1_oaep_sha256); - - decryptedWithPrivate = NODERSA.decryptRSAWithPrivateKey("kSZesAAyYh2hdsQnYMdGqb6gKAzTauBKouvBzWcc4+F8RvGd0nwO6mVkUMVilPgUuNxjEauHayHiY8gI3Py45UI3+km0rSGyHrS6dHiHgCkMejXHieglYzAB0IxX3Jkm4z/66bdB/D+GFy0oct5fGCMI1UHPjEAYOsazJDa8lBFNbjiWFeb/qiZtIx3vGM7KYPAZzyRf/zPbbQ8zy9xOmRuOl5nnIxgo0Okp3KO/RIPO4GZOSBA8f2lx1UtNwwrXAMpcNavtoqHVcjJ/9lcotXYQFrn5b299pSIRf2gVm8ZJ31SK6Z8cc14nKtvgnmsgClDzIXJ1o1RcDK+knVAySg==", `-----BEGIN RSA PRIVATE KEY----- -MIIEpAIBAAKCAQEA5KOq1gRNyllLNWKQy8sGpZE3Q1ULLSmzZw+eaAhj9lvqn7Is -T1duSYn08FfoOA2qMwtz+1O2l1mgzNoSVCyVpVabnTG+C9XKeZXAnJHd8aYA7l7S -xhdmkte+iymYZ0ZBPzijo8938iugtVvqi9UgDmnY3u/NlQDqiL5BGqSxSTd/Sgmy -3zD8PYzEa3wD9vehQ5fZZ45vKIq8GNVh2Z8+IGO85FF1OsN7+b2yGJa/FmDDNn0+ -HP+mPfI+kYBqEVpo0Ztbc3UdxgFwGC8O1n8AQyriwHnSOtIiuBH62J/7qyC/3LEA -ApRbDd9YszqzmODjQUddZKHmvc638VW+azc0EwIDAQABAoIBADZ/QGgUzInvsLp/ -zO2WbfYm39o/uhNAvk9RbLt1TIZbMFhyOpeKynHi3Swwd9xsfWX/U9zS/lGi/m31 -iKrhmaW4OA1G3vqpMcK7TBbFufYwUEaA+ZJX344euH8pIfdzyneMQ4z3Far2dS7l -QsmjuilVV2kEFadveXewiYoVOWCu00w6bN8wy2SIHlQn+kIL6HQhWz12iKKflIKu -eGRdzLHsKmBt6WbY1Wuhx7HU0fAKdlBDPxCHNlI+kybUYE9o5C2vJiaVM5wqJBgZ -8Dz8kt1QbLJ910JoLXkLVQ8uC8NJKQwFtqQjTGPnEq0+wbgz6Ij599rKZkwW/xq9 -l6KoUiECgYEA6Ah42tVdkNW047f03xVYXFH96RgorHRS36mR8Y+ONUq1fwKidovC -WjwVujt4OPf3l1W6iyn/F6cu/bsmvPrSc3HTN0B1V31QK4OjgetxQ2PSbTldH02J -NPzkt+v+cPxXpx/P5mgt7Weefw5txU547KubGrHUV5rBKFtIx9pj16MCgYEA/EF0 -o19+D24DZAPwlDS5VbEd7FStnwY4oQ5PqbuNOSbSJLMWU0AqzXcRokp8UTyCZ0X3 -ATkS1REq97kShCuR+npTR6a6DlY7sdpPI1SMLNajgB2tkx0EOzX+PfNIbHUd4jpJ -I0ZMAHv/OOtkzQHDaeTWBTrzsWm6/nTiykfduNECgYEA46AMD4HpPECqKAs66e5i -tI6q7JSKskObWVdcmQEfnSAhVOwcvPb2Ptda6UuV8S0xcwDi88rLOUUFUFzc79+P -vTkY38cYVi/VChsluDpk7ptqv0PbGu5Rf+3n4pZdEjI7OvR2W64wAAn67uIUxc7p -yiO/ET0K9rYWb6S9jXGtKMkCgYEA2kPAqoO7zZoBMQ7/oR0lp/HC1HRIbiqx4RlC -8Lgpb+QZPEwA6zPAVVvLVENi4d+bbcRp/xLlKpraNNJcJSSWAMbLPFoU7sbKjA87 -HnTPfRSTEA2d3Ibk3F7Rh8TzS3Ti0JZiJjVzGZAwu41iAMifzwaD8K6boUy80eNN -QH2CaaECgYBUsLYvC/MiYg3w+LGOONuQongoVUXjGqnw2bjVa9RK7lwRdXPUqJ51 -MpVO98IkoLvGSI/0sGNP3GKNhC+eMGjJAVwFyEuOn+JsmMv9Y9uStIVi5tIHIhKw -m7mp8il0kaftHdSxTbspG3tZ2fjIiFIZkLEOmRpd7ogWumgOajzUdA== ------END RSA PRIVATE KEY-----`, { - // PublicFormat: "pkcs1-private", - // outEncoding: "hex" - options: { - environment: "browser", - encryptionScheme: 'pkcs1_oaep' - }, - }); - console.log('decryptedWithPrivate'); - console.log(decryptedWithPrivate); - - - (() => { - let key = new NODERSA.NodeRSA({ - b: 1024 - }); - key.setOptions({ - encryptionScheme: 'pkcs1' - }) - let text = `你好drpy node-ras`; - let encrypted = key.encrypt(text, 'base64'); - console.log('encrypted: ', encrypted); - const decrypted = key.decrypt(encrypted, 'utf8'); - console.log('decrypted: ', decrypted); - })(); - let t2 = new Date().getTime(); - console.log('rsa_demo_test 测试耗时:' + (t2 - t1) + '毫秒'); -} - - -/** - * 执行预处理代码 - */ -function pre() { - if (typeof(rule.预处理) === 'string' && rule.预处理 && rule.预处理.trim()) { - let code = rule.预处理.trim(); - console.log("执行预处理代码:" + code); - if (code.startsWith('js:')) { - code = code.replace('js:', ''); - } - try { - // code里可以进行get 或者 post请求cookie并改变rule.headers 里的cookie - // 直接操作 rule_fetch_params 这个变量 .headers.Cookie - eval(code); - } catch (e) { - console.log(`预处理执行失败:${e.message}`); - } - } -} - -let rule = {}; -/** 已知问题记录 - * 1.影魔的jinjia2引擎不支持 {{fl}}对象直接渲染 (有能力解决的话尽量解决下,支持对象直接渲染字符串转义,如果加了|safe就不转义)[影魔牛逼,最新的文件发现这问题已经解决了] - * Array.prototype.append = Array.prototype.push; 这种js执行后有毛病,for in 循环列表会把属性给打印出来 (这个大毛病需要重点排除一下) - * 2.import es6py.js但是里面的函数没有被装载进来.比如drpy规则报错setResult2 is undefiend(合并文件了可以不管了) - * 3.无法重复导入cheerio(怎么解决drpy和parseTag里都需要导入cheerio的问题) 无法在副文件导入cheerio (现在是全部放在drpy一个文件里了,凑合解决?) - * 4.有个错误不知道哪儿来的 executeScript: com.quickjs.JSObject$Undefined cannot be cast to java.lang.String 在 点击选集播放打印init_test_end后面打印(貌似不影响使用) - * 5.需要实现 stringify 函数,比起JSON.strifngify函数,它会原封不动保留中文不会编码unicode - * 6.base64Encode,base64Decode,md5函数还没有实现 (抄影魔代码实现了) - * 7.eval(getCryptoJS());还没有实现 (可以空实现了,以后遇到能忽略) - * done: jsp:{pdfa,pdfh,pd},json:{pdfa,pdfh,pd},jq:{pdfa,pdfh,pd} - * 8.req函数不支持传递字符串的data参数 {'content-type':'text/plain'} 类型数据,因此无法直接调用alist的ocr接口 - * * 电脑看日志调试 - adb tcpip 5555 - adb connect 192.168.10.192 - adb devices -l - adb logcat -c - adb logcat | grep -i QuickJS - adb logcat -c -b events - adb logcat -c -b main -b events -b radio -b system - adb logcat > 2.log DRPY:E | grep -i QuickJS - * **/ - - -/*** 以下是内置变量和解析方法 **/ -const MOBILE_UA = 'Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.91 Mobile Safari/537.36'; -const PC_UA = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36'; -const UA = 'Mozilla/5.0'; -const UC_UA = 'Mozilla/5.0 (Linux; U; Android 9; zh-CN; MI 9 Build/PKQ1.181121.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.5.5.1035 Mobile Safari/537.36'; -const IOS_UA = 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1'; -const RULE_CK = 'cookie'; // 源cookie的key值 -// const KEY = typeof(key)!=='undefined'&&key?key:'drpy_' + (rule.title || rule.host); // 源的唯一标识 -const CATE_EXCLUDE = '首页|留言|APP|下载|资讯|新闻|动态'; -const TAB_EXCLUDE = '猜你|喜欢|下载|剧情|榜|评论'; -const OCR_RETRY = 3; //ocr验证重试次数 -// const OCR_API = 'http://drpy.nokia.press:8028/ocr/drpy/text';//ocr在线识别接口 -const OCR_API = 'https://api.nn.ci/ocr/b64/text'; //ocr在线识别接口 -if (typeof(MY_URL) === 'undefined') { - var MY_URL; // 全局注入变量,pd函数需要 -} -var HOST; -var RKEY; // 源的唯一标识 -var fetch; -var print; -var log; -var rule_fetch_params; -var fetch_params; // 每个位置单独的 -var oheaders; -// var play_url; // 二级详情页注入变量,为了适配js模式0 (不在这里定义了,直接二级里定义了个空字符串) -var _pdfh; -var _pdfa; -var _pd; -// const DOM_CHECK_ATTR = ['url', 'src', 'href', 'data-original', 'data-src']; -const DOM_CHECK_ATTR = /(url|src|href|-original|-src|-play|-url|style)$/; -// 过滤特殊链接,不走urlJoin -const SPECIAL_URL = /^(ftp|magnet|thunder|ws):/; -const NOADD_INDEX = /:eq|:lt|:gt|:first|:last|^body$|^#/; // 不自动加eq下标索引 -const URLJOIN_ATTR = /(url|src|href|-original|-src|-play|-url|style)$|^(data-|url-|src-)/; // 需要自动urljoin的属性 -const SELECT_REGEX = /:eq|:lt|:gt|#/g; -const SELECT_REGEX_A = /:eq|:lt|:gt/g; - -// 增加$js工具,支持$js.toString(()=>{}); -const $js = { - toString(func) { - let strfun = func.toString(); - return strfun.replace(/^\(\)(\s+)?=>(\s+)?\{/, "js:").replace(/\}$/, ''); - } -}; - -function window_b64() { - let b64map = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - let base64DecodeChars = new Array(-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1); - - function btoa(str) { - var out, i, len; - var c1, c2, c3; - len = str.length; - i = 0; - out = ""; - while (i < len) { - c1 = str.charCodeAt(i++) & 0xff; - if (i == len) { - out += b64map.charAt(c1 >> 2); - out += b64map.charAt((c1 & 0x3) << 4); - out += "=="; - break; - } - c2 = str.charCodeAt(i++); - if (i == len) { - out += b64map.charAt(c1 >> 2); - out += b64map.charAt(((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4)); - out += b64map.charAt((c2 & 0xF) << 2); - out += "="; - break; - } - c3 = str.charCodeAt(i++); - out += b64map.charAt(c1 >> 2); - out += b64map.charAt(((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4)); - out += b64map.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >> 6)); - out += b64map.charAt(c3 & 0x3F); - } - return out; - } - - function atob(str) { - var c1, c2, c3, c4; - var i, len, out; - len = str.length; - i = 0; - out = ""; - while (i < len) { - do { - c1 = base64DecodeChars[str.charCodeAt(i++) & 0xff]; - } while (i < len && c1 == -1); - if (c1 == -1) break; - do { - c2 = base64DecodeChars[str.charCodeAt(i++) & 0xff]; - } while (i < len && c2 == -1); - if (c2 == -1) break; - out += String.fromCharCode((c1 << 2) | ((c2 & 0x30) >> 4)); - do { - c3 = str.charCodeAt(i++) & 0xff; - if (c3 == 61) return out; - c3 = base64DecodeChars[c3]; - } while (i < len && c3 == -1); - if (c3 == -1) break; - out += String.fromCharCode(((c2 & 0XF) << 4) | ((c3 & 0x3C) >> 2)); - do { - c4 = str.charCodeAt(i++) & 0xff; - if (c4 == 61) return out; - c4 = base64DecodeChars[c4]; - } while (i < len && c4 == -1); - if (c4 == -1) break; - out += String.fromCharCode(((c3 & 0x03) << 6) | c4); - } - return out; - } - - return { - atob, - btoa - } -} - -/** - es6py扩展 - */ -if (typeof atob !== 'function' || typeof btoa !== 'function') { - var { - atob, - btoa - } = window_b64(); -} - -if (typeof Object.assign !== 'function') { - Object.assign = function() { - let target = arguments[0]; - for (let i = 1; i < arguments.length; i++) { - let source = arguments[i]; - for (let key in source) { - if (Object.prototype.hasOwnProperty.call(source, key)) { - target[key] = source[key]; - } - } - } - return target; - }; -} -if (!String.prototype.includes) { - String.prototype.includes = function(search, start) { - if (typeof start !== 'number') { - start = 0; - } - - if (start + search.length > this.length) { - return false; - } else { - return this.indexOf(search, start) !== -1; - } - }; -} - -if (!Array.prototype.includes) { - Object.defineProperty(Array.prototype, 'includes', { - value: function(searchElement, fromIndex) { - - if (this == null) { //this是空或者未定义,抛出错误 - throw new TypeError('"this" is null or not defined'); - } - - var o = Object(this); //将this转变成对象 - var len = o.length >>> 0; //无符号右移0位,获取对象length属性,如果未定义就会变成0 - - if (len === 0) { //length为0直接返回false未找到目标值 - return false; - } - - var n = fromIndex | 0; //查找起始索引 - var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0); //计算正确起始索引,因为有可能是负值 - - while (k < len) { //从起始索引处开始循环 - if (o[k] === searchElement) { //如果某一位置与寻找目标相等,返回true,找到了 - return true; - } - k++; - } - return false; //未找到,返回false - }, - enumerable: false - }); -} -if (typeof String.prototype.startsWith !== 'function') { - String.prototype.startsWith = function(prefix) { - return this.slice(0, prefix.length) === prefix; - }; -} -if (typeof String.prototype.endsWith !== 'function') { - String.prototype.endsWith = function(suffix) { - return this.indexOf(suffix, this.length - suffix.length) !== -1; - }; -} -Object.defineProperty(Object.prototype, 'myValues', { - value: function(obj) { - if (obj == null) { - throw new TypeError("Cannot convert undefined or null to object"); - } - var res = [] - for (var k in obj) { - if (obj.hasOwnProperty(k)) { //需判断是否是本身的属性 - res.push(obj[k]); - } - } - return res; - }, - enumerable: false -}); -if (typeof Object.prototype.values !== 'function') { - Object.defineProperty(Object.prototype, 'values', { - value: function(obj) { - if (obj == null) { - throw new TypeError("Cannot convert undefined or null to object"); - } - var res = [] - for (var k in obj) { - if (obj.hasOwnProperty(k)) { //需判断是否是本身的属性 - res.push(obj[k]); - } - } - return res; - }, - enumerable: false - }); -} -if (typeof Array.prototype.join !== 'function') { - Object.defineProperty(Array.prototype, 'join', { - value: function(emoji) { - // emoji = emoji||','; - emoji = emoji || ''; - let self = this; - let str = ""; - let i = 0; - if (!Array.isArray(self)) { - throw String(self) + 'is not Array' - } - if (self.length === 0) { - return '' - } - if (self.length === 1) { - return String(self[0]) - } - i = 1; - str = this[0]; - for (; i < self.length; i++) { - str += String(emoji) + String(self[i]); - } - return str; - }, - enumerable: false - }); -} -if (typeof Array.prototype.toReversed !== 'function') { - Object.defineProperty(Array.prototype, 'toReversed', { - value: function() { - const clonedList = this.slice(); - // 倒序新数组 - const reversedList = clonedList.reverse(); - return reversedList; - }, - enumerable: false - }); -} - -Object.defineProperty(Array.prototype, 'append', { - value: Array.prototype.push, - enumerable: false -}); -Object.defineProperty(String.prototype, 'strip', { - value: String.prototype.trim, - enumerable: false -}); -Object.defineProperty(String.prototype, 'rstrip', { - value: function(chars) { - let regex = new RegExp(chars + "$"); - return this.replace(regex, ""); - }, - enumerable: false -}); - -function 是否正版(vipUrl) { - let flag = new RegExp('qq\.com|iqiyi\.com|youku\.com|mgtv\.com|bilibili\.com|sohu\.com|ixigua\.com|pptv\.com|miguvideo\.com|le\.com|1905\.com|fun\.tv'); - return flag.test(vipUrl); -} - -function urlDeal(vipUrl) { - if (!vipUrl) { - return '' - } - if (!是否正版(vipUrl)) { - return vipUrl - } - if (!/miguvideo/.test(vipUrl)) { - vipUrl = vipUrl.split('#')[0].split('?')[0]; - } - return vipUrl -} - -function setResult(d) { - if (!Array.isArray(d)) { - return [] - } - VODS = []; - // print(d); - d.forEach(function(it) { - let obj = { - vod_id: it.url || '', - vod_name: it.title || '', - vod_remarks: it.desc || '', - vod_content: it.content || '', - vod_pic: it.pic_url || it.img || '', - }; - let keys = Object.keys(it); - if (keys.includes('tname')) { - obj.type_name = it.tname || ''; - } - if (keys.includes('tid')) { - obj.type_id = it.tid || ''; - } - if (keys.includes('year')) { - obj.vod_year = it.year || ''; - } - if (keys.includes('actor')) { - obj.vod_actor = it.actor || ''; - } - if (keys.includes('director')) { - obj.vod_director = it.director || ''; - } - if (keys.includes('area')) { - obj.vod_area = it.area || ''; - } - VODS.push(obj); - }); - return VODS -} - -function setResult2(res) { - VODS = res.list || []; - return VODS -} - -function setHomeResult(res) { - if (!res || typeof(res) !== 'object') { - return [] - } - return setResult(res.list); -} - -// 猫了个咪 -function rc(js) { - if (js === 'maomi_aes.js') { - var a = CryptoJS.enc.Utf8.parse("625222f9149e961d"); - var t = CryptoJS.enc.Utf8.parse("5efdtf6060e2o330"); - return { - De: function(word) { - word = CryptoJS.enc.Hex.parse(word) - return CryptoJS.AES.decrypt(CryptoJS.enc.Base64.stringify(word), a, { - iv: t, - mode: CryptoJS.mode.CBC, - padding: CryptoJS.pad.Pkcs7 - }).toString(CryptoJS.enc.Utf8) - }, - En: function(word) { - // print(a); - // print(word); - var Encrypted = CryptoJS.AES.encrypt(word, a, { - iv: t, - mode: CryptoJS.mode.CBC, - padding: CryptoJS.pad.Pkcs7 - }); - return Encrypted.ciphertext.toString(); - } - }; - } - return {}; -} - -// 千万不要用for in 推荐 forEach (for in 会打乱顺序) -//猫函数 -function maoss(jxurl, ref, key) { - fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); - eval(getCryptoJS()); - try { - var getVideoInfo = function(text) { - return CryptoJS.AES.decrypt(text, key, { - iv: iv, - padding: CryptoJS.pad.Pkcs7 - }).toString(CryptoJS.enc.Utf8); - }; - var token_key = key == undefined ? 'dvyYRQlnPRCMdQSe' : key; - if (ref) { - var html = request(jxurl, { - headers: { - 'Referer': ref - } - }); - } else { - var html = request(jxurl); - } - // print(html); - if (html.indexOf('&btwaf=') != -1) { - html = request(jxurl + '&btwaf' + html.match(/&btwaf(.*?)"/)[1], { - headers: { - 'Referer': ref - } - }) - } - var token_iv = html.split('_token = "')[1].split('"')[0]; - var key = CryptoJS.enc.Utf8.parse(token_key); - var iv = CryptoJS.enc.Utf8.parse(token_iv); - // log("iv:"+iv); - // log(html); - // print(key); - // print(iv); - eval(html.match(/var config = {[\s\S]*?}/)[0] + ''); - // config.url = config.url.replace(/,/g,''); - // print(config.url); - if (!config.url.startsWith('http')) { - //config.url = decodeURIComponent(AES(config.url, key, iv)); - config.url = CryptoJS.AES.decrypt(config.url, key, { - iv: iv, - padding: CryptoJS.pad.Pkcs7 - }).toString(CryptoJS.enc.Utf8) - } - return config.url; - } catch (e) { - return ''; - } -} - -/** - * 将base64编码进行url编译 - * @param str - * @returns {string} - */ -function urlencode(str) { - str = (str + '').toString(); - return encodeURIComponent(str).replace(/!/g, '%21').replace(/'/g, '%27').replace(/\(/g, '%28').replace(/\)/g, '%29').replace(/\*/g, '%2A').replace(/%20/g, '+'); -} - -/** - * url编码,同 encodeURI - * @param str - * @returns {string} - */ -function encodeUrl(str) { - if (typeof(encodeURI) == 'function') { - return encodeURI(str) - } else { - str = (str + '').toString(); - return encodeURIComponent(str).replace(/%2F/g, '/').replace(/%3F/g, '?').replace(/%3A/g, ':').replace(/%40/g, '@').replace(/%3D/g, '=').replace(/%3A/g, ':').replace(/%2C/g, ',').replace(/%2B/g, '+').replace(/%24/g, '$'); - } -} - -function base64Encode(text) { - return CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(text)); - // return text -} - -function base64Decode(text) { - return CryptoJS.enc.Utf8.stringify(CryptoJS.enc.Base64.parse(text)); - // return text -} - -function md5(text) { - return CryptoJS.MD5(text).toString(); -} - -function uint8ArrayToBase64(uint8Array) { - let binaryString = String.fromCharCode.apply(null, Array.from(uint8Array)); - return btoa(binaryString); -} - -function Utf8ArrayToStr(array) { - var out, i, len, c; - var char2, char3; - out = ""; - len = array.length; - i = 0; - while (i < len) { - c = array[i++]; - switch (c >> 4) { - case 0: - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - out += String.fromCharCode(c); - break; - case 12: - case 13: - char2 = array[i++]; - out += String.fromCharCode(((c & 0x1f) << 6) | (char2 & 0x3f)); - break; - case 14: - char2 = array[i++]; - char3 = array[i++]; - out += String.fromCharCode( - ((c & 0x0f) << 12) | ((char2 & 0x3f) << 6) | ((char3 & 0x3f) << 0) - ); - break; - } - } - return out; -} - -/** - * gzip压缩base64|压缩率80%+ - * @param str - * @returns {string} - */ -function gzip(str) { - let arr = pako.gzip(str, { - // to: 'string' - }); - return uint8ArrayToBase64(arr) -} - -/** - * gzip解压base64数据 - * @param b64Data - * @returns {string} - */ -function ungzip(b64Data) { - let strData = atob(b64Data); - const charData = strData.split('').map(function(x) { - return x.charCodeAt(0); - }); - const binData = new Uint8Array(charData); - const data = pako.inflate(binData); - return Utf8ArrayToStr(data); -} - -/** - * 字符串按指定编码 - * @param input - * @param encoding - * @returns {*} - */ -function encodeStr(input, encoding) { - encoding = encoding || 'gbk'; - if (encoding.startsWith('gb')) { - const strTool = gbkTool(); - input = strTool.encode(input); - } - return input -} - -/** - * 字符串指定解码 - * @param input - * @param encoding - * @returns {*} - */ -function decodeStr(input, encoding) { - encoding = encoding || 'gbk'; - if (encoding.startsWith('gb')) { - const strTool = gbkTool(); - input = strTool.decode(input); - } - return input -} - -function getCryptoJS() { - // return request('https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/libs/crypto-hiker.js'); - return 'console.log("CryptoJS已装载");' -} - -// 封装的RSA加解密类 -const RSA = { - decode: function(data, key, option) { - option = option || {}; - if (typeof(JSEncrypt) === 'function') { - let chunkSize = option.chunkSize || 117; // 默认分段长度为117 - let privateKey = this.getPrivateKey(key); // 获取私钥 - const decryptor = new JSEncrypt(); //创建解密对象实例 - decryptor.setPrivateKey(privateKey); //设置秘钥 - let uncrypted = ''; - // uncrypted = decryptor.decrypt(data); - uncrypted = decryptor.decryptUnicodeLong(data); - return uncrypted; - } else { - return false - } - }, - encode: function(data, key, option) { - option = option || {}; - if (typeof(JSEncrypt) === 'function') { - let chunkSize = option.chunkSize || 117; // 默认分段长度为117 - let publicKey = this.getPublicKey(key); // 获取公钥 - const encryptor = new JSEncrypt(); - encryptor.setPublicKey(publicKey); // 设置公钥 - let encrypted = ''; // 加密结果 - // const textLen = data.length; // 待加密文本长度 - // let offset = 0; // 分段偏移量 - // // 分段加密 - // while (offset < textLen) { - // let chunk = data.slice(offset, chunkSize); // 提取分段数据 - // let enc = encryptor.encrypt(chunk); // 加密分段数据 - // encrypted += enc; // 连接加密结果 - // offset += chunkSize; // 更新偏移量 - // } - encrypted = encryptor.encryptUnicodeLong(data); - return encrypted - } else { - return false - } - }, - fixKey(key, prefix, endfix) { - if (!key.includes(prefix)) { - key = prefix + key; - } - if (!key.includes(endfix)) { - key += endfix - } - return key - }, - getPrivateKey(key) { - let prefix = '-----BEGIN RSA PRIVATE KEY-----'; - let endfix = '-----END RSA PRIVATE KEY-----'; - return this.fixKey(key, prefix, endfix); - }, - getPublicKey(key) { - let prefix = '-----BEGIN PUBLIC KEY-----'; - let endfix = '-----END PUBLIC KEY-----'; - return this.fixKey(key, prefix, endfix); - } -}; - -/** - * 获取壳子返回的代理地址 - * @returns {string|*} - */ -function getProxyUrl() { - if (typeof(getProxy) === 'function') { //判断壳子里有getProxy函数就执行取返回结果。否则取默认的本地 - return getProxy(true) - } else { - return 'http://127.0.0.1:9978/proxy?do=js' - } -} - -/** - * 根据正则处理原始m3u8里的广告ts片段,自动修复相对链接 - * @param m3u8_text m3u8原始文本,里面是最末级的只含ts片段的。不支持嵌套m3u8链接 - * @param m3u8_url m3u8原始地址 - * @param ad_remove 正则表达式如: reg:/video/adjump(.*?)ts - * @returns {string|DocumentFragment|*|string} - */ -function fixAdM3u8(m3u8_text, m3u8_url, ad_remove) { - if ((!m3u8_text && !m3u8_url) || (!m3u8_text && m3u8_url && !m3u8_url.startsWith('http'))) { - return '' - } - if (!m3u8_text) { - log('m3u8_url:' + m3u8_url); - m3u8_text = request(m3u8_url); - } - log('len(m3u8_text):' + m3u8_text.length); - if (!ad_remove) { - return m3u8_text - } - if (ad_remove.startsWith('reg:')) { - ad_remove = ad_remove.slice(4) - } else if (ad_remove.startsWith('js:')) { - ad_remove = ad_remove.slice(3) - } - let m3u8_start = m3u8_text.slice(0, m3u8_text.indexOf('#EXTINF')).trim(); - let m3u8_body = m3u8_text.slice(m3u8_text.indexOf('#EXTINF'), m3u8_text.indexOf('#EXT-X-ENDLIST')).trim(); - let m3u8_end = m3u8_text.slice(m3u8_text.indexOf('#EXT-X-ENDLIST')).trim(); - let murls = []; - let m3_body_list = m3u8_body.split('\n'); - let m3_len = m3_body_list.length; - let i = 0; - while (i < m3_len) { - let mi = m3_body_list[i]; - let mi_1 = m3_body_list[i + 1]; - if (mi.startsWith('#EXTINF')) { - murls.push([mi, mi_1].join('&')); - i += 2 - } else if (mi.startsWith('#EXT-X-DISCONTINUITY')) { - let mi_2 = m3_body_list[i + 2]; - murls.push([mi, mi_1, mi_2].join('&')); - i += 3 - } else { - break; - } - } - let new_m3u8_body = []; - for (let murl of murls) { - if (ad_remove && new RegExp(ad_remove).test(murl)) { - - } else { - let murl_list = murl.split('&'); - if (!murl_list[murl_list.length - 1].startsWith('http') && m3u8_url.startsWith('http')) { - murl_list[murl_list.length - 1] = urljoin(m3u8_url, murl_list[murl_list.length - 1]); - } - murl_list.forEach((it) => { - new_m3u8_body.push(it); - }); - } - - } - new_m3u8_body = new_m3u8_body.join('\n').trim(); - m3u8_text = [m3u8_start, new_m3u8_body, m3u8_end].join('\n').trim(); - return m3u8_text -} - -/** - * 智能对比去除广告。支持嵌套m3u8。只需要传入播放地址 - * @param m3u8_url m3u8播放地址 - * @param headers 自定义访问m3u8的请求头,可以不传 - * @returns {string} - */ -function fixAdM3u8Ai(m3u8_url, headers) { - let ts = (new Date).getTime(); - let option = headers ? { - headers: headers - } : {}; - - function b(s1, s2) { - let i = 0; - while (i < s1.length) { - if (s1[i] !== s2[i]) { - break - } - i++ - } - return i - } - - function reverseString(str) { - return str.split("").reverse().join("") - } - let m3u8 = request(m3u8_url, option); - m3u8 = m3u8.trim().split("\n").map(it => it.startsWith("#") ? it : urljoin(m3u8_url, it)).join("\n"); - m3u8 = m3u8.replace(/\n\n/gi, "\n"); - let last_url = m3u8.split("\n").slice(-1)[0]; - if (last_url.length < 5) { - last_url = m3u8.split("\n").slice(-2)[0] - } - if (last_url.includes(".m3u8") && last_url !== m3u8_url) { - m3u8_url = urljoin2(m3u8_url, last_url); - log("嵌套的m3u8_url:" + m3u8_url); - m3u8 = request(m3u8_url, option) - } - let s = m3u8.trim().split("\n").filter(it => it.trim()).join("\n"); - let ss = s.split("\n"); - if (m3u8_url.indexOf("ffzy") > 0) { - let j = 0, - k1 = 0, - m = 0, - n = 0, - t = 0; - let s2 = ""; - for (let i = 0; i < ss.length; i++) { - let s = ss[i]; - let s1 = ""; - if (s.startsWith("#EXTINF")) { - s1 = s.slice(8); - n++; - if (n == 1) - k1 = i; - if (s2.indexOf(s1) == -1) { - s2 = s2 + s1; - m++; - } - t = t + parseFloat(s1); - i++; - s = ss[i]; - } - if (s.startsWith("#EXT-X-DISCONTINUITY")) { - if (n == 5) { - log("n:" + n); - log("m:" + m); - for (let j = k1; j < k1 + n * 2; j++) { - log(ss[j]); - } - log("广告位置:" + k1); - log("数据条数:" + n); - log("数据种类:" + m); - log("广告时间:" + t.toFixed(5)); - ss.splice(k1, 2 * n + 1); - i = i - 2 * n + 1; - } - t = 0; - m = 0; - n = 0; - s2 = ""; - } - } - } - let firststr = ""; - let maxl = 0; - let kk = 0; - let kkk1 = 1; - let kkk2 = 0; - let secondstr = ""; - for (let i = 0; i < ss.length; i++) { - let s = ss[i]; - if (!s.startsWith("#")) { - if (kk == 0) - firststr = s; - if (kk > 0) { - if (maxl > b(firststr, s) + 1) { - if (secondstr.length < 5) - secondstr = s; - kkk2++ - } else { - maxl = b(firststr, s); - kkk1++ - } - } - kk++; - if (kk >= 30) - break - } - } - if (kkk2 > kkk1) - firststr = secondstr; - let firststrlen = firststr.length; - let ml = Math.round(ss.length / 2).toString().length; - let maxc = 0; - let laststr = ss.toReversed().find(x => { - if (!x.startsWith("#")) { - let k = b(reverseString(firststr), reverseString(x)); - maxl = b(firststr, x); - maxc++; - if (firststrlen - maxl <= ml + k || maxc > 10) { - return true - } - } - return false - }); - log("最后一条切片:" + laststr); - let ad_urls = []; - for (let i = 0; i < ss.length; i++) { - let s = ss[i]; - if (!s.startsWith("#")) { - if (b(firststr, s) < maxl) { - ad_urls.push(s); - ss.splice(i - 1, 2); - i = i - 2 - } else { - ss[i] = urljoin(m3u8_url, s) - } - } else { - ss[i] = s.replace(/URI=\"(.*)\"/, 'URI="' + urljoin(m3u8_url, "$1") + '"') - } - } - log("处理的m3u8地址:" + m3u8_url); - log("----广告地址----"); - log(ad_urls); - m3u8 = ss.join("\n"); - log("处理耗时:" + ((new Date).getTime() - ts).toString()); - log(m3u8); - return m3u8 -} - - -/** - * 强制正序算法 - * @param lists 待正序列表 - * @param key 正序键 - * @param option 单个元素处理函数 - * @returns {*} - */ -function forceOrder(lists, key, option) { - let start = Math.floor(lists.length / 2); - let end = Math.min(lists.length - 1, start + 1); - if (start >= end) { - return lists; - } - let first = lists[start]; - let second = lists[end]; - if (key) { - try { - first = first[key]; - second = second[key]; - } catch (e) {} - } - if (option && typeof(option) === 'function') { - try { - first = option(first); - second = option(second); - } catch (e) {} - } - first += ''; - second += ''; - // console.log(first,second); - if (first.match(/(\d+)/) && second.match(/(\d+)/)) { - let num1 = Number(first.match(/(\d+)/)[1]); - let num2 = Number(second.match(/(\d+)/)[1]); - if (num1 > num2) { - lists.reverse(); - } - } - return lists -} - -let VODS = []; // 一级或者搜索需要的数据列表 -let VOD = {}; // 二级的单个数据 -let TABS = []; // 二级的自定义线路列表 如: TABS=['道长在线','道长在线2'] -let LISTS = []; // 二级的自定义选集播放列表 如: LISTS=[['第1集$http://1.mp4','第2集$http://2.mp4'],['第3集$http://1.mp4','第4集$http://2.mp4']] - -/** - * 获取链接的query请求转为js的object字典对象 - * @param url - * @returns {{}} - */ -function getQuery(url) { - try { - if (url.indexOf('?') > -1) { - url = url.slice(url.indexOf('?') + 1); - } - let arr = url.split("#")[0].split("&"); - const resObj = {}; - arr.forEach(item => { - let arr1 = item.split("="); - let key = arr1[0]; - let value = arr1.slice(1).join('='); - resObj[key] = value; - }); - return resObj; - } catch (err) { - log(`getQuery发生错误:${e.message}`) - return {}; - } -} - -/** - * url拼接 - * @param fromPath 初始当前页面url - * @param nowPath 相对当前页面url - * @returns {*} - */ -function urljoin(fromPath, nowPath) { - fromPath = fromPath || ''; - nowPath = nowPath || ''; - return joinUrl(fromPath, nowPath); - // try { - // // import Uri from './uri.min.js'; - // // var Uri = require('./uri.min.js'); - // // eval(request('https://cdn.bootcdn.net/ajax/libs/URI.js/1.19.11/URI.min.js')); - // // let new_uri = URI(nowPath, fromPath); - - // let new_uri = Uri(nowPath, fromPath); - // new_uri = new_uri.toString(); - // // console.log(new_uri); - // // return fromPath + nowPath - // return new_uri - // } - // catch (e) { - // console.log('urljoin发生错误:'+e.message); - // if(nowPath.startsWith('http')){ - // return nowPath - // }if(nowPath.startsWith('/')){ - // return getHome(fromPath)+nowPath - // } - // return fromPath+nowPath - // } -} - -var urljoin2 = urljoin; - -// 内置 pdfh,pdfa,pd -const defaultParser = { - pdfh: pdfh, - pdfa: pdfa, - pd: pd, -}; - - -/** - * pdfh原版优化,能取style属性里的图片链接 - * @param html 源码 - * @param parse 解析表达式 - * @returns {string|*} - */ -function pdfh2(html, parse) { - let html2 = html; - try { - if (typeof(html) !== 'string') { - html2 = html.rr(html.ele).toString(); - } - } catch (e) { - print(`html对象转文本发生了错误:${e.message}`); - } - let result = defaultParser.pdfh(html2, parse); - let option = parse.includes('&&') ? parse.split('&&').slice(-1)[0] : parse.split(' ').slice(-1)[0]; - if (/style/.test(option.toLowerCase()) && /url\(/.test(result)) { - try { - result = result.match(/url\((.*?)\)/)[1]; - // 2023/07/28新增 style取内部链接自动去除首尾单双引号 - result = result.replace(/^['|"](.*)['|"]$/, "$1"); - } catch (e) {} - } - return result -} - -/** - * pdfa原版优化,可以转换jq的html对象 - * @param html - * @param parse - * @returns {*} - */ -function pdfa2(html, parse) { - let html2 = html; - try { - if (typeof(html) !== 'string') { - html2 = html.rr(html.ele).toString(); - } - } catch (e) { - print(`html对象转文本发生了错误:${e.message}`); - } - return defaultParser.pdfa(html2, parse); -} - -/** - * pd原版方法重写-增加自动urljoin - * @param html - * @param parse - * @param uri - * @returns {*} - */ -function pd2(html, parse, uri) { - let ret = pdfh2(html, parse); - if (typeof(uri) === 'undefined' || !uri) { - uri = ''; - } - if (DOM_CHECK_ATTR.test(parse) && !SPECIAL_URL.test(ret)) { - if (/http/.test(ret)) { - ret = ret.slice(ret.indexOf('http')); - } else { - ret = urljoin(MY_URL, ret) - } - } - // MY_URL = getItem('MY_URL',MY_URL); - // console.log(`规则${RKEY}打印MY_URL:${MY_URL},uri:${uri}`); - return ret -} - -const parseTags = { - jsp: { - pdfh: pdfh2, - pdfa: pdfa2, - pd: pd2, - }, - json: { - pdfh(html, parse) { - if (!parse || !parse.trim()) { - return ''; - } - if (typeof(html) === 'string') { - // print('jsonpath:pdfh字符串转dict'); - html = JSON.parse(html); - } - parse = parse.trim(); - if (!parse.startsWith('$.')) { - parse = '$.' + parse; - } - parse = parse.split('||'); - for (let ps of parse) { - let ret = cheerio.jp(ps, html); - if (Array.isArray(ret)) { - ret = ret[0] || ''; - } else { - ret = ret || '' - } - if (ret && typeof(ret) !== 'string') { - ret = ret.toString(); - } - if (ret) { - return ret - } - } - return ''; - }, - pdfa(html, parse) { - if (!parse || !parse.trim()) { - return ''; - } - if (typeof(html) === 'string') { - // print('jsonpath:pdfa字符串转dict'); - html = JSON.parse(html); - } - parse = parse.trim() - if (!parse.startsWith('$.')) { - parse = '$.' + parse; - } - let ret = cheerio.jp(parse, html); - if (Array.isArray(ret) && Array.isArray(ret[0]) && ret.length === 1) { - return ret[0] || [] - } - return ret || [] - }, - pd(html, parse) { - let ret = parseTags.json.pdfh(html, parse); - if (ret) { - return urljoin(MY_URL, ret); - } - return ret - }, - }, - jq: { - pdfh(html, parse) { - if (!html || !parse || !parse.trim()) { - return '' - } - parse = parse.trim(); - let result = defaultParser.pdfh(html, parse); - // print(`pdfh解析${parse}=>${result}`); - return result; - }, - pdfa(html, parse) { - if (!html || !parse || !parse.trim()) { - return []; - } - parse = parse.trim(); - let result = defaultParser.pdfa(html, parse); - // print(result); - print(`pdfa解析${parse}=>${result.length}`); - return result; - }, - pd(html, parse, base_url) { - if (!html || !parse || !parse.trim()) { - return '' - } - parse = parse.trim(); - base_url = base_url || MY_URL; - return defaultParser.pd(html, parse, base_url); - }, - }, - getParse(p0) { //非js开头的情况自动获取解析标签 - if (p0.startsWith('jsp:')) { - return this.jsp - } else if (p0.startsWith('json:')) { - return this.json - } else if (p0.startsWith('jq:')) { - return this.jq - } else { - return this.jq - } - } -}; - -const stringify = JSON.stringify; -const jsp = parseTags.jsp; -const jq = parseTags.jq; - -/*** 后台需要实现的java方法并注入到js中 ***/ - -/** - * 读取本地文件->应用程序目录 - * @param filePath - * @returns {string} - */ -function readFile(filePath) { - filePath = filePath || './uri.min.js'; - var fd = os.open(filePath); - var buffer = new ArrayBuffer(1024); - var len = os.read(fd, buffer, 0, 1024); - console.log(len); - let text = String.fromCharCode.apply(null, new Uint8Array(buffer)); - console.log(text); - return text -} - -/** - * 处理返回的json数据 - * @param html - * @returns {*} - */ -function dealJson(html) { - try { - // html = html.match(/[\w|\W|\s|\S]*?(\{[\w|\W|\s|\S]*\})/).group[1]; - html = html.trim(); - if (!((html.startsWith('{') && html.endsWith('}')) || (html.startsWith('[') && html.endsWith(']')))) { - html = '{' + html.match(/.*?\{(.*)\}/m)[1] + '}'; - } - } catch (e) {} - try { - html = JSON.parse(html); - } catch (e) {} - // console.log(typeof(html)); - return html; -} - -/** - * 验证码识别逻辑,需要java实现(js没有bytes类型,无法调用后端的传递图片二进制获取验证码文本的接口) - * @type {{api: string, classification: (function(*=): string)}} - */ -var OcrApi = { - api: OCR_API, - classification: function(img) { // img是byte类型,这里不方便搞啊 - let code = ''; - try { - // let html = request(this.api,{data:{img:img},headers:{'User-Agent':PC_UA},'method':'POST'},true); - // html = JSON.parse(html); - // code = html.url||''; - log('通过drpy_ocr验证码接口过验证...'); - let html = ''; - if (this.api.endsWith('drpy/text')) { - html = request(this.api, { - data: { - img: img - }, - headers: { - 'User-Agent': PC_UA - }, - 'method': 'POST' - }, true); - } else { - html = post(this.api, { - body: img - }); - } - code = html || ''; - } catch (e) { - log(`OCR识别验证码发生错误:${e.message}`) - } - return code - } -}; - -/** - * 验证码识别,暂未实现 - * @param url 验证码图片链接 - * @returns {string} 验证成功后的cookie - */ -function verifyCode(url) { - let cnt = 0; - let host = getHome(url); - let cookie = ''; - while (cnt < OCR_RETRY) { - try { - // let obj = {headers:headers,timeout:timeout}; - let yzm_url = `${host}/index.php/verify/index.html`; - console.log(`验证码链接:${yzm_url}`); - let hhtml = request(yzm_url, { - withHeaders: true, - toBase64: true - }, true); - let json = JSON.parse(hhtml); - if (!cookie) { - // print(json); - let setCk = Object.keys(json).find(it => it.toLowerCase() === 'set-cookie'); - // cookie = json['set-cookie']?json['set-cookie'].split(';')[0]:''; - cookie = setCk ? json[setCk].split(';')[0] : ''; - } - // console.log(hhtml); - console.log('cookie:' + cookie); - let img = json.body; - // console.log(img); - let code = OcrApi.classification(img); - console.log(`第${cnt + 1}次验证码识别结果:${code}`); - let submit_url = `${host}/index.php/ajax/verify_check?type=search&verify=${code}`; - console.log(submit_url); - let html = request(submit_url, { - headers: { - Cookie: cookie - }, - 'method': 'POST' - }); - // console.log(html); - html = JSON.parse(html); - if (html.msg === 'ok') { - console.log(`第${cnt + 1}次验证码提交成功`); - return cookie // 需要返回cookie - } else if (html.msg !== 'ok' && cnt + 1 >= OCR_RETRY) { - cookie = ''; // 需要清空返回cookie - } - } catch (e) { - console.log(`第${cnt + 1}次验证码提交失败:${e.message}`); - if (cnt + 1 >= OCR_RETRY) { - cookie = ''; - } - } - cnt += 1 - } - return cookie -} - -/** - * 存在数据库配置表里, key字段对应值value,没有就新增,有就更新,调用此方法会清除key对应的内存缓存 - * @param k 键 - * @param v 值 - */ -function setItem(k, v) { - local.set(RKEY, k, v); - console.log(`规则${RKEY}设置${k} => ${v}`) -} - -/** - * 获取数据库配置表对应的key字段的value,没有这个key就返回value默认传参.需要有缓存,第一次获取后会存在内存里 - * @param k 键 - * @param v 值 - * @returns {*} - */ -function getItem(k, v) { - return local.get(RKEY, k) || v; -} - -/** - * 删除数据库key对应的一条数据,并清除此key对应的内存缓存 - * @param k - */ -function clearItem(k) { - local.delete(RKEY, k); -} - -/*** js自封装的方法 ***/ - -/** - * 获取链接的host(带http协议的完整链接) - * @param url 任意一个正常完整的Url,自动提取根 - * @returns {string} - */ -function getHome(url) { - if (!url) { - return '' - } - let tmp = url.split('//'); - url = tmp[0] + '//' + tmp[1].split('/')[0]; - try { - url = decodeURIComponent(url); - } catch (e) {} - return url -} - -/** - * get参数编译链接,类似python params字典自动拼接 - * @param url 访问链接 - * @param obj 参数字典 - * @returns {*} - */ -function buildUrl(url, obj) { - obj = obj || {}; - if (url.indexOf('?') < 0) { - url += '?' - } - let param_list = []; - let keys = Object.keys(obj); - keys.forEach(it => { - param_list.push(it + '=' + obj[it]) - }); - let prs = param_list.join('&'); - if (keys.length > 0 && !url.endsWith('?')) { - url += '&' - } - url += prs; - return url -} - -/** - * 远程依赖执行函数 - * @param url 远程js地址 - */ -function $require(url) { - eval(request(url)); -} - -/** - * 将obj所有key变小写 - * @param obj - */ -function keysToLowerCase(obj) { - return Object.keys(obj).reduce((result, key) => { - const newKey = key.toLowerCase(); - result[newKey] = obj[key]; // 如果值也是对象,可以递归调用本函数 - return result; - }, {}); -} - -//字符串To对象 -function parseQueryString(query) { - const params = {}; - query.split('&').forEach(function(part) { - // 使用正则表达式匹配键和值,直到遇到第一个等号为止 - const regex = /^(.*?)=(.*)/; - const match = part.match(regex); - if (match) { - const key = decodeURIComponent(match[1]); - const value = decodeURIComponent(match[2]); - params[key] = value; - } - }); - return params; -} - -//URL需要转码字符串 -function encodeIfContainsSpecialChars(value) { - // 定义在URL中需要编码的特殊字符 - const specialChars = ":/?#[]@!$'()*+,;=%"; - // 检查值中是否包含特殊字符 - if (specialChars.split('').some(char => value.includes(char))) { - // 如果包含,则使用encodeURIComponent进行编码 - return encodeURIComponent(value); - } - // 如果不包含特殊字符,返回原值 - return value; -} - -//对象To字符串 -function objectToQueryString(obj) { - const encoded = []; - for (let key in obj) { - if (obj.hasOwnProperty(key)) { - encoded.push(encodeURIComponent(key) + '=' + encodeIfContainsSpecialChars(obj[key])); - } - } - return encoded.join('&'); -} - -/** - * 海阔网页请求函数完整封装 - * @param url 请求链接 - * @param obj 请求对象 {headers:{},method:'',timeout:5000,body:'',withHeaders:false} - * @param ocr_flag 标识此flag是用于请求ocr识别的,自动过滤content-type指定编码 - * @returns {string|string|DocumentFragment|*} - */ -function request(url, obj, ocr_flag) { - ocr_flag = ocr_flag || false; - if (typeof(obj) === 'undefined' || !obj || obj === {}) { - if (!fetch_params || !fetch_params.headers) { - let headers = { - 'User-Agent': MOBILE_UA, - }; - if (rule.headers) { - Object.assign(headers, rule.headers); - } - if (!fetch_params) { - fetch_params = {}; - } - fetch_params.headers = headers; - } - if (!fetch_params.headers.Referer) { - fetch_params.headers.Referer = getHome(url) - } - obj = fetch_params; - } else { - let headers = obj.headers || {}; - let keys = Object.keys(headers).map(it => it.toLowerCase()); - if (!keys.includes('user-agent')) { - headers['User-Agent'] = MOBILE_UA; - // fetch_params 里存在ua则优先,否则才默认手机UA - if (typeof(fetch_params) === 'object' && fetch_params && fetch_params.headers) { - let fetch_headers = keysToLowerCase(fetch_params.headers); - if (fetch_headers['user-agent']) { - headers['User-Agent'] = fetch_headers['user-agent']; - } - } - } - if (!keys.includes('referer')) { - headers['Referer'] = getHome(url); - } - obj.headers = headers; - } - if (rule.encoding && rule.encoding !== 'utf-8' && !ocr_flag) { - if (!obj.headers.hasOwnProperty('Content-Type') && !obj.headers.hasOwnProperty('content-type')) { // 手动指定了就不管 - obj.headers["Content-Type"] = 'text/html; charset=' + rule.encoding; - } - } - if (typeof(obj.body) != 'undefined' && obj.body && typeof(obj.body) === 'string') { - // let data = {}; - // obj.body.split('&').forEach(it=>{ - // data[it.split('=')[0]] = it.split('=')[1] - // }); - // obj.data = data; - // delete obj.body - - // 传body加 "Content-Type":"application/x-www-form-urlencoded;" 即可post form - if (!obj.headers.hasOwnProperty('Content-Type') && !obj.headers.hasOwnProperty('content-type')) { // 手动指定了就不管 - obj.headers["Content-Type"] = 'application/x-www-form-urlencoded; charset=' + rule.encoding; - } - } else if (typeof(obj.body) != 'undefined' && obj.body && typeof(obj.body) === 'object') { - obj.data = obj.body; - delete obj.body - } - if (!url) { - return obj.withHeaders ? '{}' : '' - } - if (obj.toBase64) { // 返回base64,用于请求图片 - obj.buffer = 2; - delete obj.toBase64 - } - if (obj.redirect === false) { - obj.redirect = 0; - } - if (obj.headers.hasOwnProperty('Content-Type') || obj.headers.hasOwnProperty('content-type')) { - let _contentType = obj.headers["Content-Type"] || obj.headers["content-type"] || ""; - if (_contentType.includes("application/x-www-form-urlencoded")) { - log("custom body is application/x-www-form-urlencoded"); - //console.log(JSON.stringify(obj)); - if (typeof obj.body == "string") { - let temp_obj = parseQueryString(obj.body); - //obj.body = objectToQueryString(temp_obj); - console.log(JSON.stringify(temp_obj)); - } - } - } - - console.log(JSON.stringify(obj.headers)); - // console.log('request:'+url+' obj:'+JSON.stringify(obj)); - console.log('request:' + url + `|method:${obj.method || 'GET'}|body:${obj.body || ''}`); - let res = req(url, obj); - let html = res.content || ''; - // console.log(html); - if (obj.withHeaders) { - let htmlWithHeaders = res.headers; - htmlWithHeaders.body = html; - return JSON.stringify(htmlWithHeaders); - } else { - return html - } -} - -/** - * 快捷post请求 - * @param url 地址 - * @param obj 对象 - * @returns {string|DocumentFragment|*} - */ -function post(url, obj) { - obj = obj || {}; - obj.method = 'POST'; - return request(url, obj); -} - -/** - * 快捷获取特殊地址cookie|一般用作搜索过验证 - * 用法 let {cookie,html} = reqCookie(url); - * @param url 能返回cookie的地址 - * @param obj 常规请求参数 - * @param all_cookie 返回全部cookie.默认false只返回第一个,一般是PhpSessionId - * @returns {{cookie: string, html: (*|string|DocumentFragment)}} - */ -function reqCookie(url, obj, all_cookie) { - obj = obj || {}; - obj.withHeaders = true; - all_cookie = all_cookie || false; - let html = request(url, obj); - let json = JSON.parse(html); - let setCk = Object.keys(json).find(it => it.toLowerCase() === 'set-cookie'); - let cookie = setCk ? json[setCk] : ''; - if (Array.isArray(cookie)) { - cookie = cookie.join(';') - } - if (!all_cookie) { - cookie = cookie.split(';')[0]; - } - html = json.body; - return { - cookie, - html - } -} - -fetch = request; -print = function(data) { - data = data || ''; - if (typeof(data) == 'object' && Object.keys(data).length > 0) { - try { - data = JSON.stringify(data); - console.log(data); - } catch (e) { - // console.log('print:'+e.message); - console.log(typeof(data) + ':' + data.length); - return - } - } else if (typeof(data) == 'object' && Object.keys(data).length < 1) { - console.log('null object'); - } else { - console.log(data); - } -} -log = print; - -/** - * 检查宝塔验证并自动跳过获取正确源码 - * @param html 之前获取的html - * @param url 之前的来源url - * @param obj 来源obj - * @returns {string|DocumentFragment|*} - */ -function checkHtml(html, url, obj) { - if (/\?btwaf=/.test(html)) { - let btwaf = html.match(/btwaf(.*?)"/)[1]; - url = url.split('#')[0] + '?btwaf' + btwaf; - print('宝塔验证访问链接:' + url); - html = request(url, obj); - } - return html -} - -/** - * 带一次宝塔验证的源码获取 - * @param url 请求链接 - * @param obj 请求参数 - * @returns {string|DocumentFragment} - */ -function getCode(url, obj) { - let html = request(url, obj); - html = checkHtml(html, url, obj); - return html -} - -/** - * 源rule专用的请求方法,自动注入cookie - * @param url 请求链接 - * @returns {string|DocumentFragment} - */ -function getHtml(url) { - let obj = {}; - if (rule.headers) { - obj.headers = rule.headers; - } - let cookie = getItem(RULE_CK, ''); - if (cookie) { - // log('有cookie:'+cookie); - if (obj.headers && !Object.keys(obj.headers).map(it => it.toLowerCase()).includes('cookie')) { - log('历史无cookie,新增过验证后的cookie'); - obj.headers['Cookie'] = cookie; - } else if (obj.headers && obj.headers.cookie && obj.headers.cookie !== cookie) { - obj.headers['Cookie'] = cookie; - log('历史有小写过期的cookie,更新过验证后的cookie'); - } else if (obj.headers && obj.headers.Cookie && obj.headers.Cookie !== cookie) { - obj.headers['Cookie'] = cookie; - log('历史有大写过期的cookie,更新过验证后的cookie'); - } else if (!obj.headers) { - obj.headers = { - Cookie: cookie - }; - log('历史无headers,更新过验证后的含cookie的headers'); - } - } - let html = getCode(url, obj); - return html -} - -/** - * 首页分类解析,筛选暂未实现 - * @param homeObj 首页传参对象 - * @returns {string} - */ -function homeParse(homeObj) { - fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); - let classes = []; - if (homeObj.class_name && homeObj.class_url) { - let names = homeObj.class_name.split('&'); - let urls = homeObj.class_url.split('&'); - let cnt = Math.min(names.length, urls.length); - for (let i = 0; i < cnt; i++) { - classes.push({ - 'type_id': urls[i], - 'type_name': names[i] - }); - } - } - - if (homeObj.class_parse) { - if (homeObj.class_parse.startsWith('js:')) { - var input = homeObj.MY_URL; - try { - eval(homeObj.class_parse.replace('js:', '')); - if (Array.isArray(input)) { - classes = input; - } - } catch (e) { - log(`通过js动态获取分类发生了错误:${e.message}`); - } - } else { - let p = homeObj.class_parse.split(';'); - let p0 = p[0]; - let _ps = parseTags.getParse(p0); - let is_json = p0.startsWith('json:'); - _pdfa = _ps.pdfa; - _pdfh = _ps.pdfh; - _pd = _ps.pd; - MY_URL = rule.url; - if (is_json) { - try { - let cms_cate_url = homeObj.MY_URL.replace('ac=detail', 'ac=list'); - let html = homeObj.home_html || getHtml(cms_cate_url); - if (html) { - if (cms_cate_url === homeObj.MY_URL) { - homeHtmlCache = html; - } - let list = _pdfa(html, p0.replace('json:', '')); - if (list && list.length > 0) { - classes = list; - } - } - } catch (e) { - console.log(e.message); - } - } else if (p.length >= 3 && !is_json) { // 可以不写正则 - try { - let html = homeObj.home_html || getHtml(homeObj.MY_URL); - if (html) { - homeHtmlCache = html; - let list = _pdfa(html, p0); - if (list && list.length > 0) { - list.forEach((it, idex) => { - try { - let name = _pdfh(it, p[1]); - if (homeObj.cate_exclude && (new RegExp(homeObj.cate_exclude).test(name))) { - return; - } - // let url = pdfh(it, p[2]); - let url = _pd(it, p[2]); - if (p.length > 3 && p[3] && !homeObj.home_html) { - let exp = new RegExp(p[3]); - url = url.match(exp)[1]; - } - - classes.push({ - 'type_id': url.trim(), - 'type_name': name.trim() - }); - } catch (e) { - console.log(`分类列表定位第${idex}个元素正常报错:${e.message}`); - } - }); - } - } - } catch (e) { - console.log(e.message); - } - - } - } - } - // 排除分类 - classes = classes.filter(it => !homeObj.cate_exclude || !(new RegExp(homeObj.cate_exclude).test(it.type_name))); - let resp = { - 'class': classes - }; - if (homeObj.filter) { - resp.filters = homeObj.filter; - } - console.log(JSON.stringify(resp)); - return JSON.stringify(resp); - -} - -/** - * 推荐和搜索单字段继承一级 - * @param p 推荐或搜索的解析分割;列表 - * @param pn 自身列表序号 - * @param pp 一级解析分割;列表 - * @param ppn 继承一级序号 - * @returns {*} - */ -function getPP(p, pn, pp, ppn) { - try { - let ps = p[pn] === '*' && pp.length > ppn ? pp[ppn] : p[pn] - return ps - } catch (e) { - return '' - } -} - -/** - * 首页推荐列表解析 - * @param homeVodObj - * @returns {string} - */ -function homeVodParse(homeVodObj) { - fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); - let d = []; - MY_URL = homeVodObj.homeUrl; - // setItem('MY_URL',MY_URL); - console.log(MY_URL); - let t1 = (new Date()).getTime(); - let p = homeVodObj.推荐; - print('p:' + p); - if (p === '*' && rule.一级) { - p = rule.一级; - homeVodObj.double = false; - } - if (!p || typeof(p) !== 'string') { - return '{}' - } - p = p.trim(); - let pp = rule.一级 ? rule.一级.split(';') : []; - if (p.startsWith('js:')) { - const TYPE = 'home'; - var input = MY_URL; - HOST = rule.host; - eval(p.replace('js:', '')); - d = VODS; - } else { - p = p.split(';'); - if (!homeVodObj.double && p.length < 5) { - return '{}' - } else if (homeVodObj.double && p.length < 6) { - return '{}' - } - let p0 = getPP(p, 0, pp, 0) - let _ps = parseTags.getParse(p0); - _pdfa = _ps.pdfa; - _pdfh = _ps.pdfh; - _pd = _ps.pd; - let is_json = p0.startsWith('json:'); - p0 = p0.replace(/^(jsp:|json:|jq:)/, ''); - // print(p[0]); - let html = homeHtmlCache || getHtml(MY_URL); - homeHtmlCache = undefined; - if (is_json) { - // print('是json,开始处理'); - html = dealJson(html); - } - try { - console.log('double:' + homeVodObj.double); - if (homeVodObj.double) { - let items = _pdfa(html, p0); - // console.log(items.length); - let p1 = getPP(p, 1, pp, 0); - let p2 = getPP(p, 2, pp, 1); - let p3 = getPP(p, 3, pp, 2); - let p4 = getPP(p, 4, pp, 3); - let p5 = getPP(p, 5, pp, 4); - let p6 = getPP(p, 6, pp, 5); - for (let item of items) { - // console.log(p[1]); - let items2 = _pdfa(item, p1); - // console.log(items2.length); - for (let item2 of items2) { - try { - let title = _pdfh(item2, p2); - let img = ''; - try { - img = _pd(item2, p3); - } catch (e) {} - let desc = ''; - try { - desc = _pdfh(item2, p4); - } catch (e) {} - let links = []; - for (let _p5 of p5.split('+')) { - let link = !homeVodObj.detailUrl ? _pd(item2, _p5, MY_URL) : _pdfh(item2, _p5); - links.push(link); - } - let content; - if (p.length > 6 && p[6]) { - content = _pdfh(item2, p6); - } else { - content = ''; - } - let vid = links.join('$'); - if (rule.二级 === '*') { - vid = vid + '@@' + title + '@@' + img; - } - let vod = { - vod_name: title, - vod_pic: img, - vod_remarks: desc, - vod_content: content, - vod_id: vid - }; - // print(vod); - d.push(vod); - } catch (e) { - console.log(`首页列表双层定位处理发生错误:${e.message}`); - } - - } - - - } - - - } else { - let items = _pdfa(html, p0); - let p1 = getPP(p, 1, pp, 1); - let p2 = getPP(p, 2, pp, 2); - let p3 = getPP(p, 3, pp, 3); - let p4 = getPP(p, 4, pp, 4); - let p5 = getPP(p, 5, pp, 5); - - for (let item of items) { - try { - let title = _pdfh(item, p1); - let img = ''; - try { - img = _pd(item, p2, MY_URL); - } catch (e) {} - let desc = ''; - try { - desc = _pdfh(item, p3); - } catch (e) {} - let links = []; - for (let _p5 of p4.split('+')) { - let link = !homeVodObj.detailUrl ? _pd(item, _p5, MY_URL) : _pdfh(item, _p5); - links.push(link); - } - let content; - if (p.length > 5 && p[5]) { - content = _pdfh(item, p5); - } else { - content = '' - } - let vid = links.join('$'); - if (rule.二级 === '*') { - vid = vid + '@@' + title + '@@' + img; - } - let vod = { - vod_name: title, - vod_pic: img, - vod_remarks: desc, - vod_content: content, - vod_id: vid - }; - d.push(vod); - - } catch (e) { - console.log(`首页列表单层定位处理发生错误:${e.message}`); - } - - } - - } - - } catch (e) { - - } - } - let t2 = (new Date()).getTime(); - console.log('加载首页推荐耗时:' + (t2 - t1) + '毫秒'); - // console.log(JSON.stringify(d)); - if (rule.图片替换) { - if (rule.图片替换.startsWith('js:')) { - d.forEach(it => { - try { - var input = it.vod_pic; - eval(rule.图片替换.trim().replace('js:', '')); - it.vod_pic = input; - } catch (e) { - log(`图片:${it.vod_pic}替换错误:${e.message}`); - } - }); - } else if (rule.图片替换.includes('=>')) { - let replace_from = rule.图片替换.split('=>')[0]; - let replace_to = rule.图片替换.split('=>')[1]; - d.forEach(it => { - if (it.vod_pic && it.vod_pic.startsWith('http')) { - it.vod_pic = it.vod_pic.replace(replace_from, replace_to); - } - }); - } - } - if (rule.图片来源) { - d.forEach(it => { - if (it.vod_pic && it.vod_pic.startsWith('http')) { - it.vod_pic = it.vod_pic + rule.图片来源; - } - }); - } - if (d.length > 0) { - print(d.slice(0, 2)); - } - return JSON.stringify({ - list: d - }) -} - -/** - * 一级分类页数据解析 - * @param cateObj - * @returns {string} - */ -function categoryParse(cateObj) { - fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); - let p = cateObj.一级; - if (!p || typeof(p) !== 'string') { - return '{}' - } - let d = []; - // let url = cateObj.url.replaceAll('fyclass', cateObj.tid).replaceAll('fypage', cateObj.pg); - let url = cateObj.url.replaceAll('fyclass', cateObj.tid); - if (cateObj.pg === 1 && url.includes('[') && url.includes(']')) { - url = url.split('[')[1].split(']')[0]; - } else if (cateObj.pg > 1 && url.includes('[') && url.includes(']')) { - url = url.split('[')[0]; - } - if (rule.filter_url) { - if (!/fyfilter/.test(url)) { - if (!url.endsWith('&') && !rule.filter_url.startsWith('&')) { - url += '&' - } - url += rule.filter_url; - } else { - url = url.replace('fyfilter', rule.filter_url); - } - // filter_url支持fyclass - url = url.replaceAll('fyclass', cateObj.tid); - // console.log('filter:'+cateObj.filter); - let fl = cateObj.filter ? cateObj.extend : {}; - // 自动合并 不同分类对应的默认筛选 - if (rule.filter_def && typeof(rule.filter_def) === 'object') { - try { - if (Object.keys(rule.filter_def).length > 0 && rule.filter_def.hasOwnProperty(cateObj.tid)) { - let self_fl_def = rule.filter_def[cateObj.tid]; - if (self_fl_def && typeof(self_fl_def) === 'object') { - // 引用传递转值传递,避免污染self变量 - let fl_def = JSON.parse(JSON.stringify(self_fl_def)); - fl = Object.assign(fl_def, fl); - } - } - } catch (e) { - print(`合并不同分类对应的默认筛选出错:${e.message}`); - } - } - let new_url; - new_url = cheerio.jinja2(url, { - fl: fl, - fyclass: cateObj.tid - }); - // console.log('jinjia2执行后的new_url类型为:'+typeof(new_url)); - url = new_url; - } - if (/fypage/.test(url)) { - if (url.includes('(') && url.includes(')')) { - let url_rep = url.match(/.*?\((.*)\)/)[1]; - // console.log(url_rep); - let cnt_page = url_rep.replaceAll('fypage', cateObj.pg); - // console.log(cnt_page); - let cnt_pg = eval(cnt_page); - // console.log(cnt_pg); - url = url.replaceAll(url_rep, cnt_pg).replaceAll('(', '').replaceAll(')', ''); - } else { - url = url.replaceAll('fypage', cateObj.pg); - } - } - - MY_URL = url; - // setItem('MY_URL',MY_URL); - console.log(MY_URL); - p = p.trim(); - const MY_CATE = cateObj.tid; - if (p.startsWith('js:')) { - var MY_FL = cateObj.extend; - const TYPE = 'cate'; - var input = MY_URL; - const MY_PAGE = cateObj.pg; - var desc = ''; - eval(p.trim().replace('js:', '')); - d = VODS; - } else { - p = p.split(';'); - if (p.length < 5) { - return '{}' - } - let _ps = parseTags.getParse(p[0]); - _pdfa = _ps.pdfa; - _pdfh = _ps.pdfh; - _pd = _ps.pd; - let is_json = p[0].startsWith('json:'); - p[0] = p[0].replace(/^(jsp:|json:|jq:)/, ''); - try { - let html = getHtml(MY_URL); - if (html) { - if (is_json) { - html = dealJson(html); - } - let list = _pdfa(html, p[0]); - list.forEach(it => { - let links = p[4].split('+').map(p4 => { - return !rule.detailUrl ? _pd(it, p4, MY_URL) : _pdfh(it, p4); - }); - let link = links.join('$'); - let vod_id = rule.detailUrl ? MY_CATE + '$' + link : link; - - let vod_name = _pdfh(it, p[1]).replace(/\n|\t/g, '').trim(); - let vod_pic = _pd(it, p[2], MY_URL); - - if (rule.二级 === '*') { - vod_id = vod_id + '@@' + vod_name + '@@' + vod_pic; - } - d.push({ - 'vod_id': vod_id, - 'vod_name': vod_name, - 'vod_pic': vod_pic, - 'vod_remarks': _pdfh(it, p[3]).replace(/\n|\t/g, '').trim(), - }); - }); - } - } catch (e) { - console.log(e.message); - } - } - if (rule.图片替换) { - if (rule.图片替换.startsWith('js:')) { - d.forEach(it => { - try { - var input = it.vod_pic; - eval(rule.图片替换.trim().replace('js:', '')); - it.vod_pic = input; - } catch (e) { - log(`图片:${it.vod_pic}替换错误:${e.message}`); - } - }); - } else if (rule.图片替换.includes('=>')) { - let replace_from = rule.图片替换.split('=>')[0]; - let replace_to = rule.图片替换.split('=>')[1]; - d.forEach(it => { - if (it.vod_pic && it.vod_pic.startsWith('http')) { - it.vod_pic = it.vod_pic.replace(replace_from, replace_to); - } - }); - } - } - if (rule.图片来源) { - d.forEach(it => { - if (it.vod_pic && it.vod_pic.startsWith('http')) { - it.vod_pic = it.vod_pic + rule.图片来源; - } - }); - } - // print(d); - if (d.length > 0) { - print(d.slice(0, 2)); - } - let pagecount = 0; - if (rule.pagecount && typeof(rule.pagecount) === 'object' && rule.pagecount.hasOwnProperty(MY_CATE)) { - print(`MY_CATE:${MY_CATE},pagecount:${JSON.stringify(rule.pagecount)}`); - pagecount = parseInt(rule.pagecount[MY_CATE]); - } - let nodata = { - list: [{ - vod_name: '无数据,防无限请求', - vod_id: 'no_data', - vod_remarks: '不要点,会崩的', - vod_pic: 'https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/404.jpg' - }], - total: 1, - pagecount: 1, - page: 1, - limit: 1 - }; - let vod = d.length < 1 ? JSON.stringify(nodata) : JSON.stringify({ - 'page': parseInt(cateObj.pg), - 'pagecount': pagecount || 999, - 'limit': 20, - 'total': 999, - 'list': d, - }); - // print(vod); - return vod -} - -/** - * 搜索列表数据解析 - * @param searchObj - * @returns {string} - */ -function searchParse(searchObj) { - fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); - let d = []; - if (!searchObj.searchUrl) { - return '{}' - } - if (rule.searchNoPage && Number(searchObj.pg) > 1) { - // 关闭搜索分页 - return '{}' - } - let p = searchObj.搜索 === '*' && rule.一级 ? rule.一级 : searchObj.搜索; - if (!p || typeof(p) !== 'string') { - return '{}' - } - p = p.trim(); - let pp = rule.一级 ? rule.一级.split(';') : []; - let url = searchObj.searchUrl.replaceAll('**', searchObj.wd); - if (searchObj.pg === 1 && url.includes('[') && url.includes(']') && !url.includes('#')) { - url = url.split('[')[1].split(']')[0]; - } else if (searchObj.pg > 1 && url.includes('[') && url.includes(']') && !url.includes('#')) { - url = url.split('[')[0]; - } - - if (/fypage/.test(url)) { - if (url.includes('(') && url.includes(')')) { - let url_rep = url.match(/.*?\((.*)\)/)[1]; - // console.log(url_rep); - let cnt_page = url_rep.replaceAll('fypage', searchObj.pg); - // console.log(cnt_page); - let cnt_pg = eval(cnt_page); - // console.log(cnt_pg); - url = url.replaceAll(url_rep, cnt_pg).replaceAll('(', '').replaceAll(')', ''); - } else { - url = url.replaceAll('fypage', searchObj.pg); - } - } - - MY_URL = url; - console.log(MY_URL); - // log(searchObj.搜索); - // setItem('MY_URL',MY_URL); - if (p.startsWith('js:')) { - const TYPE = 'search'; - const MY_PAGE = searchObj.pg; - const KEY = searchObj.wd; - var input = MY_URL; - var detailUrl = rule.detailUrl || ''; - eval(p.trim().replace('js:', '')); - d = VODS; - } else { - p = p.split(';'); - if (p.length < 5) { - return '{}' - } - let p0 = getPP(p, 0, pp, 0); - let _ps = parseTags.getParse(p0); - _pdfa = _ps.pdfa; - _pdfh = _ps.pdfh; - _pd = _ps.pd; - let is_json = p0.startsWith('json:'); - p0 = p0.replace(/^(jsp:|json:|jq:)/, ''); - // print('1381 p0:'+p0); - try { - let req_method = MY_URL.split(';').length > 1 ? MY_URL.split(';')[1].toLowerCase() : 'get'; - let html; - if (req_method === 'post') { - let rurls = MY_URL.split(';')[0].split('#') - let rurl = rurls[0] - let params = rurls.length > 1 ? rurls[1] : ''; - print(`post=》rurl:${rurl},params:${params}`); - // let new_dict = {}; - // let new_tmp = params.split('&'); - // new_tmp.forEach(i=>{ - // new_dict[i.split('=')[0]] = i.split('=')[1]; - // }); - // html = post(rurl,{body:new_dict}); - let _fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); - let postData = { - body: params - }; - Object.assign(_fetch_params, postData); - html = post(rurl, _fetch_params); - } else if (req_method === 'postjson') { - let rurls = MY_URL.split(';')[0].split('#') - let rurl = rurls[0] - let params = rurls.length > 1 ? rurls[1] : ''; - print(`postjson-》rurl:${rurl},params:${params}`); - try { - params = JSON.parse(params); - } catch (e) { - params = '{}' - } - let _fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); - let postData = { - body: params - }; - Object.assign(_fetch_params, postData); - html = post(rurl, _fetch_params); - } else { - html = getHtml(MY_URL); - } - if (html) { - // 解决搜索源码奇葩触发自动过验证逻辑 - let search_tag = rule.搜索验证标识 || '系统安全验证|输入验证码'; - if (new RegExp(search_tag).test(html)) { - let cookie = verifyCode(MY_URL); - if (cookie) { - console.log(`本次成功过验证,cookie:${cookie}`); - setItem(RULE_CK, cookie); - } else { - console.log(`本次自动过搜索验证失败,cookie:${cookie}`); - } - // obj.headers['Cookie'] = cookie; - html = getHtml(MY_URL); - } - if (!html.includes(searchObj.wd)) { - console.log('搜索结果源码未包含关键字,疑似搜索失败,正为您打印结果源码'); - console.log(html); - } - if (is_json) { - // console.log(html); - html = dealJson(html); - // console.log(JSON.stringify(html)); - } - // console.log(html); - let list = _pdfa(html, p0); - // print(list.length); - // print(list); - let p1 = getPP(p, 1, pp, 1); - let p2 = getPP(p, 2, pp, 2); - let p3 = getPP(p, 3, pp, 3); - let p4 = getPP(p, 4, pp, 4); - let p5 = getPP(p, 5, pp, 5); - list.forEach(it => { - let links = p4.split('+').map(_p4 => { - return !rule.detailUrl ? _pd(it, _p4, MY_URL) : _pdfh(it, _p4) - }); - let link = links.join('$'); - let content; - if (p.length > 5 && p[5]) { - content = _pdfh(it, p5); - } else { - content = ''; - } - let vod_id = link; - let vod_name = _pdfh(it, p1).replace(/\n|\t/g, '').trim(); - let vod_pic = _pd(it, p2, MY_URL); - if (rule.二级 === '*') { - vod_id = vod_id + '@@' + vod_name + '@@' + vod_pic; - } - let ob = { - 'vod_id': vod_id, - 'vod_name': vod_name, - 'vod_pic': vod_pic, - 'vod_remarks': _pdfh(it, p3).replace(/\n|\t/g, '').trim(), - 'vod_content': content.replace(/\n|\t/g, '').trim(), - }; - d.push(ob); - }); - - } - } catch (e) { - print(`搜索发生错误:${e.message}`); - return '{}' - } - } - if (rule.图片替换) { - if (rule.图片替换.startsWith('js:')) { - d.forEach(it => { - try { - var input = it.vod_pic; - eval(rule.图片替换.trim().replace('js:', '')); - it.vod_pic = input; - } catch (e) { - log(`图片:${it.vod_pic}替换错误:${e.message}`); - } - }); - } else if (rule.图片替换.includes('=>')) { - let replace_from = rule.图片替换.split('=>')[0]; - let replace_to = rule.图片替换.split('=>')[1]; - d.forEach(it => { - if (it.vod_pic && it.vod_pic.startsWith('http')) { - it.vod_pic = it.vod_pic.replace(replace_from, replace_to); - } - }); - } - } - if (rule.图片来源) { - d.forEach(it => { - if (it.vod_pic && it.vod_pic.startsWith('http')) { - it.vod_pic = it.vod_pic + rule.图片来源; - } - }); - } - // print(d); - return JSON.stringify({ - 'page': parseInt(searchObj.pg), - 'pagecount': 10, - 'limit': 20, - 'total': 100, - 'list': d, - }); -} - -/** - * 二级详情页数据解析 - * @param detailObj - * @returns {string} - */ -function detailParse(detailObj) { - let t1 = (new Date()).getTime(); - fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); - let orId = detailObj.orId; - let vod_name = '片名'; - let vod_pic = ''; - let vod_id = orId; - if (rule.二级 === '*') { - // vod_id = orId.split('@@')[0]; // 千万不能分割 - let extra = orId.split('@@'); - vod_name = extra.length > 1 ? extra[1] : vod_name; - vod_pic = extra.length > 2 ? extra[2] : vod_pic; - } - // print(vod_pic); - let vod = { - vod_id: vod_id, //"id", - vod_name: vod_name, - vod_pic: vod_pic, - type_name: "类型", - vod_year: "年份", - vod_area: "地区", - vod_remarks: "更新信息", - vod_actor: "主演", - vod_director: "导演", - vod_content: "简介" - }; - let p = detailObj.二级; - let url = detailObj.url; - let detailUrl = detailObj.detailUrl; - let fyclass = detailObj.fyclass; - let tab_exclude = detailObj.tab_exclude; - let html = detailObj.html || ''; - MY_URL = url; - if (detailObj.二级访问前) { - try { - print(`尝试在二级访问前执行代码:${detailObj.二级访问前}`); - eval(detailObj.二级访问前.trim().replace('js:', '')); - } catch (e) { - print(`二级访问前执行代码出现错误:${e.message}`) - } - } - // console.log(MY_URL); - // setItem('MY_URL',MY_URL); - if (p === '*') { - vod.vod_play_from = '道长在线'; - vod.vod_remarks = detailUrl; - vod.vod_actor = '没有二级,只有一级链接直接嗅探播放'; - vod.vod_content = MY_URL; - vod.vod_play_url = '嗅探播放$' + MY_URL.split('@@')[0]; - } else if (typeof(p) === 'string' && p.trim().startsWith('js:')) { - const TYPE = 'detail'; - var input = MY_URL; - var play_url = ''; - eval(p.trim().replace('js:', '')); - vod = VOD; - console.log(JSON.stringify(vod)); - } else if (p && typeof(p) === 'object') { - let tt1 = (new Date()).getTime(); - if (!html) { - html = getHtml(MY_URL); - } - print(`二级${MY_URL}仅获取源码耗时:${(new Date()).getTime() - tt1}毫秒`); - let _ps; - if (p.is_json) { - print('二级是json'); - _ps = parseTags.json; - html = dealJson(html); - } else if (p.is_jsp) { - print('二级是jsp'); - _ps = parseTags.jsp; - } else if (p.is_jq) { - print('二级是jq'); - _ps = parseTags.jq; - } else { - print('二级默认jq'); - _ps = parseTags.jq; - // print('二级默认jsp'); - // _ps = parseTags.jsp; - } - let tt2 = (new Date()).getTime(); - print(`二级${MY_URL}获取并装载源码耗时:${tt2 - tt1}毫秒`); - _pdfa = _ps.pdfa; - _pdfh = _ps.pdfh; - _pd = _ps.pd; - if (p.title) { - let p1 = p.title.split(';'); - vod.vod_name = _pdfh(html, p1[0]).replace(/\n|\t/g, '').trim(); - let type_name = p1.length > 1 ? _pdfh(html, p1[1]).replace(/\n|\t/g, '').replace(/ /g, '').trim() : ''; - vod.type_name = type_name || vod.type_name; - } - if (p.desc) { - try { - let p1 = p.desc.split(';'); - vod.vod_remarks = _pdfh(html, p1[0]).replace(/\n|\t/g, '').trim(); - vod.vod_year = p1.length > 1 ? _pdfh(html, p1[1]).replace(/\n|\t/g, '').trim() : ''; - vod.vod_area = p1.length > 2 ? _pdfh(html, p1[2]).replace(/\n|\t/g, '').trim() : ''; - // vod.vod_actor = p1.length > 3 ? _pdfh(html, p1[3]).replaceAll('\n', ' ').trim():''; - vod.vod_actor = p1.length > 3 ? _pdfh(html, p1[3]).replace(/\n|\t/g, '').trim() : ''; - vod.vod_director = p1.length > 4 ? _pdfh(html, p1[4]).replace(/\n|\t/g, '').trim() : ''; - } catch (e) { - - } - } - if (p.content) { - try { - let p1 = p.content.split(';'); - vod.vod_content = _pdfh(html, p1[0]).replace(/\n|\t/g, '').trim(); - } catch (e) {} - } - if (p.img) { - try { - let p1 = p.img.split(';'); - vod.vod_pic = _pd(html, p1[0], MY_URL); - } catch (e) {} - } - - let vod_play_from = '$$$'; - let playFrom = []; - if (p.重定向 && p.重定向.startsWith('js:')) { - print('开始执行重定向代码:' + p.重定向); - html = eval(p.重定向.replace('js:', '')); - } - - // console.log(2); - if (p.tabs) { - if (p.tabs.startsWith('js:')) { - print('开始执行tabs代码:' + p.tabs); - var input = MY_URL; - eval(p.tabs.replace('js:', '')); - playFrom = TABS; - } else { - let p_tab = p.tabs.split(';')[0]; - // console.log(p_tab); - let vHeader = _pdfa(html, p_tab); - console.log(vHeader.length); - let tab_text = p.tab_text || 'body&&Text'; - // print('tab_text:'+tab_text); - let new_map = {}; - for (let v of vHeader) { - let v_title = _pdfh(v, tab_text).trim(); - if (!v_title) { - v_title = '线路空' - } - console.log(v_title); - if (tab_exclude && (new RegExp(tab_exclude)).test(v_title)) { - continue; - } - if (!new_map.hasOwnProperty(v_title)) { - new_map[v_title] = 1; - } else { - new_map[v_title] += 1; - } - if (new_map[v_title] > 1) { - v_title += Number(new_map[v_title] - 1); - } - playFrom.push(v_title); - } - } - console.log(JSON.stringify(playFrom)); - } else { - playFrom = ['道长在线'] - } - vod.vod_play_from = playFrom.join(vod_play_from); - - // console.log(3); - let vod_play_url = '$$$'; - let vod_tab_list = []; - if (p.lists) { - if (p.lists.startsWith('js:')) { - print('开始执行lists代码:' + p.lists); - try { - var input = MY_URL; - var play_url = ''; - eval(p.lists.replace('js:', '')); - for (let i in LISTS) { - if (LISTS.hasOwnProperty(i)) { - // print(i); - try { - LISTS[i] = LISTS[i].map(it => it.split('$').slice(0, 2).join('$')); - } catch (e) { - print(`格式化LISTS发生错误:${e.message}`); - } - } - } - vod_play_url = LISTS.map(it => it.join('#')).join(vod_play_url); - } catch (e) { - print(`js执行lists: 发生错误:${e.message}`); - } - - } else { - let list_text = p.list_text || 'body&&Text'; - let list_url = p.list_url || 'a&&href'; - let list_url_prefix = p.list_url_prefix || ''; - // print('list_text:'+list_text); - // print('list_url:'+list_url); - // print('list_parse:'+p.lists); - let is_tab_js = p.tabs.trim().startsWith('js:'); - for (let i = 0; i < playFrom.length; i++) { - let tab_name = playFrom[i]; - let tab_ext = p.tabs.split(';').length > 1 && !is_tab_js ? p.tabs.split(';')[1] : ''; - let p1 = p.lists.replaceAll('#idv', tab_name).replaceAll('#id', i); - tab_ext = tab_ext.replaceAll('#idv', tab_name).replaceAll('#id', i); - let tabName = tab_ext ? _pdfh(html, tab_ext) : tab_name; - console.log(tabName); - // print('tab_ext:'+tab_ext); - let new_vod_list = []; - let tt1 = (new Date()).getTime(); - // print('pdfl:'+typeof (pdfl)); - if (typeof(pdfl) === 'function') { - new_vod_list = pdfl(html, p1, list_text, list_url, MY_URL); - if (list_url_prefix) { - new_vod_list = new_vod_list.map(it => it.split('$')[0] + '$' + list_url_prefix + it.split('$').slice(1).join('$')); - } - } else { - let vodList = []; - try { - vodList = _pdfa(html, p1); - console.log('len(vodList):' + vodList.length); - } catch (e) { - // console.log(e.message); - } - for (let i = 0; i < vodList.length; i++) { - let it = vodList[i]; - new_vod_list.push(_pdfh(it, list_text).trim() + '$' + list_url_prefix + _pd(it, list_url, MY_URL)); - } - } - if (new_vod_list.length > 0) { - new_vod_list = forceOrder(new_vod_list, '', x => x.split('$')[0]); - console.log(`drpy影响性能代码共计列表数循环次数:${new_vod_list.length},耗时:${(new Date()).getTime() - tt1}毫秒`); - } - // print(new_vod_list); - let vlist = new_vod_list.join('#'); - vod_tab_list.push(vlist); - } - vod_play_url = vod_tab_list.join(vod_play_url); - } - } - vod.vod_play_url = vod_play_url; - } - if (rule.图片替换 && rule.图片替换.includes('=>')) { - let replace_from = rule.图片替换.split('=>')[0]; - let replace_to = rule.图片替换.split('=>')[1]; - vod.vod_pic = vod.vod_pic.replace(replace_from, replace_to); - } - if (rule.图片来源 && vod.vod_pic && vod.vod_pic.startsWith('http')) { - vod.vod_pic = vod.vod_pic + rule.图片来源; - } - if (!vod.vod_id || (vod_id.includes('$') && vod.vod_id !== vod_id)) { - vod.vod_id = vod_id; - } - let t2 = (new Date()).getTime(); - console.log(`加载二级界面${MY_URL}耗时:${t2 - t1}毫秒`); - // print(vod); - try { - vod = vodDeal(vod); - } catch (e) { - console.log(`vodDeal发生错误:${e.message}`); - } - // print(vod); - return JSON.stringify({ - list: [vod] - }) -} - -/** - * 获取二级待返回的播放线路没处理时的索引关系 - * @param vod - * @returns {{}} - */ -function get_tab_index(vod) { - let obj = {}; - vod.vod_play_from.split('$$$').forEach((it, index) => { - obj[it] = index; - }); - return obj -} - -/** - * 处理待返回的vod数据|线路去除,排序,重命名 - * @param vod - * @returns {*} - */ -function vodDeal(vod) { - let vod_play_from = vod.vod_play_from.split('$$$'); - let vod_play_url = vod.vod_play_url.split('$$$'); - - // 移除指定线路后的列表 - let tab_removed_list = vod_play_from; - // 排序后的线路列表 - let tab_ordered_list = vod_play_from; - // 线路重命名后的列表 - let tab_renamed_list = vod_play_from; - // 定义实际要返回线路 - let tab_list = vod_play_from; - // 选集列表根据线路排序 - let play_ordered_list = vod_play_url; - - // 判断有移除线路或者线路排序 - if ((rule.tab_remove && rule.tab_remove.length > 0) || (rule.tab_order && rule.tab_order.length > 0)) { - // 获取原来线路的索引下标 - let tab_index_dict = get_tab_index(vod); - - if (rule.tab_remove && rule.tab_remove.length > 0) { - tab_removed_list = vod_play_from.filter(it => !rule.tab_remove.includes(it)); - tab_list = tab_removed_list; - } - - if (rule.tab_order && rule.tab_order.length > 0) { - let tab_order = rule.tab_order; - tab_ordered_list = tab_removed_list.sort((a, b) => { - return (tab_order.indexOf(a) === -1 ? 9999 : tab_order.indexOf(a)) - (tab_order.indexOf(b) === -1 ? 9999 : tab_order.indexOf(b)) - }); - tab_list = tab_ordered_list; - } - play_ordered_list = tab_list.map(it => vod_play_url[tab_index_dict[it]]); - } - - if (rule.tab_rename && typeof(rule.tab_rename) === 'object' & Object.keys(rule.tab_rename).length > 0) { - tab_renamed_list = tab_list.map(it => rule.tab_rename[it] || it); - tab_list = tab_renamed_list; - } - vod.vod_play_from = tab_list.join('$$$'); - vod.vod_play_url = play_ordered_list.join('$$$'); - return vod -} - -/** - * 判断是否需要解析 - * @param url - * @returns {number|number} - */ -function tellIsJx(url) { - try { - let is_vip = !/\.(m3u8|mp4|m4a)$/.test(url.split('?')[0]) && 是否正版(url); - return is_vip ? 1 : 0 - } catch (e) { - return 1 - } -} - -/** - * 选集播放点击事件解析 - * @param playObj - * @returns {string} - */ -function playParse(playObj) { - fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); - MY_URL = playObj.url; - var MY_FLAG = playObj.flag; - if (!/http/.test(MY_URL)) { - try { - MY_URL = base64Decode(MY_URL); - } catch (e) {} - } - MY_URL = decodeURIComponent(MY_URL); - var input = MY_URL; //注入给免嗅js - var flag = MY_FLAG; //注入播放线路名称给免嗅js - let common_play = { - parse: SPECIAL_URL.test(input) || /^(push:)/.test(input) ? 0 : 1, - url: input, - flag: flag, - // url:urlencode(input), - jx: tellIsJx(input) - }; - let lazy_play; - if (!rule.play_parse || !rule.lazy) { - lazy_play = common_play; - } else if (rule.play_parse && rule.lazy && typeof(rule.lazy) === 'string') { - try { - let lazy_code = rule.lazy.trim(); - if (lazy_code.startsWith('js:')) { - lazy_code = lazy_code.replace('js:', '').trim(); - } - print('开始执行js免嗅=>' + lazy_code); - eval(lazy_code); - lazy_play = typeof(input) === 'object' ? input : { - parse: SPECIAL_URL.test(input) || /^(push:)/.test(input) ? 0 : 1, - jx: tellIsJx(input), - url: input - }; - } catch (e) { - print(`js免嗅错误:${e.message}`); - lazy_play = common_play; - } - } else { - lazy_play = common_play; - } - // print('play_json:'+typeof(rule.play_json)); - // console.log(Array.isArray(rule.play_json)); - if (Array.isArray(rule.play_json) && rule.play_json.length > 0) { // 数组情况判断长度大于0 - let web_url = lazy_play.url; - for (let pjson of rule.play_json) { - if (pjson.re && (pjson.re === '*' || web_url.match(new RegExp(pjson.re)))) { - if (pjson.json && typeof(pjson.json) === 'object') { - let base_json = pjson.json; - // print('开始合并:'); - // print(base_json); - lazy_play = Object.assign(lazy_play, base_json); - break; - } - } - } - } else if (rule.play_json && !Array.isArray(rule.play_json)) { // 其他情况 非[] 判断true/false - let base_json = { - jx: 1, - parse: 1, - }; - lazy_play = Object.assign(lazy_play, base_json); - } else if (!rule.play_json) { // 不解析传0 - let base_json = { - jx: 0, - parse: 1, - }; - lazy_play = Object.assign(lazy_play, base_json); - } - console.log(JSON.stringify(lazy_play)); - return JSON.stringify(lazy_play); -} - -/** - * 本地代理解析规则 - * @param params - */ -function proxyParse(proxyObj) { - var input = proxyObj.params; - if (proxyObj.proxy_rule) { - log('准备执行本地代理规则:\n' + proxyObj.proxy_rule); - try { - eval(proxyObj.proxy_rule); - if (input && input !== proxyObj.params && Array.isArray(input) && input.length >= 3) { - return input - } else { - return [404, 'text/plain', 'Not Found'] - } - } catch (e) { - return [500, 'text/plain', '代理规则错误:' + e.message] - } - - } else { - return [404, 'text/plain', 'Not Found'] - } -} - -/** - * 辅助嗅探解析规则 - * @param isVideoObj - * @returns {boolean} - */ -function isVideoParse(isVideoObj) { - var input = isVideoObj.url; - if (!isVideoObj.t) { // t为假代表默认传的正则字符串 - let re_matcher = new RegExp(isVideoObj.isVideo, 'i'); // /g匹配多个,/i不区分大小写,/m匹配多行 - return re_matcher.test(input); - } else { - // 执行js - try { - eval(isVideoObj.isVideo); - if (typeof(input) === 'boolean') { - return input - } else { - return false - } - } catch (e) { - log(`执行嗅探规则发生错误:${e.message}`); - return false - } - } -} - -/** - * 获取加密前的原始的js源文本 - * @param js_code - */ -function getOriginalJs(js_code) { - let current_match = /var rule|[\u4E00-\u9FA5]+|function|let |var |const |\(|\)|"|'/; - if (current_match.test(js_code)) { - return js_code - } - let rsa_private_key = 'MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCqin/jUpqM6+fgYP/oMqj9zcdHMM0mEZXLeTyixIJWP53lzJV2N2E3OP6BBpUmq2O1a9aLnTIbADBaTulTNiOnVGoNG58umBnupnbmmF8iARbDp2mTzdMMeEgLdrfXS6Y3VvazKYALP8EhEQykQVarexR78vRq7ltY3quXx7cgI0ROfZz5Sw3UOLQJ+VoWmwIxu9AMEZLVzFDQN93hzuzs3tNyHK6xspBGB7zGbwCg+TKi0JeqPDrXxYUpAz1cQ/MO+Da0WgvkXnvrry8NQROHejdLVOAslgr6vYthH9bKbsGyNY3H+P12kcxo9RAcVveONnZbcMyxjtF5dWblaernAgMBAAECggEAGdEHlSEPFmAr5PKqKrtoi6tYDHXdyHKHC5tZy4YV+Pp+a6gxxAiUJejx1hRqBcWSPYeKne35BM9dgn5JofgjI5SKzVsuGL6bxl3ayAOu+xXRHWM9f0t8NHoM5fdd0zC3g88dX3fb01geY2QSVtcxSJpEOpNH3twgZe6naT2pgiq1S4okpkpldJPo5GYWGKMCHSLnKGyhwS76gF8bTPLoay9Jxk70uv6BDUMlA4ICENjmsYtd3oirWwLwYMEJbSFMlyJvB7hjOjR/4RpT4FPnlSsIpuRtkCYXD4jdhxGlvpXREw97UF2wwnEUnfgiZJ2FT/MWmvGGoaV/CfboLsLZuQKBgQDTNZdJrs8dbijynHZuuRwvXvwC03GDpEJO6c1tbZ1s9wjRyOZjBbQFRjDgFeWs9/T1aNBLUrgsQL9c9nzgUziXjr1Nmu52I0Mwxi13Km/q3mT+aQfdgNdu6ojsI5apQQHnN/9yMhF6sNHg63YOpH+b+1bGRCtr1XubuLlumKKscwKBgQDOtQ2lQjMtwsqJmyiyRLiUOChtvQ5XI7B2mhKCGi8kZ+WEAbNQcmThPesVzW+puER6D4Ar4hgsh9gCeuTaOzbRfZ+RLn3Aksu2WJEzfs6UrGvm6DU1INn0z/tPYRAwPX7sxoZZGxqML/z+/yQdf2DREoPdClcDa2Lmf1KpHdB+vQKBgBXFCVHz7a8n4pqXG/HvrIMJdEpKRwH9lUQS/zSPPtGzaLpOzchZFyQQBwuh1imM6Te+VPHeldMh3VeUpGxux39/m+160adlnRBS7O7CdgSsZZZ/dusS06HAFNraFDZf1/VgJTk9BeYygX+AZYu+0tReBKSs9BjKSVJUqPBIVUQXAoGBAJcZ7J6oVMcXxHxwqoAeEhtvLcaCU9BJK36XQ/5M67ceJ72mjJC6/plUbNukMAMNyyi62gO6I9exearecRpB/OGIhjNXm99Ar59dAM9228X8gGfryLFMkWcO/fNZzb6lxXmJ6b2LPY3KqpMwqRLTAU/zy+ax30eFoWdDHYa4X6e1AoGAfa8asVGOJ8GL9dlWufEeFkDEDKO9ww5GdnpN+wqLwePWqeJhWCHad7bge6SnlylJp5aZXl1+YaBTtOskC4Whq9TP2J+dNIgxsaF5EFZQJr8Xv+lY9lu0CruYOh9nTNF9x3nubxJgaSid/7yRPfAGnsJRiknB5bsrCvgsFQFjJVs='; - let decode_content = ''; - - function aes_decrypt(data) { - let key = CryptoJS.enc.Hex.parse("686A64686E780A0A0A0A0A0A0A0A0A0A"); - let iv = CryptoJS.enc.Hex.parse("647A797964730A0A0A0A0A0A0A0A0A0A"); - let encrypted = CryptoJS.AES.decrypt({ - ciphertext: CryptoJS.enc.Base64.parse(data) - }, key, { - iv: iv, - mode: CryptoJS.mode.CBC, - padding: CryptoJS.pad.Pkcs7 - }).toString(CryptoJS.enc.Utf8); - return encrypted; - } - - let error_log = false; - - function logger(text) { - if (error_log) { - log(text); - } - } - - let decode_funcs = [ - (text) => { - try { - return ungzip(text) - } catch (e) { - logger('非gzip加密'); - return '' - } - }, - (text) => { - try { - return base64Decode(text) - } catch (e) { - logger('非b64加密'); - return '' - } - }, - (text) => { - try { - return aes_decrypt(text) - } catch (e) { - logger('非aes加密'); - return '' - } - }, - (text) => { - try { - return RSA.decode(text, rsa_private_key, null) - } catch (e) { - logger('非rsa加密'); - return '' - } - }, - // (text)=>{try {return NODERSA.decryptRSAWithPrivateKey(text, RSA.getPrivateKey(rsa_private_key).replace(/RSA /g,''), {options: {environment: "browser", encryptionScheme: 'pkcs1',b:'1024'}});} catch (e) {log(e.message);return ''}}, - ] - let func_index = 0 - while (!current_match.test(decode_content)) { - decode_content = decode_funcs[func_index](js_code); - func_index++; - if (func_index >= decode_funcs.length) { - break; - } - } - return decode_content -} - -/** - * 执行main函数 - * 示例 function main(text){return gzip(text)} - * @param main_func_code - * @param arg - */ -function runMain(main_func_code, arg) { - let mainFunc = function() { - return '' - }; - try { - eval(main_func_code + '\nmainFunc=main;'); - return mainFunc(arg); - } catch (e) { - log(`执行main_funct发生了错误:${e.message}`); - return '' - } -} - -/** - * js源预处理特定返回对象中的函数 - * @param ext - */ -function init(ext) { - console.log('init'); - // init前重置rule和fetch_params - rule = {}; - rule_fetch_params = {}; - fetch_params = null; - try { - // make shared jsContext happy muban不能import,不然会造成换源继承后变量被篡改 - // if (typeof (globalThis.mubanJs) === 'undefined') { - // let mubanJs = request('https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/js/模板.js', { 'User-Agent': MOBILE_UA }); - // mubanJs = mubanJs.replace('export default', '(function() {return muban;}()) // export default'); - // // console.log(mubanJs); - // globalThis.mubanJs = mubanJs; - // } - // let muban = eval(globalThis.mubanJs); - - let muban = 模板.getMubans(); - // print(typeof (muban)); - // print(muban); - if (typeof ext == 'object') { - rule = ext; - } else if (typeof ext == 'string') { - let is_file = ext.startsWith('file://'); - if (ext.startsWith('http') || is_file) { - let query = getQuery(ext); // 获取链接传参 - if (is_file) { - ext = ext.split('?')[0]; - } - let js = request(ext, { - 'method': 'GET' - }); - if (js) { - js = getOriginalJs(js); - // eval(js.replace('var rule', 'rule')); - // eval("(function(){'use strict';"+js.replace('var rule', 'rule')+"})()"); - eval("(function(){" + js.replace('var rule', 'rule') + "})()"); - } - if (query.type === 'url' && query.params) { // 指定type是链接并且传了params支持简写如 ./xx.json - if (is_file && /^http/.test(query.params)) { - rule.params = query.params; - } else { - rule.params = urljoin(ext, query.params); - } - } else if (query.params) { // 没指定type直接视为字符串 - rule.params = query.params; - } - } else { - ext = getOriginalJs(ext); - // eval(ext.replace('var rule', 'rule')); - // eval("(function(){'use strict';"+ext.replace('var rule', 'rule')+"})()"); - eval("(function(){" + ext.replace('var rule', 'rule') + "})()"); - } - } else { - console.log(`规则加载失败,不支持的规则类型:${typeof ext}`); - return - } - rule.host = (rule.host || '').rstrip('/'); - HOST = rule.host; - if (rule.hostJs) { - console.log(`检测到hostJs,准备执行...`); - try { - eval(rule.hostJs); - rule.host = HOST.rstrip('/'); - } catch (e) { - console.log(`执行${rule.hostJs}获取host发生错误:${e.message}`); - } - } - if (rule['模板'] === '自动') { - try { - let host_headers = rule['headers'] || {}; - let host_html = getCode(HOST, { - headers: host_headers - }); - let match_muban = ''; - let muban_keys = Object.keys(muban).filter(it => !/默认|短视2|采集1/.test(it)); - for (let muban_key of muban_keys) { - try { - let host_data = JSON.parse(home({}, host_html, muban[muban_key].class_parse)); - if (host_data.class && host_data.class.length > 0) { - match_muban = muban_key; - console.log(`自动匹配模板:【${muban_key}】`); - break; - } - } catch (e) { - // @ts-ignore - console.log(`自动匹配模板:【${muban_key}】错误:${e.message}`); - } - } - if (match_muban) { - muban['自动'] = muban[match_muban]; - if (rule['模板修改'] && rule['模板修改'].startsWith('js:')) { - // 模板修改:$js.toString(()=>{ muban.自动.class_parse = ''}); - eval(rule['模板修改'].replace('js:', '').trim()); - } - } else { - delete rule['模板'] - } - } catch (e) { - delete rule['模板'] - } - } - if (rule.模板 && muban.hasOwnProperty(rule.模板)) { - print('继承模板:' + rule.模板); - rule = Object.assign(muban[rule.模板], rule); - } - /** 处理一下 rule规则关键字段没传递的情况 **/ - let rule_cate_excludes = (rule.cate_exclude || '').split('|').filter(it => it.trim()); - let rule_tab_excludes = (rule.tab_exclude || '').split('|').filter(it => it.trim()); - rule_cate_excludes = rule_cate_excludes.concat(CATE_EXCLUDE.split('|').filter(it => it.trim())); - rule_tab_excludes = rule_tab_excludes.concat(TAB_EXCLUDE.split('|').filter(it => it.trim())); - - rule.cate_exclude = rule_cate_excludes.join('|'); - rule.tab_exclude = rule_tab_excludes.join('|'); - - rule.类型 = rule.类型 || '影视'; // 影视|听书|漫画|小说 - rule.url = rule.url || ''; - rule.double = rule.double || false; - rule.homeUrl = rule.homeUrl || ''; - rule.detailUrl = rule.detailUrl || ''; - rule.searchUrl = rule.searchUrl || ''; - rule.homeUrl = rule.host && rule.homeUrl ? urljoin(rule.host, rule.homeUrl) : (rule.homeUrl || rule.host); - rule.homeUrl = cheerio.jinja2(rule.homeUrl, { - rule: rule - }); - rule.detailUrl = rule.host && rule.detailUrl ? urljoin(rule.host, rule.detailUrl) : rule.detailUrl; - rule.二级访问前 = rule.二级访问前 || ''; - if (rule.url.includes('[') && rule.url.includes(']')) { - let u1 = rule.url.split('[')[0] - let u2 = rule.url.split('[')[1].split(']')[0] - rule.url = rule.host && rule.url ? urljoin(rule.host, u1) + '[' + urljoin(rule.host, u2) + ']' : rule.url; - } else { - rule.url = rule.host && rule.url ? urljoin(rule.host, rule.url) : rule.url; - } - if (rule.searchUrl.includes('[') && rule.searchUrl.includes(']') && !rule.searchUrl.includes('#')) { - let u1 = rule.searchUrl.split('[')[0] - let u2 = rule.searchUrl.split('[')[1].split(']')[0] - rule.searchUrl = rule.host && rule.searchUrl ? urljoin(rule.host, u1) + '[' + urljoin(rule.host, u2) + ']' : rule.searchUrl; - } else { - rule.searchUrl = rule.host && rule.searchUrl ? urljoin(rule.host, rule.searchUrl) : rule.searchUrl; - } - - rule.timeout = rule.timeout || 5000; - rule.encoding = rule.编码 || rule.encoding || 'utf-8'; - rule.search_encoding = rule.搜索编码 || rule.search_encoding || ''; - rule.图片来源 = rule.图片来源 || ''; - rule.图片替换 = rule.图片替换 || ''; - rule.play_json = rule.hasOwnProperty('play_json') ? rule.play_json : []; - rule.pagecount = rule.hasOwnProperty('pagecount') ? rule.pagecount : {}; - rule.proxy_rule = rule.hasOwnProperty('proxy_rule') ? rule.proxy_rule : ''; - if (!rule.hasOwnProperty('sniffer')) { // 默认关闭辅助嗅探 - rule.sniffer = false; - } - rule.sniffer = rule.hasOwnProperty('sniffer') ? rule.sniffer : ''; - rule.sniffer = !!(rule.sniffer && rule.sniffer !== '0' && rule.sniffer !== 'false'); - - rule.isVideo = rule.hasOwnProperty('isVideo') ? rule.isVideo : ''; - if (rule.sniffer && !rule.isVideo) { // 默认辅助嗅探自动增强嗅探规则 - rule.isVideo = 'http((?!http).){12,}?\\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg|m4a|mp3)\\?.*|http((?!http).){12,}\\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg|m4a|mp3)|http((?!http).)*?video/tos*|http((?!http).)*?obj/tos*'; - } - - rule.tab_remove = rule.hasOwnProperty('tab_remove') ? rule.tab_remove : []; - rule.tab_order = rule.hasOwnProperty('tab_order') ? rule.tab_order : []; - rule.tab_rename = rule.hasOwnProperty('tab_rename') ? rule.tab_rename : {}; - - if (rule.headers && typeof(rule.headers) === 'object') { - try { - let header_keys = Object.keys(rule.headers); - for (let k of header_keys) { - if (k.toLowerCase() === 'user-agent') { - let v = rule.headers[k]; - console.log(v); - if (['MOBILE_UA', 'PC_UA', 'UC_UA', 'IOS_UA', 'UA'].includes(v)) { - rule.headers[k] = eval(v); - } - } else if (k.toLowerCase() === 'cookie') { - let v = rule.headers[k]; - if (v && v.startsWith('http')) { - console.log(v); - try { - v = fetch(v); - console.log(v); - rule.headers[k] = v; - } catch (e) { - console.log(`从${v}获取cookie发生错误:${e.message}`); - } - } - } - } - } catch (e) { - console.log(`处理headers发生错误:${e.message}`); - } - } else { - rule.headers = {} - } - oheaders = deepCopy(rule.headers); - rule_fetch_params = { - 'headers': rule.headers, - 'timeout': rule.timeout, - 'encoding': rule.encoding - }; - RKEY = typeof(key) !== 'undefined' && key ? key : 'drpy_' + (rule.title || rule.host); - pre(); // 预处理 - init_test(); - } catch (e) { - console.log(`init_test发生错误:${e.message}`); - } -} - -let homeHtmlCache = undefined; - -/** - * js源获取首页分类和筛选特定返回对象中的函数 - * @param filter 筛选条件字典对象 - * @param home_html 指定了源码。无需内部再请求 - * @param class_parse 自动匹配传入的模板的动态分类 - * @returns {string} - */ -function home(filter, home_html, class_parse) { - console.log("home"); - home_html = home_html || ''; - class_parse = class_parse || ''; - if (typeof(rule.filter) === 'string' && rule.filter.trim().length > 0) { - try { - let filter_json = ungzip(rule.filter.trim()); - rule.filter = JSON.parse(filter_json); - } catch (e) { - rule.filter = {}; - } - } - let homeObj = { - filter: rule.filter || false, - MY_URL: rule.homeUrl, - class_name: rule.class_name || '', - class_url: rule.class_url || '', - class_parse: class_parse || rule.class_parse || '', - cate_exclude: rule.cate_exclude, - home_html: home_html, - }; - return homeParse(homeObj); -} - -/** - * js源获取首页推荐数据列表特定返回对象中的函数 - * @param params - * @returns {string} - */ -function homeVod(params) { - console.log("homeVod"); - let homeVodObj = { - 推荐: rule.推荐, - double: rule.double, - homeUrl: rule.homeUrl, - detailUrl: rule.detailUrl - }; - return homeVodParse(homeVodObj) - // return "{}"; -} - -/** - * js源获取分类页一级数据列表特定返回对象中的函数 - * @param tid 分类id - * @param pg 页数 - * @param filter 当前选中的筛选条件 - * @param extend 扩展 - * @returns {string} - */ -function category(tid, pg, filter, extend) { - let cateObj = { - url: rule.url, - 一级: rule.一级, - tid: tid, - pg: parseInt(pg), - filter: filter, - extend: extend - }; - // console.log(JSON.stringify(extend)); - return categoryParse(cateObj) -} - -/** - * js源获取二级详情页数据特定返回对象中的函数 - * @param vod_url 一级列表中的vod_id或者是带分类的自拼接 vod_id 如 fyclass$vod_id - * @returns {string} - */ -function detail(vod_url) { - let orId = vod_url; - let fyclass = ''; - log('orId:' + orId); - if (vod_url.indexOf('$') > -1) { - let tmp = vod_url.split('$'); - fyclass = tmp[0]; - vod_url = tmp[1]; - } - let detailUrl = vod_url.split('@@')[0]; - let url; - if (!detailUrl.startsWith('http') && !detailUrl.includes('/')) { - url = rule.detailUrl.replaceAll('fyid', detailUrl).replaceAll('fyclass', fyclass); - } else if (detailUrl.includes('/')) { - url = urljoin(rule.homeUrl, detailUrl); - } else { - url = detailUrl - } - let detailObj = { - orId: orId, - url: url, - 二级: rule.二级, - 二级访问前: rule.二级访问前, - detailUrl: detailUrl, - fyclass: fyclass, - tab_exclude: rule.tab_exclude, - } - return detailParse(detailObj) -} - -/** - * js源选集按钮播放点击事件特定返回对象中的函数 - * @param flag 线路名 - * @param id 播放按钮的链接 - * @param flags 全局配置的flags是否需要解析的标识列表 - * @returns {string} - */ -function play(flag, id, flags) { - let playObj = { - url: id, - flag: flag, - flags: flags - } - return playParse(playObj); -} - -/** - * js源搜索返回的数据列表特定返回对象中的函数 - * @param wd 搜索关键字 - * @param quick 是否来自快速搜索 - * @returns {string} - */ -function search(wd, quick, pg) { - if (rule.search_encoding) { - if (rule.search_encoding.toLowerCase() !== 'utf-8') { - // 按搜索编码进行编码 - wd = encodeStr(wd, rule.search_encoding); - } - } else if (rule.encoding && rule.encoding.toLowerCase() !== 'utf-8') { - // 按全局编码进行编码 - wd = encodeStr(wd, rule.encoding); - } - let searchObj = { - searchUrl: rule.searchUrl, - 搜索: rule.搜索, - wd: wd, - //pg: pg, - pg: pg || 1, - quick: quick, - }; - // console.log(JSON.stringify(searchObj)); - return searchParse(searchObj) -} - -/** - * js源本地代理返回的数据列表特定返回对象中的函数 - * @param params 代理链接参数比如 /proxy?do=js&url=https://wwww.baidu.com => params就是 {do:'js','url':'https://wwww.baidu.com'} - * @returns {*} - */ -function proxy(params) { - if (rule.proxy_rule && rule.proxy_rule.trim()) { - rule.proxy_rule = rule.proxy_rule.trim(); - } - if (rule.proxy_rule.startsWith('js:')) { - rule.proxy_rule = rule.proxy_rule.replace('js:', ''); - } - let proxyObj = { - params: params, - proxy_rule: rule.proxy_rule - }; - return proxyParse(proxyObj) -} - - -/** - * 是否启用辅助嗅探功能,启用后可以根据isVideo函数进行手动识别为视频的链接地址。默认为false - * @returns {*|boolean|boolean} - */ -function sniffer() { - let enable_sniffer = rule.sniffer || false; - if (enable_sniffer) { - // log('准备执行辅助嗅探代理规则:\n'+rule.isVideo); - log('开始执行辅助嗅探代理规则...'); - } - return enable_sniffer -} - -/** - * 启用辅助嗅探功能后根据次函数返回的值识别地址是否为视频,返回true/false - * @param url - */ -function isVideo(url) { - let t = 0; - let is_video; - if (rule.isVideo && rule.isVideo.trim()) { - is_video = rule.isVideo.trim(); - } - if (is_video.startsWith('js:')) { - is_video = is_video.replace('js:', ''); - t = 1; - } - let isVideoObj = { - url: url, - isVideo: is_video, - t: t, - }; - let result = isVideoParse(isVideoObj); - if (result) { - log('成功执行辅助嗅探规则并检测到视频地址:\n' + rule.isVideo); - } - return result -} - -/** - * 获取规则 - * @returns {{}} - */ -function getRule(key) { - return key ? rule[key] || '' : rule -} - -/** - * 深拷贝一个对象 - * @param _obj - * @returns {any} - */ -function deepCopy(_obj) { - return JSON.parse(JSON.stringify(_obj)) -} - -//正则matchAll -function matchesAll(str, pattern, flatten) { - if (!pattern.global) { - pattern = new RegExp(pattern.source, "g" + (pattern.ignoreCase ? "i" : "") + (pattern.multiline ? "m" : "")); - } - var matches = []; - var match; - while ((match = pattern.exec(str)) !== null) { - matches.push(match); - } - return flatten ? matches.flat() : matches; -} - -//文本扩展 -function stringUtils() { - Object.defineProperties(String.prototype, { - replaceX: { - value: function(regex, replacement) { - let matches = matchesAll(this, regex, true); - if (matches && matches.length > 1) { - const hasCaptureGroup = /\$\d/.test(replacement); - if (hasCaptureGroup) { - return this.replace(regex, (m) => m.replace(regex, replacement)); - } else { - return this.replace(regex, (m, p1) => m.replace(p1, replacement)); - } - } - return this.replace(regex, replacement); - }, - configurable: true, - enumerable: false, - writable: true - }, - parseX: { - get: function() { - try { - //console.log(typeof this); - return JSON.parse(this); - } catch (e) { - console.log(e.message); - return this.startsWith("[") ? [] : {}; - } - }, - configurable: true, - enumerable: false, - } - }); -} - -//正则裁切 -function cut(text, start, end, method, All) { - let result = ""; - let c = (t, s, e) => { - let result = ""; - let rs = []; - let results = []; - try { - let lr = new RegExp(String.raw`${s}`.toString()); - let rr = new RegExp(String.raw`${e}`.toString()); - const segments = t.split(lr); - if (segments.length < 2) return ''; - let cutSegments = segments.slice(1).map(segment => { - let splitSegment = segment.split(rr); - //log(splitSegment) - return splitSegment.length < 2 ? undefined : splitSegment[0] + e; - }).filter(f => f); - //log(cutSegments.at(-1)) - if (All) { - return `[${cutSegments.join(',')}]`; - } else { - return cutSegments[0]; - } - } catch (e) { - console.log(`Error cutting text:${e.message}`); - } - return result; - } - result = c(text, start, end); - stringUtils(); - if (method && typeof method === "function") { - result = method(result); - } - //console.log(result); - return result -} - -function DRPY() { //导出函数 - return { - runMain: runMain, - getRule: getRule, - init: init, - home: home, - homeVod: homeVod, - category: category, - detail: detail, - play: play, - search: search, - proxy: proxy, - sniffer: sniffer, - isVideo: isVideo, - fixAdM3u8Ai: fixAdM3u8Ai, - } -} - -/** - * 导出函数无法简写成下面的形式: - - export default { - ...DRPY, - DRPY - } - - */ - -// 导出函数对象 -export default { - runMain, - getRule, - init, - home, - homeVod, - category, - detail, - play, - search, - proxy, - sniffer, - isVideo, - fixAdM3u8Ai, - DRPY, -} \ No newline at end of file diff --git a/潇洒/js/gbk.js b/潇洒/js/gbk.js deleted file mode 100644 index c49b20f..0000000 --- a/潇洒/js/gbk.js +++ /dev/null @@ -1,69 +0,0 @@ -/*** - * gbk编码解码函数 - * strTool = gbkTool() strTool.encode(key) - * @returns {{encode: (function(*): *), decode: (function(*): *)}} - */ -export function gbkTool() { - var data = function(zipData) { - var re = zipData - .replace(/#(\d+)\$/g, function(a, b) { - return Array(+b + 3).join('#'); - }) - .replace(/#/g, '####') - .replace(/(\w\w):([\w#]+)(?:,|$)/g, function(a, hd, dt) { - return dt.replace(/../g, function(a) { - if (a != '##') { - return hd + a; - } else { - return a; - } - }); - }); - return re; - }('4e:020405060f12171f20212326292e2f313335373c40414244464a5155575a5b6263646567686a6b6c6d6e6f727475767778797a7b7c7d7f808182838485878a#909697999c9d9ea3aaafb0b1b4b6b7b8b9bcbdbec8cccfd0d2dadbdce0e2e6e7e9edeeeff1f4f8f9fafcfe,4f:00020304050607080b0c12131415161c1d212328292c2d2e31333537393b3e3f40414244454748494a4b4c525456616266686a6b6d6e7172757778797a7d8081828586878a8c8e909293959698999a9c9e9fa1a2a4abadb0b1b2b3b4b6b7b8b9babbbcbdbec0c1c2c6c7c8c9cbcccdd2d3d4d5d6d9dbe0e2e4e5e7ebecf0f2f4f5f6f7f9fbfcfdff,50:000102030405060708090a#0b0e1011131516171b1d1e20222324272b2f303132333435363738393b3d3f404142444546494a4b4d5051525354565758595b5d5e5f6061626364666768696a6b6d6e6f70717273747578797a7c7d818283848687898a8b8c8e8f909192939495969798999a9b9c9d9e9fa0a1a2a4a6aaabadaeafb0b1b3b4b5b6b7b8b9bcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdced0d1d2d3d4d5d7d8d9dbdcdddedfe0e1e2e3e4e5e8e9eaebeff0f1f2f4f6f7f8f9fafcfdfeff,51:00010203040508#090a0c0d0e0f1011131415161718191a1b1c1d1e1f2022232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e42474a4c4e4f5052535758595b5d5e5f606163646667696a6f727a7e7f838486878a8b8e8f90919394989a9d9e9fa1a3a6a7a8a9aaadaeb4b8b9babebfc1c2c3c5c8cacdced0d2d3d4d5d6d7d8d9dadcdedfe2e3e5e6e7e8e9eaeceef1f2f4f7fe,52:0405090b0c0f101314151c1e1f2122232526272a2c2f313234353c3e4445464748494b4e4f5253555758#595a5b5d5f6062636466686b6c6d6e7071737475767778797a7b7c7e808384858687898a8b8c8d8e8f91929495969798999a9ca4a5a6a7aeafb0b4b5b6b7b8b9babbbcbdc0c1c2c4c5c6c8cacccdcecfd1d3d4d5d7d9dadbdcdddee0e1e2e3e5e6e7e8e9eaebecedeeeff1f2f3f4f5f6f7f8fbfcfd,53:0102030407090a0b0c0e11121314181b1c1e1f2224252728292b2c2d2f3031323334353637383c3d404244464b4c4d505458595b5d65686a6c6d7276797b7c7d7e80818387888a8e8f#90919293949697999b9c9ea0a1a4a7aaabacadafb0b1b2b3b4b5b7b8b9babcbdbec0c3c4c5c6c7cecfd0d2d3d5dadcdddee1e2e7f4fafeff,54:000205070b1418191a1c2224252a303336373a3d3f4142444547494c4d4e4f515a5d5e5f6061636567696a6b6c6d6e6f7074797a7e7f8183858788898a8d919397989c9e9fa0a1a2a5aeb0b2b5b6b7b9babcbec3c5cacbd6d8dbe0e1e2e3e4ebeceff0f1f4f5f6f7f8f9fbfe,55:0002030405080a0b0c0d0e121315161718191a1c1d1e1f212526#28292b2d3234353638393a3b3d40424547484b4c4d4e4f515253545758595a5b5d5e5f60626368696b6f7071727374797a7d7f85868c8d8e9092939596979a9b9ea0a1a2a3a4a5a6a8a9aaabacadaeafb0b2b4b6b8babcbfc0c1c2c3c6c7c8cacbcecfd0d5d7d8d9dadbdee0e2e7e9edeef0f1f4f6f8f9fafbfcff,56:0203040506070a0b0d1011121314151617191a1c1d202122252628292a2b2e2f30333537383a3c3d3e404142434445464748494a4b4f5051525355565a5b5d5e5f6061#636566676d6e6f70727374757778797a7d7e7f80818283848788898a8b8c8d9091929495969798999a9b9c9d9e9fa0a1a2a4a5a6a7a8a9aaabacadaeb0b1b2b3b4b5b6b8b9babbbdbebfc0c1c2c3c4c5c6c7c8c9cbcccdcecfd0d1d2d3d5d6d8d9dce3e5e6e7e8e9eaeceeeff2f3f6f7f8fbfc,57:00010205070b0c0d0e0f101112131415161718191a1b1d1e202122242526272b313234353637383c3d3f414344454648494b52535455565859626365676c6e707172747578797a7d7e7f80#818788898a8d8e8f90919495969798999a9c9d9e9fa5a8aaacafb0b1b3b5b6b7b9babbbcbdbebfc0c1c4c5c6c7c8c9cacccdd0d1d3d6d7dbdcdee1e2e3e5e6e7e8e9eaebeceef0f1f2f3f5f6f7fbfcfeff,58:0103040508090a0c0e0f101213141617181a1b1c1d1f222325262728292b2c2d2e2f31323334363738393a3b3c3d3e3f4041424345464748494a4b4e4f505253555657595a5b5c5d5f6061626364666768696a6d6e6f707172737475767778797a7b7c7d7f82848687888a8b8c#8d8e8f909194959697989b9c9da0a1a2a3a4a5a6a7aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbdbebfc0c2c3c4c6c7c8c9cacbcccdcecfd0d2d3d4d6d7d8d9dadbdcdddedfe0e1e2e3e5e6e7e8e9eaedeff1f2f4f5f7f8fafbfcfdfeff,59:000103050608090a0b0c0e1011121317181b1d1e2021222326282c30323335363b3d3e3f404345464a4c4d505253595b5c5d5e5f616364666768696a6b6c6d6e6f70717275777a7b7c7e7f8085898b8c8e8f90919495989a9b9c9d9fa0a1a2a6#a7acadb0b1b3b4b5b6b7b8babcbdbfc0c1c2c3c4c5c7c8c9cccdcecfd5d6d9dbdedfe0e1e2e4e6e7e9eaebedeeeff0f1f2f3f4f5f6f7f8fafcfdfe,5a:00020a0b0d0e0f101214151617191a1b1d1e2122242627282a2b2c2d2e2f3033353738393a3b3d3e3f414243444547484b4c4d4e4f5051525354565758595b5c5d5e5f60616364656668696b6c6d6e6f7071727378797b7c7d7e808182838485868788898a8b8c8d8e8f9091939495969798999c9d9e9fa0a1a2a3a4a5a6a7a8a9abac#adaeafb0b1b4b6b7b9babbbcbdbfc0c3c4c5c6c7c8cacbcdcecfd0d1d3d5d7d9dadbdddedfe2e4e5e7e8eaecedeeeff0f2f3f4f5f6f7f8f9fafbfcfdfeff,5b:0001020304050607080a0b0c0d0e0f10111213141518191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303133353638393a3b3c3d3e3f4142434445464748494a4b4c4d4e4f52565e606167686b6d6e6f7274767778797b7c7e7f82868a8d8e90919294969fa7a8a9acadaeafb1b2b7babbbcc0c1c3c8c9cacbcdcecf#d1d4d5d6d7d8d9dadbdce0e2e3e6e7e9eaebecedeff1f2f3f4f5f6f7fdfe,5c:0002030507080b0c0d0e10121317191b1e1f2021232628292a2b2d2e2f303233353637434446474c4d5253545657585a5b5c5d5f62646768696a6b6c6d70727374757677787b7c7d7e808384858687898a8b8e8f9293959d9e9fa0a1a4a5a6a7a8aaaeafb0b2b4b6b9babbbcbec0c2c3c5c6c7c8c9cacccdcecfd0d1d3d4d5d6d7d8dadbdcdddedfe0e2e3e7e9ebeceeeff1f2f3f4f5f6f7f8f9fafcfdfeff,5d:00#01040508090a0b0c0d0f10111213151718191a1c1d1f2021222325282a2b2c2f3031323335363738393a3b3c3f4041424344454648494d4e4f5051525354555657595a5c5e5f6061626364656667686a6d6e7071727375767778797a7b7c7d7e7f8081838485868788898a8b8c8d8e8f9091929394959697989a9b9c9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b8b9babbbcbdbebfc0c1c2c3c4c6c7c8c9cacbcccecfd0d1d2d3d4d5d6d7d8d9dadcdfe0e3e4eaeced#f0f5f6f8f9fafbfcff,5e:000407090a0b0d0e1213171e1f20212223242528292a2b2c2f303233343536393a3e3f404143464748494a4b4d4e4f50515253565758595a5c5d5f60636465666768696a6b6c6d6e6f70717577797e8182838588898c8d8e92989b9da1a2a3a4a8a9aaabacaeafb0b1b2b4babbbcbdbfc0c1c2c3c4c5c6c7c8cbcccdcecfd0d4d5d7d8d9dadcdddedfe0e1e2e3e4e5e6e7e9ebecedeeeff0f1f2f3f5f8f9fbfcfd,5f:050607090c0d0e10121416191a1c1d1e21222324#282b2c2e30323334353637383b3d3e3f4142434445464748494a4b4c4d4e4f5154595a5b5c5e5f60636567686b6e6f72747576787a7d7e7f83868d8e8f919394969a9b9d9e9fa0a2a3a4a5a6a7a9abacafb0b1b2b3b4b6b8b9babbbebfc0c1c2c7c8cacbced3d4d5dadbdcdedfe2e3e5e6e8e9eceff0f2f3f4f6f7f9fafc,60:0708090b0c10111317181a1e1f2223242c2d2e3031323334363738393a3d3e404445464748494a4c4e4f5153545657585b5c5e5f606165666e71727475777e80#8182858687888a8b8e8f909193959798999c9ea1a2a4a5a7a9aaaeb0b3b5b6b7b9babdbebfc0c1c2c3c4c7c8c9cccdcecfd0d2d3d4d6d7d9dbdee1e2e3e4e5eaf1f2f5f7f8fbfcfdfeff,61:02030405070a0b0c1011121314161718191b1c1d1e21222528292a2c2d2e2f303132333435363738393a3b3c3d3e4041424344454647494b4d4f50525354565758595a5b5c5e5f606163646566696a6b6c6d6e6f717273747678797a7b7c7d7e7f808182838485868788898a8c8d8f9091929395#969798999a9b9c9e9fa0a1a2a3a4a5a6aaabadaeafb0b1b2b3b4b5b6b8b9babbbcbdbfc0c1c3c4c5c6c7c9cccdcecfd0d3d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e7e8e9eaebecedeeeff0f1f2f3f4f6f7f8f9fafbfcfdfe,62:00010203040507091314191c1d1e2023262728292b2d2f303132353638393a3b3c424445464a4f50555657595a5c5d5e5f6061626465687172747577787a7b7d818283858687888b8c8d8e8f9094999c9d9ea3a6a7a9aaadaeafb0b2b3b4b6b7b8babec0c1#c3cbcfd1d5dddee0e1e4eaebf0f2f5f8f9fafb,63:00030405060a0b0c0d0f10121314151718191c2627292c2d2e30313334353637383b3c3e3f40414447484a51525354565758595a5b5c5d60646566686a6b6c6f707273747578797c7d7e7f81838485868b8d9193949597999a9b9c9d9e9fa1a4a6abafb1b2b5b6b9bbbdbfc0c1c2c3c5c7c8cacbccd1d3d4d5d7d8d9dadbdcdddfe2e4e5e6e7e8ebeceeeff0f1f3f5f7f9fafbfcfe,64:0304060708090a0d0e111215161718191a1d1f222324#252728292b2e2f3031323335363738393b3c3e404243494b4c4d4e4f505153555657595a5b5c5d5f60616263646566686a6b6c6e6f70717273747576777b7c7d7e7f8081838688898a8b8c8d8e8f90939497989a9b9c9d9fa0a1a2a3a5a6a7a8aaabafb1b2b3b4b6b9bbbdbebfc1c3c4c6c7c8c9cacbcccfd1d3d4d5d6d9dadbdcdddfe0e1e3e5e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,65:01020304050607080a0b0c0d0e0f10111314151617191a1b1c1d1e1f2021#222324262728292a2c2d30313233373a3c3d404142434446474a4b4d4e5052535457585a5c5f606164656768696a6d6e6f7173757678797a7b7c7d7e7f8081828384858688898a8d8e8f92949596989a9d9ea0a2a3a6a8aaacaeb1b2b3b4b5b6b7b8babbbebfc0c2c7c8c9cacdd0d1d3d4d5d8d9dadbdcdddedfe1e3e4eaebf2f3f4f5f8f9fbfcfdfeff,66:0104050708090b0d1011121617181a1b1c1e2122232426292a2b2c2e3032333738393a3b3d3f40424445464748494a4d4e505158#595b5c5d5e6062636567696a6b6c6d7172737578797b7c7d7f808183858688898a8b8d8e8f909293949598999a9b9c9e9fa0a1a2a3a4a5a6a9aaabacadafb0b1b2b3b5b6b7b8babbbcbdbfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8dadedfe0e1e2e3e4e5e7e8eaebecedeeeff1f5f6f8fafbfd,67:010203040506070c0e0f1112131618191a1c1e20212223242527292e303233363738393b3c3e3f414445474a4b4d5254555758595a5b5d62636466676b6c6e717476#78797a7b7d8082838586888a8c8d8e8f9192939496999b9fa0a1a4a6a9acaeb1b2b4b9babbbcbdbebfc0c2c5c6c7c8c9cacbcccdced5d6d7dbdfe1e3e4e6e7e8eaebedeef2f5f6f7f8f9fafbfcfe,68:01020304060d1012141518191a1b1c1e1f20222324252627282b2c2d2e2f30313435363a3b3f474b4d4f52565758595a5b5c5d5e5f6a6c6d6e6f707172737578797a7b7c7d7e7f8082848788898a8b8c8d8e90919294959698999a9b9c9d9e9fa0a1a3a4a5a9aaabacaeb1b2b4b6b7b8#b9babbbcbdbebfc1c3c4c5c6c7c8cacccecfd0d1d3d4d6d7d9dbdcdddedfe1e2e4e5e6e7e8e9eaebecedeff2f3f4f6f7f8fbfdfeff,69:00020304060708090a0c0f11131415161718191a1b1c1d1e21222325262728292a2b2c2e2f313233353637383a3b3c3e4041434445464748494a4b4c4d4e4f50515253555658595b5c5f616264656768696a6c6d6f7072737475767a7b7d7e7f8183858a8b8c8e8f909192939697999a9d9e9fa0a1a2a3a4a5a6a9aaacaeafb0b2b3b5b6b8b9babcbd#bebfc0c2c3c4c5c6c7c8c9cbcdcfd1d2d3d5d6d7d8d9dadcdddee1e2e3e4e5e6e7e8e9eaebeceeeff0f1f3f4f5f6f7f8f9fafbfcfe,6a:000102030405060708090b0c0d0e0f10111213141516191a1b1c1d1e20222324252627292b2c2d2e30323334363738393a3b3c3f40414243454648494a4b4c4d4e4f515253545556575a5c5d5e5f60626364666768696a6b6c6d6e6f70727374757677787a7b7d7e7f81828385868788898a8b8c8d8f929394959698999a9b9c9d9e9fa1a2a3a4a5a6#a7a8aaadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,6b:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f252628292a2b2c2d2e2f303133343536383b3c3d3f4041424445484a4b4d4e4f5051525354555657585a5b5c5d5e5f606168696b6c6d6e6f7071727374757677787a7d7e7f808588#8c8e8f909194959798999c9d9e9fa0a2a3a4a5a6a7a8a9abacadaeafb0b1b2b6b8b9babbbcbdbec0c3c4c6c7c8c9caccced0d1d8dadcdddedfe0e2e3e4e5e6e7e8e9ecedeef0f1f2f4f6f7f8fafbfcfeff,6c:000102030408090a0b0c0e12171c1d1e2023252b2c2d31333637393a3b3c3e3f434445484b4c4d4e4f5152535658595a62636566676b6c6d6e6f71737577787a7b7c7f8084878a8b8d8e9192959697989a9c9d9ea0a2a8acafb0b4b5b6b7bac0c1c2c3c6c7c8cbcdcecfd1d2d8#d9dadcdddfe4e6e7e9ecedf2f4f9ff,6d:000203050608090a0d0f101113141516181c1d1f20212223242628292c2d2f30343637383a3f404244494c50555657585b5d5f6162646567686b6c6d707172737576797a7b7d7e7f8081838486878a8b8d8f9092969798999a9ca2a5acadb0b1b3b4b6b7b9babbbcbdbec1c2c3c8c9cacdcecfd0d2d3d4d5d7dadbdcdfe2e3e5e7e8e9eaedeff0f2f4f5f6f8fafdfeff,6e:0001020304060708090b0f12131518191b1c1e1f222627282a2c2e30313335#3637393b3c3d3e3f40414245464748494a4b4c4f5051525557595a5c5d5e606162636465666768696a6c6d6f707172737475767778797a7b7c7d8081828487888a8b8c8d8e91929394959697999a9b9d9ea0a1a3a4a6a8a9abacadaeb0b3b5b8b9bcbebfc0c3c4c5c6c8c9cacccdced0d2d6d8d9dbdcdde3e7eaebecedeeeff0f1f2f3f5f6f7f8fafbfcfdfeff,6f:000103040507080a0b0c0d0e101112161718191a1b1c1d1e1f212223252627282c2e303234353738393a3b3c3d3f404142#43444548494a4c4e4f5051525354555657595a5b5d5f60616364656768696a6b6c6f707173757677797b7d7e7f808182838586878a8b8f909192939495969798999a9b9d9e9fa0a2a3a4a5a6a8a9aaabacadaeafb0b1b2b4b5b7b8babbbcbdbebfc1c3c4c5c6c7c8cacbcccdcecfd0d3d4d5d6d7d8d9dadbdcdddfe2e3e4e5e6e7e8e9eaebecedf0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,70:000102030405060708090a0b0c0d0e0f1012131415161718191c1d1e1f2021222425262728292a#2b2c2d2e2f30313233343637383a3b3c3d3e3f404142434445464748494a4b4d4e505152535455565758595a5b5c5d5f606162636465666768696a6e7172737477797a7b7d818283848687888b8c8d8f90919397989a9b9e9fa0a1a2a3a4a5a6a7a8a9aab0b2b4b5b6babebfc4c5c6c7c9cbcccdcecfd0d1d2d3d4d5d6d7dadcdddee0e1e2e3e5eaeef0f1f2f3f4f5f6f8fafbfcfeff,71:0001020304050607080b0c0d0e0f111214171b1c1d1e1f2021222324252728292a2b2c2d2e323334#353738393a3b3c3d3e3f4041424344464748494b4d4f505152535455565758595a5b5d5f6061626365696a6b6c6d6f707174757677797b7c7e7f8081828385868788898b8c8d8e909192939596979a9b9c9d9ea1a2a3a4a5a6a7a9aaabadaeafb0b1b2b4b6b7b8babbbcbdbebfc0c1c2c4c5c6c7c8c9cacbcccdcfd0d1d2d3d6d7d8d9dadbdcdddedfe1e2e3e4e6e8e9eaebecedeff0f1f2f3f4f5f6f7f8fafbfcfdfeff,72:0001020304050708090a0b0c0d0e0f101112131415161718191a#1b1c1e1f2021222324252627292b2d2e2f3233343a3c3e40414243444546494a4b4e4f505153545557585a5c5e60636465686a6b6c6d707173747677787b7c7d828385868788898c8e9091939495969798999a9b9c9d9ea0a1a2a3a4a5a6a7a8a9aaabaeb1b2b3b5babbbcbdbebfc0c5c6c7c9cacbcccfd1d3d4d5d6d8dadb#95$,30:000102,00b702:c9c7,00a830:0305,2014ff5e20:162618191c1d,30:141508090a0b0c0d0e0f16171011,00:b1d7f7,22:362728110f2a2908371aa52520,231222:992b2e614c483d1d606e6f64651e3534,26:4240,00b020:3233,2103ff0400a4ff:e0e1,203000a7211626:0605,25:cbcfcec7c6a1a0b3b2,203b21:92909193,30:13#95$,21:70717273747576777879#4$,24:88898a8b8c8d8e8f909192939495969798999a9b7475767778797a7b7c7d7e7f808182838485868760616263646566676869##,32:20212223242526272829##,21:606162636465666768696a6b#97$,ff:010203e505060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5de3#95$,30:4142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f90919293#106$a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6#103$,03:9192939495969798999a9b9c9d9e9fa0a1a3a4a5a6a7a8a9#6$b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c3c4c5c6c7c8c9#5$,fe:3536393a3f403d3e41424344##3b3c373831#3334#104$,04:10111213141501161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f#13$30313233343551363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f#11$,02:cacbd9,20:13152535,21:050996979899,22:151f23526667bf,25:505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f7071727381828384858687#88898a8b8c8d8e8f939495bcbde2e3e4e5,2609229530:121d1e#9$,010100e101ce00e0011300e9011b00e8012b00ed01d000ec014d00f301d200f2016b00fa01d400f901:d6d8dadc,00:fcea,0251e7c701:4448,e7c802:61#2$,31:05060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212223242526272829#19$,30:212223242526272829,32a333:8e8f9c9d9ea1c4ced1d2d5,fe30ff:e2e4#,212132:31#,20:10#1$,30:fc9b9cfdfe069d9e,fe:494a4b4c4d4e4f50515254555657595a5b5c5d5e5f6061#626364656668696a6b,e7:e7e8e9eaebecedeeeff0f1f2f3,30:07#11$,25:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b#13$,72:dcdddfe2e3e4e5e6e7eaebf5f6f9fdfeff,73:00020405060708090b0c0d0f1011121418191a1f2023242627282d2f30323335363a3b3c3d404142434445464748#494a4b4c4e4f515354555658595a5b5c5d5e5f6162636465666768696a6b6e7071#92$72737475767778797a7b7c7d7f808182838586888a8c8d8f90929394959798999a9c9d9ea0a1a3a4a5a6a7a8aaacadb1b4b5b6b8b9bcbdbebfc1c3c4c5c6c7#cbccced2d3d4d5d6d7d8dadbdcdddfe1e2e3e4e6e8eaebeceeeff0f1f3f4f5f6f7#92$f8f9fafbfcfdfeff,74:0001020407080b0c0d0e1112131415161718191c1d1e1f2021232427292b2d2f31323738393a3b3d3e3f4042434445464748494a4b4c4d#4e4f505152535456585d606162636465666768696a6b6c6e6f717273747578797a#92$7b7c7d7f8284858688898a8c8d8f9192939495969798999a9b9d9fa0a1a2a3a4a5a6aaabacadaeafb0b1b2b3b4b5b6b7b8b9bbbcbdbebfc0c1c2c3c4c5c6c7#c8c9cacbcccdcecfd0d1d3d4d5d6d7d8d9dadbdddfe1e5e7e8e9eaebecedf0f1f2#92$f3f5f8f9fafbfcfdfe,75:0001020305060708090a0b0c0e1012141516171b1d1e202122232426272a2e3436393c3d3f414243444647494a4d5051525355565758#5d5e5f60616263646768696b6c6d6e6f7071737576777a7b7c7d7e808182848587#92$88898a8c8d8e909395989b9c9ea2a6a7a8a9aaadb6b7babbbfc0c1c6cbcccecfd0d1d3d7d9dadcdddfe0e1e5e9ecedeeeff2f3f5f6f7f8fafbfdfe,76:02040607#08090b0d0e0f11121314161a1c1d1e212327282c2e2f31323637393a3b3d414244#92$45464748494a4b4e4f50515253555758595a5b5d5f6061626465666768696a6c6d6e7071727374757677797a7c7f80818385898a8c8d8f9092949597989a9b#9c9d9e9fa0a1a2a3a5a6a7a8a9aaabacadafb0b3b5b6b7b8b9babbbcbdbec0c1c3,554a963f57c3632854ce550954c076:914c,853c77ee827e788d72319698978d6c285b894ffa630966975cb880fa684880ae660276ce51f9655671ac7ff1888450b2596561ca6fb382ad634c625253ed54277b06516b75a45df462d48dcb9776628a8019575d97387f627238767d67cf767e64464f708d2562dc7a17659173ed642c6273822c9881677f724862:6ecc,4f3474e3534a529e7eca90a65e2e6886699c81807ed168d278c5868c9551508d8c2482de80de53058912526576:c4c7c9cbccd3d5d9dadcdddee0e1e2e3e4e6e7e8e9eaebecedf0f3f5f6f7fafbfdff,77:00020305060a0c0e0f1011121314151617181b1c1d1e21232425272a2b#2c2e3031323334393b3d3e3f4244454648494a4b4c4d4e4f52535455565758595c,858496f94fdd582199715b9d62:b1a5,66b48c799c8d7206676f789160b253:5117,8f8880cc8d1d94a1500d72c8590760eb711988ab595482ef672c7b285d297ef7752d6cf58e668ff8903c9f3b6bd491197b145f7c78a784d6853d6b:d5d9d6,5e:0187,75f995ed655d5f:0ac5,8f9f58c181c2907f965b97ad8fb97f168d2c62414fbf53:d85e,8f:a8a9ab,904d68075f6a819888689cd6618b522b762a5f6c658c6fd26ee85bbe644851:75b0,67c44e1979c9997c70b377:5d5e5f606467696a6d6e6f7071727374757677787a7b7c818283868788898a8b8f90939495969798999a9b9c9d9ea1a3a4a6a8abadaeafb1b2b4b6b7b8b9ba#bcbec0c1c2c3c4c5c6c7c8c9cacbcccecfd0d1d2d3d4d5d6d8d9dadddedfe0e1e4,75c55e7673bb83e064ad62e894b56ce2535a52c3640f94c27b944f2f5e1b823681:168a,6e246cca9a736355535c54fa886557e04e0d5e036b657c3f90e8601664e6731c88c16750624d8d22776c8e2991c75f6983dc8521991053c286956b8b60:ede8,707f82:cd31,4ed36ca785cf64cd7cd969fd66f9834953957b564fa7518c6d4b5c428e6d63d253c983:2c36,67e578b4643d5bdf5c945dee8be762c667f48c7a640063ba8749998b8c177f2094f24ea7961098a4660c731677:e6e8eaeff0f1f2f4f5f7f9fafbfc,78:0304050607080a0b0e0f101315191b1e20212224282a2b2e2f31323335363d3f414243444648494a4b4d4f51535458595a#5b5c5e5f606162636465666768696f7071727374757678797a7b7d7e7f80818283,573a5c1d5e38957f507f80a05382655e7545553150218d856284949e671d56326f6e5de2543570928f66626f64a463a35f7b6f8890f481e38fb05c1866685ff16c8996488d81886c649179f057ce6a59621054484e587a0b60e96f848bda627f901e9a8b79e4540375f4630153196c608fdf5f1b9a70803b9f7f4f885c3a8d647fc565a570bd51:45b2,866b5d075ba062bd916c75748e0c7a2061017b794ec77ef877854e1181ed521d51fa6a7153a88e87950496cf6ec19664695a78:848586888a8b8f9092949596999d9ea0a2a4a6a8a9aaabacadaeafb5b6b7b8babbbcbdbfc0c2c3c4c6c7c8cccdcecfd1d2d3d6d7d8dadbdcdddedfe0e1e2e3#e4e5e6e7e9eaebedeeeff0f1f3f5f6f8f9fbfcfdfeff,79:00020304060708090a0b0c,784050a877d7641089e6590463e35ddd7a7f693d4f20823955984e3275ae7a975e:628a,95ef521b5439708a6376952457826625693f918755076df37eaf882262337ef075b5832878c196cc8f9e614874f78bcd6b64523a8d506b21806a847156f153064e:ce1b,51d17c97918b7c074fc38e7f7be17a9c64675d1450ac810676017cb96dec7fe067515b:58f8,78cb64:ae13,63:aa2b,9519642d8fbe7b5476296253592754466b7950a362345e266b864ee38d37888b5f85902e79:0d0e0f1011121415161718191a1b1c1d1f2021222325262728292a2b2c2d2e2f3031323335363738393d3f42434445474a4b4c4d4e4f505152545558596163#6466696a6b6c6e70717273747576797b7c7d7e7f8283868788898b8c8d8e909192,6020803d62c54e39535590f863b880c665e66c2e4f4660ee6de18bde5f3986cb5f536321515a83616863520063638e4850125c9b79775bfc52307a3b60bc905376d75f:b797,76848e6c706f767b7b4977aa51f3909358244f4e6ef48fea654c7b1b72c46da47fdf5ae162b55e95573084827b2c5e1d5f1f90127f1498a063826ec7789870b95178975b57ab75354f4375385e9760e659606dc06bbf788953fc96d551cb52016389540a94938c038dcc7239789f87768fed8c0d53e079:939495969798999b9c9d9e9fa0a1a2a3a4a5a6a8a9aaabacadaeafb0b1b2b4b5b6b7b8bcbfc2c4c5c7c8cacccecfd0d3d4d6d7d9dadbdcdddee0e1e2e5e8ea#eceef1f2f3f4f5f6f7f9fafcfeff,7a:0104050708090a0c0f10111213151618191b1c,4e0176ef53ee948998769f0e952d5b9a8ba24e:221c,51ac846361c252a8680b4f97606b51bb6d1e515c6296659796618c46901775d890fd77636bd272:8aec,8bfb583577798d4c675c9540809a5ea66e2159927aef77ed953b6bb565ad7f0e58065151961f5bf958a954288e726566987f56e4949d76fe9041638754c659:1a3a,579b8eb267358dfa8235524160f0581586fe5ce89e454fc4989d8bb95a2560765384627c904f9102997f6069800c513f80335c1499756d314e8c7a:1d1f21222425262728292a2b2c2d2e2f303132343536383a3e4041424344454748494a4b4c4d4e4f50525354555658595a5b5c5d5e5f606162636465666768#696a6b6c6d6e6f717273757b7c7d7e828587898a8b8c8e8f909394999a9b9ea1a2,8d3053d17f5a7b4f4f104e4f96006cd573d085e95e06756a7ffb6a0a77fe94927e4151e170e653cd8fd483038d2972af996d6cdb574a82b365b980aa623f963259a84eff8bbf7eba653e83f2975e556198de80a5532a8bfd542080ba5e9f6cb88d3982ac915a54296c1b52067eb7575f711a6c7e7c89594b4efd5fff61247caa4e305c0167ab87025cf0950b98ce75af70fd902251af7f1d8bbd594951e44f5b5426592b657780a45b7562:76c2,8f905e456c1f7b264f:0fd8,670d7a:a3a4a7a9aaabaeafb0b1b2b4b5b6b7b8b9babbbcbdbec0c1c2c3c4c5c6c7c8c9cacccdcecfd0d1d2d3d4d5d7d8dadbdcdde1e2e4e7e8e9eaebeceef0f1f2f3#f4f5f6f7f8fbfcfe,7b:0001020507090c0d0e1012131617181a1c1d1f21222327292d,6d:6eaa,798f88b15f17752b629a8f854fef91dc65a781:2f51,5e9c81508d74526f89868d4b590d50854ed8961c723681798d1f5bcc8ba3964459877f1a549056:760e,8be565396982949976d66e895e72751867:46d1,7aff809d8d76611f79c665628d635188521a94a27f38809b7eb25c976e2f67607bd9768b9ad8818f7f947cd5641e95507a3f54:4ae5,6b4c640162089e3d80f3759952729769845b683c86e496:0194,94ec4e2a54047ed968398ddf801566f45e9a7fb97b:2f303234353637393b3d3f404142434446484a4d4e535557595c5e5f61636465666768696a6b6c6d6f70737476787a7c7d7f81828384868788898a8b8c8e8f#9192939698999a9b9e9fa0a3a4a5aeafb0b2b3b5b6b7b9babbbcbdbebfc0c2c3c4,57c2803f68975de5653b529f606d9f9a4f9b8eac516c5bab5f135de96c5e62f18d21517194a952fe6c9f82df72d757a267848d2d591f8f9c83c754957b8d4f306cbd5b6459d19f1353e486ca9aa88c3780a16545987e56fa96c7522e74dc52505be1630289024e5662d0602a68fa51735b9851a089c27ba199867f5060ef704c8d2f51495e7f901b747089c4572d78455f529f9f95fa8f689b3c8be17678684267dc8d:ea35,523d8f8a6eda68cd950590ed56fd679c88f98fc754c87b:c5c8c9cacbcdcecfd0d2d4d5d6d7d8dbdcdedfe0e2e3e4e7e8e9ebecedeff0f2f3f4f5f6f8f9fafbfdff,7c:0001020304050608090a0d0e101112131415171819#1a1b1c1d1e20212223242528292b2c2d2e2f3031323334353637393a3b3c3d3e42,9ab85b696d776c264ea55bb39a87916361a890af97e9542b6db55bd251fd558a7f:55f0,64bc634d65f161be608d710a6c:5749,592f676d822a58d5568e8c6a6beb90dd597d801753f76d695475559d83:77cf,683879be548c4f55540876d28c8996026cb36db88d6b89109e648d3a563f9ed175d55f8872e0606854fc4ea86a2a886160528f7054c470d886799e3f6d2a5b8f5f187ea255894faf7334543c539a501954:0e7c,4e4e5ffd745a58f6846b80e1877472d07cca6e567c:434445464748494a4b4c4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f70717275767778797a7e7f8081828384858687#888a8b8c8d8e8f90939496999a9ba0a1a3a6a7a8a9abacadafb0b4b5b6b7b8babb,5f27864e552c62a44e926caa623782b154d7534e733e6ed1753b521253168bdd69d05f8a60006dee574f6b2273af68538fd87f13636260a3552475ea8c6271156da35ba65e7b8352614c9ec478fa87577c27768751f060f6714c66435e4c604d8c0e707063258f895fbd606286d456de6bc160946167534960e066668d3f79fd4f1a70e96c478b:b3f2,7ed88364660f5a5a9b426d:51f7,8c416d3b4f19706b83b7621660d1970d8d27797851fb57:3efa,673a75787a3d79ef7b957c:bfc0c2c3c4c6c9cbcecfd0d1d2d3d4d8dadbdddee1e2e3e4e5e6e7e9eaebecedeef0f1f2f3f4f5f6f7f9fafcfdfeff,7d:000102030405060708090b0c0d0e0f10#1112131415161718191a1b1c1d1e1f212324252628292a2c2d2e30313233343536,808c99658ff96fc08ba59e2159ec7ee97f095409678168d88f917c4d96c653ca602575be6c7253735ac97ea7632451e0810a5df184df628051805b634f0e796d524260b86d4e5b:c4c2,8b:a1b0,65e25fcc964559937e:e7aa,560967b759394f735bb652a0835a988a8d3e753294be50477a3c4ef767b69a7e5ac16b7c76d1575a5c167b3a95f4714e517c80a9827059787f04832768c067ec78:b177,62e363617b804fed526a51cf835069db92748d:f531,89c1952e7bad4ef67d:3738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6f70717273747576#78797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798,506582305251996f6e:1085,6da75efa50f559dc5c066d466c5f7586848b686859568bb253209171964d854969127901712680f64ea490ca6d479a845a0756bc640594f077eb4fa5811a72e189d2997a7f347ede527f655991758f:7f83,53eb7a9663:eda5,768679f888579636622a52ab8282685467706377776b7aed6d017ed389e359d0621285c982a5754c501f4ecb75a58beb5c4a5dfe7b4b65a491d14eca6d25895f7d2795264ec58c288fdb9773664b79818fd170ec6d787d:999a9b9c9d9e9fa0a1a2a3a4a5a7a8a9aaabacadafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9#dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fa,5c3d52b283465162830e775b66769cb84eac60ca7c:beb3,7ecf4e958b66666f988897595883656c955c5f8475c997567a:dfde,51c070af7a9863ea7a767ea0739697ed4e4570784e5d915253a965:51e7,81fc8205548e5c31759a97a062d872d975bd5c459a7983ca5c40548077e94e3e6cae805a62d2636e5de851778ddd8e1e952f4ff153e560e770ac526763509e435a1f5026773753777ee26485652b628963985014723589c951b38bc07edd574783cc94a7519b541b5cfb7d:fbfcfdfeff,7e:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f30313233343536373839#3a3c3d3e3f40424344454648494a4b4c4d4e4f505152535455565758595a5b5c5d,4fca7ae36d5a90e19a8f55805496536154af5f0063e9697751ef6168520a582a52d8574e780d770b5eb761777ce062:5b97,4ea27095800362f770e49760577782db67ef68f578d5989779d158f354b353ef6e34514b523b5ba28bfe80af554357a660735751542d7a7a60505b5463a762a053e362635bc767af54ed7a9f82e691775e9388e4593857ae630e8de880ef57577b774fa95feb5bbd6b3e53217b5072c2684677:ff36,65f751b54e8f76d45cbf7aa58475594e9b4150807e:5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f8081838485868788898a8b8c8d8e8f909192939495969798999a9c9d9e#aeb4bbbcd6e4ecf9,7f:0a101e37393b3c3d3e3f404143464748494a4b4c4d4e4f5253,998861276e8357646606634656f062:ec69,5ed39614578362c955878721814a8fa3556683b167658d5684dd5a6a680f62e67bee961151706f9c8c3063fd89c861d27f0670c26ee57405699472fc5eca90ce67176d6a635e52b3726280014f6c59e5916a70d96d9d52d24e5096f7956d857e78ca7d2f5121579264c2808b7c7b6cea68f1695e51b7539868a872819ece7bf172f879bb6f137406674e91cc9ca4793c83:8954,540f68174e3d538952b1783e5386522950884f:8bd0,7f:56595b5c5d5e6063646566676b6c6d6f7073757677787a7b7c7d7f8082838485868788898b8d8f9091929395969798999b9ca0a2a3a5a6a8a9aaabacadaeb1#b3b4b5b6b7babbbec0c2c3c4c6c7c8c9cbcdcfd0d1d2d3d6d7d9dadbdcdddee2e3,75e27acb7c926ca596b6529b748354e94fe9805483b28fde95705ec9601c6d9f5e18655b813894fe604b70bc7ec37cae51c968817cb1826f4e248f8691cf667e4eae8c0564a9804a50da759771ce5be58fbd6f664e86648295635ed66599521788c270c852a3730e7433679778f797164e3490bb9cde6dcb51db8d41541d62ce73b283f196f69f8494c34f367f9a51cc707596755cad988653e64ee46e9c740969b4786b998f7559521876246d4167f3516d9f99804b54997b3c7abf7f:e4e7e8eaebecedeff2f4f5f6f7f8f9fafdfeff,80:020708090a0e0f11131a1b1d1e1f2123242b2c2d2e2f303234393a3c3e404144454748494e4f505153555657#595b5c5d5e5f6061626364656667686b6c6d6e6f7072737475767778797a7b7c7d,9686578462e29647697c5a0464027bd36f0f964b82a6536298855e90708963b35364864f9c819e93788c97328d:ef42,9e7f6f5e79845f559646622e9a74541594dd4fa365c55c:6561,7f1586516c2f5f8b73876ee47eff5ce6631b5b6a6ee653754e7163a0756562a18f6e4f264ed16ca67eb68bba841d87ba7f57903b95237ba99aa188f8843d6d1b9a867edc59889ebb739b780186829a:6c82,561b541757cb4e709ea653568fc881097792999286ee6ee1851366fc61626f2b80:7e818285888a8d8e8f909192949597999ea3a6a7a8acb0b3b5b6b8b9bbc5c7c8c9cacbcfd0d1d2d3d4d5d8dfe0e2e3e6eef5f7f9fbfeff,81:000103040507080b#0c1517191b1c1d1f202122232425262728292a2b2d2e3033343537393a3b3c3d3f,8c298292832b76f26c135fd983bd732b8305951a6bdb77db94c6536f830251925e3d8c8c8d384e4873ab679a68859176970971646ca177095a9295416bcf7f8e66275bd059b95a9a95:e8f7,4eec84:0c99,6aac76df9530731b68a65b5f772f919a97617cdc8ff78c1c5f257c7379d889c56ccc871c5bc65e4268c977207ef551:954d,52c95a297f05976282d763cf778485d079d26e3a5e9959998511706d6c1162bf76bf654f60af95fd660e879f9e2394ed54:0d7d,8c2c647881:40414243444547494d4e4f525657585b5c5d5e5f6162636466686a6b6c6f727375767778818384858687898b8c8d8e90929394959697999a9e9fa0a1a2a4a5#a7a9abacadaeafb0b1b2b4b5b6b7b8b9bcbdbebfc4c5c7c8c9cbcdcecfd0d1d2d3,647986116a21819c78e864699b5462b9672b83ab58a89ed86cab6f205bde964c8c0b725f67d062c772614ea959c66bcd589366ae5e5552df6155672876ee776672677a4662ff54:ea50,94a090a35a1c7eb36c164e435976801059485357753796be56ca63208111607c95f96dd65462998151855ae980fd59ae9713502a6ce55c3c62df4f60533f817b90066eba852b62c85e7478be64b5637b5ff55a18917f9e1f5c3f634f80425b7d556e95:4a4d,6d8560a867e072de51dd5b8181:d4d5d6d7d8d9dadbdcdddedfe0e1e2e4e5e6e8e9ebeeeff0f1f2f5f6f7f8f9fafdff,82:030708090a0b0e0f111315161718191a1d2024252627292e323a3c3d3f#404142434546484a4c4d4e5051525354555657595b5c5d5e606162636465666769,62e76cde725b626d94ae7ebd81136d53519c5f04597452aa6012597366968650759f632a61e67cef8bfa54e66b279e256bb485d5545550766ca4556a8db4722c5e156015743662cd6392724c5f986e436d3e65006f5876d878d076fc7554522453db4e535e9e65c180:2ad6,629b5486522870ae888d8dd16ce1547880da57f988f48d54966a914d4f696c9b55b776c6783062a870f96f8e5f6d84ec68da787c7bf781a8670b9e4f636778b0576f7812973962:79ab,528874356bd782:6a6b6c6d71757677787b7c808183858687898c90939495969a9b9ea0a2a3a7b2b5b6babbbcbfc0c2c3c5c6c9d0d6d9dadde2e7e8e9eaecedeef0f2f3f5f6f8#fafcfdfeff,83:000a0b0d1012131618191d1e1f20212223242526292a2e3032373b3d,5564813e75b276ae533975de50fb5c418b6c7bc7504f72479a9798d86f0274e27968648777a562fc98918d2b54c180584e52576a82f9840d5e7351ed74f68bc45c4f57616cfc98875a4678349b448feb7c955256625194fa4ec68386846183e984b257d467345703666e6d668c3166dd7011671f6b3a6816621a59bb4e0351c46f0667d26c8f517668cb59476b6775665d0e81109f5065d779:4841,9a918d775c824e5e4f01542f5951780c56686c148fc45f036c:7de3,8bab639083:3e3f41424445484a4b4c4d4e5355565758595d6270717273747576797a7e7f808182838487888a8b8c8d8f909194959697999a9d9fa1a2a3a4a5a6a7acadae#afb5bbbebfc2c3c4c6c8c9cbcdced0d1d2d3d5d7d9dadbdee2e3e4e6e7e8ebeced,60706d3d7275626694:8ec5,53438fc17b7e4edf8c264e7e9ed494:b1b3,524d6f5c90636d458c3458115d4c6b:2049,67aa545b81547f8c589985375f3a62a26a47953965726084686577a74e544fa85de7979864ac7fd85ced4fcf7a8d520783044e14602f7a8394a64fb54eb279e6743452e482b964d279bd5bdd6c8197528f7b6c22503e537f6e0564ce66746c3060c598778bf75e86743c7a7779cb4e1890b174036c4256da914b6cc58d8b533a86c666f28eaf5c489a716e2083:eeeff3f4f5f6f7fafbfcfeff,84:0002050708090a10121314151617191a1b1e1f20212223292a2b2c2d2e2f30323334353637393a3b3e3f404142434445474849#4a4b4c4d4e4f505253545556585d5e5f606264656667686a6e6f70727477797b7c,53d65a369f8b8da353bb570898a76743919b6cc9516875ca62f372ac52:389d,7f3a7094763853749e4a69b7786e96c088d97fa471:36c3,518967d374e458e4651856b78ba9997662707ed560f970ed58ec4e:c1ba,5fcd97e74efb8ba45203598a7eab62544ecd65e5620e833884c98363878d71946eb65bb97ed2519763c967d480898339881551125b7a59828fb14e736c5d516589258f6f962e854a745e95:10f0,6da682e55f3164926d128428816e9cc3585e8d5b4e0953c184:7d7e7f8081838485868a8d8f90919293949596989a9b9d9e9fa0a2a3a4a5a6a7a8a9aaabacadaeb0b1b3b5b6b7bbbcbec0c2c3c5c6c7c8cbcccecfd2d4d5d7#d8d9dadbdcdee1e2e4e7e8e9eaebedeeeff1f2f3f4f5f6f7f8f9fafbfdfe,85:000102,4f1e6563685155d34e2764149a9a626b5ac2745f82726da968ee50e7838e7802674052396c997eb150bb5565715e7b5b665273ca82eb67495c715220717d886b95ea965564c58d6181b355846c5562477f2e58924f2455468d4f664c4e0a5c1a88f368a2634e7a0d70e7828d52fa97f65c1154e890b57ecd59628d4a86c782:0c0d,8d6664445c0461516d89793e8bbe78377533547b4f388eab6df15a207ec5795e6c885ba15a76751a80be614e6e1758f075:1f25,727253477ef385:030405060708090a0b0d0e0f101214151618191b1c1d1e2022232425262728292a2d2e2f303132333435363e3f404142444546474b4c4d4e4f505152535455#57585a5b5c5d5f60616263656667696a6b6c6d6e6f707173757677787c7d7f8081,770176db526980dc57235e08593172ee65bd6e7f8bd75c388671534177f362fe65f64ec098df86805b9e8bc653f277e24f7f5c4e9a7659cb5f0f793a58eb4e1667ff4e8b62ed8a93901d52bf662f55dc566c90024ed54f8d91ca99706c0f5e0260435ba489c68bd56536624b99965b:88ff,6388552e53d77626517d852c67a268b36b8a62928f9353d482126dd1758f4e668d4e5b70719f85af66:91d9,7f7287009ecd9f205c5e672f8ff06811675f620d7ad658855eb665706f3185:82838688898a8b8c8d8e909192939495969798999a9d9e9fa0a1a2a3a5a6a7a9abacadb1b2b3b4b5b6b8babbbcbdbebfc0c2c3c4c5c6c7c8cacbcccdced1d2#d4d6d7d8d9dadbdddedfe0e1e2e3e5e6e7e8eaebecedeeeff0f1f2f3f4f5f6f7f8,60555237800d6454887075295e05681362f4971c53cc723d8c016c3477617a0e542e77ac987a821c8bf47855671470c165af64955636601d79c153f84e1d6b7b80865bfa55e356db4f:3a3c,99725df3677e80386002988290015b8b8b:bcf5,641c825864de55fd82cf91654fd77d20901f7c9f50f358516eaf5bbf8bc980839178849c7b97867d96:8b8f,7ee59ad3788e5c817a57904296a7795f5b59635f7b0b84d168ad55067f2974107d2295016240584c4ed65b835979585485:f9fafcfdfe,86:0001020304060708090a0b0c0d0e0f10121314151718191a1b1c1d1e1f20212223242526282a2b2c2d2e2f3031323334353637393a3b3d3e3f40#4142434445464748494a4b4c525355565758595b5c5d5f6061636465666768696a,736d631e8e:4b0f,80ce82d462ac53f06cf0915e592a60016c70574d644a8d2a762b6ee9575b6a8075f06f6d8c:2d08,57666bef889278b363a253f970ad6c645858642a580268e0819b55107cd650188eba6dcc8d9f70eb638f6d9b6ed47ee68404684390036dd896768ba85957727985e4817e75bc8a8a68af52548e22951163d098988e44557c4f5366ff568f60d56d9552435c4959296dfb586b75:301c,606c82148146631167618fe2773a8d:f334,94c15e165385542c70c386:6d6f7072737475767778838485868788898e8f90919294969798999a9b9e9fa0a1a2a5a6abadaeb2b3b7b8b9bbbcbdbebfc1c2c3c5c8cccdd2d3d5d6d7dadc#dde0e1e2e3e5e6e7e8eaebeceff5f6f7fafbfcfdff,87:010405060b0c0e0f10111416,6c405ef7505c4ead5ead633a8247901a6850916e77b3540c94dc5f647ae5687663457b527edf75db507762955934900f51f879c37a8156fe5f9290146d825c60571f541051546e4d56e263a89893817f8715892a9000541e5c6f81c062:d658,81319e3596409a:6e7c,692d59a562d3553e631654c786d96d3c5a0374e6889c6b6a59168c4c5f2f6e7e73a9987d4e3870f75b8c7897633d665a769660cb5b9b5a494e0781556c6a738b4ea167897f515f8065fa671b5fd859845a0187:191b1d1f20242627282a2b2c2d2f303233353638393a3c3d404142434445464a4b4d4f505152545556585a5b5c5d5e5f6162666768696a6b6c6d6f71727375#7778797a7f8081848687898a8c8e8f90919294959698999a9b9c9d9ea0a1a2a3a4,5dcd5fae537197e68fdd684556f4552f60df4e3a6f4d7ef482c7840e59d44f:1f2a,5c3e7eac672a851a5473754f80c355829b4f4f4d6e2d8c135c096170536b761f6e29868a658795fb7eb9543b7a337d0a95ee55e17fc174ee631d87176da17a9d621165a1536763e16c835deb545c94a84e4c6c618bec5c4b65e0829c68a754:3e34,6b:cb66,4e9463425348821e4f:0dae,575e620a96fe6664726952:ffa1,609f8bef661471996790897f785277fd6670563b54389521727a87:a5a6a7a9aaaeb0b1b2b4b6b7b8b9bbbcbebfc1c2c3c4c5c7c8c9cccdcecfd0d4d5d6d7d8d9dadcdddedfe1e2e3e4e6e7e8e9ebecedeff0f1f2f3f4f5f6f7f8#fafbfcfdff,88:0001020405060708090b0c0d0e0f101112141718191a1c1d1e1f2023,7a00606f5e0c6089819d591560dc718470ef6eaa6c5072806a8488ad5e2d4e605ab3559c94e36d177cfb9699620f7ec6778e867e5323971e8f9666875ce14fa072ed4e0b53a6590f54136380952851484ed99c9c7ea454b88d248854823795f26d8e5f265acc663e966973:b02e,53bf817a99857fa15baa96:7750,7ebf76f853a2957699997bb189446e584e617fd479658be660f354cd4eab98795df76a6150cf54118c618427785d9704524a54ee56a395006d885bb56dc6665388:2425262728292a2b2c2d2e2f30313334353637383a3b3d3e3f414243464748494a4b4e4f505152535556585a5b5c5d5e5f6066676a6d6f717374757678797a#7b7c80838687898a8c8e8f90919394959798999a9b9d9e9fa0a1a3a5a6a7a8a9aa,5c0f5b5d6821809655787b11654869544e9b6b47874e978b534f631f643a90aa659c80c18c10519968b0537887f961c86c:c4fb,8c225c5185aa82af950c6b238f9b65b05f:fbc3,4fe18845661f8165732960fa51745211578b5f6290a2884c91925e78674f602759d351:44f6,80f853086c7996c4718a4f:11ee,7f9e673d55c5950879c088967ee3589f620c9700865a5618987b5f908bb884c4915753d965ed5e8f755c60647d6e5a7f7e:eaed,8f6955a75ba360ac65cb738488:acaeafb0b2b3b4b5b6b8b9babbbdbebfc0c3c4c7c8cacbcccdcfd0d1d3d6d7dadbdcdddee0e1e6e7e9eaebecedeeeff2f5f6f7fafbfdff,89:0001030405060708#090b0c0d0e0f1114151617181c1d1e1f20222324262728292c2d2e2f3132333537,9009766377297eda9774859b5b667a7496ea884052cb718f5faa65ec8be25bfb9a6f5de16b896c5b8b:adaf,900a8fc5538b62bc9e:262d,54404e2b82bd7259869c5d1688596daf96c554d14e9a8bb6710954bd960970df6df976d04e25781487125ca95ef68a00989c960e708e6cbf594463a9773c884d6f148273583071d5538c781a96c155015f6671305bb48c1a9a8c6b83592e9e2f79e76768626c4f6f75a17f8a6d0b96336c274ef075d2517b68376f3e908081705996747689:38393a3b3c3d3e3f40424345464748494a4b4c4d4e4f505152535455565758595a5b5c5d6061626364656768696a6b6c6d6e6f707172737475767778797a7c#7d7e808284858788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1,64475c2790657a918c2359da54ac8200836f898180006930564e8036723791ce51b64e5f987563964e1a53f666f3814b591c6db24e0058f9533b63d694f14f:9d0a,886398905937905779fb4eea80f075916c825b9c59e85f5d69058681501a5df24e5977e34ee5827a6291661390915c794ebf5f7981c69038808475ab4ea688d4610f6bc55fc64e4976ca6ea28b:e3ae,8c0a8bd15f027f:fccc,7ece83:356b,56e06bb797f3963459fb541f94f66deb5bc5996e5c395f15969089:a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c3cdd3d4d5d7d8d9dbdddfe0e1e2e4e7e8e9eaecedeef0f1f2f4f5f6f7f8f9fa#fbfcfdfeff,8a:01020304050608090a0b0c0d0e0f101112131415161718191a1b1c1d,537082f16a315a749e705e947f2883b984:2425,836787478fce8d6276c85f719896786c662054df62e54f6381c375c85eb896cd8e0a86f9548f6cf36d8c6c38607f52c775285e7d4f1860a05fe75c24753190ae94c072b96cb96e389149670953:cbf3,4f5191c98bf153c85e7c8fc26de44e8e76c26986865e611a82064f:59de,903e9c7c61096e:1d14,96854e885a3196e84e0e5c7f79b95b878bed7fbd738957df828b90c15401904755bb5cea5fa161086b3272f180b28a:891e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3f4041424344454647494a4b4c4d4e4f505152535455565758595a5b5c5d5e#5f606162636465666768696a6b6c6d6e6f7071727374757677787a7b7c7d7e7f80,6d745bd388d598848c6b9a6d9e336e0a51:a443,57a38881539f63f48f9556ed54585706733f6e907f188fdc82d1613f6028966266f07ea68d:8ac3,94a55cb37ca4670860a6960580184e9190e75300966851418fd08574915d665597f55b55531d78386742683d54c9707e5bb08f7d518d572854b1651266828d:5e43,810f846c906d7cdf51ff85fb67a365e96fa186a48e81566a90207682707671e58d2362e952196cfd8d3c600e589e618e66fe8d60624e55b36e23672d8f678a:81828384858687888b8c8d8e8f9091929495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2#c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3,94e195f87728680569a8548b4e4d70b88bc86458658b5b857a84503a5be877bb6be18a797c986cbe76cf65a98f975d2d5c5586386808536062187ad96e5b7efd6a1f7ae05f706f335f20638c6da867564e085e108d264ed780c07634969c62db662d627e6cbc8d7571677f695146808753ec906e629854f286f08f998005951785178fd96d5973cd659f771f7504782781fb8d1e94884fa6679575b98bca9707632f9547963584b8632377415f8172f04e896014657462ef6b63653f8a:e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,8b:0001020304050608090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212223#24252728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445,5e2775c790d18bc1829d679d652f5431871877e580a281026c414e4b7ec7804c76f4690d6b966267503c4f84574063076b628dbe53ea65e87eb85fd763:1ab7,81:f3f4,7f6e5e1c5cd95236667a79e97a1a8d28709975d46ede6cbb7a924e2d76c55fe0949f88777ec879cd80bf91cd4ef24f17821f54685dde6d328bcc7ca58f7480985e1a549276b15b99663c9aa473e0682a86db6731732a8b:f8db,90107af970db716e62c477a956314e3b845767f152a986c08d2e94f87b518b:464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f6061626364656768696a6b6d6e6f707172737475767778797a7b7c7d7e7f80818283848586#8788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9facb1bbc7d0ea,8c:091e,4f4f6ce8795d9a7b6293722a62fd4e1378168f6c64b08d5a7bc668695e8488c55986649e58ee72b6690e95258ffd8d5857607f008c0651c6634962d95353684c74228301914c55447740707c6d4a517954a88d4459ff6ecb6dc45b5c7d2b4ed47c7d6ed35b5081ea6e0d5b579b0368d58e2a5b977efc603b7eb590b98d70594f63cd79df8db3535265cf79568bc5963b7ec494bb7e825634918967007f6a5c0a907566285de64f5067de505a4f5c57505e:a7#3$,8c:38393a3b3c3d3e3f4042434445484a4b4d4e4f5051525354565758595b5c5d5e5f60636465666768696c6d6e6f707172747576777b7c7d7e7f808183848687#888b8d8e8f90919293959697999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacad,4e:8d0c,51404e105eff53454e:15981e,9b325b6c56694e2879ba4e3f53154e47592d723b536e6c1056df80e499976bd3777e9f174e:369f,9f104e:5c6993,82885b5b556c560f4ec453:8d9da3a5ae,97658d5d53:1af5262e3e,8d5c53:6663,52:02080e2d333f404c5e615c,84af52:7d82819093,51827f544e:bbc3c9c2e8e1ebde,4f1b4ef34f:2264,4ef54f:2527092b5e67,65384f:5a5d,8c:aeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebec#edeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,8d:000102030405060708090a0b0c0d,4f:5f57323d76749189838f7e7baa7cac94e6e8eac5dae3dcd1dff8,50:294c,4ff350:2c0f2e2d,4ffe50:1c0c25287e4355484e6c7ba5a7a9bad6,510650:edece6ee,51:070b,4edd6c3d4f:5865ce,9fa06c467c74516e5dfd9ec999985181591452f9530d8a07531051eb591951554ea051564eb388:6ea4,4eb5811488d279805b3488037fb851:abb1bdbc,8d:0e0f101112131415161718191a1b1c205152575f6568696a6c6e6f717278797a7b7c7d7e7f808283868788898c8d8e8f90929395969798999a9b9c9d9ea0a1#a2a4a5a6a7a8a9aaabacadaeafb0b2b6b7b9bbbdc0c1c2c5c7c8c9cacdd0d2d3d4,51:c796a2a5,8b:a0a6a7aab4b5b7c2c3cbcfced2d3d4d6d8d9dcdfe0e4e8e9eef0f3f6f9fcff,8c:000204070c0f1112141516191b181d1f202125272a2b2e2f32333536,53:697a,96:1d2221312a3d3c4249545f676c7274888d97b0,90:979b9d99aca1b4b3b6ba,8d:d5d8d9dce0e1e2e5e6e7e9edeef0f1f2f4f6fcfeff,8e:00010203040607080b0d0e1011121315161718191a1b1c202124252627282b2d303233343637383b3c3e#3f4345464c4d4e4f505354555657585a5b5c5d5e5f60616263646567686a6b6e71,90:b8b0cfc5bed0c4c7d3e6e2dcd7dbebeffe,91:04221e23312f394346,520d594252:a2acadbe,54ff52:d0d6f0,53df71ee77cd5ef451:f5fc,9b2f53b65f01755a5def57:4ca9a1,58:7ebcc5d1,57:292c2a33392e2f5c3b4269856b867c7b686d7673ada48cb2cfa7b493a0d5d8dad9d2b8f4eff8e4dd,8e:73757778797a7b7d7e808283848688898a8b8c8d8e91929395969798999a9b9d9fa0a1a2a3a4a5a6a7a8a9aaadaeb0b1b3b4b5b6b7b8b9bbbcbdbebfc0c1c2#c3c4c5c6c7c8c9cacbcccdcfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4,58:0b0d,57:fded,58:001e194420656c81899a80,99a89f1961ff82:797d7f8f8aa8848e919799abb8beb0c8cae398b7aecbccc1a9b4a1aa9fc4cea4e1,830982:f7e4,83:0f07,82:dcf4d2d8,830c82:fbd3,83:111a061415,82:e0d5,83:1c515b5c08923c34319b5e2f4f47435f4017602d3a336665,8e:e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,8f:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212223#2425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f4041424344,83:681b696c6a6d6eb078b3b4a0aa939c857cb6a97db87b989ea8babcc1,840183:e5d8,580784:180b,83:ddfdd6,84:1c381106,83:d4df,84:0f03,83:f8f9eac5c0,842683:f0e1,84:5c515a597387887a89783c4669768c8e316dc1cdd0e6bdd3cabfbae0a1b9b497e5e3,850c750d853884f085:391f3a,8f:45464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f6061626364656a808c929da0a1a2a4a5a6a7aaacadaeafb2b3b4b5b7b8babbbcbfc0c3c6#c9cacbcccdcfd2d6d7dae0e1e3e7eceff1f2f4f5f6fafbfcfeff,90:07080c0e131518,85:563b,84:fffc,85:594868645e7a,77a285:43727ba4a8878f79ae9c85b9b7b0d3c1dcff,86:270529163c,5efe5f0859:3c41,803759:555a58,530f5c:22252c34,62:4c6a9fbbcadad7ee,632262f663:394b43adf6717a8eb46dac8a69aebcf2f8e0ffc4dece,645263:c6be,64:45410b1b200c26215e846d96,90:191c2324252728292a2b2c303132333437393a3d3f4043454648494a4b4c4e545556595a5c5d5e5f6061646667696a6b6c6f70717273767778797a7b7c7e81#84858687898a8c8d8e8f90929496989a9c9e9fa0a4a5a7a8a9abadb2b7bcbdbfc0,64:7ab7b899bac0d0d7e4e2,65:09252e,5f:0bd2,75195f1153:5ff1fde9e8fb,54:1216064b5253545643215759233282947771649a9b8476669dd0adc2b4d2a7a6d3d472a3d5bbbfccd9dadca9aaa4ddcfde,551b54e7552054fd551454f355:22230f11272a678fb5496d41553f503c,90:c2c3c6c8c9cbcccdd2d4d5d6d8d9dadedfe0e3e4e5e9eaeceef0f1f2f3f5f6f7f9fafbfcff,91:00010305060708090a0b0c0d0e0f1011121314151617181a1b1c#1d1f20212425262728292a2b2c2d2e30323334353637383a3b3c3d3e3f40414244,55:375675767733305c8bd283b1b988819f7ed6917bdfbdbe9499eaf7c9,561f55:d1ebecd4e6ddc4efe5f2f3cccde8f5e4,8f9456:1e080c012423,55fe56:00272d5839572c4d62595c4c548664716b7b7c8593afd4d7dde1f5ebf9ff,57:040a091c,5e:0f191411313b3c,91:454748515354555658595b5c5f606667686b6d737a7b7c808182838486888a8e8f939495969798999c9d9e9fa0a1a4a5a6a7a8a9abacb0b1b2b3b6b7b8b9bb#bcbdbebfc0c1c2c3c4c5c6c8cbd0d2d3d4d5d6d7d8d9dadbdddedfe0e1e2e3e4e5,5e:3744545b5e61,5c:8c7a8d9096889899919a9cb5a2bdacabb1a3c1b7c4d2e4cbe5,5d:020327262e241e061b583e343d6c5b6f5d6b4b4a697482999d,8c735d:b7c5,5f:73778287898c95999ca8adb5bc,88625f6172:adb0b4b7b8c3c1cecdd2e8efe9f2f4f7,730172f3730372fa91:e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,92:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021222324#25262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445,72fb73:1713210a1e1d152239252c3831504d57606c6f7e,821b592598e759:2402,99:636768696a6b6c74777d8084878a8d9091939495,5e:80918b96a5a0b9b5beb3,8d535e:d2d1dbe8ea,81ba5f:c4c9d6cf,60035fee60045f:e1e4fe,60:0506,5f:eaedf8,60:1935261b0f0d292b0a3f2178797b7a42,92:464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f7071727375767778797a7b7c7d7e7f808182838485#868788898a8b8c8d8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7,60:6a7d969aad9d83928c9becbbb1ddd8c6dab4,61:20261523,60f461:000e2b4a75ac94a7b7d4f5,5fdd96b395:e9ebf1f3f5f6fcfe,96:030406080a0b0c0d0f12151617191a,4e2c723f62156c:35545c4aa38590948c6869747686a9d0d4adf7f8f1d7b2e0d6faebeeb1d3effe,92:a8a9aaabacadafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8#e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,93:00010203040506070809,6d:39270c43480704190e2b4d2e351a4f525433916f9ea05e93945c607c63,6e1a6d:c7c5de,6e0e6d:bfe0,6e116d:e6ddd9,6e166dab6e0c6dae6e:2b6e4e6bb25f865354322544dfb198e0,6f2d6e:e2a5a7bdbbb7d7b4cf8fc29f,6f:6246472415,6ef96f:2f364b742a0929898d8c78727c7ad1,93:0a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3f40414243444546474849#4a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696b,6f:c9a7b9b6c2e1eedee0ef,70:1a231b39354f5e,5b:80849593a5b8,752f9a9e64345b:e4ee,89305bf08e478b078f:b6d3d5e5eee4e9e6f3e8,90:05040b26110d162135362d2f445152506858625b,66b990:747d8288838b,5f:50575658,5c3b54ab5c:5059,5b715c:6366,7fbc5f:2a292d,82745f3c9b3b5c6e59:81838da9aaa3,93:6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaab#acadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cbcccd,59:97caab9ea4d2b2afd7be,5a:0506,59dd5a0859:e3d8f9,5a:0c09323411231340674a553c6275,80ec5a:aa9b777abeebb2d2d4b8e0e3f1d6e6d8dc,5b:091716323740,5c:151c,5b:5a6573515362,9a:7577787a7f7d808185888a90929396989b9c9d9fa0a2a3a5a7,7e:9fa1a3a5a8a9,93:cecfd0d1d2d3d4d5d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,94:000102030405060708090a0b0c0d#0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e,7e:adb0bec0c1c2c9cbccd0d4d7dbe0e1e8ebeeeff1f2,7f0d7e:f6fafbfe,7f:01020307080b0c0f111217191c1b1f212223242526272a2b2c2d2f3031323335,5e7a757f5ddb753e909573:8e91aea29fcfc2d1b7b3c0c9c8e5d9,987c740a73:e9e7debaf2,74:0f2a5b262528302e2c,94:2f303132333435363738393a3b3c3d3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6c6d6e6f#707172737475767778797a7b7c7d7e7f8081828384919698c7cfd3d4dae6fb,95:1c20,74:1b1a415c575559776d7e9c8e8081878b9ea8a990a7d2ba,97:eaebec,67:4c535e4869a5876a7398a775a89ead8b777cf0,680967d8680a67:e9b0,680c67:d9b5dab3dd,680067:c3b8e2,680e67:c1fd,68:323360614e624464831d55664167403e4a4929b58f7477936bc2,696e68fc69:1f20,68f995:27333d43484b555a606e74757778797a7b7c7d7e808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aa#abacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacb,692468f069:0b0157,68e369:10713960425d846b80987834cc8788ce896663799ba7bbabadd4b1c1cadf95e08dff,6a2f69ed6a:171865,69f26a:443ea0505b358e793d28587c9190a997ab,73:3752,6b:8182878492938d9a9ba1aa,8f:6b6d71727375767877797a7c7e818284878b,95:cccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7ecff,96:0713181b1e20232425262728292b2c2d2f303738393a3e41434a4e4f5152535657#58595a5c5d5e606365666b6d6e6f70717378797a7b7c7d7e7f808182838487898a,8f:8d8e8f989a,8ece62:0b171b1f222125242c,81e774:eff4ff,75:0f1113,65:34eeeff0,66:0a19,677266:031500,708566:f71d34313635,800666:5f54414f56615777848ca79dbedbdce6e9,8d:3233363b3d4045464849474d5559,89:c7cacbcccecfd0d1,72:6e9f5d666f7e7f848b8d8f92,63:0832b0,96:8c8e91929395969a9b9d9e9fa0a1a2a3a4a5a6a8a9aaabacadaeafb1b2b4b5b7b8babbbfc2c3c8cacbd0d1d3d4d6d7d8d9dadbdcdddedfe1e2e3e4e5e6e7eb#ecedeef0f1f2f4f5f8fafbfcfdff,97:0203050a0b0c10111214151718191a1b1d1f20,64:3fd8,80046b:eaf3fdf5f9,6c:0507060d1518191a2129242a32,65:35556b,72:4d525630,8662521680:9f9c93bc,670a80:bdb1abadb4b7e7e8e9eadbc2c4d9cdd7,671080:ddebf1f4ed,81:0d0e,80:f2fc,671581128c5a81:361e2c1832484c5374595a7160697c7d6d67,584d5ab581:888291,6ed581:a3aacc,672681:cabb,97:2122232425262728292b2c2e2f3133343536373a3b3c3d3f404142434445464748494a4b4c4d4e4f5051545557585a5c5d5f63646667686a6b6c6d6e6f7071#72757778797a7b7d7e7f8081828384868788898a8c8e8f9093959697999a9b9c9d,81:c1a6,6b:243739434659,98:d1d2d3d5d9da,6bb35f406bc289f365909f5165:93bcc6c4c3ccced2d6,70:809c969dbbc0b7abb1e8ca,71:1013162f31735c6845724a787a98b3b5a8a0e0d4e7f9,72:1d28,706c71:1866b9,62:3e3d434849,79:3b4046495b5c535a6257606f677a858a9aa7b3,5f:d1d0,97:9e9fa1a2a4a5a6a7a8a9aaacaeb0b1b3b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3#e4e5e8eeeff0f1f2f4f7f8f9fafbfcfdfeff,98:000102030405060708090a0b0c0d0e,60:3c5d5a67415963ab,61:060d5da99dcbd1,620680:807f,6c:93f6,6dfc77:f6f8,78:0009171811,65ab78:2d1c1d393a3b1f3c252c23294e6d56572650474c6a9b939a879ca1a3b2b9a5d4d9c9ecf2,790578f479:13241e34,9f9b9e:f9fbfc,76f177:040d,76f977:07081a22192d263538505147435a68,98:0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d#4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e,77:62657f8d7d808c919fa0b0b5bd,75:3a404e4b485b727983,7f:58615f,8a487f:68747179817e,76:cde5,883294:8586878b8a8c8d8f909497959a9b9ca3a4abaaadacafb0b2b4b6b7b8b9babcbdbfc4c8c9cacbcccdced0d1d2d5d6d7d9d8dbdedfe0e2e4e5e7e8ea,98:6f70717273748b8e929599a3a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcfd0d4d6d7dbdcdde0e1e2e3e4#e5e6e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,99:0001020304050607,94:e9ebeeeff3f4f5f7f9fcfdff,95:03020607090a0d0e0f1213141516181b1d1e1f222a2b292c3132343637383c3e3f4235444546494c4e4f525354565758595b5e5f5d61626465666768696a6b6c6f7172733a,77:e7ec,96c979:d5ede3eb,7a065d477a:03021e14,99:08090a0b0c0e0f1112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2f303132333435363738393a3b3c3d3e3f40414243444546474849#4a4b4c4d4e4f50515253565758595a5b5c5d5e5f60616264667378797b7e828389,7a:393751,9ecf99a57a7076:888e9399a4,74:dee0,752c9e:202228292a2b2c3231363837393a3e414244464748494b4c4e5155575a5b5c5e63666768696a6b6c716d73,75:929496a09daca3b3b4b8c4b1b0c3c2d6cde3e8e6e4ebe7,760375:f1fcff,76:1000050c170a25181519,99:8c8e9a9b9c9d9e9fa0a1a2a3a4a6a7a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8#d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9,76:1b3c2220402d303f35433e334d5e545c566b6f,7fca7a:e6787980868895a6a0aca8adb3,88:6469727d7f82a2c6b7bcc9e2cee3e5f1,891a88:fce8fef0,89:2119131b0a342b3641667b,758b80e576:b2b4,77dc80:1214161c20222526272928310b3543464d526971,898398:788083,99:fafbfcfdfeff,9a:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738#393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f50515253545556575859,98:898c8d8f949a9b9e9fa1a2a5a6,86:4d546c6e7f7a7c7ba88d8bac9da7a3aa93a9b6c4b5ceb0bab1afc9cfb4e9f1f2edf3d0,871386:def4dfd8d1,87:0307,86f887:080a0d09233b1e252e1a3e48343129373f82227d7e7b60704c6e8b53637c64596593afa8d2,9a:5a5b5c5d5e5f606162636465666768696a6b7283898d8e949599a6a9aaabacadaeafb2b3b4b5b9bbbdbebfc3c4c6c7c8c9cacdcecfd0d2d4d5d6d7d9dadbdc#dddee0e2e3e4e5e7e8e9eaeceef0f1f2f3f4f5f6f7f8fafcfdfeff,9b:000102040506,87:c68885ad9783abe5acb5b3cbd3bdd1c0cadbeae0ee,88:1613,87fe88:0a1b21393c,7f:36424445,82107a:fafd,7b:080304150a2b0f47382a192e31202524333e1e585a45754c5d606e7b62727190a6a7b8ac9da885aa9ca2abb4d1c1ccdddae5e6ea,7c0c7b:fefc,7c:0f160b,9b:07090a0b0c0d0e1011121415161718191a1b1c1d1e2021222425262728292a2b2c2d2e3031333435363738393a3d3e3f40464a4b4c4e50525355565758595a#5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b,7c:1f2a26384140,81fe82:010204,81ec884482:2122232d2f282b383b33343e44494b4f5a5f68,88:7e8588d8df,895e7f:9d9fa7afb0b2,7c7c65497c:919d9c9ea2b2bcbdc1c7cccdc8c5d7e8,826e66a87f:bfced5e5e1e6e9eef3,7cf87d:77a6ae,7e:479b,9e:b8b4,8d:73849491b1676d,8c:4749,91:4a504e4f64,9b:7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9ba#bbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadb,91:626170696f7d7e7274798c85908d91a2a3aaadaeafb5b4ba,8c559e7e8d:b8eb,8e:055969,8d:b5bfbcbac4d6d7dadececfdbc6ecf7f8e3f9fbe4,8e098dfd8e:141d1f2c2e232f3a4039353d3149414251524a70767c6f74858f94909c9e,8c:78828a859894,659b89:d6dedadc,9b:dcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,9c:000102030405060708090a0b0c0d0e0f101112131415161718191a#1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b,89:e5ebef,8a3e8b26975396:e9f3ef,97:0601080f0e2a2d303e,9f:808385868788898a8c,9efe9f:0b0d,96:b9bcbdced2,77bf96e092:8eaec8,93:3e6aca8f,94:3e6b,9c:7f8285868788,7a239c:8b8e90919294959a9b9e9fa0a1a2a3a5a6a7a8a9abadaeb0b1b2b3b4b5b6b7babbbcbdc4c5c6c7cacb3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a#7b7d7e808384898a8c8f93969798999daaacafb9bebfc0c1c2c8c9d1d2dadbe0e1cccdcecfd0d3d4d5d7d8d9dcdddfe2,97:7c85919294afaba3b2b4,9a:b1b0b7,9e589a:b6babcc1c0c5c2cbccd1,9b:45434749484d51,98e899:0d2e5554,9a:dfe1e6efebfbedf9,9b:080f131f23,9e:bdbe,7e3b9e:8287888b92,93d69e:9d9fdbdcdde0dfe2e9e7e5eaef,9f:222c2f39373d3e44,9c:e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,9d:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021#22232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142#92$434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f8081#82838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2#92$a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1#e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,9e:000102#92$030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e24272e30343b3c404d5052535456595d5f606162656e6f727475767778797a7b7c7d80#8183848586898a8c8d8e8f90919495969798999a9b9c9ea0a1a2a3a4a5a7a8a9aa#92$abacadaeafb0b1b2b3b5b6b7b9babcbfc0c1c2c3c5c6c7c8cacbccd0d2d3d5d6d7d9dadee1e3e4e6e8ebecedeef0f1f2f3f4f5f6f7f8fafdff,9f:000102030405#060708090a0c0f1112141516181a1b1c1d1e1f21232425262728292a2b2d2e3031#92$3233343536383a3c3f4041424345464748494a4b4c4d4e4f52535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778#797a7b7c7d7e81828d8e8f9091929394959697989c9d9ea1a2a3a4a5,f9:2c7995e7f1#92$,fa:0c0d0e0f111314181f20212324272829,e8:15161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f40414243#4445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f6061626364'), - U2Ghash = {}, - G2Uhash = {}; - ! function(data) { - var k = 0; - data = data.match(/..../g); - for (var i = 0x81; i <= 0xfe; i++) { - for (var j = 0x40; j <= 0xFE; j++) { - U2Ghash[data[k++]] = ('%' + i.toString(16) + '%' + j.toString(16)) - .toUpperCase(); - } - } - for (var key in U2Ghash) { - G2Uhash[U2Ghash[key]] = key; - } - }(data); - - function isAscii(unicode) { - return ((unicode == 0x20AC) || (unicode <= 0x007F && unicode >= 0x0000)); - } - return { - encode: function(str) { - return str.replace(/./g, function(a) { - var code = a.charCodeAt(0); - if (isAscii(code)) { - return encodeURIComponent(a); - } else { - var key = code.toString(16); - if (key.length != 4) key = ('000' + key).match(/....$/)[0]; - return U2Ghash[key] || a; - } - }); - }, - decode: function(str) { - return str.replace(/%[0-9A-F]{2}%[0-9A-F]{2}/g, function(a) { - if (a in G2Uhash) { - return String.fromCharCode('0x' + G2Uhash[a]); - } else { - return a; - } - }).replace(/%[\w]{2}/g, function(a) { - return decodeURIComponent(a); - - }); - } - }; -} \ No newline at end of file diff --git a/潇洒/js/jinja.min.js b/潇洒/js/jinja.min.js deleted file mode 100644 index f702f29..0000000 --- a/潇洒/js/jinja.min.js +++ /dev/null @@ -1,504 +0,0 @@ -(function(global, factory) { - typeof exports === "object" && typeof module !== "undefined" ? factory(exports) : typeof define === "function" && define.amd ? define(["exports"], factory) : (global = typeof globalThis !== "undefined" ? globalThis : global || self, factory(global.jinja = {})) -})(this, function(jinja) { - "use strict"; - var STRINGS = /'(\\.|[^'])*'|"(\\.|[^"'"])*"/g; - var IDENTS_AND_NUMS = /([$_a-z][$\w]*)|([+-]?\d+(\.\d+)?)/g; - var NUMBER = /^[+-]?\d+(\.\d+)?$/; - var NON_PRIMITIVES = /\[[@#~](,[@#~])*\]|\[\]|\{([@i]:[@#~])(,[@i]:[@#~])*\}|\{\}/g; - var IDENTIFIERS = /[$_a-z][$\w]*/gi; - var VARIABLES = /i(\.i|\[[@#i]\])*/g; - var ACCESSOR = /(\.i|\[[@#i]\])/g; - var OPERATORS = /(===?|!==?|>=?|<=?|&&|\|\||[+\-\*\/%])/g; - var EOPS = /(^|[^$\w])(and|or|not|is|isnot)([^$\w]|$)/g; - var LEADING_SPACE = /^\s+/; - var TRAILING_SPACE = /\s+$/; - var START_TOKEN = /\{\{\{|\{\{|\{%|\{#/; - var TAGS = { - "{{{": /^('(\\.|[^'])*'|"(\\.|[^"'"])*"|.)+?\}\}\}/, - "{{": /^('(\\.|[^'])*'|"(\\.|[^"'"])*"|.)+?\}\}/, - "{%": /^('(\\.|[^'])*'|"(\\.|[^"'"])*"|.)+?%\}/, - "{#": /^('(\\.|[^'])*'|"(\\.|[^"'"])*"|.)+?#\}/ - }; - var delimeters = { - "{%": "directive", - "{{": "output", - "{#": "comment" - }; - var operators = { - and: "&&", - or: "||", - not: "!", - is: "==", - isnot: "!=" - }; - var constants = { - true: true, - false: false, - null: null - }; - - function Parser() { - this.nest = []; - this.compiled = []; - this.childBlocks = 0; - this.parentBlocks = 0; - this.isSilent = false - } - Parser.prototype.push = function(line) { - if (!this.isSilent) { - this.compiled.push(line) - } - }; - Parser.prototype.parse = function(src) { - this.tokenize(src); - return this.compiled - }; - Parser.prototype.tokenize = function(src) { - var lastEnd = 0, - parser = this, - trimLeading = false; - matchAll(src, START_TOKEN, function(open, index, src) { - var match = src.slice(index + open.length).match(TAGS[open]); - match = match ? match[0] : ""; - var simplified = match.replace(STRINGS, "@"); - if (!match || ~simplified.indexOf(open)) { - return index + 1 - } - var inner = match.slice(0, 0 - open.length); - if (inner.charAt(0) === "-") var wsCollapseLeft = true; - if (inner.slice(-1) === "-") var wsCollapseRight = true; - inner = inner.replace(/^-|-$/g, "").trim(); - if (parser.rawMode && open + inner !== "{%endraw") { - return index + 1 - } - var text = src.slice(lastEnd, index); - lastEnd = index + open.length + match.length; - if (trimLeading) text = trimLeft(text); - if (wsCollapseLeft) text = trimRight(text); - if (wsCollapseRight) trimLeading = true; - if (open === "{{{") { - open = "{{"; - inner += "|safe" - } - parser.textHandler(text); - parser.tokenHandler(open, inner) - }); - var text = src.slice(lastEnd); - if (trimLeading) text = trimLeft(text); - this.textHandler(text) - }; - Parser.prototype.textHandler = function(text) { - this.push("write(" + JSON.stringify(text) + ");") - }; - Parser.prototype.tokenHandler = function(open, inner) { - var type = delimeters[open]; - if (type === "directive") { - this.compileTag(inner) - } else if (type === "output") { - var extracted = this.extractEnt(inner, STRINGS, "@"); - extracted.src = extracted.src.replace(/\|\|/g, "~").split("|"); - extracted.src = extracted.src.map(function(part) { - return part.split("~").join("||") - }); - var parts = this.injectEnt(extracted, "@"); - if (parts.length > 1) { - var filters = parts.slice(1).map(this.parseFilter.bind(this)); - this.push("filter(" + this.parseExpr(parts[0]) + "," + filters.join(",") + ");") - } else { - this.push("filter(" + this.parseExpr(parts[0]) + ");") - } - } - }; - Parser.prototype.compileTag = function(str) { - var directive = str.split(" ")[0]; - var handler = tagHandlers[directive]; - if (!handler) { - throw new Error("Invalid tag: " + str) - } - handler.call(this, str.slice(directive.length).trim()) - }; - Parser.prototype.parseFilter = function(src) { - src = src.trim(); - var match = src.match(/[:(]/); - var i = match ? match.index : -1; - if (i < 0) return JSON.stringify([src]); - var name = src.slice(0, i); - var args = src.charAt(i) === ":" ? src.slice(i + 1) : src.slice(i + 1, -1); - args = this.parseExpr(args, { - terms: true - }); - return "[" + JSON.stringify(name) + "," + args + "]" - }; - Parser.prototype.extractEnt = function(src, regex, placeholder) { - var subs = [], - isFunc = typeof placeholder == "function"; - src = src.replace(regex, function(str) { - var replacement = isFunc ? placeholder(str) : placeholder; - if (replacement) { - subs.push(str); - return replacement - } - return str - }); - return { - src: src, - subs: subs - } - }; - Parser.prototype.injectEnt = function(extracted, placeholder) { - var src = extracted.src, - subs = extracted.subs, - isArr = Array.isArray(src); - var arr = isArr ? src : [src]; - var re = new RegExp("[" + placeholder + "]", "g"), - i = 0; - arr.forEach(function(src, index) { - arr[index] = src.replace(re, function() { - return subs[i++] - }) - }); - return isArr ? arr : arr[0] - }; - Parser.prototype.replaceComplex = function(s) { - var parsed = this.extractEnt(s, /i(\.i|\[[@#i]\])+/g, "v"); - parsed.src = parsed.src.replace(NON_PRIMITIVES, "~"); - return this.injectEnt(parsed, "v") - }; - Parser.prototype.parseExpr = function(src, opts) { - opts = opts || {}; - var parsed1 = this.extractEnt(src, STRINGS, "@"); - parsed1.src = parsed1.src.replace(EOPS, function(s, before, op, after) { - return op in operators ? before + operators[op] + after : s - }); - var parsed2 = this.extractEnt(parsed1.src, IDENTS_AND_NUMS, function(s) { - return s in constants || NUMBER.test(s) ? "#" : null - }); - var parsed3 = this.extractEnt(parsed2.src, IDENTIFIERS, "i"); - parsed3.src = parsed3.src.replace(/\s+/g, ""); - var simplified = parsed3.src; - while (simplified !== (simplified = this.replaceComplex(simplified))); - while (simplified !== (simplified = simplified.replace(/i(\.i|\[[@#i]\])+/, "v"))); - simplified = simplified.replace(/[iv]\[v?\]/g, "x"); - simplified = simplified.replace(/[@#~v]/g, "i"); - simplified = simplified.replace(OPERATORS, "%"); - simplified = simplified.replace(/!+[i]/g, "i"); - var terms = opts.terms ? simplified.split(",") : [simplified]; - terms.forEach(function(term) { - while (term !== (term = term.replace(/\(i(%i)*\)/g, "i"))); - if (!term.match(/^i(%i)*/)) { - throw new Error("Invalid expression: " + src + " " + term) - } - }); - parsed3.src = parsed3.src.replace(VARIABLES, this.parseVar.bind(this)); - parsed2.src = this.injectEnt(parsed3, "i"); - parsed1.src = this.injectEnt(parsed2, "#"); - return this.injectEnt(parsed1, "@") - }; - Parser.prototype.parseVar = function(src) { - var args = Array.prototype.slice.call(arguments); - var str = args.pop(), - index = args.pop(); - if (src === "i" && str.charAt(index + 1) === ":") { - return '"i"' - } - var parts = ['"i"']; - src.replace(ACCESSOR, function(part) { - if (part === ".i") { - parts.push('"i"') - } else if (part === "[i]") { - parts.push('get("i")') - } else { - parts.push(part.slice(1, -1)) - } - }); - return "get(" + parts.join(",") + ")" - }; - Parser.prototype.escName = function(str) { - return str.replace(/\W/g, function(s) { - return "$" + s.charCodeAt(0).toString(16) - }) - }; - Parser.prototype.parseQuoted = function(str) { - if (str.charAt(0) === "'") { - str = str.slice(1, -1).replace(/\\.|"/, function(s) { - if (s === "\\'") return "'"; - return s.charAt(0) === "\\" ? s : "\\" + s - }); - str = '"' + str + '"' - } - return JSON.parse(str) - }; - var tagHandlers = { - if: function(expr) { - this.push("if (" + this.parseExpr(expr) + ") {"); - this.nest.unshift("if") - }, - else: function() { - if (this.nest[0] === "for") { - this.push("}, function() {") - } else { - this.push("} else {") - } - }, - elseif: function(expr) { - this.push("} else if (" + this.parseExpr(expr) + ") {") - }, - endif: function() { - this.nest.shift(); - this.push("}") - }, - for: function(str) { - var i = str.indexOf(" in "); - var name = str.slice(0, i).trim(); - var expr = str.slice(i + 4).trim(); - this.push("each(" + this.parseExpr(expr) + "," + JSON.stringify(name) + ",function() {"); - this.nest.unshift("for") - }, - endfor: function() { - this.nest.shift(); - this.push("});") - }, - raw: function() { - this.rawMode = true - }, - endraw: function() { - this.rawMode = false - }, - set: function(stmt) { - var i = stmt.indexOf("="); - var name = stmt.slice(0, i).trim(); - var expr = stmt.slice(i + 1).trim(); - this.push("set(" + JSON.stringify(name) + "," + this.parseExpr(expr) + ");") - }, - block: function(name) { - if (this.isParent) { - ++this.parentBlocks; - var blockName = "block_" + (this.escName(name) || this.parentBlocks); - this.push("block(typeof " + blockName + ' == "function" ? ' + blockName + " : function() {") - } else if (this.hasParent) { - this.isSilent = false; - ++this.childBlocks; - blockName = "block_" + (this.escName(name) || this.childBlocks); - this.push("function " + blockName + "() {") - } - this.nest.unshift("block") - }, - endblock: function() { - this.nest.shift(); - if (this.isParent) { - this.push("});") - } else if (this.hasParent) { - this.push("}"); - this.isSilent = true - } - }, - extends: function(name) { - name = this.parseQuoted(name); - var parentSrc = this.readTemplateFile(name); - this.isParent = true; - this.tokenize(parentSrc); - this.isParent = false; - this.hasParent = true; - this.isSilent = true - }, - include: function(name) { - name = this.parseQuoted(name); - var incSrc = this.readTemplateFile(name); - this.isInclude = true; - this.tokenize(incSrc); - this.isInclude = false - } - }; - tagHandlers.assign = tagHandlers.set; - tagHandlers.elif = tagHandlers.elseif; - var getRuntime = function runtime(data, opts) { - var defaults = { - autoEscape: "toJson" - }; - var _toString = Object.prototype.toString; - var _hasOwnProperty = Object.prototype.hasOwnProperty; - var getKeys = Object.keys || function(obj) { - var keys = []; - for (var n in obj) - if (_hasOwnProperty.call(obj, n)) keys.push(n); - return keys - }; - var isArray = Array.isArray || function(obj) { - return _toString.call(obj) === "[object Array]" - }; - var create = Object.create || function(obj) { - function F() {} - F.prototype = obj; - return new F - }; - var toString = function(val) { - if (val == null) return ""; - return typeof val.toString == "function" ? val.toString() : _toString.call(val) - }; - var extend = function(dest, src) { - var keys = getKeys(src); - for (var i = 0, len = keys.length; i < len; i++) { - var key = keys[i]; - dest[key] = src[key] - } - return dest - }; - var get = function() { - var val, n = arguments[0], - c = stack.length; - while (c--) { - val = stack[c][n]; - if (typeof val != "undefined") break - } - for (var i = 1, len = arguments.length; i < len; i++) { - if (val == null) continue; - n = arguments[i]; - val = _hasOwnProperty.call(val, n) ? val[n] : typeof val._get == "function" ? val[n] = val._get(n) : null - } - return val == null ? "" : val - }; - var set = function(n, val) { - stack[stack.length - 1][n] = val - }; - var push = function(ctx) { - stack.push(ctx || {}) - }; - var pop = function() { - stack.pop() - }; - var write = function(str) { - output.push(str) - }; - var filter = function(val) { - for (var i = 1, len = arguments.length; i < len; i++) { - var arr = arguments[i], - name = arr[0], - filter = filters[name]; - if (filter) { - arr[0] = val; - val = filter.apply(data, arr) - } else { - throw new Error("Invalid filter: " + name) - } - } - if (opts.autoEscape && name !== opts.autoEscape && name !== "safe") { - val = filters[opts.autoEscape].call(data, val) - } - output.push(val) - }; - var each = function(obj, loopvar, fn1, fn2) { - if (obj == null) return; - var arr = isArray(obj) ? obj : getKeys(obj), - len = arr.length; - var ctx = { - loop: { - length: len, - first: arr[0], - last: arr[len - 1] - } - }; - push(ctx); - for (var i = 0; i < len; i++) { - extend(ctx.loop, { - index: i + 1, - index0: i - }); - fn1(ctx[loopvar] = arr[i]) - } - if (len === 0 && fn2) fn2(); - pop() - }; - var block = function(fn) { - push(); - fn(); - pop() - }; - var render = function() { - return output.join("") - }; - data = data || {}; - opts = extend(defaults, opts || {}); - var filters = extend({ - html: function(val) { - return toString(val).split("&").join("&").split("<").join("<").split(">").join(">").split('"').join(""") - }, - safe: function(val) { - return val - }, - toJson: function(val) { - if (typeof val === "object") { - return JSON.stringify(val) - } - return toString(val) - } - }, opts.filters || {}); - var stack = [create(data || {})], - output = []; - return { - get: get, - set: set, - push: push, - pop: pop, - write: write, - filter: filter, - each: each, - block: block, - render: render - } - }; - var runtime; - jinja.compile = function(markup, opts) { - opts = opts || {}; - var parser = new Parser; - parser.readTemplateFile = this.readTemplateFile; - var code = []; - code.push("function render($) {"); - code.push("var get = $.get, set = $.set, push = $.push, pop = $.pop, write = $.write, filter = $.filter, each = $.each, block = $.block;"); - code.push.apply(code, parser.parse(markup)); - code.push("return $.render();"); - code.push("}"); - code = code.join("\n"); - if (opts.runtime === false) { - var fn = new Function("data", "options", "return (" + code + ")(runtime(data, options))") - } else { - runtime = runtime || (runtime = getRuntime.toString()); - fn = new Function("data", "options", "return (" + code + ")((" + runtime + ")(data, options))") - } - return { - render: fn - } - }; - jinja.render = function(markup, data, opts) { - var tmpl = jinja.compile(markup); - return tmpl.render(data, opts) - }; - jinja.templateFiles = []; - jinja.readTemplateFile = function(name) { - var templateFiles = this.templateFiles || []; - var templateFile = templateFiles[name]; - if (templateFile == null) { - throw new Error("Template file not found: " + name) - } - return templateFile - }; - - function trimLeft(str) { - return str.replace(LEADING_SPACE, "") - } - - function trimRight(str) { - return str.replace(TRAILING_SPACE, "") - } - - function matchAll(str, reg, fn) { - reg = new RegExp(reg.source, "g" + (reg.ignoreCase ? "i" : "") + (reg.multiline ? "m" : "")); - var match; - while (match = reg.exec(str)) { - var result = fn(match[0], match.index, str); - if (typeof result == "number") { - reg.lastIndex = result - } - } - } -}); \ No newline at end of file diff --git a/潇洒/js/jsonpathplus.min.js b/潇洒/js/jsonpathplus.min.js deleted file mode 100644 index 1feb326..0000000 --- a/潇洒/js/jsonpathplus.min.js +++ /dev/null @@ -1,1277 +0,0 @@ -! function(e, t) { - "object" == typeof exports && "undefined" != typeof module ? t(exports) : "function" == typeof define && define.amd ? define(["exports"], t) : t((e = "undefined" != typeof globalThis ? globalThis : e || self).JSONPath = {}) -}(this, function(e) { - "use strict"; - - function n(e, t, r) { - return t = l(t), - function(e, t) { - { - if (t && ("object" == typeof t || "function" == typeof t)) return t; - if (void 0 !== t) throw new TypeError("Derived constructors may only return object or undefined") - } - return function(e) { - if (void 0 !== e) return e; - throw new ReferenceError("this hasn't been initialised - super() hasn't been called") - }(e) - }(e, i() ? Reflect.construct(t, r || [], l(e).constructor) : t.apply(e, r)) - } - - function o(e, t, r) { - if (i()) return Reflect.construct.apply(null, arguments); - var n = [null]; - n.push.apply(n, t); - n = new(e.bind.apply(e, n)); - return r && h(n, r.prototype), n - } - - function i() { - try { - var e = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {})) - } catch (e) {} - return (i = function() { - return !!e - })() - } - - function t(t, e) { - var r, n = Object.keys(t); - return Object.getOwnPropertySymbols && (r = Object.getOwnPropertySymbols(t), e && (r = r.filter(function(e) { - return Object.getOwnPropertyDescriptor(t, e).enumerable - })), n.push.apply(n, r)), n - } - - function r(n) { - for (var e = 1; e < arguments.length; e++) { - var i = null != arguments[e] ? arguments[e] : {}; - e % 2 ? t(Object(i), !0).forEach(function(e) { - var t, r; - t = n, e = i[r = e], (r = a(r)) in t ? Object.defineProperty(t, r, { - value: e, - enumerable: !0, - configurable: !0, - writable: !0 - }) : t[r] = e - }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(n, Object.getOwnPropertyDescriptors(i)) : t(Object(i)).forEach(function(e) { - Object.defineProperty(n, e, Object.getOwnPropertyDescriptor(i, e)) - }) - } - return n - } - - function a(e) { - e = function(e, t) { - if ("object" != typeof e || !e) return e; - var r = e[Symbol.toPrimitive]; - if (void 0 === r) return ("string" === t ? String : Number)(e); - if ("object" != typeof(t = r.call(e, t || "default"))) return t; - throw new TypeError("@@toPrimitive must return a primitive value.") - }(e, "string"); - return "symbol" == typeof e ? e : e + "" - } - - function C(e) { - return (C = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) { - return typeof e - } : function(e) { - return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e - })(e) - } - - function s(e, t) { - if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") - } - - function u(e, t) { - for (var r = 0; r < t.length; r++) { - var n = t[r]; - n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, a(n.key), n) - } - } - - function c(e, t, r) { - return t && u(e.prototype, t), r && u(e, r), Object.defineProperty(e, "prototype", { - writable: !1 - }), e - } - - function l(e) { - return (l = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(e) { - return e.__proto__ || Object.getPrototypeOf(e) - })(e) - } - - function h(e, t) { - return (h = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(e, t) { - return e.__proto__ = t, e - })(e, t) - } - - function p(e) { - var r = "function" == typeof Map ? new Map : void 0; - return (p = function(e) { - if (null === e || ! function(t) { - try { - return -1 !== Function.toString.call(t).indexOf("[native code]") - } catch (e) { - return "function" == typeof t - } - }(e)) return e; - if ("function" != typeof e) throw new TypeError("Super expression must either be null or a function"); - if (void 0 !== r) { - if (r.has(e)) return r.get(e); - r.set(e, t) - } - - function t() { - return o(e, arguments, l(this).constructor) - } - return t.prototype = Object.create(e.prototype, { - constructor: { - value: t, - enumerable: !1, - writable: !0, - configurable: !0 - } - }), h(t, e) - })(e) - } - - function f(e) { - return function(e) { - if (Array.isArray(e)) return d(e) - }(e) || function(e) { - if ("undefined" != typeof Symbol && null != e[Symbol.iterator] || null != e["@@iterator"]) return Array.from(e) - }(e) || O(e) || function() { - throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.") - }() - } - - function O(e, t) { - if (e) { - if ("string" == typeof e) return d(e, t); - var r = Object.prototype.toString.call(e).slice(8, -1); - return "Object" === r && e.constructor && (r = e.constructor.name), "Map" === r || "Set" === r ? Array.from(e) : "Arguments" === r || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r) ? d(e, t) : void 0 - } - } - - function d(e, t) { - (null == t || t > e.length) && (t = e.length); - for (var r = 0, n = new Array(t); r < t; r++) n[r] = e[r]; - return n - } - var y = function() { - return c(function e() { - s(this, e) - }, [{ - key: "add", - value: function(e, t, r) { - if ("string" != typeof e) - for (var n in e) this.add(n, e[n], t); - else(Array.isArray(e) ? e : [e]).forEach(function(e) { - this[e] = this[e] || [], t && this[e][r ? "unshift" : "push"](t) - }, this) - } - }, { - key: "run", - value: function(e, t) { - this[e] = this[e] || [], this[e].forEach(function(e) { - e.call(t && t.context ? t.context : t, t) - }) - } - }]) - }(), - b = function() { - return c(function e(t) { - s(this, e), this.jsep = t, this.registered = {} - }, [{ - key: "register", - value: function() { - for (var t = this, e = arguments.length, r = new Array(e), n = 0; n < e; n++) r[n] = arguments[n]; - r.forEach(function(e) { - if ("object" !== C(e) || !e.name || !e.init) throw new Error("Invalid JSEP plugin format"); - t.registered[e.name] || (e.init(t.jsep), t.registered[e.name] = e) - }) - } - }]) - }(), - v = function() { - function l(e) { - s(this, l), this.expr = e, this.index = 0 - } - return c(l, [{ - key: "char", - get: function() { - return this.expr.charAt(this.index) - } - }, { - key: "code", - get: function() { - return this.expr.charCodeAt(this.index) - } - }, { - key: "throwError", - value: function(e) { - var t = new Error(e + " at character " + this.index); - throw t.index = this.index, t.description = e, t - } - }, { - key: "runHook", - value: function(e, t) { - if (l.hooks[e]) { - var r = { - context: this, - node: t - }; - return l.hooks.run(e, r), r.node - } - return t - } - }, { - key: "searchHook", - value: function(e) { - if (l.hooks[e]) { - var t = { - context: this - }; - return l.hooks[e].find(function(e) { - return e.call(t.context, t), t.node - }), t.node - } - } - }, { - key: "gobbleSpaces", - value: function() { - for (var e = this.code; e === l.SPACE_CODE || e === l.TAB_CODE || e === l.LF_CODE || e === l.CR_CODE;) e = this.expr.charCodeAt(++this.index); - this.runHook("gobble-spaces") - } - }, { - key: "parse", - value: function() { - this.runHook("before-all"); - var e = this.gobbleExpressions(), - e = 1 === e.length ? e[0] : { - type: l.COMPOUND, - body: e - }; - return this.runHook("after-all", e) - } - }, { - key: "gobbleExpressions", - value: function(e) { - for (var t, r, n = []; this.index < this.expr.length;) - if ((t = this.code) === l.SEMCOL_CODE || t === l.COMMA_CODE) this.index++; - else if (r = this.gobbleExpression()) n.push(r); - else if (this.index < this.expr.length) { - if (t === e) break; - this.throwError('Unexpected "' + this.char + '"') - } - return n - } - }, { - key: "gobbleExpression", - value: function() { - var e = this.searchHook("gobble-expression") || this.gobbleBinaryExpression(); - return this.gobbleSpaces(), this.runHook("after-expression", e) - } - }, { - key: "gobbleBinaryOp", - value: function() { - this.gobbleSpaces(); - for (var e = this.expr.substr(this.index, l.max_binop_len), t = e.length; 0 < t;) { - if (l.binary_ops.hasOwnProperty(e) && (!l.isIdentifierStart(this.code) || this.index + e.length < this.expr.length && !l.isIdentifierPart(this.expr.charCodeAt(this.index + e.length)))) return this.index += t, e; - e = e.substr(0, --t) - } - return !1 - } - }, { - key: "gobbleBinaryExpression", - value: function() { - var e, t, r, n, i, o, a, s, u, c = this.gobbleToken(); - if (!c) return c; - if (!(t = this.gobbleBinaryOp())) return c; - for (i = { - value: t, - prec: l.binaryPrecedence(t), - right_a: l.right_associative.has(t) - }, (o = this.gobbleToken()) || this.throwError("Expected expression after " + t), n = [c, i, o]; t = this.gobbleBinaryOp();) { - if (0 === (r = l.binaryPrecedence(t))) { - this.index -= t.length; - break - } - i = { - value: t, - prec: r, - right_a: l.right_associative.has(t) - }, s = t; - for (; 2 < n.length && (u = n[n.length - 2], i.right_a && u.right_a ? r > u.prec : r <= u.prec);) o = n.pop(), t = n.pop().value, c = n.pop(), e = { - type: l.BINARY_EXP, - operator: t, - left: c, - right: o - }, n.push(e); - (e = this.gobbleToken()) || this.throwError("Expected expression after " + s), n.push(i, e) - } - for (e = n[a = n.length - 1]; 1 < a;) e = { - type: l.BINARY_EXP, - operator: n[a - 1].value, - left: n[a - 2], - right: e - }, a -= 2; - return e - } - }, { - key: "gobbleToken", - value: function() { - var e, t, r, n; - if (this.gobbleSpaces(), n = this.searchHook("gobble-token")) return this.runHook("after-token", n); - if (e = this.code, l.isDecimalDigit(e) || e === l.PERIOD_CODE) return this.gobbleNumericLiteral(); - if (e === l.SQUOTE_CODE || e === l.DQUOTE_CODE) n = this.gobbleStringLiteral(); - else if (e === l.OBRACK_CODE) n = this.gobbleArray(); - else { - for (r = (t = this.expr.substr(this.index, l.max_unop_len)).length; 0 < r;) { - if (l.unary_ops.hasOwnProperty(t) && (!l.isIdentifierStart(this.code) || this.index + t.length < this.expr.length && !l.isIdentifierPart(this.expr.charCodeAt(this.index + t.length)))) { - this.index += r; - var i = this.gobbleToken(); - return i || this.throwError("missing unaryOp argument"), this.runHook("after-token", { - type: l.UNARY_EXP, - operator: t, - argument: i, - prefix: !0 - }) - } - t = t.substr(0, --r) - } - l.isIdentifierStart(e) ? (n = this.gobbleIdentifier(), l.literals.hasOwnProperty(n.name) ? n = { - type: l.LITERAL, - value: l.literals[n.name], - raw: n.name - } : n.name === l.this_str && (n = { - type: l.THIS_EXP - })) : e === l.OPAREN_CODE && (n = this.gobbleGroup()) - } - return n ? (n = this.gobbleTokenProperty(n), this.runHook("after-token", n)) : this.runHook("after-token", !1) - } - }, { - key: "gobbleTokenProperty", - value: function(e) { - this.gobbleSpaces(); - for (var t = this.code; t === l.PERIOD_CODE || t === l.OBRACK_CODE || t === l.OPAREN_CODE || t === l.QUMARK_CODE;) { - var r = void 0; - if (t === l.QUMARK_CODE) { - if (this.expr.charCodeAt(this.index + 1) !== l.PERIOD_CODE) break; - r = !0, this.index += 2, this.gobbleSpaces(), t = this.code - } - this.index++, t === l.OBRACK_CODE ? (e = { - type: l.MEMBER_EXP, - computed: !0, - object: e, - property: this.gobbleExpression() - }, this.gobbleSpaces(), (t = this.code) !== l.CBRACK_CODE && this.throwError("Unclosed ["), this.index++) : t === l.OPAREN_CODE ? e = { - type: l.CALL_EXP, - arguments: this.gobbleArguments(l.CPAREN_CODE), - callee: e - } : t !== l.PERIOD_CODE && !r || (r && this.index--, this.gobbleSpaces(), e = { - type: l.MEMBER_EXP, - computed: !1, - object: e, - property: this.gobbleIdentifier() - }), r && (e.optional = !0), this.gobbleSpaces(), t = this.code - } - return e - } - }, { - key: "gobbleNumericLiteral", - value: function() { - for (var e, t = ""; l.isDecimalDigit(this.code);) t += this.expr.charAt(this.index++); - if (this.code === l.PERIOD_CODE) - for (t += this.expr.charAt(this.index++); l.isDecimalDigit(this.code);) t += this.expr.charAt(this.index++); - if ("e" === (e = this.char) || "E" === e) { - for (t += this.expr.charAt(this.index++), "+" !== (e = this.char) && "-" !== e || (t += this.expr.charAt(this.index++)); l.isDecimalDigit(this.code);) t += this.expr.charAt(this.index++); - l.isDecimalDigit(this.expr.charCodeAt(this.index - 1)) || this.throwError("Expected exponent (" + t + this.char + ")") - } - return e = this.code, l.isIdentifierStart(e) ? this.throwError("Variable names cannot start with a number (" + t + this.char + ")") : (e === l.PERIOD_CODE || 1 === t.length && t.charCodeAt(0) === l.PERIOD_CODE) && this.throwError("Unexpected period"), { - type: l.LITERAL, - value: parseFloat(t), - raw: t - } - } - }, { - key: "gobbleStringLiteral", - value: function() { - for (var e = "", t = this.index, r = this.expr.charAt(this.index++), n = !1; this.index < this.expr.length;) { - var i = this.expr.charAt(this.index++); - if (i === r) { - n = !0; - break - } - if ("\\" === i) switch (i = this.expr.charAt(this.index++)) { - case "n": - e += "\n"; - break; - case "r": - e += "\r"; - break; - case "t": - e += "\t"; - break; - case "b": - e += "\b"; - break; - case "f": - e += "\f"; - break; - case "v": - e += "\v"; - break; - default: - e += i - } else e += i - } - return n || this.throwError('Unclosed quote after "' + e + '"'), { - type: l.LITERAL, - value: e, - raw: this.expr.substring(t, this.index) - } - } - }, { - key: "gobbleIdentifier", - value: function() { - var e = this.code, - t = this.index; - for (l.isIdentifierStart(e) ? this.index++ : this.throwError("Unexpected " + this.char); this.index < this.expr.length && (e = this.code, l.isIdentifierPart(e));) this.index++; - return { - type: l.IDENTIFIER, - name: this.expr.slice(t, this.index) - } - } - }, { - key: "gobbleArguments", - value: function(e) { - for (var t = [], r = !1, n = 0; this.index < this.expr.length;) { - this.gobbleSpaces(); - var i = this.code; - if (i === e) { - r = !0, this.index++, e === l.CPAREN_CODE && n && n >= t.length && this.throwError("Unexpected token " + String.fromCharCode(e)); - break - } - if (i === l.COMMA_CODE) { - if (this.index++, ++n !== t.length) - if (e === l.CPAREN_CODE) this.throwError("Unexpected token ,"); - else if (e === l.CBRACK_CODE) - for (var o = t.length; o < n; o++) t.push(null) - } else t.length !== n && 0 !== n ? this.throwError("Expected comma") : ((i = this.gobbleExpression()) && i.type !== l.COMPOUND || this.throwError("Expected comma"), t.push(i)) - } - return r || this.throwError("Expected " + String.fromCharCode(e)), t - } - }, { - key: "gobbleGroup", - value: function() { - this.index++; - var e = this.gobbleExpressions(l.CPAREN_CODE); - if (this.code === l.CPAREN_CODE) return this.index++, 1 === e.length ? e[0] : !!e.length && { - type: l.SEQUENCE_EXP, - expressions: e - }; - this.throwError("Unclosed (") - } - }, { - key: "gobbleArray", - value: function() { - return this.index++, { - type: l.ARRAY_EXP, - elements: this.gobbleArguments(l.CBRACK_CODE) - } - } - }], [{ - key: "version", - get: function() { - return "1.3.8" - } - }, { - key: "toString", - value: function() { - return "JavaScript Expression Parser (JSEP) v" + l.version - } - }, { - key: "addUnaryOp", - value: function(e) { - return l.max_unop_len = Math.max(e.length, l.max_unop_len), l.unary_ops[e] = 1, l - } - }, { - key: "addBinaryOp", - value: function(e, t, r) { - return l.max_binop_len = Math.max(e.length, l.max_binop_len), l.binary_ops[e] = t, r ? l.right_associative.add(e) : l.right_associative.delete(e), l - } - }, { - key: "addIdentifierChar", - value: function(e) { - return l.additional_identifier_chars.add(e), l - } - }, { - key: "addLiteral", - value: function(e, t) { - return l.literals[e] = t, l - } - }, { - key: "removeUnaryOp", - value: function(e) { - return delete l.unary_ops[e], e.length === l.max_unop_len && (l.max_unop_len = l.getMaxKeyLen(l.unary_ops)), l - } - }, { - key: "removeAllUnaryOps", - value: function() { - return l.unary_ops = {}, l.max_unop_len = 0, l - } - }, { - key: "removeIdentifierChar", - value: function(e) { - return l.additional_identifier_chars.delete(e), l - } - }, { - key: "removeBinaryOp", - value: function(e) { - return delete l.binary_ops[e], e.length === l.max_binop_len && (l.max_binop_len = l.getMaxKeyLen(l.binary_ops)), l.right_associative.delete(e), l - } - }, { - key: "removeAllBinaryOps", - value: function() { - return l.binary_ops = {}, l.max_binop_len = 0, l - } - }, { - key: "removeLiteral", - value: function(e) { - return delete l.literals[e], l - } - }, { - key: "removeAllLiterals", - value: function() { - return l.literals = {}, l - } - }, { - key: "parse", - value: function(e) { - return new l(e).parse() - } - }, { - key: "getMaxKeyLen", - value: function(e) { - return Math.max.apply(Math, [0].concat(f(Object.keys(e).map(function(e) { - return e.length - })))) - } - }, { - key: "isDecimalDigit", - value: function(e) { - return 48 <= e && e <= 57 - } - }, { - key: "binaryPrecedence", - value: function(e) { - return l.binary_ops[e] || 0 - } - }, { - key: "isIdentifierStart", - value: function(e) { - return 65 <= e && e <= 90 || 97 <= e && e <= 122 || 128 <= e && !l.binary_ops[String.fromCharCode(e)] || l.additional_identifier_chars.has(String.fromCharCode(e)) - } - }, { - key: "isIdentifierPart", - value: function(e) { - return l.isIdentifierStart(e) || l.isDecimalDigit(e) - } - }]) - }(), - y = new y; - Object.assign(v, { - hooks: y, - plugins: new b(v), - COMPOUND: "Compound", - SEQUENCE_EXP: "SequenceExpression", - IDENTIFIER: "Identifier", - MEMBER_EXP: "MemberExpression", - LITERAL: "Literal", - THIS_EXP: "ThisExpression", - CALL_EXP: "CallExpression", - UNARY_EXP: "UnaryExpression", - BINARY_EXP: "BinaryExpression", - ARRAY_EXP: "ArrayExpression", - TAB_CODE: 9, - LF_CODE: 10, - CR_CODE: 13, - SPACE_CODE: 32, - PERIOD_CODE: 46, - COMMA_CODE: 44, - SQUOTE_CODE: 39, - DQUOTE_CODE: 34, - OPAREN_CODE: 40, - CPAREN_CODE: 41, - OBRACK_CODE: 91, - CBRACK_CODE: 93, - QUMARK_CODE: 63, - SEMCOL_CODE: 59, - COLON_CODE: 58, - unary_ops: { - "-": 1, - "!": 1, - "~": 1, - "+": 1 - }, - binary_ops: { - "||": 1, - "&&": 2, - "|": 3, - "^": 4, - "&": 5, - "==": 6, - "!=": 6, - "===": 6, - "!==": 6, - "<": 7, - ">": 7, - "<=": 7, - ">=": 7, - "<<": 8, - ">>": 8, - ">>>": 8, - "+": 9, - "-": 9, - "*": 10, - "/": 10, - "%": 10 - }, - right_associative: new Set, - additional_identifier_chars: new Set(["$", "_"]), - literals: { - true: !0, - false: !1, - null: null - }, - this_str: "this" - }), v.max_unop_len = v.getMaxKeyLen(v.unary_ops), v.max_binop_len = v.getMaxKeyLen(v.binary_ops); - var E = function(e) { - return new v(e).parse() - }; - Object.getOwnPropertyNames(v).forEach(function(e) { - void 0 === E[e] && "prototype" !== e && (E[e] = v[e]) - }), E.Jsep = v; - b = { - name: "ternary", - init: function(o) { - o.hooks.add("after-expression", function(e) { - if (e.node && this.code === o.QUMARK_CODE) { - this.index++; - var t = e.node, - r = this.gobbleExpression(); - if (r || this.throwError("Expected expression"), this.gobbleSpaces(), this.code === o.COLON_CODE) { - this.index++; - var n = this.gobbleExpression(); - if (n || this.throwError("Expected expression"), e.node = { - type: "ConditionalExpression", - test: t, - consequent: r, - alternate: n - }, t.operator && o.binary_ops[t.operator] <= .9) { - for (var i = t; i.right.operator && o.binary_ops[i.right.operator] <= .9;) i = i.right; - e.node.test = i.right, i.right = e.node, e.node = t - } - } else this.throwError("Expected :") - } - }) - } - }; - E.plugins.register(b); - var b = { - name: "regex", - init: function(s) { - s.hooks.add("gobble-token", function(e) { - if (47 === this.code) { - for (var t = ++this.index, r = !1; this.index < this.expr.length;) { - if (47 === this.code && !r) { - for (var n = this.expr.slice(t, this.index), i = ""; ++this.index < this.expr.length;) { - var o = this.code; - if (!(97 <= o && o <= 122 || 65 <= o && o <= 90 || 48 <= o && o <= 57)) break; - i += this.char - } - var a = void 0; - try { - a = new RegExp(n, i) - } catch (e) { - this.throwError(e.message) - } - return e.node = { - type: s.LITERAL, - value: a, - raw: this.expr.slice(t - 1, this.index) - }, e.node = this.gobbleTokenProperty(e.node), e.node - } - this.code === s.OBRACK_CODE ? r = !0 : r && this.code === s.CBRACK_CODE && (r = !1), this.index += 92 === this.code ? 2 : 1 - } - this.throwError("Unclosed Regex") - } - }) - } - }, - g = { - name: "assignment", - assignmentOperators: new Set(["=", "*=", "**=", "/=", "%=", "+=", "-=", "<<=", ">>=", ">>>=", "&=", "^=", "|="]), - updateOperators: [43, 45], - assignmentPrecedence: .9, - init: function(t) { - var n = [t.IDENTIFIER, t.MEMBER_EXP]; - g.assignmentOperators.forEach(function(e) { - return t.addBinaryOp(e, g.assignmentPrecedence, !0) - }), t.hooks.add("gobble-token", function(e) { - var t = this, - r = this.code; - g.updateOperators.some(function(e) { - return e === r && e === t.expr.charCodeAt(t.index + 1) - }) && (this.index += 2, e.node = { - type: "UpdateExpression", - operator: 43 === r ? "++" : "--", - argument: this.gobbleTokenProperty(this.gobbleIdentifier()), - prefix: !0 - }, e.node.argument && n.includes(e.node.argument.type) || this.throwError("Unexpected ".concat(e.node.operator))) - }), t.hooks.add("after-token", function(e) { - var t, r = this; - e.node && (t = this.code, g.updateOperators.some(function(e) { - return e === t && e === r.expr.charCodeAt(r.index + 1) - }) && (n.includes(e.node.type) || this.throwError("Unexpected ".concat(e.node.operator)), this.index += 2, e.node = { - type: "UpdateExpression", - operator: 43 === t ? "++" : "--", - argument: e.node, - prefix: !1 - })) - }), t.hooks.add("after-expression", function(e) { - e.node && ! function t(e) { - g.assignmentOperators.has(e.operator) ? (e.type = "AssignmentExpression", t(e.left), t(e.right)) : e.operator || Object.values(e).forEach(function(e) { - e && "object" === C(e) && t(e) - }) - }(e.node) - }) - } - }, - A = Object.prototype.hasOwnProperty; - - function w(e, t) { - return (e = e.slice()).push(t), e - } - - function k(e, t) { - return (t = t.slice()).unshift(e), t - } - var x = function() { - function r(e) { - var t; - return s(this, r), (t = n(this, r, ['JSONPath should not be called with "new" (it prevents return of (unwrapped) scalar values)'])).avoidNew = !0, t.value = e, t.name = "NewError", t - } - return function(e, t) { - if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function"); - e.prototype = Object.create(t && t.prototype, { - constructor: { - value: e, - writable: !0, - configurable: !0 - } - }), Object.defineProperty(e, "prototype", { - writable: !1 - }), t && h(e, t) - }(r, p(Error)), c(r) - }(); - - function F(e, t, r, n, i) { - if (!(this instanceof F)) try { - return new F(e, t, r, n, i) - } catch (e) { - if (!e.avoidNew) throw e; - return e.value - } - "string" == typeof e && (i = n, n = r, r = t, t = e, e = null); - var o = e && "object" === C(e); - if (e = e || {}, this.json = e.json || r, this.path = e.path || t, this.resultType = e.resultType || "value", this.flatten = e.flatten || !1, this.wrap = !A.call(e, "wrap") || e.wrap, this.sandbox = e.sandbox || {}, this.eval = void 0 === e.eval ? "safe" : e.eval, this.ignoreEvalErrors = void 0 !== e.ignoreEvalErrors && e.ignoreEvalErrors, this.parent = e.parent || null, this.parentProperty = e.parentProperty || null, this.callback = e.callback || n || null, this.otherTypeCallback = e.otherTypeCallback || i || function() { - throw new TypeError("You must supply an otherTypeCallback callback option with the @other() operator.") - }, !1 !== e.autostart) { - var a = { - path: o ? e.path : t - }; - o ? "json" in e && (a.json = e.json) : a.json = r; - a = this.evaluate(a); - if (!a || "object" !== C(a)) throw new x(a); - return a - } - } - F.prototype.evaluate = function(e, t, r, n) { - var i = this, - o = this.parent, - a = this.parentProperty, - s = this.flatten, - u = this.wrap; - if (this.currResultType = this.resultType, this.currEval = this.eval, this.currSandbox = this.sandbox, r = r || this.callback, this.currOtherTypeCallback = n || this.otherTypeCallback, t = t || this.json, (e = e || this.path) && "object" === C(e) && !Array.isArray(e)) { - if (!e.path && "" !== e.path) throw new TypeError('You must supply a "path" property when providing an object argument to JSONPath.evaluate().'); - if (!A.call(e, "json")) throw new TypeError('You must supply a "json" property when providing an object argument to JSONPath.evaluate().'); - t = e.json, s = A.call(e, "flatten") ? e.flatten : s, this.currResultType = A.call(e, "resultType") ? e.resultType : this.currResultType, this.currSandbox = A.call(e, "sandbox") ? e.sandbox : this.currSandbox, u = A.call(e, "wrap") ? e.wrap : u, this.currEval = A.call(e, "eval") ? e.eval : this.currEval, r = A.call(e, "callback") ? e.callback : r, this.currOtherTypeCallback = A.call(e, "otherTypeCallback") ? e.otherTypeCallback : this.currOtherTypeCallback, o = A.call(e, "parent") ? e.parent : o, a = A.call(e, "parentProperty") ? e.parentProperty : a, e = e.path - } - if (o = o || null, a = a || null, Array.isArray(e) && (e = F.toPathString(e)), (e || "" === e) && t) { - e = F.toPathArray(e); - "$" === e[0] && 1 < e.length && e.shift(), this._hasParentSelector = null; - r = this._trace(e, t, ["$"], o, a, r).filter(function(e) { - return e && !e.isParentSelector - }); - return r.length ? u || 1 !== r.length || r[0].hasArrExpr ? r.reduce(function(e, t) { - t = i._getPreferredOutput(t); - return s && Array.isArray(t) ? e = e.concat(t) : e.push(t), e - }, []) : this._getPreferredOutput(r[0]) : u ? [] : void 0 - } - }, F.prototype._getPreferredOutput = function(e) { - var t = this.currResultType; - switch (t) { - case "all": - var r = Array.isArray(e.path) ? e.path : F.toPathArray(e.path); - return e.pointer = F.toPointer(r), e.path = "string" == typeof e.path ? e.path : F.toPathString(e.path), e; - case "value": - case "parent": - case "parentProperty": - return e[t]; - case "path": - return F.toPathString(e[t]); - case "pointer": - return F.toPointer(e.path); - default: - throw new TypeError("Unknown result type") - } - }, F.prototype._handleCallback = function(e, t, r) { - var n; - t && (n = this._getPreferredOutput(e), e.path = "string" == typeof e.path ? e.path : F.toPathString(e.path), t(n, r, e)) - }, F.prototype._trace = function(t, n, i, o, a, s, e, r) { - var u = this; - if (!t.length) return v = { - path: i, - value: n, - parent: o, - parentProperty: a, - hasArrExpr: e - }, this._handleCallback(v, s, "value"), v; - var c = t[0], - l = t.slice(1), - h = []; - - function p(e) { - Array.isArray(e) ? e.forEach(function(e) { - h.push(e) - }) : h.push(e) - } - if (("string" != typeof c || r) && n && A.call(n, c)) p(this._trace(l, n[c], w(i, c), n, c, s, e)); - else if ("*" === c) this._walk(n, function(e) { - p(u._trace(l, n[e], w(i, e), n, e, s, !0, !0)) - }); - else if (".." === c) p(this._trace(l, n, i, o, a, s, e)), this._walk(n, function(e) { - "object" === C(n[e]) && p(u._trace(t.slice(), n[e], w(i, e), n, e, s, !0)) - }); - else { - if ("^" === c) return this._hasParentSelector = !0, { - path: i.slice(0, -1), - expr: l, - isParentSelector: !0 - }; - if ("~" === c) return v = { - path: w(i, c), - value: a, - parent: o, - parentProperty: null - }, this._handleCallback(v, s, "property"), v; - if ("$" === c) p(this._trace(l, n, i, null, null, s, e)); - else if (/^(\x2D?[0-9]*):(\x2D?[0-9]*):?([0-9]*)$/.test(c)) p(this._slice(c, l, n, i, o, a, s)); - else if (0 === c.indexOf("?(")) { - if (!1 === this.currEval) throw new Error("Eval [?(expr)] prevented in JSONPath expression."); - var f = c.replace(/^\?\(((?:[\0-\t\x0B\f\x0E-\u2027\u202A-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*?)\)$/, "$1"), - d = /@(?:[\0-\t\x0B\f\x0E-\u2027\u202A-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])?((?:[\0->@-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)['\[](\??\((?:[\0-\t\x0B\f\x0E-\u2027\u202A-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*?\))(?!(?:[\0-\t\x0B\f\x0E-\u2027\u202A-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])\)\])['\]]/g.exec(f); - d ? this._walk(n, function(e) { - var t = [d[2]], - r = d[1] ? n[e][d[1]] : n[e]; - 0 < u._trace(t, r, i, o, a, s, !0).length && p(u._trace(l, n[e], w(i, e), n, e, s, !0)) - }) : this._walk(n, function(e) { - u._eval(f, n[e], e, i, o, a) && p(u._trace(l, n[e], w(i, e), n, e, s, !0)) - }) - } else if ("(" === c[0]) { - if (!1 === this.currEval) throw new Error("Eval [(expr)] prevented in JSONPath expression."); - p(this._trace(k(this._eval(c, n, i[i.length - 1], i.slice(0, -1), o, a), l), n, i, o, a, s, e)) - } else if ("@" === c[0]) { - var y = !1, - b = c.slice(1, -2); - switch (b) { - case "scalar": - n && ["object", "function"].includes(C(n)) || (y = !0); - break; - case "boolean": - case "string": - case "undefined": - case "function": - C(n) === b && (y = !0); - break; - case "integer": - !Number.isFinite(n) || n % 1 || (y = !0); - break; - case "number": - Number.isFinite(n) && (y = !0); - break; - case "nonFinite": - "number" != typeof n || Number.isFinite(n) || (y = !0); - break; - case "object": - n && C(n) === b && (y = !0); - break; - case "array": - Array.isArray(n) && (y = !0); - break; - case "other": - y = this.currOtherTypeCallback(n, i, o, a); - break; - case "null": - null === n && (y = !0); - break; - default: - throw new TypeError("Unknown value type " + b) - } - if (y) return v = { - path: i, - value: n, - parent: o, - parentProperty: a - }, this._handleCallback(v, s, "value"), v - } else if ("`" === c[0] && n && A.call(n, c.slice(1))) { - var v = c.slice(1); - p(this._trace(l, n[v], w(i, v), n, v, s, e, !0)) - } else if (c.includes(",")) { - var E = function(e, t) { - var r = "undefined" != typeof Symbol && e[Symbol.iterator] || e["@@iterator"]; - if (!r) { - if (Array.isArray(e) || (r = O(e)) || t && e && "number" == typeof e.length) { - r && (e = r); - var n = 0, - t = function() {}; - return { - s: t, - n: function() { - return n >= e.length ? { - done: !0 - } : { - done: !1, - value: e[n++] - } - }, - e: function(e) { - throw e - }, - f: t - } - } - throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.") - } - var i, o = !0, - a = !1; - return { - s: function() { - r = r.call(e) - }, - n: function() { - var e = r.next(); - return o = e.done, e - }, - e: function(e) { - a = !0, i = e - }, - f: function() { - try { - o || null == r.return || r.return() - } finally { - if (a) throw i - } - } - } - }(c.split(",")); - try { - for (E.s(); !(g = E.n()).done;) { - var g = g.value; - p(this._trace(k(g, l), n, i, o, a, s, !0)) - } - } catch (e) { - E.e(e) - } finally { - E.f() - } - } else !r && n && A.call(n, c) && p(this._trace(l, n[c], w(i, c), n, c, s, e, !0)) - } - if (this._hasParentSelector) - for (var x = 0; x < h.length; x++) { - var F = h[x]; - if (F && F.isParentSelector) { - var D = this._trace(F.expr, n, F.path, o, a, s, e); - if (Array.isArray(D)) { - h[x] = D[0]; - for (var _ = D.length, m = 1; m < _; m++) x++, h.splice(x, 0, D[m]) - } else h[x] = D - } - } - return h - }, F.prototype._walk = function(e, t) { - if (Array.isArray(e)) - for (var r = e.length, n = 0; n < r; n++) t(n); - else e && "object" === C(e) && Object.keys(e).forEach(function(e) { - t(e) - }) - }, F.prototype._slice = function(e, t, r, n, i, o, a) { - if (Array.isArray(r)) { - for (var s = r.length, u = e.split(":"), c = u[2] && Number.parseInt(u[2]) || 1, e = u[0] && Number.parseInt(u[0]) || 0, l = u[1] && Number.parseInt(u[1]) || s, e = e < 0 ? Math.max(0, e + s) : Math.min(s, e), l = l < 0 ? Math.max(0, l + s) : Math.min(s, l), h = [], p = e; p < l; p += c) this._trace(k(p, t), r, n, i, o, a, !0).forEach(function(e) { - h.push(e) - }); - return h - } - }, F.prototype._eval = function(t, e, r, n, i, o) { - var a = this; - this.currSandbox._$_parentProperty = o, this.currSandbox._$_parent = i, this.currSandbox._$_property = r, this.currSandbox._$_root = this.json, this.currSandbox._$_v = e; - e = t.includes("@path"); - e && (this.currSandbox._$_path = F.toPathString(n.concat([r]))); - var s = this.currEval + "Script:" + t; - if (!F.cache[s]) { - var u = t.replace(/@parentProperty/g, "_$_parentProperty").replace(/@parent/g, "_$_parent").replace(/@property/g, "_$_property").replace(/@root/g, "_$_root").replace(/@([\t-\r \)\.\[\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF])/g, "_$_v$1"); - if (e && (u = u.replace(/@path/g, "_$_path")), "safe" === this.currEval || !0 === this.currEval || void 0 === this.currEval) F.cache[s] = new this.safeVm.Script(u); - else if ("native" === this.currEval) F.cache[s] = new this.vm.Script(u); - else if ("function" == typeof this.currEval && this.currEval.prototype && A.call(this.currEval.prototype, "runInNewContext")) { - e = this.currEval; - F.cache[s] = new e(u) - } else { - if ("function" != typeof this.currEval) throw new TypeError('Unknown "eval" property "'.concat(this.currEval, '"')); - F.cache[s] = { - runInNewContext: function(e) { - return a.currEval(u, e) - } - } - } - } - try { - return F.cache[s].runInNewContext(this.currSandbox) - } catch (e) { - if (this.ignoreEvalErrors) return !1; - throw new Error("jsonPath: " + e.message + ": " + t) - } - }, F.cache = {}, F.toPathString = function(e) { - for (var t = e, r = t.length, n = "$", i = 1; i < r; i++) /^(~|\^|@(?:[\0-\t\x0B\f\x0E-\u2027\u202A-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*?\(\))$/.test(t[i]) || (n += /^[\*0-9]+$/.test(t[i]) ? "[" + t[i] + "]" : "['" + t[i] + "']"); - return n - }, F.toPointer = function(e) { - for (var t = e, r = t.length, n = "", i = 1; i < r; i++) /^(~|\^|@(?:[\0-\t\x0B\f\x0E-\u2027\u202A-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*?\(\))$/.test(t[i]) || (n += "/" + t[i].toString().replace(/~/g, "~0").replace(/\//g, "~1")); - return n - }, F.toPathArray = function(e) { - var t = F.cache; - if (t[e]) return t[e].concat(); - var r = [], - n = e.replace(/@(?:null|boolean|number|string|integer|undefined|nonFinite|scalar|array|object|function|other)\(\)/g, ";$&;").replace(/['\[](\??\((?:[\0-\t\x0B\f\x0E-\u2027\u202A-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*?\))['\]](?!(?:[\0-\t\x0B\f\x0E-\u2027\u202A-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])\])/g, function(e, t) { - return "[#" + (r.push(t) - 1) + "]" - }).replace(/\[["']((?:[\0-&\(-\\\^-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)["']\]/g, function(e, t) { - return "['" + t.replace(/\./g, "%@%").replace(/~/g, "%%@@%%") + "']" - }).replace(/~/g, ";~;").replace(/["']?\.["']?(?!(?:[\0-Z\\-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*\])|\[["']?/g, ";").replace(/%@%/g, ".").replace(/%%@@%%/g, "~").replace(/(?:;)?(\^+)(?:;)?/g, function(e, t) { - return ";" + t.split("").join(";") + ";" - }).replace(/;;;|;;/g, ";..;").replace(/;$|'?\]|'$/g, "").split(";").map(function(e) { - var t = e.match(/#([0-9]+)/); - return t && t[1] ? r[t[1]] : e - }); - return t[e] = n, t[e].concat() - }; - E.plugins.register(b, g); - var D = { - evalAst: function(e, t) { - switch (e.type) { - case "BinaryExpression": - case "LogicalExpression": - return D.evalBinaryExpression(e, t); - case "Compound": - return D.evalCompound(e, t); - case "ConditionalExpression": - return D.evalConditionalExpression(e, t); - case "Identifier": - return D.evalIdentifier(e, t); - case "Literal": - return D.evalLiteral(e, t); - case "MemberExpression": - return D.evalMemberExpression(e, t); - case "UnaryExpression": - return D.evalUnaryExpression(e, t); - case "ArrayExpression": - return D.evalArrayExpression(e, t); - case "CallExpression": - return D.evalCallExpression(e, t); - case "AssignmentExpression": - return D.evalAssignmentExpression(e, t); - default: - throw SyntaxError("Unexpected expression", e) - } - }, - evalBinaryExpression: function(e, t) { - return { - "||": function(e, t) { - return e || t() - }, - "&&": function(e, t) { - return e && t() - }, - "|": function(e, t) { - return e | t() - }, - "^": function(e, t) { - return e ^ t() - }, - "&": function(e, t) { - return e & t() - }, - "==": function(e, t) { - return e == t() - }, - "!=": function(e, t) { - return e != t() - }, - "===": function(e, t) { - return e === t() - }, - "!==": function(e, t) { - return e !== t() - }, - "<": function(e, t) { - return e < t() - }, - ">": function(e, t) { - return e > t() - }, - "<=": function(e, t) { - return e <= t() - }, - ">=": function(e, t) { - return e >= t() - }, - "<<": function(e, t) { - return e << t() - }, - ">>": function(e, t) { - return e >> t() - }, - ">>>": function(e, t) { - return e >>> t() - }, - "+": function(e, t) { - return e + t() - }, - "-": function(e, t) { - return e - t() - }, - "*": function(e, t) { - return e * t() - }, - "/": function(e, t) { - return e / t() - }, - "%": function(e, t) { - return e % t() - } - } [e.operator](D.evalAst(e.left, t), function() { - return D.evalAst(e.right, t) - }) - }, - evalCompound: function(e, t) { - for (var r = 0; r < e.body.length; r++) { - "Identifier" === e.body[r].type && ["var", "let", "const"].includes(e.body[r].name) && e.body[r + 1] && "AssignmentExpression" === e.body[r + 1].type && (r += 1); - var n = e.body[r], - i = D.evalAst(n, t) - } - return i - }, - evalConditionalExpression: function(e, t) { - return D.evalAst(e.test, t) ? D.evalAst(e.consequent, t) : D.evalAst(e.alternate, t) - }, - evalIdentifier: function(e, t) { - if (e.name in t) return t[e.name]; - throw ReferenceError("".concat(e.name, " is not defined")) - }, - evalLiteral: function(e) { - return e.value - }, - evalMemberExpression: function(e, t) { - var r = e.computed ? D.evalAst(e.property) : e.property.name, - t = D.evalAst(e.object, t), - r = t[r]; - return "function" == typeof r ? r.bind(t) : r - }, - evalUnaryExpression: function(e, t) { - return { - "-": function(e) { - return -D.evalAst(e, t) - }, - "!": function(e) { - return !D.evalAst(e, t) - }, - "~": function(e) { - return ~D.evalAst(e, t) - }, - "+": function(e) { - return +D.evalAst(e, t) - } - } [e.operator](e.argument) - }, - evalArrayExpression: function(e, t) { - return e.elements.map(function(e) { - return D.evalAst(e, t) - }) - }, - evalCallExpression: function(e, t) { - var r = e.arguments.map(function(e) { - return D.evalAst(e, t) - }); - return D.evalAst(e.callee, t).apply(void 0, f(r)) - }, - evalAssignmentExpression: function(e, t) { - if ("Identifier" !== e.left.type) throw SyntaxError("Invalid left-hand side in assignment"); - var r = e.left.name, - e = D.evalAst(e.right, t); - return t[r] = e, t[r] - } - }, - b = function() { - return c(function e(t) { - s(this, e), this.code = t, this.ast = E(this.code) - }, [{ - key: "runInNewContext", - value: function(e) { - e = r({}, e); - return D.evalAst(this.ast, e) - } - }]) - }(); - F.prototype.vm = { - Script: function() { - return c(function e(t) { - s(this, e), this.code = t - }, [{ - key: "runInNewContext", - value: function(n) { - var e = this.code, - t = Object.keys(n), - r = []; - ! function(e, t, r) { - for (var n = e.length, i = 0; i < n; i++) r(e[i]) && t.push(e.splice(i--, 1)[0]) - }(t, r, function(e) { - return "function" == typeof n[e] - }); - var i = t.map(function(e) { - return n[e] - }), - r = r.reduce(function(e, t) { - var r = n[t].toString(); - return /function/.test(r) || (r = "function " + r), "var " + t + "=" + r + ";" + e - }, ""); - /(["'])use strict\1/.test(e = r + e) || t.includes("arguments") || (e = "var arguments = undefined;" + e); - r = (e = e.replace(/;[\t-\r \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]*$/, "")).lastIndexOf(";"), e = -1 < r ? e.slice(0, r + 1) + " return " + e.slice(r + 1) : " return " + e; - return o(Function, t.concat([e])).apply(void 0, f(i)) - } - }]) - }() - }, F.prototype.safeVm = { - Script: b - }, e.JSONPath = F, e.SafeScript = b -}); \ No newline at end of file diff --git a/潇洒/js/uri.min.js b/潇洒/js/uri.min.js deleted file mode 100644 index 66082b0..0000000 --- a/潇洒/js/uri.min.js +++ /dev/null @@ -1 +0,0 @@ -(function(global){var re={starts_with_slashes:/^\/+/,ends_with_slashes:/\/+$/,pluses:/\+/g,query_separator:/[&;]/,uri_parser:/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*)(?::([^:@]*))?)?@)?(\[[0-9a-fA-F:.]+\]|[^:\/?#]*)(?::(\d+|(?=:)))?(:)?)((((?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/};if(!Array.prototype.forEach){Array.prototype.forEach=function(callback,thisArg){var T,k;if(this==null){throw new TypeError(' this is null or not defined');}var O=Object(this);var len=O.length>>>0;if(typeof callback!=="function"){throw new TypeError(callback+' is not a function');}if(arguments.length>1){T=thisArg}k=0;while(k0){s+='&'}if(param[1]===null){s+=param[0]}else{s+=param[0];s+='=';if(typeof param[1]!=='undefined'){s+=encodeURIComponent(param[1])}}}return s.length>0?'?'+s:s};Uri.prototype.getQueryParamValue=function(key){var param,i,l;for(i=0,l=this.queryPairs.length;i0){this.queryPairs.push([key,val])}return this};Uri.prototype.hasQueryParam=function(key){var i,len=this.queryPairs.length;for(i=0;i=0){this.deleteQueryParam(key,decode(oldVal)).addQueryParam(key,newVal,index)}}else{for(i=0;i { - try { - let api = "" + input.split("?")[0]; - console.log(api); - let response = fetch(api, { - method: 'get', - headers: { - 'User-Agent': 'okhttp/3.14.9', - 'Content-Type': 'application/x-www-form-urlencoded' - } - }); - let bata = JSON.parse(response); - if (bata.url.includes("qq,qiyi,imgo,youku,leshi,bilibili1,m1905")) { - input = { - parse: 0, - url: bata.url, - jx: 0, - danmaku: "http://103.45.162.207:25252/hbdm.php?key=7894561232&id=" + input.split("?")[0] - }; - } else { - input = { - parse: 0, - url: input.split("?")[0], - jx: 1, - danmaku: "http://103.45.162.207:25252/hbdm.php?key=7894561232&id=" + input.split("?")[0] - }; - } - } catch { - input = { - parse: 0, - url: input.split("?")[0], - jx: 1, - danmaku: "http://103.45.162.207:25252/hbdm.php?key=7894561232&id=" + input.split("?")[0] - }; - } - }), - // 疑似t4专用的 - // lazy:'js:input={parse: 1, playUrl: "", jx: 1, url: input.split("?")[0]}', - // 手动调用解析请求json的url,此lazy不方便 - // lazy:'js:input="https://cache.json.icu/home/api?type=ys&uid=292796&key=fnoryABDEFJNPQV269&url="+input.split("?")[0];log(input);let html=JSON.parse(request(input));log(html);input=html.url||input', - 推荐: 'json:data;title;cover;comment;cat+ent_id;description', - 一级: 'json:data.movies;title;cover;pubdate;id;description', - 二级: '', - 二级: $js.toString(() => { - let html = JSON.parse(fetch(input, fetch_params)); - let data = html.data; - let tilte = data.title; - let img = data.cdncover; - let vod_type = data.moviecategory.join(","); - let area = data.area.join(","); - let director = data.director.join(","); - let actor = data.actor.join(","); - let content = data.description; - let base_vod = { - vod_id: input, - vod_name: tilte, - type_name: vod_type, - vod_actor: actor, - vod_director: director, - vod_content: content, - vod_remarks: area, - vod_pic: urljoin2(input, img) - }; - let delta = 50; - let vod_play = {}; - let sites = data.playlink_sites; - sites.forEach(function(site) { - let playList = ""; - let vodItems = []; - print(data) - if (data.allupinfo) { - let total = parseInt(data.allupinfo[site]); - print(total) - for (let j = 1; j < total; j += delta) { - let end = Math.min(total, j + delta - 1); - print(end) - let url2 = buildUrl(input, { - start: j, - end: end, - site: site - }); - let vod_data = JSON.parse(fetch(url2), fetch_params).data; - if (vod_data != null) { - if (vod_data.allepidetail) { - vod_data = vod_data.allepidetail[site]; - vod_data.forEach(function(item, index) { - vodItems.push((item.playlink_num || "") + "$" + urlDeal(item.url || "")) - }) - } else { - vod_data = vod_data.defaultepisode; - vod_data.forEach(function(item, index) { - vodItems.push((item.period || "") + (item.name || "") + "$" + urlDeal(item.url) || "") - }) - } - } - } - } else { - let item = data.playlinksdetail[site]; - vodItems.push((item.sort || "") + "$" + urlDeal(item.default_url || "")) - } - if (vodItems.length > 0) { - playList = vodItems.join("#") - } - if (playList.length < 1) { - return - } - vod_play[site] = playList - }); - let tabs = Object.keys(vod_play); - let playUrls = []; - for (let id in tabs) { - print("id:" + id); - playUrls.push(vod_play[tabs[id]]) - } - if (tabs.length > 0) { - let vod_play_from = tabs.join("$$$"); - let vod_play_url = playUrls.join("$$$"); - base_vod.vod_play_from = vod_play_from; - base_vod.vod_play_url = vod_play_url - } - VOD = base_vod; - }), - 搜索: 'json:data.longData.rows;titleTxt||titlealias;cover;cat_name;cat_id+en_id;description', -} \ No newline at end of file diff --git a/潇洒/js/优酷视频.js b/潇洒/js/优酷视频.js deleted file mode 100644 index c8559f9..0000000 --- a/潇洒/js/优酷视频.js +++ /dev/null @@ -1,2299 +0,0 @@ -var rule = { - title: '优酷[官]', - host: 'https://www.%79%6f%75%6b%75.com', - homeUrl: '', - searchUrl: 'https://search.%79%6f%75%6b%75.com/api/search?pg=fypage&keyword=**', - searchable: 2, - quickSearch: 0, - filterable: 1, - multi: 1, - url: '/category/data?optionRefresh=1&pageNo=fypage¶ms=fyfilter', - filter_url: '{{fl}}', - filter: { - "电视剧": [{ - "key": "main_area", - "name": "全部地区", - "value": [{ - "n": "全部地区", - "v": "" - }, { - "n": "内地剧", - "v": "中国内地" - }, { - "n": "港剧", - "v": "中国香港" - }, { - "n": "台剧", - "v": "中国台湾" - }, { - "n": "韩剧", - "v": "韩国" - }, { - "n": "美剧", - "v": "美国" - }, { - "n": "英剧", - "v": "英国" - }, { - "n": "日剧", - "v": "日本" - }, { - "n": "泰剧", - "v": "泰国" - }] - }, { - "key": "tags", - "name": "全部类型", - "value": [{ - "n": "全部类型", - "v": "" - }, { - "n": "青春", - "v": "青春" - }, { - "n": "古装", - "v": "古装" - }, { - "n": "爱情", - "v": "爱情" - }, { - "n": "都市", - "v": "都市" - }, { - "n": "喜剧", - "v": "喜剧,搞笑" - }, { - "n": "战争", - "v": "战争" - }, { - "n": "军旅", - "v": "军旅" - }, { - "n": "谍战", - "v": "谍战" - }, { - "n": "偶像", - "v": "偶像" - }, { - "n": "警匪", - "v": "警匪" - }, { - "n": "冒险", - "v": "冒险" - }, { - "n": "穿越", - "v": "穿越" - }, { - "n": "仙侠", - "v": "仙侠" - }, { - "n": "武侠", - "v": "武侠" - }, { - "n": "悬疑", - "v": "悬疑" - }, { - "n": "罪案", - "v": "罪案" - }, { - "n": "家庭", - "v": "家庭" - }, { - "n": "历史", - "v": "历史" - }, { - "n": "年代", - "v": "年代" - }, { - "n": "农村", - "v": "农村" - }] - }, { - "key": "year", - "name": "全部年份", - "value": [{ - "n": "全部年份", - "v": "" - }, { - "n": "2025", - "v": "2025" - }, { - "n": "2024", - "v": "2024" - }, { - "n": "2023", - "v": "2023" - }, { - "n": "2022", - "v": "2022" - }, { - "n": "2021", - "v": "2021" - }, { - "n": "2020", - "v": "2020" - }, { - "n": "2019", - "v": "2019" - }, { - "n": "2018", - "v": "2018" - }, { - "n": "2017", - "v": "2017" - }, { - "n": "2016", - "v": "2016" - }, { - "n": "2015", - "v": "2015" - }, { - "n": "2014-2011", - "v": "2011-2014" - }, { - "n": "更早", - "v": "-2010" - }] - }, { - "key": "status", - "name": "全部规格", - "value": [{ - "n": "全部规格", - "v": "" - }, { - "n": "全网独播", - "v": "1" - }, { - "n": "优酷自制", - "v": "2" - }, { - "n": "已完结", - "v": "3" - }, { - "n": "即将上线", - "v": "4" - }, { - "n": "短剧", - "v": "5" - }] - }, { - "key": "pay_type", - "name": "付费类型", - "value": [{ - "n": "付费类型", - "v": "" - }, { - "n": "免费", - "v": "0" - }, { - "n": "VIP", - "v": "2" - }, { - "n": "付费", - "v": "1" - }] - }, { - "key": "sort", - "name": "综合排序", - "value": [{ - "n": "综合排序", - "v": "" - }, { - "n": "热度最高", - "v": "7" - }, { - "n": "最新上线", - "v": "1" - }, { - "n": "最好评", - "v": "3" - }, { - "n": "最多播放", - "v": "2" - }] - }], - "电影": [{ - "key": "main_area", - "name": "全部地区", - "value": [{ - "n": "全部地区", - "v": "" - }, { - "n": "内地", - "v": "中国内地" - }, { - "n": "中国香港", - "v": "中国香港" - }, { - "n": "中国台湾", - "v": "中国台湾" - }, { - "n": "美国", - "v": "美国" - }, { - "n": "印度", - "v": "印度" - }, { - "n": "日韩", - "v": "韩国,日本" - }, { - "n": "泰国", - "v": "泰国" - }, { - "n": "欧洲", - "v": "欧洲" - }] - }, { - "key": "tags", - "name": "全部类型", - "value": [{ - "n": "全部类型", - "v": "" - }, { - "n": "喜剧", - "v": "喜剧,搞笑" - }, { - "n": "动作", - "v": "动作" - }, { - "n": "怪兽", - "v": "怪兽" - }, { - "n": "战争", - "v": "战争" - }, { - "n": "爱情", - "v": "爱情" - }, { - "n": "悬疑", - "v": "悬疑" - }, { - "n": "武侠", - "v": "武侠" - }, { - "n": "奇幻", - "v": "奇幻" - }, { - "n": "科幻", - "v": "科幻" - }, { - "n": "冒险", - "v": "冒险" - }, { - "n": "警匪", - "v": "警匪" - }, { - "n": "动画", - "v": "动画" - }, { - "n": "惊悚", - "v": "惊悚" - }, { - "n": "犯罪", - "v": "犯罪" - }, { - "n": "恐怖", - "v": "恐怖" - }, { - "n": "剧情", - "v": "剧情" - }, { - "n": "历史", - "v": "历史" - }, { - "n": "纪录片", - "v": "纪录片" - }, { - "n": "传记", - "v": "传记" - }, { - "n": "歌舞", - "v": "歌舞" - }, { - "n": "短片", - "v": "短片" - }, { - "n": "其他", - "v": "其他" - }] - }, { - "key": "source", - "name": "全部规格", - "value": [{ - "n": "全部规格", - "v": "" - }, { - "n": "院线", - "v": "1" - }, { - "n": "网络电影", - "v": "0" - }, { - "n": "独播", - "v": "2" - }, { - "n": "高清修复", - "v": "3" - }, { - "n": "1080P", - "v": "4" - }] - }, { - "key": "year", - "name": "全部年份", - "value": [{ - "n": "全部年份", - "v": "" - }, { - "n": "2025", - "v": "2025" - }, { - "n": "2024", - "v": "2024" - }, { - "n": "2023", - "v": "2023" - }, { - "n": "2022", - "v": "2022" - }, { - "n": "2021", - "v": "2021" - }, { - "n": "2020", - "v": "2020" - }, { - "n": "2019", - "v": "2019" - }, { - "n": "2018", - "v": "2018" - }, { - "n": "2017", - "v": "2017" - }, { - "n": "2016", - "v": "2016" - }, { - "n": "2015", - "v": "2015" - }, { - "n": "2014-2010", - "v": "2010-2014" - }, { - "n": "2009-2000", - "v": "2000-2009" - }, { - "n": "90年代", - "v": "1990-1999" - }, { - "n": "80年代", - "v": "1980-1989" - }, { - "n": "70年代", - "v": "1970-1979" - }, { - "n": "更早", - "v": "-1969" - }] - }, { - "key": "pay_type", - "name": "付费类型", - "value": [{ - "n": "付费类型", - "v": "" - }, { - "n": "免费", - "v": "0" - }, { - "n": "会员", - "v": "2" - }, { - "n": "点播", - "v": "1" - }] - }, { - "key": "sort", - "name": "综合排序", - "value": [{ - "n": "综合排序", - "v": "" - }, { - "n": "热度最高", - "v": "7" - }, { - "n": "最多播放", - "v": "2" - }, { - "n": "最新上线", - "v": "1" - }, { - "n": "最好评", - "v": "3" - }] - }, { - "key": "tag_label_name", - "name": "为你推荐", - "value": [{ - "n": "为你推荐", - "v": "" - }, { - "n": "高分必看", - "v": "高分必看" - }, { - "n": "卖座电影", - "v": "卖座电影" - }, { - "n": "小说改编", - "v": "小说改编" - }, { - "n": "铁血硬汉", - "v": "铁血硬汉" - }, { - "n": "视效大片", - "v": "视效大片" - }, { - "n": "漫画改编", - "v": "漫画改编" - }, { - "n": "绝地求生", - "v": "绝地求生" - }, { - "n": "真人真事改编", - "v": "真人真事改编" - }, { - "n": "范伟", - "v": "范伟" - }, { - "n": "火爆枪战", - "v": "火爆枪战" - }, { - "n": "影史经典", - "v": "影史经典" - }, { - "n": "拯救世界", - "v": "拯救世界" - }, { - "n": "万茜", - "v": "万茜" - }, { - "n": "马思纯", - "v": "马思纯" - }, { - "n": "王俊凯", - "v": "王俊凯" - }, { - "n": "豪华阵容", - "v": "豪华阵容" - }, { - "n": "李玉", - "v": "李玉" - }, { - "n": "无厘头喜剧", - "v": "无厘头喜剧" - }, { - "n": "超能力", - "v": "超能力" - }, { - "n": "欢喜搭档", - "v": "欢喜搭档" - }] - }], - "综艺": [{ - "key": "main_area", - "name": "全部地区", - "value": [{ - "n": "全部地区", - "v": "" - }, { - "n": "内地", - "v": "中国内地" - }, { - "n": "中国台湾", - "v": "中国台湾" - }, { - "n": "美国", - "v": "美国" - }, { - "n": "英国", - "v": "英国" - }] - }, { - "key": "tags", - "name": "全部类型", - "value": [{ - "n": "全部类型", - "v": "" - }, { - "n": "偶像", - "v": "偶像" - }, { - "n": "舞蹈", - "v": "舞蹈" - }, { - "n": "音乐", - "v": "音乐" - }, { - "n": "情感", - "v": "情感" - }, { - "n": "喜剧", - "v": "喜剧,搞笑" - }, { - "n": "体育", - "v": "体育" - }, { - "n": "游戏", - "v": "游戏" - }, { - "n": "相声", - "v": "相声" - }, { - "n": "婚恋", - "v": "婚恋" - }, { - "n": "时尚", - "v": "时尚" - }, { - "n": "晚会", - "v": "晚会" - }, { - "n": "明星访谈", - "v": "明星访谈" - }, { - "n": "亲子", - "v": "亲子" - }, { - "n": "生活", - "v": "生活" - }, { - "n": "文化", - "v": "文化" - }, { - "n": "美食", - "v": "美食" - }, { - "n": "旅游", - "v": "旅游" - }, { - "n": "益智", - "v": "益智" - }] - }, { - "key": "year", - "name": "全部年份", - "value": [{ - "n": "全部年份", - "v": "" - }, { - "n": "2025", - "v": "2025" - }, { - "n": "2024", - "v": "2024" - }, { - "n": "2023", - "v": "2023" - }, { - "n": "2022", - "v": "2022" - }, { - "n": "2021", - "v": "2021" - }, { - "n": "2020", - "v": "2020" - }, { - "n": "2019", - "v": "2019" - }, { - "n": "2018", - "v": "2018" - }, { - "n": "2017", - "v": "2017" - }, { - "n": "2016", - "v": "2016" - }, { - "n": "2015", - "v": "2015" - }, { - "n": "2014-2011", - "v": "2011-2014" - }, { - "n": "更早", - "v": "-2010" - }] - }, { - "key": "status", - "name": "全部规格", - "value": [{ - "n": "全部规格", - "v": "" - }, { - "n": "优酷自制", - "v": "2" - }, { - "n": "优酷独播", - "v": "1" - }, { - "n": "电视综艺", - "v": "6" - }, { - "n": "已完结", - "v": "3" - }, { - "n": "即将上线", - "v": "4" - }] - }, { - "key": "pay_type", - "name": "付费类型", - "value": [{ - "n": "付费类型", - "v": "" - }, { - "n": "免费", - "v": "0" - }, { - "n": "VIP", - "v": "2" - }, { - "n": "付费", - "v": "1" - }] - }, { - "key": "sort", - "name": "热度最高", - "value": [{ - "n": "热度最高", - "v": "" - }, { - "n": "最新更新", - "v": "8" - }, { - "n": "最近开播", - "v": "9" - }, { - "n": "最多评论", - "v": "4" - }] - }, { - "key": "tag_label_name", - "name": "为你推荐", - "value": [{ - "n": "为你推荐", - "v": "" - }, { - "n": "舞台竞演", - "v": "舞台竞演" - }, { - "n": "刘雨昕", - "v": "刘雨昕" - }, { - "n": "王一博", - "v": "王一博" - }, { - "n": "韩庚", - "v": "韩庚" - }, { - "n": "李承铉", - "v": "李承铉" - }, { - "n": "户外竞技", - "v": "户外竞技" - }, { - "n": "浙江卫视", - "v": "浙江卫视" - }, { - "n": "东方卫视", - "v": "东方卫视" - }, { - "n": "岳云鹏", - "v": "岳云鹏" - }, { - "n": "王迅", - "v": "王迅" - }, { - "n": "杨迪", - "v": "杨迪" - }, { - "n": "杨超越", - "v": "杨超越" - }, { - "n": "黄明昊", - "v": "黄明昊" - }, { - "n": "郭京飞", - "v": "郭京飞" - }, { - "n": "欧阳娜娜", - "v": "欧阳娜娜" - }, { - "n": "德云社", - "v": "德云社" - }, { - "n": "郑恺", - "v": "郑恺" - }, { - "n": "华少", - "v": "华少" - }, { - "n": "郭德纲", - "v": "郭德纲" - }, { - "n": "贾玲", - "v": "贾玲" - }] - }], - "动漫": [{ - "key": "sort", - "name": "综合排序", - "value": [{ - "n": "综合排序", - "v": "" - }, { - "n": "最多播放", - "v": "2" - }, { - "n": "最好评", - "v": "3" - }, { - "n": "最新上线", - "v": "1" - }] - }, { - "key": "main_area", - "name": "全部地区", - "value": [{ - "n": "全部地区", - "v": "" - }, { - "n": "内地", - "v": "中国内地" - }, { - "n": "日本", - "v": "日本" - }, { - "n": "美国", - "v": "美国" - }, { - "n": "中国台湾", - "v": "中国台湾" - }, { - "n": "其他", - "v": "其他" - }] - }, { - "key": "tags", - "name": "全部类型", - "value": [{ - "n": "全部类型", - "v": "" - }, { - "n": "热血", - "v": "热血,战斗" - }, { - "n": "励志", - "v": "励志" - }, { - "n": "玄幻", - "v": "玄幻" - }, { - "n": "古风", - "v": "历史,古风" - }, { - "n": "恋爱", - "v": "恋爱" - }, { - "n": "青春", - "v": "青春" - }, { - "n": "校园", - "v": "校园" - }, { - "n": "运动", - "v": "社团,运动" - }, { - "n": "科幻", - "v": "科幻" - }, { - "n": "冒险", - "v": "冒险" - }, { - "n": "魔法", - "v": "魔法" - }, { - "n": "日常", - "v": "日常" - }, { - "n": "治愈", - "v": "治愈" - }, { - "n": "机战", - "v": "机战" - }, { - "n": "推理", - "v": "推理" - }, { - "n": "都市", - "v": "都市" - }, { - "n": "小说改", - "v": "小说改编" - }, { - "n": "游戏改", - "v": "游戏改编" - }, { - "n": "漫画改", - "v": "漫画改编" - }, { - "n": "动态漫", - "v": "动态漫画" - }, { - "n": "特摄", - "v": "特摄" - }, { - "n": "布袋戏", - "v": "布袋戏" - }] - }, { - "key": "completed", - "name": "连载情况", - "value": [{ - "n": "连载情况", - "v": "" - }, { - "n": "更新中", - "v": "0" - }, { - "n": "已完结", - "v": "1" - }] - }, { - "key": "pay_type", - "name": "付费类型", - "value": [{ - "n": "付费类型", - "v": "" - }, { - "n": "免费", - "v": "0" - }, { - "n": "会员", - "v": "2" - }] - }, { - "key": "year", - "name": "全部年份", - "value": [{ - "n": "全部年份", - "v": "" - }, { - "n": "2025", - "v": "2025" - }, { - "n": "2024", - "v": "2024" - }, { - "n": "2023", - "v": "2023" - }, { - "n": "2022", - "v": "2022" - }, { - "n": "2021", - "v": "2021" - }, { - "n": "2020", - "v": "2020" - }, { - "n": "2019", - "v": "2019" - }, { - "n": "2018", - "v": "2018" - }, { - "n": "2017", - "v": "2017" - }, { - "n": "2016", - "v": "2016" - }, { - "n": "2015", - "v": "2015" - }, { - "n": "2014", - "v": "2014" - }, { - "n": "2013", - "v": "2013" - }, { - "n": "2012", - "v": "2012" - }, { - "n": "2011", - "v": "2011" - }, { - "n": "00年代", - "v": "2000-2010" - }, { - "n": "更早", - "v": "-1999" - }] - }, { - "key": "tag_label_name", - "name": "为你推荐", - "value": [{ - "n": "为你推荐", - "v": "" - }, { - "n": "3D动画", - "v": "3D动画" - }, { - "n": "搞笑日常", - "v": "搞笑日常" - }, { - "n": "大男主", - "v": "大男主" - }, { - "n": "高燃", - "v": "高燃" - }, { - "n": "萌系", - "v": "萌系" - }, { - "n": "修真", - "v": "修真" - }, { - "n": "怀旧", - "v": "怀旧" - }, { - "n": "超级英雄", - "v": "超级英雄" - }, { - "n": "水树奈奈", - "v": "水树奈奈" - }, { - "n": "张杰", - "v": "张杰" - }, { - "n": "石田彰", - "v": "石田彰" - }, { - "n": "守护地球", - "v": "守护地球" - }, { - "n": "圆谷", - "v": "圆谷" - }, { - "n": "山新", - "v": "山新" - }, { - "n": "复仇", - "v": "复仇" - }, { - "n": "废柴逆袭", - "v": "废柴逆袭" - }, { - "n": "侦探", - "v": "侦探" - }, { - "n": "无厘头", - "v": "无厘头" - }, { - "n": "青山刚昌", - "v": "青山刚昌" - }, { - "n": "悬疑", - "v": "悬疑" - }] - }], - "少儿": [{ - "key": "main_area", - "name": "全部地区", - "value": [{ - "n": "全部地区", - "v": "" - }, { - "n": "中国", - "v": "中国,香港,台湾" - }, { - "n": "美国", - "v": "美国" - }, { - "n": "英国", - "v": "英国" - }, { - "n": "其他国家", - "v": "其他" - }] - }, { - "key": "show_label_type", - "name": "全部类型", - "value": [{ - "n": "全部类型", - "v": "" - }, { - "n": "动画", - "v": "动画" - }, { - "n": "儿歌", - "v": "儿歌" - }, { - "n": "玩具", - "v": "玩具" - }, { - "n": "动画电影", - "v": "电影" - }, { - "n": "绘本故事", - "v": "绘本故事" - }, { - "n": "真人", - "v": "真人" - }, { - "n": "少儿综艺", - "v": "少儿综艺" - }, { - "n": "亲子", - "v": "亲子" - }, { - "n": "探索纪实", - "v": "探索纪实" - }, { - "n": "音频", - "v": "音频" - }] - }, { - "key": "child_tags", - "name": "全部分类", - "value": [{ - "n": "全部分类", - "v": "" - }, { - "n": "益智", - "v": "益智" - }, { - "n": "冒险", - "v": "冒险" - }, { - "n": "幽默", - "v": "幽默" - }, { - "n": "机甲", - "v": "机甲" - }, { - "n": "公主魔法", - "v": "公主,魔法" - }, { - "n": "交通工具", - "v": "交通工具" - }, { - "n": "恐龙", - "v": "恐龙" - }, { - "n": "动物", - "v": "动物" - }, { - "n": "励志", - "v": "励志" - }, { - "n": "友情", - "v": "友情" - }, { - "n": "战斗", - "v": "战斗" - }, { - "n": "校园", - "v": "校园" - }, { - "n": "正义", - "v": "正义" - }, { - "n": "热血", - "v": "热血" - }, { - "n": "科幻", - "v": "科幻" - }, { - "n": "童话", - "v": "童话" - }, { - "n": "运动", - "v": "运动" - }, { - "n": "专注力", - "v": "专注力" - }, { - "n": "创造力", - "v": "创造力" - }, { - "n": "想象力", - "v": "想象力" - }, { - "n": "科普", - "v": "科普" - }, { - "n": "情商", - "v": "情商" - }, { - "n": "思维逻辑", - "v": "思维逻辑" - }, { - "n": "兴趣培养", - "v": "兴趣培养" - }, { - "n": "语文", - "v": "语文" - }, { - "n": "英语", - "v": "英语" - }, { - "n": "数学", - "v": "数学" - }, { - "n": "课程辅导", - "v": "课程辅导" - }] - }, { - "key": "age", - "name": "全部年龄", - "value": [{ - "n": "全部年龄", - "v": "" - }, { - "n": "0-2岁", - "v": "0-2" - }, { - "n": "3-4岁", - "v": "3-4" - }, { - "n": "5-6岁", - "v": "5-6" - }, { - "n": "7岁以上", - "v": "7-" - }] - }, { - "key": "pay_type", - "name": "付费类型", - "value": [{ - "n": "付费类型", - "v": "" - }, { - "n": "免费", - "v": "0" - }, { - "n": "付费", - "v": "1" - }, { - "n": "VIP", - "v": "2" - }] - }, { - "key": "sort", - "name": "综合排序", - "value": [{ - "n": "综合排序", - "v": "" - }, { - "n": "最新上线", - "v": "1" - }, { - "n": "最多播放", - "v": "2" - }, { - "n": "最多评论", - "v": "4" - }, { - "n": "最多收藏", - "v": "5" - }] - }], - "纪录片": [{ - "key": "tags", - "name": "全部类型", - "value": [{ - "n": "全部类型", - "v": "" - }, { - "n": "美食", - "v": "美食" - }, { - "n": "自然", - "v": "自然" - }, { - "n": "历史", - "v": "历史" - }, { - "n": "探险", - "v": "探险" - }, { - "n": "军事", - "v": "军事" - }, { - "n": "人物", - "v": "人物" - }, { - "n": "宇宙", - "v": "宇宙" - }, { - "n": "刑侦", - "v": "刑侦" - }, { - "n": "社会", - "v": "社会" - }, { - "n": "科技", - "v": "科技" - }, { - "n": "旅游", - "v": "旅游" - }] - }, { - "key": "company", - "name": "全部出品", - "value": [{ - "n": "全部出品", - "v": "" - }, { - "n": "BBC", - "v": "bbc,british" - }, { - "n": "央视", - "v": "央视,中央电视台,cctv,中国广播电影电视节目交易中心" - }, { - "n": "国家地理", - "v": "国家地理" - }, { - "n": "Love Nature", - "v": "love nature" - }, { - "n": "LGI", - "v": "looking" - }, { - "n": "A&E", - "v": "ae" - }, { - "n": "OTF", - "v": "fence" - }] - }, { - "key": "year", - "name": "全部年份", - "value": [{ - "n": "全部年份", - "v": "" - }, { - "n": "2025", - "v": "2025" - }, { - "n": "2024", - "v": "2024" - }, { - "n": "2023", - "v": "2023" - }, { - "n": "2022", - "v": "2022" - }, { - "n": "2021", - "v": "2021" - }, { - "n": "2020", - "v": "2020" - }, { - "n": "2019", - "v": "2019" - }, { - "n": "2018", - "v": "2018" - }, { - "n": "2017", - "v": "2017" - }, { - "n": "2016", - "v": "2016" - }, { - "n": "2015", - "v": "2015" - }, { - "n": "2014-2011", - "v": "2011-2014" - }, { - "n": "更早", - "v": "-2010" - }] - }, { - "key": "pay_type", - "name": "付费类型", - "value": [{ - "n": "付费类型", - "v": "" - }, { - "n": "免费", - "v": "0" - }, { - "n": "会员", - "v": "2" - }] - }, { - "key": "sort", - "name": "热度最高", - "value": [{ - "n": "热度最高", - "v": "" - }, { - "n": "综合排序", - "v": "0" - }, { - "n": "最新上线", - "v": "1" - }, { - "n": "最好评", - "v": "3" - }, { - "n": "最多收藏", - "v": "5" - }] - }], - "文化": [{ - "key": "tags", - "name": "全部类型", - "value": [{ - "n": "全部类型", - "v": "" - }, { - "n": "谈话", - "v": "谈话" - }, { - "n": "脱口秀", - "v": "脱口秀" - }, { - "n": "访谈", - "v": "访谈" - }, { - "n": "讲座论坛", - "v": "讲座论坛" - }, { - "n": "戏曲曲艺", - "v": "戏曲,曲艺" - }, { - "n": "舞台剧", - "v": "舞台剧" - }, { - "n": "文学", - "v": "文学" - }, { - "n": "国学", - "v": "国学" - }, { - "n": "艺术", - "v": "艺术" - }, { - "n": "培训课程", - "v": "培训课程" - }, { - "n": "有声书", - "v": "有声书" - }] - }, { - "key": "people", - "name": "文化大咖", - "value": [{ - "n": "文化大咖", - "v": "" - }, { - "n": "窦文涛", - "v": "窦文涛" - }, { - "n": "马未都", - "v": "马未都" - }, { - "n": "白岩松", - "v": "白岩松" - }, { - "n": "梅毅", - "v": "梅毅" - }, { - "n": "陈鲁豫", - "v": "陈鲁豫" - }, { - "n": "樊登", - "v": "樊登" - }, { - "n": "罗振宇", - "v": "罗振宇" - }, { - "n": "蒋方舟", - "v": "蒋方舟" - }, { - "n": "其他", - "v": "其他" - }] - }, { - "key": "year", - "name": "全部年份", - "value": [{ - "n": "全部年份", - "v": "" - }, { - "n": "2025", - "v": "2025" - }, { - "n": "2024", - "v": "2024" - }, { - "n": "2023", - "v": "2023" - }, { - "n": "2022", - "v": "2022" - }, { - "n": "2021", - "v": "2021" - }, { - "n": "2020", - "v": "2020" - }, { - "n": "2019", - "v": "2019" - }, { - "n": "2018", - "v": "2018" - }, { - "n": "2017", - "v": "2017" - }, { - "n": "2016", - "v": "2016" - }, { - "n": "2015", - "v": "2015" - }, { - "n": "2014-2011", - "v": "2011-2014" - }, { - "n": "更早", - "v": "-2010" - }] - }, { - "key": "pay_type", - "name": "付费类型", - "value": [{ - "n": "付费类型", - "v": "" - }, { - "n": "免费", - "v": "0" - }, { - "n": "会员", - "v": "2" - }] - }, { - "key": "sort", - "name": "热度最高", - "value": [{ - "n": "热度最高", - "v": "" - }, { - "n": "综合排序", - "v": "0" - }, { - "n": "最新上线", - "v": "1" - }, { - "n": "最好评", - "v": "3" - }, { - "n": "最多收藏", - "v": "5" - }] - }], - "亲子": [{ - "key": "qinzi_genre", - "name": "全部类型", - "value": [{ - "n": "全部类型", - "v": "" - }, { - "n": "孕产", - "v": "孕产" - }, { - "n": "育儿知识", - "v": "育儿知识,育儿达人,育儿专家,爸爸育儿,隔代育儿,育儿明星" - }, { - "n": "好物种草", - "v": "母婴用品,测评,母婴用品种草" - }, { - "n": "美食", - "v": "儿童美食,辅食,孕期饮食" - }, { - "n": "手工DIY", - "v": "手工diy" - }, { - "n": "教育观念", - "v": "教育观念" - }, { - "n": "亲子综艺", - "v": "亲子综艺" - }, { - "n": "亲子互动", - "v": "亲子旅游,亲子游戏,亲子阅读,玩具,早教,启蒙" - }, { - "n": "萌娃", - "v": "萌娃" - }, { - "n": "搞笑", - "v": "搞笑" - }, { - "n": "美妆", - "v": "美妆" - }] - }, { - "key": "pregnancy_stage", - "name": "全部阶段", - "value": [{ - "n": "全部阶段", - "v": "" - }, { - "n": "备孕", - "v": "备孕" - }, { - "n": "孕早期", - "v": "孕早" - }, { - "n": "孕中期", - "v": "孕中" - }, { - "n": "孕晚期", - "v": "孕晚" - }] - }, { - "key": "show_label_baby_age", - "name": "全部分龄", - "value": [{ - "n": "全部分龄", - "v": "" - }, { - "n": "0-1岁", - "v": "0-1" - }, { - "n": "1-3岁", - "v": "1-3" - }, { - "n": "3-6岁", - "v": "3-6" - }, { - "n": "6岁+", - "v": "6-" - }] - }, { - "key": "pay_type", - "name": "全部", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "免费", - "v": "0" - }, { - "n": "会员免费", - "v": "2" - }] - }, { - "key": "sort", - "name": "热度最高", - "value": [{ - "n": "热度最高", - "v": "" - }, { - "n": "综合排序", - "v": "0" - }, { - "n": "最新上线", - "v": "1" - }, { - "n": "最多播放", - "v": "2" - }, { - "n": "最多评论", - "v": "3" - }, { - "n": "最多收藏", - "v": "5" - }] - }], - "教育": [{ - "key": "tags", - "name": "全部类型", - "value": [{ - "n": "全部类型", - "v": "" - }, { - "n": "公开课", - "v": "公开课" - }, { - "n": "名人名嘴", - "v": "名人名嘴" - }, { - "n": "文化", - "v": "文化" - }, { - "n": "艺术", - "v": "艺术" - }, { - "n": "伦理社会", - "v": "伦理社会" - }, { - "n": "理工", - "v": "理工" - }, { - "n": "历史", - "v": "历史" - }, { - "n": "心理学", - "v": "心理学" - }, { - "n": "经济", - "v": "经济" - }, { - "n": "管理学", - "v": "管理学" - }, { - "n": "外语", - "v": "外语" - }, { - "n": "法律", - "v": "法律" - }, { - "n": "计算机", - "v": "计算机" - }, { - "n": "哲学", - "v": "哲学" - }, { - "n": "职业培训", - "v": "职业培训" - }, { - "n": "家庭教育", - "v": "家庭教育" - }] - }, { - "key": "company", - "name": "全部出品", - "value": [{ - "n": "全部出品", - "v": "" - }, { - "n": "TED", - "v": "ted" - }, { - "n": "耶鲁大学", - "v": "耶鲁大学" - }, { - "n": "哈佛大学", - "v": "哈佛大学" - }, { - "n": "斯坦福大学", - "v": "斯坦福大学" - }, { - "n": "麻省理工学院", - "v": "麻省理工学院" - }] - }, { - "key": "pay_type", - "name": "全部节目", - "value": [{ - "n": "全部节目", - "v": "" - }, { - "n": "免费", - "v": "0" - }, { - "n": "付费", - "v": "1" - }, { - "n": "VIP", - "v": "2" - }] - }, { - "key": "sort", - "name": "综合排序", - "value": [{ - "n": "综合排序", - "v": "" - }, { - "n": "最多播放", - "v": "2" - }, { - "n": "最多收藏", - "v": "5" - }, { - "n": "最好评", - "v": "3" - }, { - "n": "最新上线", - "v": "1" - }] - }], - "搞笑": [{ - "key": "division", - "name": "全部专区", - "value": [{ - "n": "全部专区", - "v": "" - }, { - "n": "1080P", - "v": "3" - }, { - "n": "独播", - "v": "6" - }, { - "n": "免费", - "v": "5" - }] - }, { - "key": "sort", - "name": "综合排序", - "value": [{ - "n": "综合排序", - "v": "" - }, { - "n": "最多播放", - "v": "2" - }, { - "n": "最好评", - "v": "3" - }, { - "n": "最新上线", - "v": "1" - }] - }], - "生活": [{ - "key": "division", - "name": "全部专区", - "value": [{ - "n": "全部专区", - "v": "" - }, { - "n": "1080P", - "v": "3" - }, { - "n": "独播", - "v": "6" - }, { - "n": "VIP", - "v": "4" - }, { - "n": "免费", - "v": "5" - }] - }, { - "key": "sort", - "name": "综合排序", - "value": [{ - "n": "综合排序", - "v": "" - }, { - "n": "最多播放", - "v": "2" - }, { - "n": "最好评", - "v": "3" - }, { - "n": "最新上线", - "v": "1" - }] - }], - "体育": [{ - "key": "division", - "name": "全部专区", - "value": [{ - "n": "全部专区", - "v": "" - }, { - "n": "1080P", - "v": "3" - }, { - "n": "独播", - "v": "6" - }, { - "n": "VIP", - "v": "4" - }, { - "n": "免费", - "v": "5" - }] - }, { - "key": "tags", - "name": "全部类型", - "value": [{ - "n": "全部类型", - "v": "" - }, { - "n": "篮球", - "v": "篮球" - }, { - "n": "足球", - "v": "足球" - }, { - "n": "台球", - "v": "台球" - }, { - "n": "CBA", - "v": "CBA" - }, { - "n": "钓鱼", - "v": "钓鱼" - }] - }, { - "key": "sort", - "name": "综合排序", - "value": [{ - "n": "综合排序", - "v": "" - }, { - "n": "最多播放", - "v": "2" - }, { - "n": "最好评", - "v": "3" - }, { - "n": "最新上线", - "v": "1" - }] - }], - "音乐": [{ - "key": "division", - "name": "全部专区", - "value": [{ - "n": "全部专区", - "v": "" - }, { - "n": "1080P", - "v": "3" - }, { - "n": "独播", - "v": "6" - }, { - "n": "免费", - "v": "5" - }] - }, { - "key": "main_area", - "name": "全部地区", - "value": [{ - "n": "全部地区", - "v": "" - }, { - "n": "中国", - "v": "中国" - }, { - "n": "中国台湾", - "v": "中国台湾" - }, { - "n": "中国香港", - "v": "中国香港" - }, { - "n": "美国", - "v": "美国" - }, { - "n": "其他", - "v": "其他" - }] - }, { - "key": "music_show_type", - "name": "全部类型", - "value": [{ - "n": "全部类型", - "v": "" - }, { - "n": "演唱会", - "v": "演唱会" - }, { - "n": "live现场", - "v": "live现场" - }, { - "n": "颁奖典礼", - "v": "颁奖典礼" - }, { - "n": "舞蹈", - "v": "舞蹈" - }, { - "n": "影视原声", - "v": "影视原声" - }, { - "n": "音乐达人", - "v": "音乐达人" - }, { - "n": "音乐教学", - "v": "音乐教学" - }, { - "n": "音乐纪录片", - "v": "音乐纪录片" - }, { - "n": "音乐mv", - "v": "音乐mv" - }, { - "n": "音乐自制", - "v": "音乐自制" - }] - }, { - "key": "sort", - "name": "综合排序", - "value": [{ - "n": "综合排序", - "v": "" - }, { - "n": "最多播放", - "v": "2" - }, { - "n": "最好评", - "v": "3" - }, { - "n": "最新上线", - "v": "1" - }] - }], - "游戏": [{ - "key": "division", - "name": "全部专区", - "value": [{ - "n": "全部专区", - "v": "" - }, { - "n": "1080P", - "v": "3" - }, { - "n": "独播", - "v": "6" - }, { - "n": "VIP", - "v": "4" - }, { - "n": "免费", - "v": "5" - }] - }, { - "key": "game_brand", - "name": "全部节目", - "value": [{ - "n": "全部节目", - "v": "" - }, { - "n": "王者荣耀", - "v": "王者荣耀" - }, { - "n": "和平精英", - "v": "和平精英" - }, { - "n": "绝地求生", - "v": "绝地求生" - }, { - "n": "迷你世界", - "v": "迷你世界" - }, { - "n": "我的世界", - "v": "我的世界" - }, { - "n": "植物大战僵尸", - "v": "植物大战僵尸" - }, { - "n": "方舟生存进化", - "v": "方舟生存进化" - }, { - "n": "第五人格", - "v": "第五人格" - }, { - "n": "猫和老鼠", - "v": "猫和老鼠" - }, { - "n": "香肠派对", - "v": "香肠派对" - }, { - "n": "穿越火线", - "v": "穿越火线" - }, { - "n": "英雄联盟", - "v": "英雄联盟" - }] - }, { - "key": "tags", - "name": "全部类型", - "value": [{ - "n": "全部类型", - "v": "" - }, { - "n": "资讯", - "v": "资讯" - }, { - "n": "解说", - "v": "解说" - }, { - "n": "主播", - "v": "主播" - }, { - "n": "沙盒", - "v": "沙盒" - }, { - "n": "益智", - "v": "益智" - }, { - "n": "生存", - "v": "生存" - }, { - "n": "电子竞技", - "v": "电子竞技" - }, { - "n": "单机主机", - "v": "单机主机" - }, { - "n": "真人秀", - "v": "真人秀" - }, { - "n": "动画", - "v": "动画" - }, { - "n": "盘点", - "v": "盘点" - }, { - "n": "游戏文化", - "v": "游戏文化" - }, { - "n": "游戏节目", - "v": "游戏节目" - }, { - "n": "评测", - "v": "评测" - }, { - "n": "射击", - "v": "射击" - }, { - "n": "策略", - "v": "策略" - }, { - "n": "冒险", - "v": "冒险" - }, { - "n": "即时战略", - "v": "即时战略" - }, { - "n": "卡牌", - "v": "卡牌" - }, { - "n": "角色扮演", - "v": "角色>扮演" - }] - }, { - "key": "sort", - "name": "综合排序", - "value": [{ - "n": "综合排序", - "v": "" - }, { - "n": "最多播放", - "v": "2" - }, { - "n": "最好评", - "v": "3" - }, { - "n": "最新上线", - "v": "1" - }] - }] - }, - headers: { - 'User-Agent': 'PC_UA', - 'Cookie': 'cna=VvNvGX3e0ywCAavVEXlnA2bg; __ysuid=1626676228345Rl1; __ayft=1652434048647; __arycid=dm-1-00; __arcms=dm-1-00; __ayvstp=85; __arpvid=1667204023100cWWdgM-1667204023112; __ayscnt=10; __aypstp=60; isg=BBwcqxvvk3BxkWQGugbLpUSf7TrOlcC_U7GAj_YdfYfvQbzLHqYGT4Hgp6m5TvgX; tfstk=c3JOByYUH20ilVucLOhh0pCtE40lZfGc-PjLHLLfuX7SWNyAiQvkeMBsIw7PWDC..; l=eBQguS-PjdJFGJT-BOfwourza77OSIRA_uPzaNbMiOCPOb1B5UxfW6yHp4T6C3GVhsGJR3rp2umHBeYBqQd-nxvOF8qmSVDmn', - 'Referer': 'https://www.youku.com', - }, - timeout: 5000, - class_name: '电视剧&电影&综艺&动漫&少儿&纪录片&文化&亲子&教育&搞笑&生活&体育&音乐&游戏', - class_url: '电视剧&电影&综艺&动漫&少儿&纪录片&文化&亲子&教育&搞笑&生活&体育&音乐&游戏', - limit: 20, - play_parse: true, - lazy: $js.toString(() => { - try { - let api = "" + input.split("?")[0]; - console.log(api); - let response = fetch(api, { - method: 'get', - headers: { - 'User-Agent': 'okhttp/3.14.9', - 'Content-Type': 'application/x-www-form-urlencoded' - } - }); - let bata = JSON.parse(response); - if (bata.url.includes("http")) { - input = { - parse: 0, - url: bata.url, - jx: 0, - danmaku: "http://127.0.0.1:9978/proxy?do=danmu&site=js&url=http://dm.qxq6.com/zy/api.php?url=" + input.split("?")[0] - }; - } else { - input = { - parse: 0, - url: input.split("?")[0], - jx: 1, - danmaku: "http://127.0.0.1:9978/proxy?do=danmu&site=js&url=http://dm.qxq6.com/zy/api.php?url=" + input.split("?")[0] - }; - } - } catch { - input = { - parse: 0, - url: input.split("?")[0], - jx: 1, - danmaku: "http://127.0.0.1:9978/proxy?do=danmu&site=js&url=http://dm.qxq6.com/zy/api.php?url=" + input.split("?")[0] - }; - } - }), - 一级: $js.toString(() => { - let d = []; - MY_FL.type = MY_CATE; - let fl = stringify(MY_FL); - fl = encodeUrl(fl); - input = input.split("{")[0] + fl; - if (MY_PAGE > 1) { - let old_session = getItem("yk_session_" + MY_CATE, "{}"); - if (MY_PAGE === 2) { - input = input.replace("optionRefresh=1", "session=" + encodeUrl(old_session)) - } else { - input = input.replace("optionRefresh=1", "session=" + encodeUrl(old_session)) - } - } - let html = fetch(input, fetch_params); - try { - html = JSON.parse(html); - let lists = html.data.filterData.listData; - let session = html.data.filterData.session; - session = stringify(session); - if (session !== getItem("yk_session_" + MY_CATE, "{}")) { - setItem("yk_session_" + MY_CATE, session) - } - lists.forEach(function(it) { - let vid; - if (it.videoLink.includes("id_")) { - vid = it.videoLink.split("id_")[1].split(".html")[0] - } else { - vid = "msearch:" - } - d.push({ - title: it.title, - img: it.img, - desc: it.summary, - url: "https://search.youku.com/api/search?appScene=show_episode&showIds=" + vid, - content: it.subTitle - }) - }) - } catch (e) { - log("一级列表解析发生错误:" + e.message) - } - setResult(d); - }), - 二级: $js.toString(() => { - var d = []; - VOD = {}; - let html = request(input); - let json = JSON.parse(html); - if (/keyword/.test(input)) { - input = "https://search.youku.com/api/search?appScene=show_episode&showIds=" + json.pageComponentList[0].commonData.showId; - json = JSON.parse(fetch(MY_URL, fetch_params)) - } - let video_lists = json.serisesList; - var name = json.sourceName; - if (/优酷/.test(name) && video_lists.length > 0) { - let ourl = "https://v.youku.com/v_show/id_" + video_lists[0].videoId + ".html"; - let _img = video_lists[0].thumbUrl; - let html = fetch(ourl, { - headers: { - Referer: "https://v.youku.com/", - "User-Agent": PC_UA - } - }); - let json = /__INITIAL_DATA__/.test(html) ? html.split("window.__INITIAL_DATA__ =")[1].split(";")[0] : "{}"; - if (json === "{}") { - log("触发了优酷人机验证"); - VOD.vod_remarks = ourl; - VOD.vod_pic = _img; - VOD.vod_name = video_lists[0].title.replace(/(\d+)/g, ""); - VOD.vod_content = "触发了优酷人机验证,本次未获取详情,但不影响播放(" + ourl + ")" - } else { - try { - json = JSON.parse(json); - let data = json.data.data; - let data_extra = data.data.extra; - let img = data_extra.showImgV; - let model = json.data.model; - let m = model.detail.data.nodes[0].nodes[0].nodes[0].data; - let _type = m.showGenre; - let _desc = m.updateInfo || m.subtitle; - let JJ = m.desc; - let _title = m.introTitle; - VOD.vod_pic = img; - VOD.vod_name = _title; - VOD.vod_type = _type; - VOD.vod_remarks = _desc; - VOD.vod_content = JJ - } catch (e) { - log("海报渲染发生错误:" + e.message); - print(json); - VOD.vod_remarks = name - } - } - } - if (!/优酷/.test(name)) { - VOD.vod_content = "非自家播放源,暂无视频简介及海报"; - VOD.vod_remarks = name - } - - function adhead(url) { - return urlencode(url) - } - - play_url = play_url.replace("&play_url=", "&type=json&play_url="); - video_lists.forEach(function(it) { - let url = "https://v.youku.com/v_show/id_" + it.videoId + ".html"; - if (it.thumbUrl) { - d.push({ - desc: it.showVideoStage ? it.showVideoStage.replace("期", "集") : it.displayName, - pic_url: it.thumbUrl, - title: it.title, - url: play_url + adhead(url) - }) - } else if (name !== "优酷") { - d.push({ - title: it.displayName ? it.displayName : it.title, - url: play_url + adhead(it.url) - }) - } - }); - VOD.vod_play_from = name; - VOD.vod_play_url = d.map(function(it) { - return it.title + "$" + it.url - }) - .join("#"); - }), - - 搜索: $js.toString(() => { - var d = []; - let html = request(input); - let json = JSON.parse(html); - json.pageComponentList.forEach(function(it) { - if (it.hasOwnProperty("commonData")) { - it = it.commonData; - d.push({ - title: it.titleDTO.displayName, - img: it.posterDTO.vThumbUrl, - desc: it.stripeBottom, - content: it.updateNotice + " " + it.feature, - url: "https://search.youku.com/api/search?appScene=show_episode&showIds=" + it.showId + "&appCaller=h5" - }) - } - }); - setResult(d) - }), -} \ No newline at end of file diff --git a/潇洒/js/剧圈圈.js b/潇洒/js/剧圈圈.js deleted file mode 100644 index 94036de..0000000 --- a/潇洒/js/剧圈圈.js +++ /dev/null @@ -1,12 +0,0 @@ -Object.assign(muban.mxpro.二级, { - tab_text: 'div--small&&Text', -}); -var rule = { - 模板: 'mxpro', - title: '剧圈圈', - host: 'https://www.jqqzx.cc/', - url: '/vodshow/id/fyclass/page/fypage.html', - searchUrl: '/vodsearch**/page/fypage.html', - class_parse: '.navbar-items li:gt(2):lt(8);a&&Text;a&&href;.*/(.*?)\.html', - cate_exclude: '今日更新|热榜', -} \ No newline at end of file diff --git a/潇洒/js/动漫岛.js b/潇洒/js/动漫岛.js deleted file mode 100644 index 1ffcc71..0000000 --- a/潇洒/js/动漫岛.js +++ /dev/null @@ -1,1100 +0,0 @@ -var rule = { - title: '动漫岛', - // host:'http://www.dmd85.com', - // host:'http://www.88dmw.com', - host: 'http://www.dmand5.com', - // url:'/vod-list-id-fyclass-pg-fypage-order--by-{by}-class-{class}-year-{year}-letter--area--lang-.html', - url: '/vod-list-id-fyclass-pg-fypage-order-fyfilter-area--lang-.html', - filterable: 1, //是否启用分类筛选, - filter_url: '-by-{{fl.by}}-class-{{fl.class}}-year-{{fl.year}}-letter-{{fl.letter}}', - filter: { - "1": [{ - "key": "class", - "name": "剧情", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "冒险", - "v": "1" - }, { - "n": "热血", - "v": "2" - }, { - "n": "奇幻", - "v": "3" - }, { - "n": "恋爱", - "v": "4" - }, { - "n": "校园", - "v": "5" - }, { - "n": "后宫", - "v": "6" - }, { - "n": "搞笑", - "v": "7" - }, { - "n": "青春", - "v": "8" - }, { - "n": "百合", - "v": "9" - }, { - "n": "科幻", - "v": "14" - }, { - "n": "推理", - "v": "13" - }, { - "n": "魔法", - "v": "12" - }, { - "n": "神魔", - "v": "11" - }, { - "n": "治愈", - "v": "10" - }, { - "n": "竞技", - "v": "59" - }, { - "n": "悬疑", - "v": "60" - }, { - "n": "战争", - "v": "62" - }, { - "n": "萝莉", - "v": "63" - }, { - "n": "魔幻", - "v": "64" - }, { - "n": "战斗", - "v": "65" - }, { - "n": "歌舞", - "v": "98" - }, { - "n": "历史", - "v": "99" - }, { - "n": "励志", - "v": "108" - }, { - "n": "偶像", - "v": "118" - }, { - "n": "职场", - "v": "121" - }] - }, { - "key": "year", - "name": "年份", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "2025", - "v": "2025" - }, { - "n": "2024", - "v": "2024" - }, { - "n": "2023", - "v": "2023" - }, { - "n": "2022", - "v": "2022" - }, { - "n": "2021", - "v": "2021" - }, { - "n": "2020", - "v": "2020" - }, { - "n": "2019", - "v": "2019" - }, { - "n": "2018", - "v": "2018" - }, { - "n": "2017", - "v": "2017" - }, { - "n": "2016", - "v": "2016" - }, { - "n": "2015", - "v": "2015" - }, { - "n": "2014", - "v": "2014" - }, { - "n": "2013", - "v": "2013" - }, { - "n": "2012", - "v": "2012" - }, { - "n": "2011", - "v": "2011" - }, { - "n": "2010", - "v": "2010" - }, { - "n": "2009", - "v": "2009" - }, { - "n": "2008", - "v": "2008" - }, { - "n": "2007", - "v": "2007" - }, { - "n": "2006", - "v": "2006" - }, { - "n": "2005", - "v": "2005" - }, { - "n": "2004", - "v": "2004" - }, { - "n": "2003", - "v": "2003" - }, { - "n": "2002", - "v": "2002" - }, { - "n": "2001", - "v": "2001" - }, { - "n": "2000", - "v": "2000" - }] - }, { - "key": "letter", - "name": "字母", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "A", - "v": "A" - }, { - "n": "B", - "v": "B" - }, { - "n": "C", - "v": "C" - }, { - "n": "D", - "v": "D" - }, { - "n": "E", - "v": "E" - }, { - "n": "F", - "v": "F" - }, { - "n": "G", - "v": "G" - }, { - "n": "H", - "v": "H" - }, { - "n": "I", - "v": "I" - }, { - "n": "J", - "v": "J" - }, { - "n": "K", - "v": "K" - }, { - "n": "L", - "v": "L" - }, { - "n": "M", - "v": "M" - }, { - "n": "N", - "v": "N" - }, { - "n": "O", - "v": "O" - }, { - "n": "P", - "v": "P" - }, { - "n": "Q", - "v": "Q" - }, { - "n": "R", - "v": "R" - }, { - "n": "S", - "v": "S" - }, { - "n": "T", - "v": "T" - }, { - "n": "U", - "v": "U" - }, { - "n": "V", - "v": "V" - }, { - "n": "W", - "v": "W" - }, { - "n": "X", - "v": "X" - }, { - "n": "Y", - "v": "Y" - }, { - "n": "Z", - "v": "Z" - }] - }, { - "key": "by", - "name": "排序", - "value": [{ - "n": "更新", - "v": "time" - }, { - "n": "得分", - "v": "score" - }, { - "n": "总排行", - "v": "hits" - }] - }], - "3": [{ - "key": "class", - "name": "剧情", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "冒险", - "v": "36" - }, { - "n": "热血", - "v": "37" - }, { - "n": "奇幻", - "v": "38" - }, { - "n": "恋爱", - "v": "39" - }, { - "n": "恋爱", - "v": "40" - }, { - "n": "恋爱", - "v": "40" - }, { - "n": "搞笑", - "v": "42" - }, { - "n": "治愈", - "v": "43" - }, { - "n": "神魔", - "v": "44" - }, { - "n": "魔法", - "v": "45" - }, { - "n": "百合", - "v": "46" - }, { - "n": "推理", - "v": "47" - }, { - "n": "科幻", - "v": "48" - }, { - "n": "竞技", - "v": "49" - }, { - "n": "悬疑", - "v": "66" - }, { - "n": "战争", - "v": "68" - }, { - "n": "萝莉", - "v": "69" - }, { - "n": "魔幻", - "v": "70" - }, { - "n": "战斗", - "v": "71" - }, { - "n": "青春", - "v": "72" - }, { - "n": "历史", - "v": "100" - }, { - "n": "歌舞", - "v": "101" - }, { - "n": "恐怖", - "v": "104" - }, { - "n": "职场", - "v": "107" - }, { - "n": "励志", - "v": "109" - }, { - "n": "偶像", - "v": "119" - }] - }, { - "key": "year", - "name": "年份", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "2025", - "v": "2025" - }, { - "n": "2024", - "v": "2024" - }, { - "n": "2023", - "v": "2023" - }, { - "n": "2022", - "v": "2022" - }, { - "n": "2021", - "v": "2021" - }, { - "n": "2020", - "v": "2020" - }, { - "n": "2019", - "v": "2019" - }, { - "n": "2018", - "v": "2018" - }, { - "n": "2017", - "v": "2017" - }, { - "n": "2016", - "v": "2016" - }, { - "n": "2015", - "v": "2015" - }, { - "n": "2014", - "v": "2014" - }, { - "n": "2013", - "v": "2013" - }, { - "n": "2012", - "v": "2012" - }, { - "n": "2011", - "v": "2011" - }, { - "n": "2010", - "v": "2010" - }, { - "n": "2009", - "v": "2009" - }, { - "n": "2008", - "v": "2008" - }, { - "n": "2007", - "v": "2007" - }, { - "n": "2006", - "v": "2006" - }, { - "n": "2005", - "v": "2005" - }, { - "n": "2004", - "v": "2004" - }, { - "n": "2003", - "v": "2003" - }, { - "n": "2002", - "v": "2002" - }, { - "n": "2001", - "v": "2001" - }, { - "n": "2000", - "v": "2000" - }] - }, { - "key": "letter", - "name": "字母", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "A", - "v": "A" - }, { - "n": "B", - "v": "B" - }, { - "n": "C", - "v": "C" - }, { - "n": "D", - "v": "D" - }, { - "n": "E", - "v": "E" - }, { - "n": "F", - "v": "F" - }, { - "n": "G", - "v": "G" - }, { - "n": "H", - "v": "H" - }, { - "n": "I", - "v": "I" - }, { - "n": "J", - "v": "J" - }, { - "n": "K", - "v": "K" - }, { - "n": "L", - "v": "L" - }, { - "n": "M", - "v": "M" - }, { - "n": "N", - "v": "N" - }, { - "n": "O", - "v": "O" - }, { - "n": "P", - "v": "P" - }, { - "n": "Q", - "v": "Q" - }, { - "n": "R", - "v": "R" - }, { - "n": "S", - "v": "S" - }, { - "n": "T", - "v": "T" - }, { - "n": "U", - "v": "U" - }, { - "n": "V", - "v": "V" - }, { - "n": "W", - "v": "W" - }, { - "n": "X", - "v": "X" - }, { - "n": "Y", - "v": "Y" - }, { - "n": "Z", - "v": "Z" - }] - }, { - "key": "by", - "name": "排序", - "value": [{ - "n": "更新", - "v": "time" - }, { - "n": "得分", - "v": "score" - }, { - "n": "总排行", - "v": "hits" - }] - }], - "4": [{ - "key": "class", - "name": "剧情", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "冒险", - "v": "50" - }, { - "n": "热血", - "v": "51" - }, { - "n": "武侠", - "v": "52" - }, { - "n": "奇幻", - "v": "53" - }, { - "n": "玄幻", - "v": "54" - }, { - "n": "竞技", - "v": "55" - }, { - "n": "魔幻", - "v": "56" - }, { - "n": "科幻", - "v": "57" - }, { - "n": "恋爱", - "v": "58" - }, { - "n": "历史", - "v": "73" - }, { - "n": "战斗", - "v": "74" - }, { - "n": "搞笑", - "v": "75" - }, { - "n": "神魔", - "v": "76" - }, { - "n": "战争", - "v": "97" - }, { - "n": "古风", - "v": "111" - }, { - "n": "少女", - "v": "112" - }, { - "n": "萝莉", - "v": "113" - }, { - "n": "治愈", - "v": "114" - }, { - "n": "日常", - "v": "115" - }, { - "n": "歌舞", - "v": "116" - }, { - "n": "偶像", - "v": "120" - }, { - "n": "职场", - "v": "123" - }, { - "n": "仙侠", - "v": "125" - }] - }, { - "key": "year", - "name": "年份", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "2025", - "v": "2025" - }, { - "n": "2024", - "v": "2024" - }, { - "n": "2023", - "v": "2023" - }, { - "n": "2022", - "v": "2022" - }, { - "n": "2021", - "v": "2021" - }, { - "n": "2020", - "v": "2020" - }, { - "n": "2019", - "v": "2019" - }, { - "n": "2018", - "v": "2018" - }, { - "n": "2017", - "v": "2017" - }, { - "n": "2016", - "v": "2016" - }, { - "n": "2015", - "v": "2015" - }, { - "n": "2014", - "v": "2014" - }, { - "n": "2013", - "v": "2013" - }, { - "n": "2012", - "v": "2012" - }, { - "n": "2011", - "v": "2011" - }, { - "n": "2010", - "v": "2010" - }, { - "n": "2009", - "v": "2009" - }, { - "n": "2008", - "v": "2008" - }, { - "n": "2007", - "v": "2007" - }, { - "n": "2006", - "v": "2006" - }, { - "n": "2005", - "v": "2005" - }, { - "n": "2004", - "v": "2004" - }, { - "n": "2003", - "v": "2003" - }, { - "n": "2002", - "v": "2002" - }, { - "n": "2001", - "v": "2001" - }, { - "n": "2000", - "v": "2000" - }] - }, { - "key": "letter", - "name": "字母", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "A", - "v": "A" - }, { - "n": "B", - "v": "B" - }, { - "n": "C", - "v": "C" - }, { - "n": "D", - "v": "D" - }, { - "n": "E", - "v": "E" - }, { - "n": "F", - "v": "F" - }, { - "n": "G", - "v": "G" - }, { - "n": "H", - "v": "H" - }, { - "n": "I", - "v": "I" - }, { - "n": "J", - "v": "J" - }, { - "n": "K", - "v": "K" - }, { - "n": "L", - "v": "L" - }, { - "n": "M", - "v": "M" - }, { - "n": "N", - "v": "N" - }, { - "n": "O", - "v": "O" - }, { - "n": "P", - "v": "P" - }, { - "n": "Q", - "v": "Q" - }, { - "n": "R", - "v": "R" - }, { - "n": "S", - "v": "S" - }, { - "n": "T", - "v": "T" - }, { - "n": "U", - "v": "U" - }, { - "n": "V", - "v": "V" - }, { - "n": "W", - "v": "W" - }, { - "n": "X", - "v": "X" - }, { - "n": "Y", - "v": "Y" - }, { - "n": "Z", - "v": "Z" - }] - }, { - "key": "by", - "name": "排序", - "value": [{ - "n": "更新", - "v": "time" - }, { - "n": "得分", - "v": "score" - }, { - "n": "总排行", - "v": "hits" - }] - }], - "16": [{ - "key": "class", - "name": "剧情", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "冒险", - "v": "77" - }, { - "n": "热血", - "v": "78" - }, { - "n": "奇幻", - "v": "79" - }, { - "n": "恋爱", - "v": "80" - }, { - "n": "校园", - "v": "81" - }, { - "n": "后宫", - "v": "82" - }, { - "n": "搞笑", - "v": "83" - }, { - "n": "青春", - "v": "84" - }, { - "n": "百合", - "v": "85" - }, { - "n": "治愈", - "v": "86" - }, { - "n": "神魔", - "v": "87" - }, { - "n": "魔法", - "v": "88" - }, { - "n": "推理", - "v": "89" - }, { - "n": "科幻", - "v": "90" - }, { - "n": "竞技", - "v": "91" - }, { - "n": "悬疑", - "v": "92" - }, { - "n": "战争", - "v": "93" - }, { - "n": "萝莉", - "v": "94" - }, { - "n": "魔幻", - "v": "95" - }, { - "n": "战斗", - "v": "96" - }, { - "n": "历史", - "v": "102" - }, { - "n": "歌舞", - "v": "103" - }, { - "n": "恐怖", - "v": "105" - }, { - "n": "职场", - "v": "106" - }, { - "n": "励志", - "v": "110" - }, { - "n": "偶像", - "v": "117" - }, { - "n": "职场", - "v": "124" - }] - }, { - "key": "year", - "name": "年份", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "2025", - "v": "2025" - }, { - "n": "2024", - "v": "2024" - }, { - "n": "2023", - "v": "2023" - }, { - "n": "2022", - "v": "2022" - }, { - "n": "2021", - "v": "2021" - }, { - "n": "2020", - "v": "2020" - }, { - "n": "2019", - "v": "2019" - }, { - "n": "2018", - "v": "2018" - }, { - "n": "2017", - "v": "2017" - }, { - "n": "2016", - "v": "2016" - }, { - "n": "2015", - "v": "2015" - }, { - "n": "2014", - "v": "2014" - }, { - "n": "2013", - "v": "2013" - }, { - "n": "2012", - "v": "2012" - }, { - "n": "2011", - "v": "2011" - }, { - "n": "2010", - "v": "2010" - }, { - "n": "2009", - "v": "2009" - }, { - "n": "2008", - "v": "2008" - }, { - "n": "2007", - "v": "2007" - }, { - "n": "2006", - "v": "2006" - }, { - "n": "2005", - "v": "2005" - }, { - "n": "2004", - "v": "2004" - }, { - "n": "2003", - "v": "2003" - }, { - "n": "2002", - "v": "2002" - }, { - "n": "2001", - "v": "2001" - }, { - "n": "2000", - "v": "2000" - }] - }, { - "key": "letter", - "name": "字母", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "A", - "v": "A" - }, { - "n": "B", - "v": "B" - }, { - "n": "C", - "v": "C" - }, { - "n": "D", - "v": "D" - }, { - "n": "E", - "v": "E" - }, { - "n": "F", - "v": "F" - }, { - "n": "G", - "v": "G" - }, { - "n": "H", - "v": "H" - }, { - "n": "I", - "v": "I" - }, { - "n": "J", - "v": "J" - }, { - "n": "K", - "v": "K" - }, { - "n": "L", - "v": "L" - }, { - "n": "M", - "v": "M" - }, { - "n": "N", - "v": "N" - }, { - "n": "O", - "v": "O" - }, { - "n": "P", - "v": "P" - }, { - "n": "Q", - "v": "Q" - }, { - "n": "R", - "v": "R" - }, { - "n": "S", - "v": "S" - }, { - "n": "T", - "v": "T" - }, { - "n": "U", - "v": "U" - }, { - "n": "V", - "v": "V" - }, { - "n": "W", - "v": "W" - }, { - "n": "X", - "v": "X" - }, { - "n": "Y", - "v": "Y" - }, { - "n": "Z", - "v": "Z" - }] - }, { - "key": "by", - "name": "排序", - "value": [{ - "n": "更新", - "v": "time" - }, { - "n": "得分", - "v": "score" - }, { - "n": "总排行", - "v": "hits" - }] - }] - }, - searchUrl: '/search-pg-fypage-wd-**.html', - searchable: 2, //是否启用全局搜索, - quickSearch: 0, //是否启用快速搜索, - headers: { - 'User-Agent': 'PC_UA', - }, - class_parse: '.secNacUl li;a&&Text;a&&href;.*/(\\d+)-1.html', - play_parse: true, - lazy: '', - limit: 6, - 推荐: '.c1_l_wap_contact li;*;img&&src;.time:eq(0)&&Text;*', - 一级: '.list3_cn_box .cn_box2;a&&title;.list_pic&&src;.list_20 li:eq(1) span&&Text;a&&href', - 二级: { - "title": "h1&&Text;.o_r_contact&&li:eq(0)&&Text", - "img": ".o_big_img_bg_b img&&src", - "desc": ".o_r_contact&&li:eq(6)&&Text;.o_r_contact&&li:eq(5)&&Text;.o_r_contact&&li:eq(3)&&Text;.o_r_contact&&li:eq(2)&&Text;.o_r_contact&&li:eq(1)&&Text", - "content": ".des_box&&Text", - "tabs": ".from-tabs&&label", - "lists": ".mn_list_li_movie:eq(#id) li" - }, - 搜索: '*', -} \ No newline at end of file diff --git a/潇洒/js/动漫巴士.js b/潇洒/js/动漫巴士.js deleted file mode 100644 index db8ae7b..0000000 --- a/潇洒/js/动漫巴士.js +++ /dev/null @@ -1,64 +0,0 @@ -var rule = { - author: '小可乐/240526/第一版', - title: '动漫巴士[漫]', - host: 'http://dm84.site', - hostJs: 'print(HOST);let html=request(HOST,{headers:{"User-Agent":MOBILE_UA}});let src= jsp.pdfh(html,"ul&&a:eq(0)&&href");print(src);HOST=src', - headers: { - 'User-Agent': 'MOBILE_UA' - }, - 编码: 'utf-8', - timeout: 5000, - - homeUrl: '/', - url: '/show-fyclass--fyfilter-fypage.html', - filter_url: '{{fl.by}}-{{fl.class}}--{{fl.year}}', - detailUrl: '', - searchUrl: '/s-**---------fypage.html', - searchable: 1, - quickSearch: 1, - filterable: 1, - - class_name: '国产动漫&日本动漫&欧美动漫&电影', - class_url: '1&2&3&4', - filter_def: {}, - - proxy_rule: '', - sniffer: 0, - isVideo: '', - play_parse: true, - parse_url: '', - lazy: `js: -let html = request(input); -let kurl = pdfh(html,'body&&iframe').match(/src="(.*?)"/)[1]; -input= kurl -`, - - limit: 9, - double: false, - 推荐: '*', - //列表;标题;图片;描述;链接;详情(可不写) - 一级: '.v_list li;a&&title;a&&data-bg;.desc&&Text;a&&href', - 二级: { - //名称;类型 - "title": "h1&&Text;meta[name*=class]&&content", - //图片 - "img": "img&&src", - //主要描述;年份;地区;演员;导演 - "desc": "meta[name*=update_date]&&content;meta[name*=release_date]&&content;meta[name*=area]&&content;meta[name*=actor]&&content;meta[name*=director]&&content", - //简介 - "content": "p:eq(-2)&&Text", - //线路数组 - "tabs": ".tab_control&&li", - //线路标题 - "tab_text": "body&&Text", - //播放数组 选集列表 - "lists": ".play_list:eq(#id)&&a", - //选集标题 - "list_text": "body&&Text", - //选集链接 - "list_url": "a&&href" - }, - 搜索: '*', - - filter: 'H4sIAAAAAAAAA+2WbUsqQRTH3+/HmNe+0LWn21eJXlgIRU+Q3UBEsLTaCrYtSm9cb2RQ2YOVFUFa9mWcGf0Wjc6cMxPFstDlcgXf7e/39+zo2XPUlEUiZHTMSpGZeJKMksnZWCJBQmQ+NhcXyKt1erQteDk2+1OIsRSZF5quldvZckcLIOmQsqcb9LmurALImPOL5QsqUwAZd3O6TgFmF2+tpy3IJGB2vmvUScDzKmfNxjGcJwHrspVWKQN1EiBrZV55w1WZArynd8Svd+GeEvCzb5VZZoW9XPF97ICp0uPpEDY5GY8t6h6zwlO78Biwx3bYHlCue2n4qPZR00e0j5je1t42fVj7sOEjP9CLS8OPaD9i+mHth00/pP2Q6Qe1H/zYr4mk0S13j9Z2PnVLN1HA0rR4Kdy5Wauxu32VTE0vJfSzvs1RZ10licmFxXjnWGs8ZBH7r+3E+l778AImQkKQnfDbJeq59OYKMgl6Dqv0rYAT2AU877hEf1fgPAlBdoIVa+LdQZ2EIDvBVq95HjMJmN3XWc6BTAK+l8MG9SBTgHUrHsvkoU4CZm6Ze/A8Fei6be5Usa4LmD2U2n9O+MElxMj9re2prY3+z1vr92vlW+e3mT7b9+UW9ee5l+Z54F/Ms/ib0nwt6v8sHfj2POeLdPMc6iQE+eb3nWenyrJrcJ6E/jz3zjxb6XeqCRqqbAwAAA==' -} \ No newline at end of file diff --git a/潇洒/js/动画片大全.js b/潇洒/js/动画片大全.js deleted file mode 100644 index 696e162..0000000 --- a/潇洒/js/动画片大全.js +++ /dev/null @@ -1,28 +0,0 @@ -var rule = { - title: '动画片大全', - host: 'https://www.dhpdq2.com/', - url: 'https://www.dhpdq2.com/katong/fyclass-fypage/', - searchUrl: '/vodsearch/**----------fypage---/', - class_parse: '.c_class li;a&&Text;a&&href;.*/(.*?)/', - searchable: 2, - quickSearch: 0, - filterable: 0, - headers: { - 'User-Agent': 'MOBILE_UA', - }, - play_parse: true, - lazy: '', - limit: 6, - 推荐: '.stui-vodlist;li;a&&title;a&&data-original;.pic-text&&Text;a&&href', - double: true, - 一级: '.stui-vodlist li;a&&title;a&&data-original;.pic-text&&Text;a&&href', - 二级: { - title: 'h1&&Text;.detail_list&&ul:eq(1)&&li&&a:eq(2)&&Text', - img: '.vodlist_thumb&&data-original', - desc: '.playinfo&&p:eq(0)&&Text;.playinfo&&p:eq(1)&&Text;.playinfo&&p:eq(2)&&Text;.playinfo&&p:eq(3)&&Text', - content: '.content:eq(1)', - tabs: '.relatesdh .title h3', - lists: '.relatesdh:eq(#id) li', - }, - 搜索: '*', -} \ No newline at end of file diff --git a/潇洒/js/去看吧.js b/潇洒/js/去看吧.js deleted file mode 100644 index 81f9121..0000000 --- a/潇洒/js/去看吧.js +++ /dev/null @@ -1,1127 +0,0 @@ -muban.vfed.二级.title = 'h1&&Text;.fed-col-md3--span:eq(0)&&Text'; -muban.vfed.二级.desc = '.fed-col-md3:eq(3)&&Text;;;.fed-col-md6:eq(0)&&Text;.fed-col-md6--span:eq(1)&&Text'; -var rule = { - title: '去看吧', - 模板: 'vfed', - host: 'https://www.k9dm.com', - // url: '/index.php/vod/show/id/fyclass/page/fypage.html', - url: '/index.php/vod/show/id/fyclassfyfilter.html', - filterable: 1, //是否启用分类筛选, - filter_url: '{{fl.area}}{{fl.by}}{{fl.class}}/page/fypage{{fl.year}}', - filter: { - "33": [{ - "key": "class", - "name": "类型", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "搞笑", - "v": "/class/搞笑" - }, { - "n": "经典", - "v": "/class/经典" - }, { - "n": "热血", - "v": "/class/热血" - }, { - "n": "催泪", - "v": "/class/催泪" - }, { - "n": "治愈", - "v": "/class/治愈" - }, { - "n": "猎奇", - "v": "/class/猎奇" - }, { - "n": "励志", - "v": "/class/励志" - }, { - "n": "战斗", - "v": "/class/战斗" - }, { - "n": "后宫", - "v": "/class/后宫" - }, { - "n": "机战", - "v": "/class/机战" - }, { - "n": "恋爱", - "v": "/class/恋爱" - }, { - "n": "百合", - "v": "/class/百合" - }, { - "n": "科幻", - "v": "/class/科幻" - }, { - "n": "奇幻", - "v": "/class/奇幻" - }, { - "n": "推理", - "v": "/class/推理" - }, { - "n": "校园", - "v": "/class/校园" - }, { - "n": "运动", - "v": "/class/运动" - }, { - "n": "魔法", - "v": "/class/魔法" - }, { - "n": "历史", - "v": "/class/历史" - }, { - "n": "伪娘", - "v": "/class/伪娘" - }, { - "n": "美少女", - "v": "/class/美少女" - }, { - "n": "萝莉", - "v": "/class/萝莉" - }, { - "n": "亲子", - "v": "/class/亲子" - }, { - "n": "青春", - "v": "/class/青春" - }, { - "n": "冒险", - "v": "/class/冒险" - }, { - "n": "竞技", - "v": "/class/竞技" - }] - }, { - "key": "year", - "name": "年代", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "2025", - "v": "/year/2025" - }, { - "n": "2024", - "v": "/year/2024" - }, { - "n": "2023", - "v": "/year/2023" - }, { - "n": "2022", - "v": "/year/2022" - }, { - "n": "2021", - "v": "/year/2021" - }, { - "n": "2020", - "v": "/year/2020" - }, { - "n": "2019", - "v": "/year/2019" - }, { - "n": "2018", - "v": "/year/2018" - }, { - "n": "2017", - "v": "/year/2017" - }, { - "n": "2016", - "v": "/year/2016" - }, { - "n": "2015", - "v": "/year/2015" - }, { - "n": "2014", - "v": "/year/2014" - }, { - "n": "2013", - "v": "/year/2013" - }, { - "n": "2012", - "v": "/year/2012" - }, { - "n": "2011", - "v": "/year/2011" - }, { - "n": "2010", - "v": "/year/2010" - }, { - "n": "2009", - "v": "/year/2009" - }, { - "n": "2008", - "v": "/year/2008" - }, { - "n": "2007", - "v": "/year/2007" - }, { - "n": "2006", - "v": "/year/2006" - }, { - "n": "2005", - "v": "/year/2005" - }, { - "n": "2004", - "v": "/year/2004" - }, { - "n": "2003", - "v": "/year/2003" - }, { - "n": "2002", - "v": "/year/2002" - }, { - "n": "2001", - "v": "/year/2001" - }, { - "n": "2000", - "v": "/year/2000" - }, { - "n": "1999", - "v": "/year/1999" - }, { - "n": "1998", - "v": "/year/1998" - }] - }, { - "key": "by", - "name": "排序", - "value": [{ - "n": "时间", - "v": "/by/time" - }, { - "n": "人气", - "v": "/by/hits" - }, { - "n": "评分", - "v": "/by/score" - }] - }], - "21": [{ - "key": "class", - "name": "类型", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "搞笑", - "v": "/class/搞笑" - }, { - "n": "经典", - "v": "/class/经典" - }, { - "n": "热血", - "v": "/class/热血" - }, { - "n": "催泪", - "v": "/class/催泪" - }, { - "n": "治愈", - "v": "/class/治愈" - }, { - "n": "猎奇", - "v": "/class/猎奇" - }, { - "n": "励志", - "v": "/class/励志" - }, { - "n": "战斗", - "v": "/class/战斗" - }, { - "n": "后宫", - "v": "/class/后宫" - }, { - "n": "机战", - "v": "/class/机战" - }, { - "n": "恋爱", - "v": "/class/恋爱" - }, { - "n": "百合", - "v": "/class/百合" - }, { - "n": "科幻", - "v": "/class/科幻" - }, { - "n": "奇幻", - "v": "/class/奇幻" - }, { - "n": "推理", - "v": "/class/推理" - }, { - "n": "校园", - "v": "/class/校园" - }, { - "n": "运动", - "v": "/class/运动" - }, { - "n": "魔法", - "v": "/class/魔法" - }, { - "n": "历史", - "v": "/class/历史" - }, { - "n": "伪娘", - "v": "/class/伪娘" - }, { - "n": "美少女", - "v": "/class/美少女" - }, { - "n": "萝莉", - "v": "/class/萝莉" - }, { - "n": "亲子", - "v": "/class/亲子" - }, { - "n": "青春", - "v": "/class/青春" - }, { - "n": "冒险", - "v": "/class/冒险" - }, { - "n": "竞技", - "v": "/class/竞技" - }] - }, { - "key": "area", - "name": "地区", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "大陆", - "v": "/area/大陆" - }, { - "n": "美国", - "v": "/area/美国" - }, { - "n": "韩国", - "v": "/area/韩国" - }, { - "n": "日本", - "v": "/area/日本" - }, { - "n": "泰国", - "v": "/area/泰国" - }, { - "n": "新加坡", - "v": "/area/新加坡" - }, { - "n": "马来西亚", - "v": "/area/马来西亚" - }, { - "n": "印度", - "v": "/area/印度" - }, { - "n": "英国", - "v": "/area/英国" - }, { - "n": "法国", - "v": "/area/法国" - }, { - "n": "加拿大", - "v": "/area/加拿大" - }, { - "n": "西班牙", - "v": "/area/西班牙" - }, { - "n": "俄罗斯", - "v": "/area/俄罗斯" - }, { - "n": "其它", - "v": "/area/其它" - }] - }, { - "key": "year", - "name": "年代", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "2025", - "v": "/year/2025" - }, { - "n": "2024", - "v": "/year/2024" - }, { - "n": "2023", - "v": "/year/2023" - }, { - "n": "2022", - "v": "/year/2022" - }, { - "n": "2021", - "v": "/year/2021" - }, { - "n": "2020", - "v": "/year/2020" - }, { - "n": "2019", - "v": "/year/2019" - }, { - "n": "2018", - "v": "/year/2018" - }, { - "n": "2017", - "v": "/year/2017" - }, { - "n": "2016", - "v": "/year/2016" - }, { - "n": "2015", - "v": "/year/2015" - }, { - "n": "2014", - "v": "/year/2014" - }, { - "n": "2013", - "v": "/year/2013" - }, { - "n": "2012", - "v": "/year/2012" - }, { - "n": "2011", - "v": "/year/2011" - }, { - "n": "2010", - "v": "/year/2010" - }, { - "n": "2009", - "v": "/year/2009" - }, { - "n": "2008", - "v": "/year/2008" - }, { - "n": "2007", - "v": "/year/2007" - }, { - "n": "2006", - "v": "/year/2006" - }, { - "n": "2005", - "v": "/year/2005" - }, { - "n": "2004", - "v": "/year/2004" - }, { - "n": "2003", - "v": "/year/2003" - }, { - "n": "2002", - "v": "/year/2002" - }, { - "n": "2001", - "v": "/year/2001" - }, { - "n": "2000", - "v": "/year/2000" - }, { - "n": "1999", - "v": "/year/1999" - }, { - "n": "1998", - "v": "/year/1998" - }] - }, { - "key": "by", - "name": "排序", - "value": [{ - "n": "时间", - "v": "/by/time" - }, { - "n": "人气", - "v": "/by/hits" - }, { - "n": "评分", - "v": "/by/score" - }] - }], - "50": [{ - "key": "class", - "name": "类型", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "搞笑", - "v": "/class/搞笑" - }, { - "n": "经典", - "v": "/class/经典" - }, { - "n": "热血", - "v": "/class/热血" - }, { - "n": "催泪", - "v": "/class/催泪" - }, { - "n": "治愈", - "v": "/class/治愈" - }, { - "n": "猎奇", - "v": "/class/猎奇" - }, { - "n": "励志", - "v": "/class/励志" - }, { - "n": "战斗", - "v": "/class/战斗" - }, { - "n": "后宫", - "v": "/class/后宫" - }, { - "n": "机战", - "v": "/class/机战" - }, { - "n": "恋爱", - "v": "/class/恋爱" - }, { - "n": "百合", - "v": "/class/百合" - }, { - "n": "科幻", - "v": "/class/科幻" - }, { - "n": "奇幻", - "v": "/class/奇幻" - }, { - "n": "推理", - "v": "/class/推理" - }, { - "n": "校园", - "v": "/class/校园" - }, { - "n": "运动", - "v": "/class/运动" - }, { - "n": "魔法", - "v": "/class/魔法" - }, { - "n": "历史", - "v": "/class/历史" - }, { - "n": "伪娘", - "v": "/class/伪娘" - }, { - "n": "美少女", - "v": "/class/美少女" - }, { - "n": "萝莉", - "v": "/class/萝莉" - }, { - "n": "亲子", - "v": "/class/亲子" - }, { - "n": "青春", - "v": "/class/青春" - }, { - "n": "冒险", - "v": "/class/冒险" - }, { - "n": "竞技", - "v": "/class/竞技" - }] - }, { - "key": "area", - "name": "地区", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "大陆", - "v": "/area/大陆" - }, { - "n": "美国", - "v": "/area/美国" - }, { - "n": "韩国", - "v": "/area/韩国" - }, { - "n": "日本", - "v": "/area/日本" - }, { - "n": "泰国", - "v": "/area/泰国" - }, { - "n": "新加坡", - "v": "/area/新加坡" - }, { - "n": "马来西亚", - "v": "/area/马来西亚" - }, { - "n": "印度", - "v": "/area/印度" - }, { - "n": "英国", - "v": "/area/英国" - }, { - "n": "法国", - "v": "/area/法国" - }, { - "n": "加拿大", - "v": "/area/加拿大" - }, { - "n": "西班牙", - "v": "/area/西班牙" - }, { - "n": "俄罗斯", - "v": "/area/俄罗斯" - }, { - "n": "其它", - "v": "/area/其它" - }] - }, { - "key": "year", - "name": "年代", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "2025", - "v": "/year/2025" - }, { - "n": "2024", - "v": "/year/2024" - }, { - "n": "2023", - "v": "/year/2023" - }, { - "n": "2022", - "v": "/year/2022" - }, { - "n": "2021", - "v": "/year/2021" - }, { - "n": "2020", - "v": "/year/2020" - }, { - "n": "2019", - "v": "/year/2019" - }, { - "n": "2018", - "v": "/year/2018" - }, { - "n": "2017", - "v": "/year/2017" - }, { - "n": "2016", - "v": "/year/2016" - }, { - "n": "2015", - "v": "/year/2015" - }, { - "n": "2014", - "v": "/year/2014" - }, { - "n": "2013", - "v": "/year/2013" - }, { - "n": "2012", - "v": "/year/2012" - }, { - "n": "2011", - "v": "/year/2011" - }, { - "n": "2010", - "v": "/year/2010" - }, { - "n": "2009", - "v": "/year/2009" - }, { - "n": "2008", - "v": "/year/2008" - }, { - "n": "2007", - "v": "/year/2007" - }, { - "n": "2006", - "v": "/year/2006" - }, { - "n": "2005", - "v": "/year/2005" - }, { - "n": "2004", - "v": "/year/2004" - }, { - "n": "2003", - "v": "/year/2003" - }, { - "n": "2002", - "v": "/year/2002" - }, { - "n": "2001", - "v": "/year/2001" - }, { - "n": "2000", - "v": "/year/2000" - }, { - "n": "1999", - "v": "/year/1999" - }, { - "n": "1998", - "v": "/year/1998" - }] - }, { - "key": "by", - "name": "排序", - "value": [{ - "n": "时间", - "v": "/by/time" - }, { - "n": "人气", - "v": "/by/hits" - }, { - "n": "评分", - "v": "/by/score" - }] - }], - "24": [{ - "key": "class", - "name": "类型", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "搞笑", - "v": "/class/搞笑" - }, { - "n": "经典", - "v": "/class/经典" - }, { - "n": "热血", - "v": "/class/热血" - }, { - "n": "催泪", - "v": "/class/催泪" - }, { - "n": "治愈", - "v": "/class/治愈" - }, { - "n": "猎奇", - "v": "/class/猎奇" - }, { - "n": "励志", - "v": "/class/励志" - }, { - "n": "战斗", - "v": "/class/战斗" - }, { - "n": "后宫", - "v": "/class/后宫" - }, { - "n": "机战", - "v": "/class/机战" - }, { - "n": "恋爱", - "v": "/class/恋爱" - }, { - "n": "百合", - "v": "/class/百合" - }, { - "n": "科幻", - "v": "/class/科幻" - }, { - "n": "奇幻", - "v": "/class/奇幻" - }, { - "n": "推理", - "v": "/class/推理" - }, { - "n": "校园", - "v": "/class/校园" - }, { - "n": "运动", - "v": "/class/运动" - }, { - "n": "魔法", - "v": "/class/魔法" - }, { - "n": "历史", - "v": "/class/历史" - }, { - "n": "伪娘", - "v": "/class/伪娘" - }, { - "n": "美少女", - "v": "/class/美少女" - }, { - "n": "萝莉", - "v": "/class/萝莉" - }, { - "n": "亲子", - "v": "/class/亲子" - }, { - "n": "青春", - "v": "/class/青春" - }, { - "n": "冒险", - "v": "/class/冒险" - }, { - "n": "竞技", - "v": "/class/竞技" - }] - }, { - "key": "area", - "name": "地区", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "大陆", - "v": "/area/大陆" - }, { - "n": "美国", - "v": "/area/美国" - }, { - "n": "韩国", - "v": "/area/韩国" - }, { - "n": "日本", - "v": "/area/日本" - }, { - "n": "泰国", - "v": "/area/泰国" - }, { - "n": "新加坡", - "v": "/area/新加坡" - }, { - "n": "马来西亚", - "v": "/area/马来西亚" - }, { - "n": "印度", - "v": "/area/印度" - }, { - "n": "英国", - "v": "/area/英国" - }, { - "n": "法国", - "v": "/area/法国" - }, { - "n": "加拿大", - "v": "/area/加拿大" - }, { - "n": "西班牙", - "v": "/area/西班牙" - }, { - "n": "俄罗斯", - "v": "/area/俄罗斯" - }, { - "n": "其它", - "v": "/area/其它" - }] - }, { - "key": "year", - "name": "年代", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "2025", - "v": "/year/2025" - }, { - "n": "2024", - "v": "/year/2024" - }, { - "n": "2023", - "v": "/year/2023" - }, { - "n": "2022", - "v": "/year/2022" - }, { - "n": "2021", - "v": "/year/2021" - }, { - "n": "2020", - "v": "/year/2020" - }, { - "n": "2019", - "v": "/year/2019" - }, { - "n": "2018", - "v": "/year/2018" - }, { - "n": "2017", - "v": "/year/2017" - }, { - "n": "2016", - "v": "/year/2016" - }, { - "n": "2015", - "v": "/year/2015" - }, { - "n": "2014", - "v": "/year/2014" - }, { - "n": "2013", - "v": "/year/2013" - }, { - "n": "2012", - "v": "/year/2012" - }, { - "n": "2011", - "v": "/year/2011" - }, { - "n": "2010", - "v": "/year/2010" - }, { - "n": "2009", - "v": "/year/2009" - }, { - "n": "2008", - "v": "/year/2008" - }, { - "n": "2007", - "v": "/year/2007" - }, { - "n": "2006", - "v": "/year/2006" - }, { - "n": "2005", - "v": "/year/2005" - }, { - "n": "2004", - "v": "/year/2004" - }, { - "n": "2003", - "v": "/year/2003" - }, { - "n": "2002", - "v": "/year/2002" - }, { - "n": "2001", - "v": "/year/2001" - }, { - "n": "2000", - "v": "/year/2000" - }, { - "n": "1999", - "v": "/year/1999" - }, { - "n": "1998", - "v": "/year/1998" - }] - }, { - "key": "by", - "name": "排序", - "value": [{ - "n": "时间", - "v": "/by/time" - }, { - "n": "人气", - "v": "/by/hits" - }, { - "n": "评分", - "v": "/by/score" - }] - }], - "22": [{ - "key": "class", - "name": "类型", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "搞笑", - "v": "/class/搞笑" - }, { - "n": "经典", - "v": "/class/经典" - }, { - "n": "热血", - "v": "/class/热血" - }, { - "n": "催泪", - "v": "/class/催泪" - }, { - "n": "治愈", - "v": "/class/治愈" - }, { - "n": "猎奇", - "v": "/class/猎奇" - }, { - "n": "励志", - "v": "/class/励志" - }, { - "n": "战斗", - "v": "/class/战斗" - }, { - "n": "后宫", - "v": "/class/后宫" - }, { - "n": "机战", - "v": "/class/机战" - }, { - "n": "恋爱", - "v": "/class/恋爱" - }, { - "n": "百合", - "v": "/class/百合" - }, { - "n": "科幻", - "v": "/class/科幻" - }, { - "n": "奇幻", - "v": "/class/奇幻" - }, { - "n": "推理", - "v": "/class/推理" - }, { - "n": "校园", - "v": "/class/校园" - }, { - "n": "运动", - "v": "/class/运动" - }, { - "n": "魔法", - "v": "/class/魔法" - }, { - "n": "历史", - "v": "/class/历史" - }, { - "n": "伪娘", - "v": "/class/伪娘" - }, { - "n": "美少女", - "v": "/class/美少女" - }, { - "n": "萝莉", - "v": "/class/萝莉" - }, { - "n": "亲子", - "v": "/class/亲子" - }, { - "n": "青春", - "v": "/class/青春" - }, { - "n": "冒险", - "v": "/class/冒险" - }, { - "n": "竞技", - "v": "/class/竞技" - }] - }, { - "key": "area", - "name": "地区", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "日本", - "v": "/area/日本" - }, { - "n": "欧美", - "v": "/area/欧美" - }, { - "n": "其他", - "v": "/area/其他" - }] - }, { - "key": "year", - "name": "年代", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "2025", - "v": "/year/2025" - }, { - "n": "2024", - "v": "/year/2024" - }, { - "n": "2023", - "v": "/year/2023" - }, { - "n": "2022", - "v": "/year/2022" - }, { - "n": "2021", - "v": "/year/2021" - }, { - "n": "2020", - "v": "/year/2020" - }, { - "n": "2019", - "v": "/year/2019" - }, { - "n": "2018", - "v": "/year/2018" - }, { - "n": "2017", - "v": "/year/2017" - }, { - "n": "2016", - "v": "/year/2016" - }, { - "n": "2015", - "v": "/year/2015" - }, { - "n": "2014", - "v": "/year/2014" - }, { - "n": "2013", - "v": "/year/2013" - }, { - "n": "2012", - "v": "/year/2012" - }, { - "n": "2011", - "v": "/year/2011" - }, { - "n": "2010", - "v": "/year/2010" - }, { - "n": "2009", - "v": "/year/2009" - }, { - "n": "2008", - "v": "/year/2008" - }, { - "n": "2007", - "v": "/year/2007" - }, { - "n": "2006", - "v": "/year/2006" - }, { - "n": "2005", - "v": "/year/2005" - }, { - "n": "2004", - "v": "/year/2004" - }, { - "n": "2003", - "v": "/year/2003" - }, { - "n": "2002", - "v": "/year/2002" - }, { - "n": "2001", - "v": "/year/2001" - }, { - "n": "2000", - "v": "/year/2000" - }, { - "n": "1999", - "v": "/year/1999" - }, { - "n": "1998", - "v": "/year/1998" - }] - }, { - "key": "by", - "name": "排序", - "value": [{ - "n": "时间", - "v": "/by/time" - }, { - "n": "人气", - "v": "/by/hits" - }, { - "n": "评分", - "v": "/by/score" - }] - }] - }, - class_parse: '.fed-pops-list:eq(0)&&li:gt(0):lt(6);a&&Text;a&&href;.*/(.*?).html', -} \ No newline at end of file diff --git a/潇洒/js/双星.js b/潇洒/js/双星.js deleted file mode 100644 index 2c3e9c4..0000000 --- a/潇洒/js/双星.js +++ /dev/null @@ -1,52 +0,0 @@ -var rule = { - title: '双子星', - host: 'https://1.star2.cn', - hostJs: '', - headers: { - 'User-Agent': 'Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.91 Mobile Safari/537.36', - }, - 编码: 'utf-8', - timeout: 5000, - url: 'https://1.star2.cn/fyclass/', - filter_url: '', - detailUrl: '', - searchUrl: 'https://1.star2.cn/search/?keyword=**', - searchable: 1, - quickSearch: 1, - filterable: 1, - class_name: '短剧&国剧&综艺&电影&韩日&英美&外剧&动漫', - class_url: 'dj&ju&zy&mv&rh&ym&wj&dm', - proxy_rule: '', - sniffer: false, - isVideo: '', - play_parse: true, - parse_url: '', - lazy: "js:\n input = 'push://' + input;\n ", - limit: 9, - double: false, - 推荐: '*', - 一级: 'js:\n let html = fetch(input);\n let list = pdfa(html, ".erx-list&&li");\n VODS = list.map(x => {\n return {\n vod_name: pdfh(x, "a&&Text"),\n vod_pic: \'https://fs-im-kefu.7moor-fs1.com/ly/4d2c3f00-7d4c-11e5-af15-41bf63ae4ea0/1746269827120/1.jpeg\',\n vod_remarks: pdfh(x, "a&&Text"),\n vod_content: pdfh(x, "a&&Text"),\n vod_id: pdfh(x, "a&&href")\n }\n });\n ', - 二级: { - title: 'h1&&Text', - img: 'https://fs-im-kefu.7moor-fs1.com/ly/4d2c3f00-7d4c-11e5-af15-41bf63ae4ea0/1746269827120/1.jpeg', - desc: '.card-text:eq(2)&&Text;;;;', - content: '.card-text:eq(0)&&Text', - tabs: "js:TABS = ['双星']", - lists: "js:\n LISTS = [];\n let lists1 = pdfa(html, '.dlipp-cont-bd').map(it => {\n let _tt = pdfh(it, 'a&&Text');\n let _uu = pdfh(it, 'a&&href');\n return _tt + '$' + _uu;\n });\n LISTS.push(lists1);\n ", - }, - 搜索: 'js:\n let html = fetch(input);\n let list = pdfa(html, ".erx-list&&li");\n VODS = list.map(x => {\n return {\n vod_name: pdfh(x, "a&&Text"),\n vod_pic: \'https://fs-im-kefu.7moor-fs1.com/ly/4d2c3f00-7d4c-11e5-af15-41bf63ae4ea0/1746269827120/1.jpeg\', \n vod_remarks: pdfh(x, "a&&Text"),\n vod_content: pdfh(x, "a&&Text"),\n vod_id: pdfh(x, "a&&href")\n }\n });\n ', - cate_exclude: '首页|留言|APP|下载|资讯|新闻|动态', - tab_exclude: '猜你|喜欢|下载|剧情|榜|评论', - 类型: '影视', - homeUrl: 'https://1.star2.cn', - 二级访问前: '', - encoding: 'utf-8', - search_encoding: '', - 图片来源: '', - 图片替换: '', - play_json: [], - pagecount: {}, - tab_remove: [], - tab_order: [], - tab_rename: {}, -} \ No newline at end of file diff --git a/潇洒/js/天堂.js b/潇洒/js/天堂.js deleted file mode 100644 index 3184415..0000000 --- a/潇洒/js/天堂.js +++ /dev/null @@ -1,52 +0,0 @@ -var rule = { - title: '盘搜天堂', - host: 'https://pansott.com/', - hostJs: '', - headers: { - 'User-Agent': 'Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.91 Mobile Safari/537.36', - }, - 编码: 'utf-8', - timeout: 5000, - url: 'https://pansott.com/search?q=fyclass&format=video&page=fypage', - filter_url: '', - detailUrl: '', - searchUrl: 'https://pansott.com/search?q=**&format=video&exact=true&page=fypage', - searchable: 1, - quickSearch: 1, - filterable: 1, - class_name: '剧集&电影&短剧&动漫&综艺', - class_url: '剧集&电影&短网剧&动漫&综艺', - proxy_rule: '', - sniffer: false, - isVideo: '', - play_parse: true, - parse_url: '', - lazy: "js:\n input = 'push://' + input;\n ", - limit: 9, - double: false, - // 推荐: '*', - 一级: 'js:\n let html = fetch(input);\n let list = pdfa(html, "body&&.semi-space-medium-vertical");\n VODS = list.map(x => {\n let remarks = pdfh(x, "div&&img&&alt");\n // 过滤掉包含"迅雷云盘"或"115"的内容\n if(remarks.includes("迅雷云盘") || remarks.includes("115") || remarks.includes("阿里")) return null;\n return {\n vod_name: pdfh(x, "div&&a&&title"),\n vod_pic: \'\',\n vod_remarks: remarks,\n vod_content: remarks,\n vod_id: pdfh(x, "div&&a&&href")\n }\n }).filter(x => x !== null);\n ', - 二级: { - title: 'h1&&Text', - img: 'img&&src', - desc: '.card-text:eq(2)&&Text;;;;', - content: 'body&&.semi-space-loose-vertical&&a&&href', - tabs: "js:TABS = ['天堂']", - lists: "js:\n LISTS = [];\n let lists1 = pdfa(html, 'body&&.semi-space-loose-vertical').map(it => {\n let _tt = pdfh(it, 'span&&title');\n let _uu = pdfh(it, 'a&&href');\n return _tt + '$' + _uu;\n });\n LISTS.push(lists1);\n ", - }, - 搜索: 'js:\n let html = fetch(input);\n let list = pdfa(html, "body&&.semi-space-medium-vertical");\n VODS = list.map(x => {\n let remarks = pdfh(x, "div&&img&&alt");\n // 过滤掉包含"迅雷云盘"或"115"的内容\n if(remarks.includes("迅雷云盘") || remarks.includes("115") || remarks.includes("阿里")) return null;\n return {\n vod_name: pdfh(x, "div&&a&&title"),\n vod_pic: \'\',\n vod_remarks: remarks,\n vod_content: remarks,\n vod_id: pdfh(x, "div&&a&&href")\n }\n }).filter(x => x !== null);\n ', - cate_exclude: '首页|留言|APP|下载|资讯|新闻|动态', - tab_exclude: '猜你|喜欢|下载|剧情|榜|评论', - 类型: '影视', - homeUrl: 'https://pansott.com/', - 二级访问前: '', - encoding: 'utf-8', - search_encoding: '', - 图片来源: '', - 图片替换: '', - play_json: [], - pagecount: {}, - tab_remove: [], - tab_order: [], - tab_rename: {}, -} \ No newline at end of file diff --git a/潇洒/js/奇米动漫.js b/潇洒/js/奇米动漫.js deleted file mode 100644 index 9e4e97b..0000000 --- a/潇洒/js/奇米动漫.js +++ /dev/null @@ -1,1164 +0,0 @@ -var rule = { - title: '奇米动漫', - host: 'http://www.qimiqimi.net', - url: '/show/fyclassfyfilter.html', - filterable: 1, //是否启用分类筛选, - filter_url: '{{fl.area}}{{fl.by}}{{fl.class}}{{fl.letter}}/page/fypage{{fl.year}}', - filter: { - "xinfan": [{ - "key": "class", - "name": "类型", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "冒险", - "v": "/class/冒险" - }, { - "n": "热血", - "v": "/class/热血" - }, { - "n": "奇幻", - "v": "/class/奇幻" - }, { - "n": "恋爱", - "v": "/class/恋爱" - }, { - "n": "校园", - "v": "/class/校园" - }, { - "n": "后宫", - "v": "/class/后宫" - }, { - "n": "搞笑", - "v": "/class/搞笑" - }, { - "n": "治愈", - "v": "/class/治愈" - }, { - "n": "神魔", - "v": "/class/神魔" - }, { - "n": "魔法", - "v": "/class/魔法" - }, { - "n": "百合", - "v": "/class/百合" - }, { - "n": "推理", - "v": "/class/推理" - }, { - "n": "科幻", - "v": "/class/科幻" - }, { - "n": "竞技", - "v": "/class/竞技" - }, { - "n": "悬疑", - "v": "/class/悬疑" - }, { - "n": "青春", - "v": "/class/青春" - }, { - "n": "战争", - "v": "/class/战争" - }, { - "n": "萝莉", - "v": "/class/萝莉" - }, { - "n": "魔幻", - "v": "/class/魔幻" - }, { - "n": "战斗", - "v": "/class/战斗" - }, { - "n": "日常", - "v": "/class/日常" - }] - }, { - "key": "area", - "name": "地区", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "日本", - "v": "/area/日本/" - }, { - "n": "大陆", - "v": "/area/中国/" - }, { - "n": "欧美", - "v": "/area/欧美/" - }, { - "n": "韩国", - "v": "/area/韩国/" - }, { - "n": "港台", - "v": "/area/港台/" - }] - }, { - "key": "year", - "name": "年份", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "2025", - "v": "/year/2025" - }, { - "n": "2024", - "v": "/year/2024" - }, { - "n": "2023", - "v": "/year/2023" - }, { - "n": "2022", - "v": "/year/2022" - }, { - "n": "2021", - "v": "/year/2021" - }, { - "n": "2020", - "v": "/year/2020" - }, { - "n": "2019", - "v": "/year/2019" - }, { - "n": "2018", - "v": "/year/2018" - }, { - "n": "2017", - "v": "/year/2017" - }, { - "n": "2016", - "v": "/year/2016" - }, { - "n": "2015", - "v": "/year/2015" - }, { - "n": "2014", - "v": "/year/2014" - }, { - "n": "2013", - "v": "/year/2013" - }, { - "n": "2012", - "v": "/year/2012" - }, { - "n": "2011", - "v": "/year/2011" - }, { - "n": "2010", - "v": "/year/2010" - }, { - "n": "2009", - "v": "/year/2009" - }, { - "n": "2008", - "v": "/year/2008" - }, { - "n": "2007", - "v": "/year/2007" - }, { - "n": "2006", - "v": "/year/2006" - }, { - "n": "2005", - "v": "/year/2005" - }, { - "n": "2004", - "v": "/year/2004" - }, { - "n": "2003", - "v": "/year/2003" - }, { - "n": "2002", - "v": "/year/2002" - }, { - "n": "2001", - "v": "/year/2001" - }, { - "n": "2000", - "v": "/year/2000" - }] - }, { - "key": "letter", - "name": "字母", - "value": [{ - "n": "字母", - "v": "" - }, { - "n": "A", - "v": "/letter/A" - }, { - "n": "B", - "v": "/letter/B" - }, { - "n": "C", - "v": "/letter/C" - }, { - "n": "D", - "v": "/letter/D" - }, { - "n": "E", - "v": "/letter/E" - }, { - "n": "F", - "v": "/letter/F" - }, { - "n": "G", - "v": "/letter/G" - }, { - "n": "H", - "v": "/letter/H" - }, { - "n": "I", - "v": "/letter/I" - }, { - "n": "J", - "v": "/letter/J" - }, { - "n": "K", - "v": "/letter/K" - }, { - "n": "L", - "v": "/letter/L" - }, { - "n": "M", - "v": "/letter/M" - }, { - "n": "N", - "v": "/letter/N" - }, { - "n": "O", - "v": "/letter/O" - }, { - "n": "P", - "v": "/letter/P" - }, { - "n": "Q", - "v": "/letter/Q" - }, { - "n": "R", - "v": "/letter/R" - }, { - "n": "S", - "v": "/letter/S" - }, { - "n": "T", - "v": "/letter/T" - }, { - "n": "U", - "v": "/letter/U" - }, { - "n": "V", - "v": "/letter/V" - }, { - "n": "W", - "v": "/letter/W" - }, { - "n": "X", - "v": "/letter/X" - }, { - "n": "Y", - "v": "/letter/Y" - }, { - "n": "Z", - "v": "/letter/Z" - }, { - "n": "0-9", - "v": "/letter/0-9" - }] - }, { - "key": "by", - "name": "排序", - "value": [{ - "n": "时间", - "v": "/by/time" - }, { - "n": "人气", - "v": "/by/hits" - }, { - "n": "评分", - "v": "/by/score" - }] - }], - "riman": [{ - "key": "class", - "name": "类型", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "冒险", - "v": "/class/冒险" - }, { - "n": "热血", - "v": "/class/热血" - }, { - "n": "奇幻", - "v": "/class/奇幻" - }, { - "n": "恋爱", - "v": "/class/恋爱" - }, { - "n": "校园", - "v": "/class/校园" - }, { - "n": "后宫", - "v": "/class/后宫" - }, { - "n": "搞笑", - "v": "/class/搞笑" - }, { - "n": "治愈", - "v": "/class/治愈" - }, { - "n": "神魔", - "v": "/class/神魔" - }, { - "n": "魔法", - "v": "/class/魔法" - }, { - "n": "百合", - "v": "/class/百合" - }, { - "n": "推理", - "v": "/class/推理" - }, { - "n": "科幻", - "v": "/class/科幻" - }, { - "n": "竞技", - "v": "/class/竞技" - }, { - "n": "悬疑", - "v": "/class/悬疑" - }, { - "n": "青春", - "v": "/class/青春" - }, { - "n": "战争", - "v": "/class/战争" - }, { - "n": "萝莉", - "v": "/class/萝莉" - }, { - "n": "魔幻", - "v": "/class/魔幻" - }, { - "n": "战斗", - "v": "/class/战斗" - }, { - "n": "日常", - "v": "/class/日常" - }] - }, { - "key": "area", - "name": "地区", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "日本", - "v": "/area/日本/" - }, { - "n": "大陆", - "v": "/area/中国/" - }, { - "n": "欧美", - "v": "/area/欧美/" - }, { - "n": "韩国", - "v": "/area/韩国/" - }, { - "n": "港台", - "v": "/area/港台/" - }] - }, { - "key": "year", - "name": "年份", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "2025", - "v": "/year/2025" - }, { - "n": "2024", - "v": "/year/2024" - }, { - "n": "2023", - "v": "/year/2023" - }, { - "n": "2022", - "v": "/year/2022" - }, { - "n": "2021", - "v": "/year/2021" - }, { - "n": "2020", - "v": "/year/2020" - }, { - "n": "2019", - "v": "/year/2019" - }, { - "n": "2018", - "v": "/year/2018" - }, { - "n": "2017", - "v": "/year/2017" - }, { - "n": "2016", - "v": "/year/2016" - }, { - "n": "2015", - "v": "/year/2015" - }, { - "n": "2014", - "v": "/year/2014" - }, { - "n": "2013", - "v": "/year/2013" - }, { - "n": "2012", - "v": "/year/2012" - }, { - "n": "2011", - "v": "/year/2011" - }, { - "n": "2010", - "v": "/year/2010" - }, { - "n": "2009", - "v": "/year/2009" - }, { - "n": "2008", - "v": "/year/2008" - }, { - "n": "2007", - "v": "/year/2007" - }, { - "n": "2006", - "v": "/year/2006" - }, { - "n": "2005", - "v": "/year/2005" - }, { - "n": "2004", - "v": "/year/2004" - }, { - "n": "2003", - "v": "/year/2003" - }, { - "n": "2002", - "v": "/year/2002" - }, { - "n": "2001", - "v": "/year/2001" - }, { - "n": "2000", - "v": "/year/2000" - }] - }, { - "key": "letter", - "name": "字母", - "value": [{ - "n": "字母", - "v": "" - }, { - "n": "A", - "v": "/letter/A" - }, { - "n": "B", - "v": "/letter/B" - }, { - "n": "C", - "v": "/letter/C" - }, { - "n": "D", - "v": "/letter/D" - }, { - "n": "E", - "v": "/letter/E" - }, { - "n": "F", - "v": "/letter/F" - }, { - "n": "G", - "v": "/letter/G" - }, { - "n": "H", - "v": "/letter/H" - }, { - "n": "I", - "v": "/letter/I" - }, { - "n": "J", - "v": "/letter/J" - }, { - "n": "K", - "v": "/letter/K" - }, { - "n": "L", - "v": "/letter/L" - }, { - "n": "M", - "v": "/letter/M" - }, { - "n": "N", - "v": "/letter/N" - }, { - "n": "O", - "v": "/letter/O" - }, { - "n": "P", - "v": "/letter/P" - }, { - "n": "Q", - "v": "/letter/Q" - }, { - "n": "R", - "v": "/letter/R" - }, { - "n": "S", - "v": "/letter/S" - }, { - "n": "T", - "v": "/letter/T" - }, { - "n": "U", - "v": "/letter/U" - }, { - "n": "V", - "v": "/letter/V" - }, { - "n": "W", - "v": "/letter/W" - }, { - "n": "X", - "v": "/letter/X" - }, { - "n": "Y", - "v": "/letter/Y" - }, { - "n": "Z", - "v": "/letter/Z" - }, { - "n": "0-9", - "v": "/letter/0-9" - }] - }, { - "key": "by", - "name": "排序", - "value": [{ - "n": "时间", - "v": "/by/time" - }, { - "n": "人气", - "v": "/by/hits" - }, { - "n": "评分", - "v": "/by/score" - }] - }], - "guoman": [{ - "key": "class", - "name": "类型", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "冒险", - "v": "/class/冒险" - }, { - "n": "热血", - "v": "/class/热血" - }, { - "n": "奇幻", - "v": "/class/奇幻" - }, { - "n": "恋爱", - "v": "/class/恋爱" - }, { - "n": "校园", - "v": "/class/校园" - }, { - "n": "后宫", - "v": "/class/后宫" - }, { - "n": "搞笑", - "v": "/class/搞笑" - }, { - "n": "治愈", - "v": "/class/治愈" - }, { - "n": "神魔", - "v": "/class/神魔" - }, { - "n": "魔法", - "v": "/class/魔法" - }, { - "n": "百合", - "v": "/class/百合" - }, { - "n": "推理", - "v": "/class/推理" - }, { - "n": "科幻", - "v": "/class/科幻" - }, { - "n": "竞技", - "v": "/class/竞技" - }, { - "n": "悬疑", - "v": "/class/悬疑" - }, { - "n": "青春", - "v": "/class/青春" - }, { - "n": "战争", - "v": "/class/战争" - }, { - "n": "萝莉", - "v": "/class/萝莉" - }, { - "n": "魔幻", - "v": "/class/魔幻" - }, { - "n": "战斗", - "v": "/class/战斗" - }, { - "n": "日常", - "v": "/class/日常" - }] - }, { - "key": "area", - "name": "地区", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "日本", - "v": "/area/日本/" - }, { - "n": "大陆", - "v": "/area/中国/" - }, { - "n": "欧美", - "v": "/area/欧美/" - }, { - "n": "韩国", - "v": "/area/韩国/" - }, { - "n": "港台", - "v": "/area/港台/" - }] - }, { - "key": "year", - "name": "年份", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "2025", - "v": "/year/2025" - }, { - "n": "2024", - "v": "/year/2024" - }, { - "n": "2023", - "v": "/year/2023" - }, { - "n": "2022", - "v": "/year/2022" - }, { - "n": "2021", - "v": "/year/2021" - }, { - "n": "2020", - "v": "/year/2020" - }, { - "n": "2019", - "v": "/year/2019" - }, { - "n": "2018", - "v": "/year/2018" - }, { - "n": "2017", - "v": "/year/2017" - }, { - "n": "2016", - "v": "/year/2016" - }, { - "n": "2015", - "v": "/year/2015" - }, { - "n": "2014", - "v": "/year/2014" - }, { - "n": "2013", - "v": "/year/2013" - }, { - "n": "2012", - "v": "/year/2012" - }, { - "n": "2011", - "v": "/year/2011" - }, { - "n": "2010", - "v": "/year/2010" - }, { - "n": "2009", - "v": "/year/2009" - }, { - "n": "2008", - "v": "/year/2008" - }, { - "n": "2007", - "v": "/year/2007" - }, { - "n": "2006", - "v": "/year/2006" - }, { - "n": "2005", - "v": "/year/2005" - }, { - "n": "2004", - "v": "/year/2004" - }, { - "n": "2003", - "v": "/year/2003" - }, { - "n": "2002", - "v": "/year/2002" - }, { - "n": "2001", - "v": "/year/2001" - }, { - "n": "2000", - "v": "/year/2000" - }] - }, { - "key": "letter", - "name": "字母", - "value": [{ - "n": "字母", - "v": "" - }, { - "n": "A", - "v": "/letter/A" - }, { - "n": "B", - "v": "/letter/B" - }, { - "n": "C", - "v": "/letter/C" - }, { - "n": "D", - "v": "/letter/D" - }, { - "n": "E", - "v": "/letter/E" - }, { - "n": "F", - "v": "/letter/F" - }, { - "n": "G", - "v": "/letter/G" - }, { - "n": "H", - "v": "/letter/H" - }, { - "n": "I", - "v": "/letter/I" - }, { - "n": "J", - "v": "/letter/J" - }, { - "n": "K", - "v": "/letter/K" - }, { - "n": "L", - "v": "/letter/L" - }, { - "n": "M", - "v": "/letter/M" - }, { - "n": "N", - "v": "/letter/N" - }, { - "n": "O", - "v": "/letter/O" - }, { - "n": "P", - "v": "/letter/P" - }, { - "n": "Q", - "v": "/letter/Q" - }, { - "n": "R", - "v": "/letter/R" - }, { - "n": "S", - "v": "/letter/S" - }, { - "n": "T", - "v": "/letter/T" - }, { - "n": "U", - "v": "/letter/U" - }, { - "n": "V", - "v": "/letter/V" - }, { - "n": "W", - "v": "/letter/W" - }, { - "n": "X", - "v": "/letter/X" - }, { - "n": "Y", - "v": "/letter/Y" - }, { - "n": "Z", - "v": "/letter/Z" - }, { - "n": "0-9", - "v": "/letter/0-9" - }] - }, { - "key": "by", - "name": "排序", - "value": [{ - "n": "时间", - "v": "/by/time" - }, { - "n": "人气", - "v": "/by/hits" - }, { - "n": "评分", - "v": "/by/score" - }] - }], - "jcdm": [{ - "key": "class", - "name": "类型", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "冒险", - "v": "/class/冒险" - }, { - "n": "热血", - "v": "/class/热血" - }, { - "n": "奇幻", - "v": "/class/奇幻" - }, { - "n": "恋爱", - "v": "/class/恋爱" - }, { - "n": "校园", - "v": "/class/校园" - }, { - "n": "后宫", - "v": "/class/后宫" - }, { - "n": "搞笑", - "v": "/class/搞笑" - }, { - "n": "治愈", - "v": "/class/治愈" - }, { - "n": "神魔", - "v": "/class/神魔" - }, { - "n": "魔法", - "v": "/class/魔法" - }, { - "n": "百合", - "v": "/class/百合" - }, { - "n": "推理", - "v": "/class/推理" - }, { - "n": "科幻", - "v": "/class/科幻" - }, { - "n": "竞技", - "v": "/class/竞技" - }, { - "n": "悬疑", - "v": "/class/悬疑" - }, { - "n": "青春", - "v": "/class/青春" - }, { - "n": "战争", - "v": "/class/战争" - }, { - "n": "萝莉", - "v": "/class/萝莉" - }, { - "n": "魔幻", - "v": "/class/魔幻" - }, { - "n": "战斗", - "v": "/class/战斗" - }, { - "n": "日常", - "v": "/class/日常" - }] - }, { - "key": "area", - "name": "地区", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "日本", - "v": "/area/日本/" - }, { - "n": "大陆", - "v": "/area/中国/" - }, { - "n": "欧美", - "v": "/area/欧美/" - }, { - "n": "韩国", - "v": "/area/韩国/" - }, { - "n": "港台", - "v": "/area/港台/" - }] - }, { - "key": "year", - "name": "年份", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "2025", - "v": "/year/2025" - }, { - "n": "2024", - "v": "/year/2024" - }, { - "n": "2023", - "v": "/year/2023" - }, { - "n": "2022", - "v": "/year/2022" - }, { - "n": "2021", - "v": "/year/2021" - }, { - "n": "2020", - "v": "/year/2020" - }, { - "n": "2019", - "v": "/year/2019" - }, { - "n": "2018", - "v": "/year/2018" - }, { - "n": "2017", - "v": "/year/2017" - }, { - "n": "2016", - "v": "/year/2016" - }, { - "n": "2015", - "v": "/year/2015" - }, { - "n": "2014", - "v": "/year/2014" - }, { - "n": "2013", - "v": "/year/2013" - }, { - "n": "2012", - "v": "/year/2012" - }, { - "n": "2011", - "v": "/year/2011" - }, { - "n": "2010", - "v": "/year/2010" - }, { - "n": "2009", - "v": "/year/2009" - }, { - "n": "2008", - "v": "/year/2008" - }, { - "n": "2007", - "v": "/year/2007" - }, { - "n": "2006", - "v": "/year/2006" - }, { - "n": "2005", - "v": "/year/2005" - }, { - "n": "2004", - "v": "/year/2004" - }, { - "n": "2003", - "v": "/year/2003" - }, { - "n": "2002", - "v": "/year/2002" - }, { - "n": "2001", - "v": "/year/2001" - }, { - "n": "2000", - "v": "/year/2000" - }] - }, { - "key": "letter", - "name": "字母", - "value": [{ - "n": "字母", - "v": "" - }, { - "n": "A", - "v": "/letter/A" - }, { - "n": "B", - "v": "/letter/B" - }, { - "n": "C", - "v": "/letter/C" - }, { - "n": "D", - "v": "/letter/D" - }, { - "n": "E", - "v": "/letter/E" - }, { - "n": "F", - "v": "/letter/F" - }, { - "n": "G", - "v": "/letter/G" - }, { - "n": "H", - "v": "/letter/H" - }, { - "n": "I", - "v": "/letter/I" - }, { - "n": "J", - "v": "/letter/J" - }, { - "n": "K", - "v": "/letter/K" - }, { - "n": "L", - "v": "/letter/L" - }, { - "n": "M", - "v": "/letter/M" - }, { - "n": "N", - "v": "/letter/N" - }, { - "n": "O", - "v": "/letter/O" - }, { - "n": "P", - "v": "/letter/P" - }, { - "n": "Q", - "v": "/letter/Q" - }, { - "n": "R", - "v": "/letter/R" - }, { - "n": "S", - "v": "/letter/S" - }, { - "n": "T", - "v": "/letter/T" - }, { - "n": "U", - "v": "/letter/U" - }, { - "n": "V", - "v": "/letter/V" - }, { - "n": "W", - "v": "/letter/W" - }, { - "n": "X", - "v": "/letter/X" - }, { - "n": "Y", - "v": "/letter/Y" - }, { - "n": "Z", - "v": "/letter/Z" - }, { - "n": "0-9", - "v": "/letter/0-9" - }] - }, { - "key": "by", - "name": "排序", - "value": [{ - "n": "时间", - "v": "/by/time" - }, { - "n": "人气", - "v": "/by/hits" - }, { - "n": "评分", - "v": "/by/score" - }] - }] - }, - searchable: 2, //是否启用全局搜索, - headers: { //网站的请求头,完整支持所有的,常带ua和cookies - 'User-Agent': 'PC_UA', - }, - class_parse: '#nav li;a&&Text;a&&href;.*/(\\w+).html', - cate_exclude: '番组专题|最近更新', - play_parse: true, - lazy: `js: - var html = JSON.parse(request(input).match(/r player_.*?=(.*?) { - TABS.push(pdfh(it, 'a&&alt')) - }); - `, - // "lists": ".content_playlist:not(.list_scroll):eq(#id) a" - "lists": "div.playlist_full:eq(#id) li" - }, - 搜索: 'li.searchlist_item;*;*;*;*', -} \ No newline at end of file diff --git a/潇洒/js/懒盘.js b/潇洒/js/懒盘.js deleted file mode 100644 index b476003..0000000 --- a/潇洒/js/懒盘.js +++ /dev/null @@ -1,52 +0,0 @@ -var rule = { - title: '懒盘搜', - host: 'https://www.lzpanx.com/', - hostJs: '', - headers: { - 'User-Agent': 'Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.91 Mobile Safari/537.36', - }, - 编码: 'utf-8', - timeout: 5000, - url: 'https://www.lzpanx.com/search?q=fyclass&format=video&page=fypage', - filter_url: '', - detailUrl: '', - searchUrl: 'https://www.lzpanx.com/search?q=**&format=video&exact=true&page=fypage', - searchable: 1, - quickSearch: 1, - filterable: 1, - class_name: '剧集&电影&短剧&动漫&综艺', - class_url: '剧集&电影&短网剧&动漫&综艺', - proxy_rule: '', - sniffer: false, - isVideo: '', - play_parse: true, - parse_url: '', - lazy: "js:\n input = 'push://' + input;\n ", - limit: 9, - double: false, - // 推荐: '*', - 一级: 'js:\n let html = fetch(input);\n let list = pdfa(html, "body&&.semi-space-medium-vertical");\n VODS = list.map(x => {\n let remarks = pdfh(x, "div&&img&&alt");\n // 过滤掉包含"迅雷云盘"的内容\n if(remarks.includes("迅雷云盘") || remarks.includes("115") || remarks.includes("阿里")) return null;\n return {\n vod_name: pdfh(x, "div&&a&&title"),\n vod_pic: \'https://ww1.sinaimg.cn/mw690/006faMndly1htmb1m08adj30e20e2q3m.jpg\',\n vod_remarks: remarks,\n vod_content: remarks,\n vod_id: pdfh(x, "div&&a&&href")\n }\n }).filter(x => x !== null);\n ', - 二级: { - title: 'h1&&Text', - img: 'img&&src', - desc: '.card-text:eq(2)&&Text;;;;', - content: 'body&&.semi-space-loose-vertical&&a&&href', - tabs: "js:TABS = ['懒盘']", - lists: "js:\n LISTS = [];\n let lists1 = pdfa(html, 'body&&.semi-space-loose-vertical').map(it => {\n let _tt = pdfh(it, 'span&&title');\n let _uu = pdfh(it, 'a&&href');\n return _tt + '$' + _uu;\n });\n LISTS.push(lists1);\n ", - }, - 搜索: 'js:\n let html = fetch(input);\n let list = pdfa(html, "body&&.semi-space-medium-vertical");\n VODS = list.map(x => {\n let remarks = pdfh(x, "div&&img&&alt");\n // 过滤掉包含"迅雷云盘"的内容\n if(remarks.includes("迅雷云盘") || remarks.includes("115") || remarks.includes("阿里")) return null;\n return {\n vod_name: pdfh(x, "div&&a&&title"),\n vod_pic: \'https://ww1.sinaimg.cn/mw690/006faMndly1htmb1m08adj30e20e2q3m.jpg\',\n vod_remarks: remarks,\n vod_content: remarks,\n vod_id: pdfh(x, "div&&a&&href")\n }\n }).filter(x => x !== null);\n ', - cate_exclude: '首页|留言|APP|下载|资讯|新闻|动态', - tab_exclude: '猜你|喜欢|下载|剧情|榜|评论', - 类型: '影视', - homeUrl: 'https://www.lzpanx.com/', - 二级访问前: '', - encoding: 'utf-8', - search_encoding: '', - 图片来源: '', - 图片替换: '', - play_json: [], - pagecount: {}, - tab_remove: [], - tab_order: [], - tab_rename: {}, -} \ No newline at end of file diff --git a/潇洒/js/爱奇艺.js b/潇洒/js/爱奇艺.js deleted file mode 100644 index 0ca0057..0000000 --- a/潇洒/js/爱奇艺.js +++ /dev/null @@ -1,1392 +0,0 @@ -var rule = { - title: '奇珍异兽[官]', - host: 'https://www.iqiyi.com', - homeUrl: '', - // detailUrl:'https://pcw-api.iqiyi.com/albums/album/avlistinfo?aid=fyid&size=2000&page=1', - detailUrl: 'https://pcw-api.iqiyi.com/video/video/videoinfowithuser/fyid?agent_type=1&authcookie=&subkey=fyid&subscribe=1', - searchUrl: 'https://search.video.iqiyi.com/o?if=html5&key=**&pageNum=fypage&pos=1&pageSize=24&site=iqiyi', - searchable: 2, - multi: 1, - filterable: 1, - filter: { - '1': [{ - 'key': 'mode', - 'name': '综合排序', - 'value': [{ - 'n': '全部', - 'v': '' - }, { - 'n': '热播榜', - 'v': 11 - }, { - 'n': '好评榜', - 'v': 8 - }, { - 'n': '新上线', - 'v': 4 - }] - }, { - 'key': 'year', - 'name': '全部年份', - 'value': [{ - 'n': '全部', - 'v': '' - }, { - "n": "2025", - "v": 2025 - }, { - "n": "2024", - "v": 2024 - }, { - 'n': '2023', - 'v': 2023 - }, { - 'n': '2022', - 'v': 2022 - }, { - 'n': '2021', - 'v': 2021 - }, { - 'n': '2020', - 'v': 2020 - }, { - 'n': '2019', - 'v': 2019 - }, { - 'n': '2018', - 'v': 2018 - }, { - 'n': '2017', - 'v': 2017 - }, { - 'n': '2016-2011', - 'v': '2011_2016' - }, { - 'n': '2010-2000', - 'v': '2000_2010' - }, { - 'n': '90年代', - 'v': '1990_1999' - }, { - 'n': '80年代', - 'v': '1980_1989' - }, { - 'n': '更早', - 'v': '1964_1979' - }] - }, { - 'key': 'is_purchase', - 'name': '全部资费', - 'value': [{ - 'n': '全部', - 'v': '' - }, { - 'n': '免费', - 'v': 0 - }, { - 'n': '会员', - 'v': 1 - }, { - 'n': '付费', - 'v': 2 - }] - }, { - 'key': 'three_category_id', - 'name': '地区', - 'value': [{ - 'n': '全部', - 'v': '' - }, { - 'n': '华语', - 'v': 1 - }, { - 'n': '香港地区', - 'v': 28997 - }, { - 'n': '美国', - 'v': 2 - }, { - 'n': '欧洲', - 'v': 3 - }, { - 'n': '韩国', - 'v': 4 - }, { - 'n': '日本', - 'v': 308 - }, { - 'n': '泰国', - 'v': 1115 - }, { - 'n': '印度', - 'v': 28999 - }, { - 'n': '其它', - 'v': 5 - }] - }, { - 'key': '18001', - 'name': '类型', - 'value': [{ - 'n': '全部', - 'v': '' - }, { - 'n': '喜剧', - 'v': 8 - }, { - 'n': '爱情', - 'v': 6 - }, { - 'n': '动作', - 'v': 11 - }, { - 'n': '枪战', - 'v': 131 - }, { - 'n': '犯罪', - 'v': 291 - }, { - 'n': '惊悚', - 'v': 128 - }, { - 'n': '恐怖', - 'v': 10 - }, { - 'n': '悬疑', - 'v': 289 - }, { - 'n': '动画', - 'v': 12 - }, { - 'n': '家庭', - 'v': 27356 - }, { - 'n': '奇幻', - 'v': 1284 - }, { - 'n': '魔幻', - 'v': 129 - }, { - 'n': '科幻', - 'v': 9 - }, { - 'n': '战争', - 'v': 7 - }, { - 'n': '青春', - 'v': 130 - }] - }, { - 'key': '27396', - 'name': '规格', - 'value': [{ - 'n': '全部', - 'v': '' - }, { - 'n': '巨制', - 'v': 27397 - }, { - 'n': '院线', - 'v': 27815 - }, { - 'n': '独播', - 'v': 30149 - }, { - 'n': '网络电影', - 'v': 27401 - }] - }], - '2': [{ - 'key': 'mode', - 'name': '综合排序', - 'value': [{ - 'n': '全部', - 'v': '' - }, { - 'n': '热播榜', - 'v': 11 - }, { - 'n': '好评榜', - 'v': 8 - }, { - 'n': '新上线', - 'v': 4 - }] - }, { - 'key': 'year', - 'name': '全部年份', - 'value': [{ - 'n': '全部', - 'v': '' - }, { - 'n': '2023', - 'v': 2023 - }, { - 'n': '2022', - 'v': 2022 - }, { - 'n': '2021', - 'v': 2021 - }, { - 'n': '2020', - 'v': 2020 - }, { - 'n': '2019', - 'v': 2019 - }, { - 'n': '2018', - 'v': 2018 - }, { - 'n': '2017', - 'v': 2017 - }, { - 'n': '2016-2011', - 'v': '2011_2016' - }, { - 'n': '2010-2000', - 'v': '2000_2010' - }, { - 'n': '90年代', - 'v': '1990_1999' - }, { - 'n': '80年代', - 'v': '1980_1989' - }, { - 'n': '更早', - 'v': '1964_1979' - }] - }, { - 'key': 'is_purchase', - 'name': '全部资费', - 'value': [{ - 'n': '全部', - 'v': '' - }, { - 'n': '免费', - 'v': 0 - }, { - 'n': '会员', - 'v': 1 - }, { - 'n': '付费', - 'v': 2 - }] - }, { - 'key': 'three_category_id', - 'name': '地区', - 'value': [{ - 'n': '全部', - 'v': '' - }, { - 'n': '内地', - 'v': 15 - }, { - 'n': '港剧', - 'v': 16 - }, { - 'n': '韩剧', - 'v': 17 - }, { - 'n': '美剧', - 'v': 18 - }, { - 'n': '日剧', - 'v': 309 - }, { - 'n': '泰剧', - 'v': 1114 - }, { - 'n': '台湾地区', - 'v': 1117 - }, { - 'n': '英剧', - 'v': 28916 - }, { - 'n': '其它', - 'v': 19 - }] - }, { - 'key': '18003', - 'name': '类型', - 'value': [{ - 'n': '全部', - 'v': '' - }, { - 'n': '自制', - 'v': 11992 - }, { - 'n': '古装', - 'v': 24 - }, { - 'n': '言情', - 'v': 20 - }, { - 'n': '武侠', - 'v': 23 - }, { - 'n': '偶像', - 'v': 30 - }, { - 'n': '家庭', - 'v': 1654 - }, { - 'n': '青春', - 'v': 1653 - }, { - 'n': '都市', - 'v': 24064 - }, { - 'n': '喜剧', - 'v': 135 - }, { - 'n': '战争', - 'v': 27916 - }, { - 'n': '军旅', - 'v': 1655 - }, { - 'n': '谍战', - 'v': 290 - }, { - 'n': '悬疑', - 'v': 32 - }, { - 'n': '罪案', - 'v': 149 - }, { - 'n': '穿越', - 'v': 148 - }, { - 'n': '宫廷', - 'v': 139 - }, { - 'n': '历史', - 'v': 21 - }, { - 'n': '神话', - 'v': 145 - }, { - 'n': '科幻', - 'v': 34 - }, { - 'n': '年代', - 'v': 27 - }, { - 'n': '农村', - 'v': 29 - }, { - 'n': '商战', - 'v': 140 - }, { - 'n': '剧情', - 'v': 24063 - }, { - 'n': '奇幻', - 'v': 27881 - }, { - 'n': '网剧', - 'v': 24065 - }, { - 'n': '竖短片', - 'v': 32839 - }] - }], - '3': [{ - 'key': 'mode', - 'name': '综合排序', - 'value': [{ - 'n': '全部', - 'v': '' - }, { - 'n': '热播榜', - 'v': 11 - }, { - 'n': '好评榜', - 'v': 8 - }, { - 'n': '新上线', - 'v': 4 - }] - }, { - 'key': 'year', - 'name': '全部年份', - 'value': [{ - 'n': '全部', - 'v': '' - }, { - 'n': '2023', - 'v': 2023 - }, { - 'n': '2022', - 'v': 2022 - }, { - 'n': '2021', - 'v': 2021 - }, { - 'n': '2020', - 'v': 2020 - }, { - 'n': '2019', - 'v': 2019 - }, { - 'n': '2018', - 'v': 2018 - }, { - 'n': '2017', - 'v': 2017 - }, { - 'n': '2016-2011', - 'v': '2011_2016' - }, { - 'n': '2010-2000', - 'v': '2000_2010' - }, { - 'n': '90年代', - 'v': '1990_1999' - }, { - 'n': '80年代', - 'v': '1980_1989' - }, { - 'n': '更早', - 'v': '1964_1979' - }] - }, { - 'key': 'is_purchase', - 'name': '全部资费', - 'value': [{ - 'n': '全部', - 'v': '' - }, { - 'n': '免费', - 'v': 0 - }, { - 'n': '会员', - 'v': 1 - }, { - 'n': '付费', - 'v': 2 - }] - }, { - 'key': 'three_category_id', - 'name': '地区', - 'value': [{ - 'n': '全部', - 'v': '' - }, { - 'n': '国内', - 'v': 20323 - }, { - 'n': '国外', - 'v': 20324 - }] - }, { - 'key': '18004', - 'name': '类型', - 'value': [{ - 'n': '全部', - 'v': '' - }, { - 'n': '人文', - 'v': 70 - }, { - 'n': '美食', - 'v': 33908 - }, { - 'n': '医疗', - 'v': 33924 - }, { - 'n': '自然', - 'v': 33933 - }, { - 'n': '萌宠', - 'v': 33945 - }, { - 'n': '财经', - 'v': 33953 - }, { - 'n': '罪案', - 'v': 33960 - }, { - 'n': '竞技', - 'v': 33967 - }, { - 'n': '灾难', - 'v': 33974 - }, { - 'n': '军事', - 'v': 72 - }, { - 'n': '历史', - 'v': 74 - }, { - 'n': '探险', - 'v': 73 - }, { - 'n': '社会', - 'v': 71 - }, { - 'n': '科技', - 'v': 28119 - }, { - 'n': '旅游', - 'v': 310 - }] - }, { - 'key': '28467', - 'name': '出品方', - 'value': [{ - 'n': '全部', - 'v': '' - }, { - 'n': 'BBC', - 'v': 28468 - }, { - 'n': '美国历史频道', - 'v': 28470 - }, { - 'n': '探索频道', - 'v': 28471 - }, { - 'n': '央视记录', - 'v': 28472 - }, { - 'n': '北京纪实频道', - 'v': 28473 - }, { - 'n': '上海纪实频道', - 'v': 28474 - }, { - 'n': '朗思文化', - 'v': 28476 - }, { - 'n': 'CNEX', - 'v': 28477 - }, { - 'n': '五星传奇', - 'v': 28478 - }, { - 'n': 'IMG', - 'v': 28479 - }, { - 'n': 'NHK', - 'v': 28480 - }, { - 'n': '爱奇艺出品', - 'v': 31283 - }, { - 'n': 'Netflix', - 'v': 31286 - }] - }, { - 'key': '29076', - 'name': '片种', - 'value': [{ - 'n': '全部', - 'v': '' - }, { - 'n': '纪录电影', - 'v': 29077 - }, { - 'n': '系列纪录片', - 'v': 29078 - }, { - 'n': '网络纪录片', - 'v': 29082 - }, { - 'n': '纪实栏目', - 'v': 29083 - }] - }, { - 'key': '31294', - 'name': '时长', - 'value': [{ - 'n': '全部', - 'v': '' - }, { - 'n': '微纪录', - 'v': 29079 - }, { - 'n': '长纪录', - 'v': 29080 - }, { - 'n': '短纪录', - 'v': 29081 - }] - }], - '4': [{ - 'key': 'mode', - 'name': '综合排序', - 'value': [{ - 'n': '全部', - 'v': '' - }, { - 'n': '热播榜', - 'v': 11 - }, { - 'n': '好评榜', - 'v': 8 - }, { - 'n': '新上线', - 'v': 4 - }] - }, { - 'key': 'year', - 'name': '全部年份', - 'value': [{ - 'n': '全部', - 'v': '' - }, { - 'n': '2023', - 'v': 2023 - }, { - 'n': '2022', - 'v': 2022 - }, { - 'n': '2021', - 'v': 2021 - }, { - 'n': '2020', - 'v': 2020 - }, { - 'n': '2019', - 'v': 2019 - }, { - 'n': '2018', - 'v': 2018 - }, { - 'n': '2017', - 'v': 2017 - }, { - 'n': '2016-2011', - 'v': '2011_2016' - }, { - 'n': '2010-2000', - 'v': '2000_2010' - }, { - 'n': '90年代', - 'v': '1990_1999' - }, { - 'n': '80年代', - 'v': '1980_1989' - }, { - 'n': '更早', - 'v': '1964_1979' - }] - }, { - 'key': 'is_purchase', - 'name': '全部资费', - 'value': [{ - 'n': '全部', - 'v': '' - }, { - 'n': '免费', - 'v': 0 - }, { - 'n': '会员', - 'v': 1 - }, { - 'n': '付费', - 'v': 2 - }] - }, { - 'key': 'three_category_id', - 'name': '地区', - 'value': [{ - 'n': '全部', - 'v': '' - }, { - 'n': '中国大陆', - 'v': 37 - }, { - 'n': '日本', - 'v': 38 - }, { - 'n': '韩国', - 'v': 1106 - }, { - 'n': '欧美', - 'v': 30218 - }, { - 'n': '其它', - 'v': 40 - }] - }, { - 'key': '30219', - 'name': '版本', - 'value': [{ - 'n': '全部', - 'v': '' - }, { - 'n': '动画', - 'v': 30220 - }, { - 'n': '特摄', - 'v': 30223 - }, { - 'n': '布袋戏', - 'v': 30224 - }, { - 'n': '特别篇', - 'v': 32782 - }, { - 'n': '动态漫画', - 'v': 32783 - }, { - 'n': '动画电影', - 'v': 32784 - }, { - 'n': '竖版视频', - 'v': 32785 - }, { - 'n': '轻动画', - 'v': 33482 - }, { - 'n': '短剧', - 'v': 33483 - }] - }, { - 'key': '30225', - 'name': '风格', - 'value': [{ - 'n': '全部', - 'v': '' - }, { - 'n': '搞笑', - 'v': 30230 - }, { - 'n': '热血', - 'v': 30232 - }, { - 'n': '催泪', - 'v': 30233 - }, { - 'n': '治愈', - 'v': 30234 - }, { - 'n': '励志', - 'v': 30237 - }, { - 'n': '机战', - 'v': 30241 - }, { - 'n': '恋爱', - 'v': 30243 - }, { - 'n': '科幻', - 'v': 30245 - }, { - 'n': '奇幻', - 'v': 30247 - }, { - 'n': '推理', - 'v': 30248 - }, { - 'n': '校园', - 'v': 30249 - }, { - 'n': '日常', - 'v': 30252 - }, { - 'n': '历史', - 'v': 30254 - }, { - 'n': '美食', - 'v': 30255 - }, { - 'n': '职场', - 'v': 30256 - }, { - 'n': '偶像', - 'v': 30258 - }, { - 'n': '泡面', - 'v': 30265 - }, { - 'n': '冒险', - 'v': 30267 - }, { - 'n': '竞技', - 'v': 30268 - }, { - 'n': '合家欢', - 'v': 30270 - }, { - 'n': '武侠', - 'v': 32792 - }, { - 'n': '玄幻', - 'v': 32793 - }] - }, { - 'key': '32795', - 'name': '新类型', - 'value': [{ - 'n': '全部', - 'v': '' - }, { - 'n': '轻小说改编', - 'v': 32796 - }, { - 'n': '漫画改编', - 'v': 32797 - }, { - 'n': '游戏改编', - 'v': 32798 - }, { - 'n': '原创', - 'v': 32799 - }] - }], - '6': [{ - 'key': 'mode', - 'name': '综合排序', - 'value': [{ - 'n': '全部', - 'v': '' - }, { - 'n': '热播榜', - 'v': 11 - }, { - 'n': '好评榜', - 'v': 8 - }, { - 'n': '新上线', - 'v': 4 - }] - }, { - 'key': 'year', - 'name': '全部年份', - 'value': [{ - 'n': '全部', - 'v': '' - }, { - 'n': '2023', - 'v': 2023 - }, { - 'n': '2022', - 'v': 2022 - }, { - 'n': '2021', - 'v': 2021 - }, { - 'n': '2020', - 'v': 2020 - }, { - 'n': '2019', - 'v': 2019 - }, { - 'n': '2018', - 'v': 2018 - }, { - 'n': '2017', - 'v': 2017 - }, { - 'n': '2016-2011', - 'v': '2011_2016' - }, { - 'n': '2010-2000', - 'v': '2000_2010' - }, { - 'n': '90年代', - 'v': '1990_1999' - }, { - 'n': '80年代', - 'v': '1980_1989' - }, { - 'n': '更早', - 'v': '1964_1979' - }] - }, { - 'key': 'is_purchase', - 'name': '全部资费', - 'value': [{ - 'n': '全部', - 'v': '' - }, { - 'n': '免费', - 'v': 0 - }, { - 'n': '会员', - 'v': 1 - }, { - 'n': '付费', - 'v': 2 - }] - }, { - 'key': 'three_category_id', - 'name': '地区', - 'value': [{ - 'n': '全部', - 'v': '' - }, { - 'n': '内地', - 'v': 151 - }, { - 'n': '港台', - 'v': 152 - }, { - 'n': '韩国', - 'v': 33306 - }, { - 'n': '欧美', - 'v': 154 - }, { - 'n': '其它', - 'v': 1113 - }] - }, { - 'key': '18014', - 'name': '类型', - 'value': [{ - 'n': '全部', - 'v': '' - }, { - 'n': '播报', - 'v': 155 - }, { - 'n': '访谈', - 'v': 156 - }, { - 'n': '游戏', - 'v': 158 - }, { - 'n': '晚会', - 'v': 292 - }, { - 'n': '曲艺', - 'v': 293 - }, { - 'n': '脱口秀', - 'v': 2118 - }, { - 'n': '真人秀', - 'v': 2224 - }, { - 'n': '竞技', - 'v': 30278 - }, { - 'n': '爱奇艺出品', - 'v': 30279 - }, { - 'n': '竞演', - 'v': 33860 - }] - }, { - 'key': '33162', - 'name': '题材', - 'value': [{ - 'n': '全部', - 'v': '' - }, { - 'n': '音乐', - 'v': 33163 - }, { - 'n': '舞蹈', - 'v': 33172 - }, { - 'n': '文化', - 'v': 33173 - }, { - 'n': '美食', - 'v': 33182 - }, { - 'n': '伦理', - 'v': 33184 - }, { - 'n': '相亲', - 'v': 33193 - }, { - 'n': '纪实', - 'v': 33195 - }, { - 'n': '生活', - 'v': 33196 - }, { - 'n': '亲子', - 'v': 33197 - }, { - 'n': '少儿', - 'v': 33198 - }, { - 'n': '财经', - 'v': 33199 - }, { - 'n': '健康', - 'v': 33200 - }, { - 'n': '时尚', - 'v': 33203 - }, { - 'n': '旅游', - 'v': 33205 - }, { - 'n': '教育', - 'v': 33206 - }, { - 'n': '其它', - 'v': 33220 - }, { - 'n': '爱情', - 'v': 33316 - }, { - 'n': '搞笑', - 'v': 33317 - }, { - 'n': '益智', - 'v': 33318 - }, { - 'n': '职场', - 'v': 33319 - }, { - 'n': '语言', - 'v': 33530 - }, { - 'n': '辩论', - 'v': 33531 - }, { - 'n': '演讲', - 'v': 33843 - }] - }], - '5': [{ - 'key': 'mode', - 'name': '综合排序', - 'value': [{ - 'n': '全部', - 'v': '' - }, { - 'n': '热播榜', - 'v': 11 - }, { - 'n': '好评榜', - 'v': 8 - }, { - 'n': '新上线', - 'v': 4 - }] - }, { - 'key': 'year', - 'name': '全部年份', - 'value': [{ - 'n': '全部', - 'v': '' - }, { - 'n': '2023', - 'v': 2023 - }, { - 'n': '2022', - 'v': 2022 - }, { - 'n': '2021', - 'v': 2021 - }, { - 'n': '2020', - 'v': 2020 - }, { - 'n': '2019', - 'v': 2019 - }, { - 'n': '2018', - 'v': 2018 - }, { - 'n': '2017', - 'v': 2017 - }, { - 'n': '2016-2011', - 'v': '2011_2016' - }, { - 'n': '2010-2000', - 'v': '2000_2010' - }, { - 'n': '90年代', - 'v': '1990_1999' - }, { - 'n': '80年代', - 'v': '1980_1989' - }, { - 'n': '更早', - 'v': '1964_1979' - }] - }, { - 'key': 'is_purchase', - 'name': '全部资费', - 'value': [{ - 'n': '全部', - 'v': '' - }, { - 'n': '免费', - 'v': 0 - }, { - 'n': '会员', - 'v': 1 - }, { - 'n': '付费', - 'v': 2 - }] - }, { - 'key': 'three_category_id', - 'name': '地区', - 'value': [{ - 'n': '全部', - 'v': '' - }, { - 'n': '内地', - 'v': 221 - }, { - 'n': '港台', - 'v': 220 - }, { - 'n': '欧美', - 'v': 219 - }, { - 'n': '日韩', - 'v': 218 - }, { - 'n': '拉美', - 'v': 217 - }, { - 'n': '亚洲地区', - 'v': 216 - }, { - 'n': '非洲', - 'v': 215 - }] - }, { - 'key': '18009', - 'name': '语种', - 'value': [{ - 'n': '全部', - 'v': '' - }, { - 'n': '普通话', - 'v': 91 - }, { - 'n': '粤语', - 'v': 92 - }, { - 'n': '闽南语', - 'v': 93 - }, { - 'n': '英语', - 'v': 94 - }, { - 'n': '日语', - 'v': 95 - }, { - 'n': '韩语', - 'v': 96 - }, { - 'n': '其它', - 'v': 97 - }] - }, { - 'key': '23554', - 'name': '音乐类型', - 'value': [{ - 'n': '全部', - 'v': '' - }, { - 'n': '单曲MV', - 'v': 23556 - }, { - 'n': '单曲现场', - 'v': 23557 - }, { - 'n': '演唱会', - 'v': 23558 - }, { - 'n': '新闻', - 'v': 23559 - }, { - 'n': '访谈', - 'v': 23560 - }, { - 'n': '音乐记录', - 'v': 23561 - }, { - 'n': '音乐周边', - 'v': 23562 - }, { - 'n': '音乐节目', - 'v': 23563 - }, { - 'n': '影视原声', - 'v': 23564 - }, { - 'n': '音乐短片', - 'v': 23565 - }, { - 'n': '其他', - 'v': 23566 - }] - }], - '16': [{ - 'key': 'mode', - 'name': '综合排序', - 'value': [{ - 'n': '全部', - 'v': '' - }, { - 'n': '热播榜', - 'v': 11 - }, { - 'n': '好评榜', - 'v': 8 - }, { - 'n': '新上线', - 'v': 4 - }] - }, { - 'key': 'year', - 'name': '全部年份', - 'value': [{ - 'n': '全部', - 'v': '' - }, { - 'n': '2023', - 'v': 2023 - }, { - 'n': '2022', - 'v': 2022 - }, { - 'n': '2021', - 'v': 2021 - }, { - 'n': '2020', - 'v': 2020 - }, { - 'n': '2019', - 'v': 2019 - }, { - 'n': '2018', - 'v': 2018 - }, { - 'n': '2017', - 'v': 2017 - }, { - 'n': '2016-2011', - 'v': '2011_2016' - }, { - 'n': '2010-2000', - 'v': '2000_2010' - }, { - 'n': '90年代', - 'v': '1990_1999' - }, { - 'n': '80年代', - 'v': '1980_1989' - }, { - 'n': '更早', - 'v': '1964_1979' - }] - }, { - 'key': 'is_purchase', - 'name': '全部资费', - 'value': [{ - 'n': '全部', - 'v': '' - }, { - 'n': '免费', - 'v': 0 - }, { - 'n': '会员', - 'v': 1 - }, { - 'n': '付费', - 'v': 2 - }] - }, { - 'key': '18061', - 'name': '类型', - 'value': [{ - 'n': '全部', - 'v': '' - }, { - 'n': '喜剧', - 'v': 1296 - }, { - 'n': '爱情', - 'v': 1297 - }, { - 'n': '动作', - 'v': 1298 - }, { - 'n': '奇幻', - 'v': 1299 - }, { - 'n': '惊悚', - 'v': 1300 - }, { - 'n': '悬疑', - 'v': 1301 - }, { - 'n': '青春', - 'v': 1302 - }] - }] - }, - // url:'https://pcw-api.iqiyi.com/search/recommend/list?channel_id=fyclass&data_type=1&is_purchase=&mode=24&page_id=fypage&ret_num=48&three_category_id=', - url: 'https://pcw-api.iqiyi.com/search/recommend/list?channel_id=fyclass&data_type=1&page_id=fypage&ret_num=48', - filter_url: 'is_purchase={{fl.is_purchase}}&mode={{fl.mode}}&three_category_id={{fl.three_category_id}}&market_release_date_level={{fl.year}}', - // url:'https://pcw-api.iqiyi.com/search/video/videolists?channel_id=fyclass&pageNum=fypage&pageSize=24&data_type=1&site=iqiyi', - headers: { - 'User-Agent': 'MOBILE_UA' - }, - timeout: 5000, - class_name: '电影&电视剧&纪录片&动漫&综艺&音乐&网络电影', - class_url: '1&2&3&4&6&5&16', - limit: 20, - play_parse: true, - lazy: $js.toString(() => { - try { - let api = "" + input.split("?")[0]; - console.log(api); - let response = fetch(api, { - method: 'get', - headers: { - 'User-Agent': 'okhttp/3.14.9', - 'Content-Type': 'application/x-www-form-urlencoded' - } - }); - let bata = JSON.parse(response); - if (bata.url.includes("qiyi")) { - input = { - parse: 0, - url: bata.url, - jx: 0, - danmaku: "http://127.0.0.1:9978/proxy?do=danmu&site=js&url=http://dm.qxq6.com/zy/api.php?url=" + input.split("?")[0] - }; - } else { - input = { - parse: 0, - url: input.split("?")[0], - jx: 1, - danmaku: "http://127.0.0.1:9978/proxy?do=danmu&site=js&url=http://dm.qxq6.com/zy/api.php?url=" + input.split("?")[0] - }; - } - } catch { - input = { - parse: 0, - url: input.split("?")[0], - jx: 1, - danmaku: "http://127.0.0.1:9978/proxy?do=danmu&site=js&url=http://dm.qxq6.com/zy/api.php?url=" + input.split("?")[0] - }; - } - }), - // play_parse:true, - // 手动调用解析请求json的url,此lazy不方便 - // lazy:'js:input="https://cache.json.icu/home/api?type=ys&uid=292796&key=fnoryABDEFJNPQV269&url="+input.split("?")[0];log(input);let html=JSON.parse(request(input));log(html);input=html.url||input', - // 推荐:'.list_item;img&&alt;img&&src;a&&Text;a&&data-float', - // 一级:'json:.data.list;.name;.imageUrl;.latestOrder;.albumId', - 推荐: '', - // 推荐:'js:let d=[];fetch_params.headers["user-agent"]=PC_UA;pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd;let html=fetch(HOST,fetch_params);let lists=pdfa(html,".qy-mod-li");lists.forEach(function(it){try{let title=pdfh(it,"p.sub&&title");let desc=pdfh(it,".qy-mod-label&&Text");let pic_url=pd(it,"img&&src");d.push({title:title,desc:desc,img:pic_url})}catch(e){}});res=setResult(d);', - 一级: 'js:let d=[];if(MY_CATE==="16"){input=input.replace("channel_id=16","channel_id=1").split("three_category_id")[0];input+="three_category_id=27401"}else if(MY_CATE==="5"){input=input.replace("data_type=1","data_type=2")}let html=request(input);let json=JSON.parse(html);if(json.code==="A00003"){fetch_params.headers["user-agent"]=PC_UA;json=JSON.parse(fetch(input,fetch_params))}json.data.list.forEach(function(data){if(data.channelId===1){desc=data.hasOwnProperty("score")?data.score+"分\\t":""}else if(data.channelId===2||data.channelId===4){if(data.latestOrder===data.videoCount){desc=(data.hasOwnProperty("score")?data.score+"分\\t":"")+data.latestOrder+"集全"}else{if(data.videoCount){desc=(data.hasOwnProperty("score")?data.score+"分\\t":"")+data.latestOrder+"/"+data.videoCount+"集"}else{desc="更新至 "+data.latestOrder+"集"}}}else if(data.channelId===6){desc=data.period+"期"}else if(data.channelId===5){desc=data.focus}else{if(data.latestOrder){desc="更新至 第"+data.latestOrder+"期"}else if(data.period){desc=data.period}else{desc=data.focus}}url=MY_CATE+"$"+data.albumId;d.push({url:url,title:data.name,desc:desc,pic_url:data.imageUrl.replace(".jpg","_390_520.jpg?caplist=jpg,webp")})});setResult(d);', - // 一级:'js:let d=[];if(MY_CATE==="16"){input=input.replace("channel_id=16","channel_id=1").split("three_category_id")[0];input+="three_category_id=27401"}else if(MY_CATE==="5"){input=input.replace("data_type=1","data_type=2")}let html=fetch(input,fetch_params);let json=JSON.parse(html);if(json.code==="A00003"){fetch_params.headers["user-agent"]=PC_UA;json=JSON.parse(fetch(input,fetch_params))}json.data.list.forEach(function(data){if(data.channelId===1){desc=data.hasOwnProperty("score")?data.score+"分\\t":""}else if(data.channelId===2||data.channelId===4){if(data.latestOrder===data.videoCount){desc=(data.hasOwnProperty("score")?data.score+"分\\t":"")+data.latestOrder+"集全"}else{if(data.videoCount){desc=(data.hasOwnProperty("score")?data.score+"分\\t":"")+data.latestOrder+"/"+data.videoCount+"集"}else{desc="更新至 "+data.latestOrder+"集"}}}else if(data.channelId===6){desc=data.period+"期"}else if(data.channelId===5){desc=data.focus}else{if(data.latestOrder){desc="更新至 第"+data.latestOrder+"期"}else if(data.period){desc=data.period}else{desc=data.focus}}url=MY_CATE+"$"+data.albumId;d.push({url:url,title:data.name,desc:desc,pic_url:data.imageUrl.replace(".jpg","_390_520.jpg?caplist=jpg,webp")})});setResult(d);', - // 一级:'json:.data.list;.name;.imageUrl;.playUrl;.latestOrder', - // 二级:{is_json:1,"title":"data.title;data.moviecategory[0]+data.moviecategory[1]","img":"data.cdncover","desc":"data.area[0];data.director[0]","content":"data.description","tabs":"data.playlink_sites;data.playlinksdetail.#idv.quality","lists":"data.playlinksdetail.#idv.default_url"}, - // 二级:{is_json:1,"title":"data.name+data.subtitle;data.latestOrder","img":"data.imageUrl","desc":"data.categories;data.areas","content":"data.description","tabs":"data.name","lists":"data.playlinksdetail.#idv.default_url"}, - 二级: '', - 二级: 'js:let d=[];let html=request(input);let json=JSON.parse(html).data;VOD={vod_id:"",vod_url:input,vod_name:"",type_name:"",vod_actor:"",vod_year:"",vod_director:"",vod_area:"",vod_content:"",vod_remarks:"",vod_pic:""};VOD.vod_name=json.name;try{if(json.latestOrder){VOD.vod_remarks="类型: "+(json.categories[0].name||"")+"\\t"+(json.categories[1].name||"")+"\\t"+(json.categories[2].name||"")+"\\t"+"评分:"+(json.score||"")+"\\n更新至:第"+json.latestOrder+"集(期)/共"+json.videoCount+"集(期)"}else{VOD.vod_remarks="类型: "+(json.categories[0].name||"")+"\\t"+(json.categories[1].name||"")+"\\t"+(json.categories[2].name||"")+"\\t"+"评分:"+(json.score||"")+json.period}}catch(e){VOD.vod_remarks=json.subtitle}VOD.vod_area=(json.focus||"")+"\\n资费:"+(json.payMark===1?"VIP":"免费")+"\\n地区:"+(json.areas||"");let vsize="579_772";try{vsize=json.imageSize[12]}catch(e){}VOD.vod_pic=json.imageUrl.replace(".jpg","_"+vsize+".jpg?caplist=jpg,webp");VOD.type_name=json.categories.map(function(it){return it.name}).join(",");if(json.people.main_charactor){let vod_actors=[];json.people.main_charactor.forEach(function(it){vod_actors.push(it.name)});VOD.vod_actor=vod_actors.join(",")}VOD.vod_content=json.description;let playlists=[];if(json.channelId===1||json.channelId===5){playlists=[{playUrl:json.playUrl,imageUrl:json.imageUrl,shortTitle:json.shortTitle,focus:json.focus,period:json.period}]}else{if(json.channelId===6){let qs=json.period.split("-")[0];let listUrl="https://pcw-api.iqiyi.com/album/source/svlistinfo?cid=6&sourceid="+json.albumId+"&timelist="+qs;let playData=JSON.parse(request(listUrl)).data[qs];playData.forEach(function(it){playlists.push({playUrl:it.playUrl,imageUrl:it.imageUrl,shortTitle:it.shortTitle,focus:it.focus,period:it.period})})}else{let listUrl="https://pcw-api.iqiyi.com/albums/album/avlistinfo?aid="+json.albumId+"&size=200&page=1";let data=JSON.parse(request(listUrl)).data;let total=data.total;playlists=data.epsodelist;if(total>200){for(let i=2;i200){for(let i=2;i {\n let remarks = pdfh(x, "div&&img&&alt");\n // 过滤掉包含"迅雷云盘"的内容\n if(remarks.includes("迅雷云盘") || remarks.includes("115") || remarks.includes("阿里")) return null;\n return {\n vod_name: pdfh(x, "div&&a&&title"),\n vod_pic: \'\',\n vod_remarks: remarks,\n vod_content: remarks,\n vod_id: pdfh(x, "div&&a&&href")\n }\n }).filter(x => x !== null);\n ', - 二级: { - title: 'h1&&Text', - img: 'img&&src', - desc: '.card-text:eq(2)&&Text;;;;', - content: 'body&&.semi-space-loose-vertical&&a&&href', - tabs: "js:TABS = ['懒盘']", - lists: "js:\n LISTS = [];\n let lists1 = pdfa(html, 'body&&.semi-space-loose-vertical').map(it => {\n let _tt = pdfh(it, 'span&&title');\n let _uu = pdfh(it, 'a&&href');\n return _tt + '$' + _uu;\n });\n LISTS.push(lists1);\n ", - }, - 搜索: 'js:\n let html = fetch(input);\n let list = pdfa(html, "body&&.semi-space-medium-vertical");\n VODS = list.map(x => {\n let remarks = pdfh(x, "div&&img&&alt");\n // 过滤掉包含"迅雷云盘"的内容\n if(remarks.includes("迅雷云盘") || remarks.includes("115") || remarks.includes("阿里")) return null;let vodName = pdfh(x, "div&&a&&title");\n // 过滤条件:迅雷云盘、.txt后缀、空名称\n if(vodName.endsWith(".zip") || vodName.endsWith(".txt") || !vodName.trim()) return null;\n return {\n vod_name: pdfh(x, "div&&a&&title"),\n vod_pic: \'\',\n vod_remarks: remarks,\n vod_content: remarks,\n vod_id: pdfh(x, "div&&a&&href")\n }\n }).filter(x => x !== null);\n ', - cate_exclude: '首页|留言|APP|下载|资讯|新闻|动态', - tab_exclude: '猜你|喜欢|下载|剧情|榜|评论', - 类型: '影视', - homeUrl: 'https://www.esoua.com/', - 二级访问前: '', - encoding: 'utf-8', - search_encoding: '', - 图片来源: '', - 图片替换: '', - play_json: [], - pagecount: {}, - tab_remove: [], - tab_order: [], - tab_rename: {}, -} \ No newline at end of file diff --git a/潇洒/js/百酷.js b/潇洒/js/百酷.js deleted file mode 100644 index ce716ec..0000000 --- a/潇洒/js/百酷.js +++ /dev/null @@ -1,73 +0,0 @@ -var rule = { - title: '百酷短剧', - host: 'https://api.kuleu.com/', - hostJs: '', - headers: { - 'User-Agent': 'Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.91 Mobile Safari/537.36', - }, - 编码: 'utf-8', - timeout: 5000, - url: 'https://api.kuleu.com/fyclass', - filter_url: '', - detailUrl: '', - searchUrl: 'https://api.kuleu.com/api/bddj?text=**', - searchable: 1, - quickSearch: 1, - filterable: 1, - class_name: '今日更新&百度短剧&每日更新&夸克短剧&每日更新', - class_url: 'api/yingshi&api/bddj?list&api/bddj?today&api/action?list&api/action?today', - proxy_rule: '', - sniffer: false, - isVideo: '', - play_parse: true, - parse_url: '', - lazy: "js:\n input = 'push://' + input;\n ", - limit: 9, - double: false, - // 推荐: '*', - 一级: $js.toString(() => { - let cid = MY_CATE || '108'; - let pg = MY_PAGE || 1; - let url = `https://api.kuleu.com/${cid}`; - let khtml = fetch(url, {headers: rule.headers}); - let kjson = JSON.parse(khtml); - VODS = []; - kjson.data.forEach(it => { - VODS.push({ - vod_name: it.name, - vod_pic: `https://tse3-mm.cn.bing.net/th/id/OIP-C.rlQOYtsriwWKHwofGufJ_AHaQd?w=157&h=350&c=7&r=0&o=7&dpr=3.7&pid=1.7&rm=3`, - vod_remarks: it.addtime, - vod_id: `push://${it.viewlink}` - }); - }); -}), - 二级: '*', - 搜索:$js.toString(() => { - let url = `https://api.kuleu.com/api/bddj?text=${KEY}`; - let khtml = fetch(url); - let kjson = JSON.parse(khtml); - VODS = []; - kjson.data.forEach(it => { - VODS.push({ - vod_name: it.name, - vod_pic: it.pPic, - vod_remarks: it.addtime, - vod_id: `push://${it.viewlink}` - }) - }) -}), - cate_exclude: '首页|留言|APP|下载|资讯|新闻|动态', - tab_exclude: '猜你|喜欢|下载|剧情|榜|评论', - 类型: '影视', - homeUrl: 'https://www.lzpanx.com/', - 二级访问前: '', - encoding: 'utf-8', - search_encoding: '', - 图片来源: '', - 图片替换: '', - play_json: [], - pagecount: {}, - tab_remove: [], - tab_order: [], - tab_rename: {}, -} \ No newline at end of file diff --git a/潇洒/js/短剧合集.js b/潇洒/js/短剧合集.js deleted file mode 100644 index 4ca491b..0000000 --- a/潇洒/js/短剧合集.js +++ /dev/null @@ -1,29 +0,0 @@ -var rule = { - 类型: '影视', //影视|听书|漫画|小说 - title: '爱看短剧[盘]', - host: 'https://ys.110t.cn/', - homeUrl: '/api/ajax.php?act=recommend', - homeUrl: '/api/ajax.php?act=Daily', - url: '/api/ajax.php?act=fyclass', - searchUrl: '/api/ajax.php?act=search&name=**', - searchable: 1, - quickSearch: 0, - filterable: 0, - headers: { - 'User-Agent': 'MOBILE_UA', - }, - hikerListCol: "text_1", - hikerClassListCol: "text_1", - timeout: 5000, - class_name: '全部', - class_url: 'yingshilist', - play_parse: true, - lazy: $js.toString(() => { - input = "push://" + input; - }), - double: false, - 推荐: '*', - 一级: 'json:data;name;;addtime;url', - 二级: '*', - 搜索: '*', -} \ No newline at end of file diff --git a/潇洒/js/短剧大全.js b/潇洒/js/短剧大全.js deleted file mode 100644 index ea78f2c..0000000 --- a/潇洒/js/短剧大全.js +++ /dev/null @@ -1,28 +0,0 @@ -var rule = { - 类型: '影视', //影视|听书|漫画|小说 - title: '短剧', - host: 'https://ai-img.ycubbs.cn/', - homeUrl: '/api/duanju/list', - url: '/api/duanju/list', - searchUrl: 'https://api.kuleu.com/api/action?text=**', - searchable: 1, - quickSearch: 0, - filterable: 0, - headers: { - 'User-Agent': 'MOBILE_UA', - }, - hikerListCol: "text_1", - hikerClassListCol: "text_1", - timeout: 5000, - class_name: '', - class_url: '', - play_parse: true, - lazy: $js.toString(() => { - input = "push://" + input; - }), - double: false, - 推荐: '*', - 一级: 'json:data;name;;;url', - 二级: '*', - 搜索: 'json:data;name;;;viewlink', -} \ No newline at end of file diff --git a/潇洒/js/米搜.js b/潇洒/js/米搜.js deleted file mode 100644 index 0480bc7..0000000 --- a/潇洒/js/米搜.js +++ /dev/null @@ -1,52 +0,0 @@ -var rule = { - title: '米搜', - host: 'https://misoso.cc/', - hostJs: '', - headers: { - 'User-Agent': 'Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.91 Mobile Safari/537.36', - }, - 编码: 'utf-8', - timeout: 5000, - url: 'https://misoso.cc/search?q=fyclass&format=video&page=fypage', - filter_url: '', - detailUrl: '', - searchUrl: 'https://misoso.cc/search?q=**&format=video&exact=true&page=fypage', - searchable: 1, - quickSearch: 1, - filterable: 1, - class_name: '', - class_url: '', - proxy_rule: '', - sniffer: false, - isVideo: '', - play_parse: true, - parse_url: '', - lazy: "js:\n input = 'push://' + input;\n ", - limit: 9, - double: false, - // 推荐: '*', - 一级: 'js:\n let html = fetch(input);\n let list = pdfa(html, "body&&.semi-space-medium-vertical");\n VODS = list.map(x => {\n let remarks = pdfh(x, "div&&img&&alt");\n // 过滤掉包含"迅雷云盘"的内容\n if(remarks.includes("迅雷云盘") || remarks.includes("115") || remarks.includes("阿里")) return null;\n return {\n vod_name: pdfh(x, "div&&a&&title"),\n vod_pic: \'https://is2-ssl.mzstatic.com/image/thumb/Purple123/v4/49/25/97/49259775-1a6b-ba62-3c28-b27bf6712ade/source/1024x1024bb.jpg\',\n vod_remarks: remarks,\n vod_content: remarks,\n vod_id: pdfh(x, "div&&a&&href")\n }\n }).filter(x => x !== null);\n ', - 二级: { - title: 'h1&&Text', - img: 'img&&src', - desc: '.card-text:eq(2)&&Text;;;;', - content: 'body&&.semi-space-loose-vertical&&a&&href', - tabs: "js:TABS = ['米搜']", - lists: "js:\n LISTS = [];\n let lists1 = pdfa(html, 'body&&.semi-space-loose-vertical').map(it => {\n let _tt = pdfh(it, 'span&&title');\n let _uu = pdfh(it, 'a&&href');\n return _tt + '$' + _uu;\n });\n LISTS.push(lists1);\n ", - }, - 搜索: 'js:\n let html = fetch(input);\n let list = pdfa(html, "body&&.semi-space-medium-vertical");\n VODS = list.map(x => {\n let remarks = pdfh(x, "div&&img&&alt");\n // 过滤掉包含"迅雷云盘"的内容\n if(remarks.includes("迅雷云盘") || remarks.includes("115") || remarks.includes("阿里")) return null;\n return {\n vod_name: pdfh(x, "div&&a&&title"),\n vod_pic: \'https://is2-ssl.mzstatic.com/image/thumb/Purple123/v4/49/25/97/49259775-1a6b-ba62-3c28-b27bf6712ade/source/1024x1024bb.jpg\',\n vod_remarks: remarks,\n vod_content: remarks,\n vod_id: pdfh(x, "div&&a&&href")\n }\n }).filter(x => x !== null);\n ', - cate_exclude: '首页|留言|APP|下载|资讯|新闻|动态', - tab_exclude: '猜你|喜欢|下载|剧情|榜|评论', - 类型: '影视', - homeUrl: 'https://misoso.cc/', - 二级访问前: '', - encoding: 'utf-8', - search_encoding: '', - 图片来源: '', - 图片替换: '', - play_json: [], - pagecount: {}, - tab_remove: [], - tab_order: [], - tab_rename: {}, -} \ No newline at end of file diff --git a/潇洒/js/腾讯视频.js b/潇洒/js/腾讯视频.js deleted file mode 100644 index 6c70846..0000000 --- a/潇洒/js/腾讯视频.js +++ /dev/null @@ -1,935 +0,0 @@ -globalThis.vod1 = function(ids) { - let html1 = request('https://pbaccess.video.qq.com/trpc.videosearch.mobile_search.MultiTerminalSearch/MbSearch?vplatform=2', { - body: { - "version": "25042201", - "clientType": 1, - "filterValue": "", - "uuid": "B1E50847-D25F-4C4B-BBA0-36F0093487F6", - "retry": 0, - "query": ids, - "pagenum": 0, - "isPrefetch": true, - "pagesize": 30, - "queryFrom": 0, - "searchDatakey": "", - "transInfo": "", - "isneedQc": true, - "preQid": "", - "adClientInfo": "", - "extraInfo": { - "isNewMarkLabel": "1", - "multi_terminal_pc": "1", - "themeType": "1", - "sugRelatedIds": "{}", - "appVersion": "" - } - }, - headers: { - 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.139 Safari/537.36', - 'Content-Type': 'application/json', - 'origin': 'https://v.qq.com', - 'referer': 'https://v.qq.com/' - }, - 'method': 'POST' - }, true); - return html1; -} -var rule = { - title: '腾云驾雾[官]', - host: 'https://v.%71%71.com', - // homeUrl: '/x/bu/pagesheet/list?_all=1&append=1&channel=choice&listpage=1&offset=0&pagesize=21&iarea=-1&sort=18', - homeUrl: '/x/bu/pagesheet/list?_all=1&append=1&channel=cartoon&listpage=1&offset=0&pagesize=21&iarea=-1&sort=18', - detailUrl: 'https://node.video.%71%71.com/x/api/float_vinfo2?cid=fyid', - searchUrl: '/x/search/?q=**&stag=fypage', - searchUrl: 'https://pbaccess.video.%71%71.com/trpc.videosearch.smartboxServer.HttpRountRecall/Smartbox?query=**&appID=3172&appKey=lGhFIPeD3HsO9xEp&pageNum=(fypage-1)&pageSize=10', - searchUrl: '**', - searchable: 2, - filterable: 1, - multi: 1, - // url:'/channel/fyclass?listpage=fypage&channel=fyclass&sort=18&_all=1', - url: '/x/bu/pagesheet/list?_all=1&append=1&channel=fyclass&listpage=1&offset=((fypage-1)*21)&pagesize=21&iarea=-1', - // filter_url: 'sort={{fl.sort or 18}}&year={{fl.year}}&pay={{fl.pay}}', - // filter_url: 'sort={{fl.sort or 75}}&year={{fl.year}}&pay={{fl.pay}}', - filter_url: 'sort={{fl.sort or 75}}&iyear={{fl.iyear}}&year={{fl.year}}&itype={{fl.type}}&ifeature={{fl.feature}}&iarea={{fl.area}}&itrailer={{fl.itrailer}}&gender={{fl.sex}}', - // filter: 'H4sIAAAAAAAAA+2UzUrDQBCA32XOEZLUJrGvIj0saaDBNisxBkIJCG3Fi4oepIg3EQoieqiH+vM23Zq+hRuaZLZ4ce9z2/lmd2d2+NgR+H0e+gF0DkdwFGTQgRMeJ2BAxIaSwvrqVnxcyzhlg9PttqjED2c/45cSy8DyIDcavr57q/lBw8XTd/E6qbnT8M3zTFyc72RtC/Jumd+2c8wy7KZ4nxSL5Z9uxHS+Gc+r83sWVp1eVttl4Dluk1h93YubWZVwduplAYuxoFguVp+P/y5om/Z+/YxyqfAW8pbKbeS2yi3kO/ebyE2Fy1nXXBm7DDzknspd5K7KHeSOytvI2+XAugYkKWlD2mhrM+RpSB8OmaNvTsriMEgycofc0XbHZ3HCeUTukDv67vTDQY/MIXO0zelxn5M4JI6mOPkvgswSEpgPAAA=', - filter: { - "choice": [{ - "key": "sort", - "name": "排序", - "value": [{ - "n": "最热", - "v": "75" - }, { - "n": "最新", - "v": "83" - }, { - "n": "好评", - "v": "81" - }] - }, { - "key": "iyear", - "name": "年代", - "value": [{ - "n": "全部", - "v": "-1" - }, { - "n": "2025", - "v": "2025" - }, { - "n": "2024", - "v": "2024" - }, { - "n": "2023", - "v": "2023" - }, { - "n": "2022", - "v": "2022" - }, { - "n": "2021", - "v": "2021" - }, { - "n": "2020", - "v": "2020" - }, { - "n": "2019", - "v": "2019" - }, { - "n": "2018", - "v": "2018" - }, { - "n": "2017", - "v": "2017" - }, { - "n": "2016", - "v": "2016" - }, { - "n": "2015", - "v": "2015" - }] - }], - "tv": [{ - "key": "sort", - "name": "排序", - "value": [{ - "n": "最热", - "v": "75" - }, { - "n": "最新", - "v": "79" - }, { - "n": "好评", - "v": "16" - }] - }, { - "key": "feature", - "name": "类型", - "value": [{ - "n": "全部", - "v": "-1" - }, { - "n": "爱情", - "v": "1" - }, { - "n": "古装", - "v": "2" - }, { - "n": "悬疑", - "v": "3" - }, { - "n": "都市", - "v": "4" - }, { - "n": "家庭", - "v": "5" - }, { - "n": "喜剧", - "v": "6" - }, { - "n": "传奇", - "v": "7" - }, { - "n": "武侠", - "v": "8" - }, { - "n": "军旅", - "v": "9" - }, { - "n": "权谋", - "v": "10" - }, { - "n": "革命", - "v": "11" - }, { - "n": "现实", - "v": "13" - }, { - "n": "青春", - "v": "14" - }, { - "n": "猎奇", - "v": "15" - }, { - "n": "科幻", - "v": "16" - }, { - "n": "竞技", - "v": "17" - }, { - "n": "玄幻", - "v": "18" - }] - }, { - "key": "iyear", - "name": "年代", - "value": [{ - "n": "全部", - "v": "-1" - }, { - "n": "2025", - "v": "2025" - }, { - "n": "2024", - "v": "2024" - }, { - "n": "2023", - "v": "2023" - }, { - "n": "2022", - "v": "2022" - }, { - "n": "2021", - "v": "2021" - }, { - "n": "2020", - "v": "2020" - }, { - "n": "2019", - "v": "2019" - }, { - "n": "2018", - "v": "2018" - }, { - "n": "2017", - "v": "2017" - }, { - "n": "2016", - "v": "2016" - }, { - "n": "2015", - "v": "2015" - }] - }], - "movie": [{ - "key": "sort", - "name": "排序", - "value": [{ - "n": "最热", - "v": "75" - }, { - "n": "最新", - "v": "83" - }, { - "n": "好评", - "v": "81" - }] - }, { - "key": "type", - "name": "类型", - "value": [{ - "n": "全部", - "v": "-1" - }, { - "n": "犯罪", - "v": "4" - }, { - "n": "励志", - "v": "2" - }, { - "n": "喜剧", - "v": "100004" - }, { - "n": "热血", - "v": "100061" - }, { - "n": "悬疑", - "v": "100009" - }, { - "n": "爱情", - "v": "100005" - }, { - "n": "科幻", - "v": "100012" - }, { - "n": "恐怖", - "v": "100010" - }, { - "n": "动画", - "v": "100015" - }, { - "n": "战争", - "v": "100006" - }, { - "n": "家庭", - "v": "100017" - }, { - "n": "剧情", - "v": "100022" - }, { - "n": "奇幻", - "v": "100016" - }, { - "n": "武侠", - "v": "100011" - }, { - "n": "历史", - "v": "100021" - }, { - "n": "老片", - "v": "100013" - }, { - "n": "西部", - "v": "3" - }, { - "n": "记录片", - "v": "100020" - }] - }, { - "key": "year", - "name": "年代", - "value": [{ - "n": "全部", - "v": "-1" - }, { - "n": "2025", - "v": "2025" - }, { - "n": "2024", - "v": "2024" - }, { - "n": "2023", - "v": "2023" - }, { - "n": "2022", - "v": "2022" - }, { - "n": "2021", - "v": "2021" - }, { - "n": "2020", - "v": "2020" - }, { - "n": "2019", - "v": "2019" - }, { - "n": "2018", - "v": "2018" - }, { - "n": "2017", - "v": "2017" - }, { - "n": "2016", - "v": "2016" - }, { - "n": "2015", - "v": "2015" - }] - }], - "variety": [{ - "key": "sort", - "name": "排序", - "value": [{ - "n": "最热", - "v": "75" - }, { - "n": "最新", - "v": "23" - }] - }, { - "key": "iyear", - "name": "年代", - "value": [{ - "n": "全部", - "v": "-1" - }, { - "n": "2025", - "v": "2025" - }, { - "n": "2024", - "v": "2024" - }, { - "n": "2023", - "v": "2023" - }, { - "n": "2022", - "v": "2022" - }, { - "n": "2021", - "v": "2021" - }, { - "n": "2020", - "v": "2020" - }, { - "n": "2019", - "v": "2019" - }, { - "n": "2018", - "v": "2018" - }, { - "n": "2017", - "v": "2017" - }, { - "n": "2016", - "v": "2016" - }, { - "n": "2015", - "v": "2015" - }] - }], - "cartoon": [{ - "key": "sort", - "name": "排序", - "value": [{ - "n": "最热", - "v": "75" - }, { - "n": "最新", - "v": "83" - }, { - "n": "好评", - "v": "81" - }] - }, { - "key": "area", - "name": "地区", - "value": [{ - "n": "全部", - "v": "-1" - }, { - "n": "内地", - "v": "1" - }, { - "n": "日本", - "v": "2" - }, { - "n": "欧美", - "v": "3" - }, { - "n": "其他", - "v": "4" - }] - }, { - "key": "type", - "name": "类型", - "value": [{ - "n": "全部", - "v": "-1" - }, { - "n": "玄幻", - "v": "9" - }, { - "n": "科幻", - "v": "4" - }, { - "n": "武侠", - "v": "13" - }, { - "n": "冒险", - "v": "3" - }, { - "n": "战斗", - "v": "5" - }, { - "n": "搞笑", - "v": "1" - }, { - "n": "恋爱", - "v": "7" - }, { - "n": "魔幻", - "v": "6" - }, { - "n": "竞技", - "v": "20" - }, { - "n": "悬疑", - "v": "17" - }, { - "n": "日常", - "v": "15" - }, { - "n": "校园", - "v": "16" - }, { - "n": "真人", - "v": "18" - }, { - "n": "推理", - "v": "14" - }, { - "n": "历史", - "v": "19" - }, { - "n": "经典", - "v": "3" - }, { - "n": "其他", - "v": "12" - }] - }, { - "key": "iyear", - "name": "年代", - "value": [{ - "n": "全部", - "v": "-1" - }, { - "n": "2025", - "v": "2025" - }, { - "n": "2024", - "v": "2024" - }, { - "n": "2023", - "v": "2023" - }, { - "n": "2022", - "v": "2022" - }, { - "n": "2021", - "v": "2021" - }, { - "n": "2020", - "v": "2020" - }, { - "n": "2019", - "v": "2019" - }, { - "n": "2018", - "v": "2018" - }, { - "n": "2017", - "v": "2017" - }, { - "n": "2016", - "v": "2016" - }, { - "n": "2015", - "v": "2015" - }] - }], - "child": [{ - "key": "sort", - "name": "排序", - "value": [{ - "n": "最热", - "v": "75" - }, { - "n": "最新", - "v": "76" - }, { - "n": "好评", - "v": "20" - }] - }, { - "key": "sex", - "name": "性别", - "value": [{ - "n": "全部", - "v": "-1" - }, { - "n": "女孩", - "v": "1" - }, { - "n": "男孩", - "v": "2" - }] - }, { - "key": "area", - "name": "地区", - "value": [{ - "n": "全部", - "v": "-1" - }, { - "n": "内地", - "v": "3" - }, { - "n": "日本", - "v": "2" - }, { - "n": "其他", - "v": "1" - }] - }, { - "key": "iyear", - "name": "年龄段", - "value": [{ - "n": "全部", - "v": "-1" - }, { - "n": "0-3岁", - "v": "1" - }, { - "n": "4-6岁", - "v": "2" - }, { - "n": "7-9岁", - "v": "3" - }, { - "n": "10岁以上", - "v": "4" - }, { - "n": "全年龄段", - "v": "7" - }] - }], - "doco": [{ - "key": "sort", - "name": "排序", - "value": [{ - "n": "最热", - "v": "75" - }, { - "n": "最新", - "v": "74" - }] - }, { - "key": "itrailer", - "name": "出品方", - "value": [{ - "n": "全部", - "v": "-1" - }, { - "n": "BBC", - "v": "1" - }, { - "n": "国家地理", - "v": "4" - }, { - "n": "HBO", - "v": "3175" - }, { - "n": "NHK", - "v": "2" - }, { - "n": "历史频道", - "v": "7" - }, { - "n": "ITV", - "v": "3530" - }, { - "n": "探索频道", - "v": "3174" - }, { - "n": "ZDF", - "v": "3176" - }, { - "n": "腾讯自制", - "v": "15" - }, { - "n": "合作机构", - "v": "6" - }, { - "n": "其他", - "v": "5" - }] - }, { - "key": "type", - "name": "类型", - "value": [{ - "n": "全部", - "v": "-1" - }, { - "n": "自然", - "v": "4" - }, { - "n": "美食", - "v": "10" - }, { - "n": "社会", - "v": "3" - }, { - "n": "人文", - "v": "6" - }, { - "n": "历史", - "v": "1" - }, { - "n": "军事", - "v": "2" - }, { - "n": "科技", - "v": "8" - }, { - "n": "财经", - "v": "14" - }, { - "n": "探险", - "v": "15" - }, { - "n": "罪案", - "v": "7" - }, { - "n": "竞技", - "v": "12" - }, { - "n": "旅游", - "v": "11" - }] - }] - }, - headers: { - 'User-Agent': 'PC_UA' - }, - timeout: 5000, - // class_parse:'.site_channel a;a&&Text;a&&href;channel/(.*)', - cate_exclude: '会员|游戏|全部', - // class_name: '精选&电视剧&电影&综艺&动漫&少儿&纪录片', - // class_url: 'choice&tv&movie&variety&cartoon&child&doco', - class_name: '精选&电影&电视剧&综艺&动漫&少儿&纪录片', - class_url: 'choice&movie&tv&variety&cartoon&child&doco', - limit: 20, - // play_parse:true, - // 手动调用解析请求json的url,此lazy不方便 - play_parse: true, - lazy: $js.toString(() => { - try { - let api = "http://127.0.0.1:9978/proxy?do=seachdanmu&go=getuserjx&url=" + input.split("?")[0]; - console.log(api); - let response = fetch(api, { - method: 'get', - headers: { - 'User-Agent': 'okhttp/3.14.9', - 'Content-Type': 'application/x-www-form-urlencoded' - } - }); - - let bata = JSON.parse(response); - log(bata) - if (bata.url.includes("http")) { - input = { - header: { - 'User-Agent': "" - }, - parse: 0, - url: bata.url, - jx: 0, - danmaku: 'http://127.0.0.1:9978/proxy?do=danmu&site=js&url=http://dm.qxq6.com/zy/api.php?url=' + input.split("?")[0] - }; - } else { - - input = { - header: { - 'User-Agent': "" - }, - parse: 0, - url: input.split("?")[0], - jx: 1, - danmaku: 'http://127.0.0.1:9978/proxy?do=danmu&site=js&url=http://dm.qxq6.com/zy/api.php?url=' + input.split("?")[0] - }; - } - } catch { - input = { - header: { - 'User-Agent': "" - }, - parse: 0, - url: input.split("?")[0], - jx: 1, - danmaku: 'http://127.0.0.1:9978/proxy?do=danmu&site=js&url=http://dm.qxq6.com/zy/api.php?url=' + input.split("?")[0] - }; - } - }), - 推荐: '.list_item;img&&alt;img&&src;a&&Text;a&&data-float', - 一级: '.list_item;img&&alt;img&&src;a&&Text;a&&data-float', - 二级: $js.toString(() => { - VOD = {}; - let d = []; - let video_list = []; - let video_lists = []; - let list = []; - let QZOutputJson; - let html = fetch(input, fetch_params); - let sourceId = /get_playsource/.test(input) ? input.match(/id=(\d*?)&/)[1] : input.split("cid=")[1]; - let cid = sourceId; - let detailUrl = "https://v.%71%71.com/detail/m/" + cid + ".html"; - log("详情页:" + detailUrl); - pdfh = jsp.pdfh; - pd = jsp.pd; - try { - let json = JSON.parse(html); - VOD = { - vod_url: input, - vod_name: json.c.title, - type_name: json.typ.join(","), - vod_actor: json.nam.join(","), - vod_year: json.c.year, - vod_content: json.c.description, - vod_remarks: json.rec, - vod_pic: urljoin2(input, json.c.pic) - } - } catch (e) { - log("解析片名海报等基础信息发生错误:" + e.message) - } - if (/get_playsource/.test(input)) { - eval(html); - let indexList = QZOutputJson.PlaylistItem.indexList; - indexList.forEach(function(it) { - let dataUrl = "https://s.video.qq.com/get_playsource?id=" + sourceId + "&plat=2&type=4&data_type=3&range=" + it + "&video_type=10&plname=qq&otype=json"; - eval(fetch(dataUrl, fetch_params)); - let vdata = QZOutputJson.PlaylistItem.videoPlayList; - vdata.forEach(function(item) { - d.push({ - title: item.title, - pic_url: item.pic, - desc: item.episode_number + "\t\t\t播放量:" + item.thirdLine, - url: item.playUrl - }) - }); - video_lists = video_lists.concat(vdata) - }) - } else { - let json = JSON.parse(html); - video_lists = json.c.video_ids; - let url = "https://v.qq.com/x/cover/" + sourceId + ".html"; - if (video_lists.length === 1) { - let vid = video_lists[0]; - url = "https://v.qq.com/x/cover/" + cid + "/" + vid + ".html"; - d.push({ - title: "在线播放", - url: url - }) - } else if (video_lists.length > 1) { - for (let i = 0; i < video_lists.length; i += 30) { - video_list.push(video_lists.slice(i, i + 30)) - } - video_list.forEach(function(it, idex) { - let o_url = "https://union.video.qq.com/fcgi-bin/data?otype=json&tid=1804&appid=20001238&appkey=6c03bbe9658448a4&union_platform=1&idlist=" + it.join(","); - let o_html = fetch(o_url, fetch_params); - eval(o_html); - QZOutputJson.results.forEach(function(it1) { - it1 = it1.fields; - let url = "https://v.qq.com/x/cover/" + cid + "/" + it1.vid + ".html"; - d.push({ - title: it1.title, - pic_url: it1.pic160x90.replace("/160", ""), - desc: it1.video_checkup_time, - url: url, - type: it1.category_map && it1.category_map.length > 1 ? it1.category_map[1] : "" - }) - }) - }) - } - } - let yg = d.filter(function(it) { - return it.type && it.type !== "正片" - }); - let zp = d.filter(function(it) { - return !(it.type && it.type !== "正片") - }); - VOD.vod_play_from = yg.length < 1 ? "qq" : "qq$$$qq 预告及花絮"; - VOD.vod_play_url = yg.length < 1 ? d.map(function(it) { - return it.title + "$" + it.url - }).join("#") : [zp, yg].map(function(it) { - return it.map(function(its) { - return its.title + "$" + its.url - }).join("#") - }).join("$$$"); - }), - 搜索: $js.toString(() => { - let d = []; - pdfa = jsp.pdfa; - pdfh = jsp.pdfh; - pd = jsp.pd; - let html = request(input); - let baseList = pdfa(html, "body&&.result_item_v"); - log(baseList.length); - baseList.forEach(function(it) { - let longText = pdfh(it, ".result_title&&a&&Text"); - let shortText = pdfh(it, ".type&&Text"); - let fromTag = pdfh(it, ".result_source&&Text"); - let score = pdfh(it, ".figure_info&&Text"); - let content = pdfh(it, ".desc_text&&Text"); - // let url = pdfh(it, ".result_title&&a&&href"); - let url = pdfh(it, "div&&r-data"); - // log(longText); - // log(shortText); - // log('url:'+url); - let img = pd(it, ".figure_pic&&src"); - url = "https://node.video.qq.com/x/api/float_vinfo2?cid=" + url.match(/.*\/(.*?)\.html/)[1]; - log(shortText + "|" + url); - if (fromTag.match(/腾讯/)) { - d.push({ - title: longText.split(shortText)[0], - img: img, - url: url, - content: content, - desc: shortText + " " + score - }) - } - }); - setResult(d); - }), - 搜索: $js.toString(() => { - let d = []; - let html = request(input); - let json = JSON.parse(html); - if (json.data.smartboxItemList.length > 0) { - let cid = json.data.smartboxItemList[0].basicDoc.id; - let url = 'https://node.video.qq.com/x/api/float_vinfo2?cid=' + cid; - let html1 = request(url); - let data = JSON.parse(html1); - - d.push({ - title: data.c.title, - img: data.c.pic, - url: url, - content: data.c.description, - desc: data.rec - }); - } - setResult(d); - }), - 搜索: $js.toString(() => { - let d = []; - let mame = (input.split("/")[3]); - let html = vod1(input.split("/")[3]); - let json = JSON.parse(html); - - let list = json.data.normalList.itemList; - console.log(json); - log(list[0].videoInfo.title); - list.forEach(function(it) { - try { - if (it.doc.id.length > 11) { - d.push({ - title: it.videoInfo.title, - img: it.videoInfo.imgUrl, - url: it.doc.id, - // content: "", - //desc: "data.rec" - }); - } - } catch { - - } - - }); - let list2 = json.data.areaBoxList[0].itemList; - list2.forEach(function(it) { - try { - if (it.doc.id.length > 11 && it.videoInfo.title.match(mame)) { - d.push({ - title: it.videoInfo.title, - img: it.videoInfo.imgUrl, - url: it.doc.id, - // content: "", - //desc: "data.rec" - }); - } - } catch { - - } - - }); - setResult(d); - }) -} \ No newline at end of file diff --git a/潇洒/js/芒果视频.js b/潇洒/js/芒果视频.js deleted file mode 100644 index d8e7d09..0000000 --- a/潇洒/js/芒果视频.js +++ /dev/null @@ -1,843 +0,0 @@ -var rule = { - title: '百忙无果[官]', - host: 'https://pianku.api.%6d%67%74%76.com', - homeUrl: '', - // searchUrl: 'https://mobileso.bz.%6d%67%74%76.com/pc/search/v1?q=**&pn=fypage&pc=10', - // 新版接口搜索变成v2并且加了验证,蛋疼 - // searchUrl: 'https://mobileso.bz.mgtv.com/pc/search/v2?allowedRC=1&src=mgtv&did=cf03b959-6945-4cb6-bcb3-88762459354d×tamp=2024-06-21T15%3A52%3A55Z&signVersion=1&signNonce=8dae67a1fafc4bda984ec8deb47666ad&q=**&pn=fypage&pc=10&corr=1&_support=10000000&signature=4e27fddcd2a1a66d6c1764ed6b74bab7', - // 用手机的吧,搞不定这个 - searchUrl: 'https://mobileso.bz.%6d%67%74%76.com/msite/search/v2?q=**&pn=fypage&pc=10', - detailUrl: 'https://pcweb.api.mgtv.com/episode/list?page=1&size=50&video_id=fyid', - searchable: 2, - quickSearch: 0, - filterable: 1, - multi: 1, - // 分类链接fypage参数支持1个()表达式 - // https://www.mgtv.com/lib/3?lastp=list_index&kind=a1&year=all&chargeInfo=a1&sort=c2 - url: '/rider/list/pcweb/v3?platform=pcweb&channelId=fyclass&pn=fypage&pc=80&hudong=1&_support=10000000&kind=a1&area=a1', - filter_url: 'year={{fl.year or "all"}}&sort={{fl.sort or "all"}}&chargeInfo={{fl.chargeInfo or "all"}}', - headers: { - 'User-Agent': 'PC_UA' - }, - timeout: 5000, - class_name: '电视剧&电影&综艺&动漫&纪录片&教育&少儿', - class_url: '2&3&1&50&51&115&10', - filter: { - "1": [{ - "key": "chargeInfo", - "name": "付费类型", - "value": [{ - "n": "全部", - "v": "all" - }, { - "n": "免费", - "v": "b1" - }, { - "n": "vip", - "v": "b2" - }, { - "n": "VIP用券", - "v": "b3" - }, { - "n": "付费点播", - "v": "b4" - }] - }, { - "key": "sort", - "name": "排序", - "value": [{ - "n": "最新", - "v": "c1" - }, { - "n": "最热", - "v": "c2" - }, { - "n": "知乎高分", - "v": "c4" - }] - }, { - "key": "year", - "name": "年代", - "value": [{ - "n": "全部", - "v": "all" - }, { - "n": "2025", - "v": "2025" - }, { - "n": "2024", - "v": "2024" - }, { - "n": "2023", - "v": "2023" - }, { - "n": "2022", - "v": "2022" - }, { - "n": "2021", - "v": "2021" - }, { - "n": "2020", - "v": "2020" - }, { - "n": "2019", - "v": "2019" - }, { - "n": "2018", - "v": "2018" - }, { - "n": "2017", - "v": "2017" - }, { - "n": "2016", - "v": "2016" - }, { - "n": "2015", - "v": "2015" - }, { - "n": "2014", - "v": "2014" - }, { - "n": "2013", - "v": "2013" - }, { - "n": "2012", - "v": "2012" - }, { - "n": "2011", - "v": "2011" - }, { - "n": "2010", - "v": "2010" - }, { - "n": "2009", - "v": "2009" - }, { - "n": "2008", - "v": "2008" - }, { - "n": "2007", - "v": "2007" - }, { - "n": "2006", - "v": "2006" - }, { - "n": "2005", - "v": "2005" - }, { - "n": "2004", - "v": "2004" - }] - }], - "2": [{ - "key": "chargeInfo", - "name": "付费类型", - "value": [{ - "n": "全部", - "v": "all" - }, { - "n": "免费", - "v": "b1" - }, { - "n": "vip", - "v": "b2" - }, { - "n": "VIP用券", - "v": "b3" - }, { - "n": "付费点播", - "v": "b4" - }] - }, { - "key": "sort", - "name": "排序", - "value": [{ - "n": "最新", - "v": "c1" - }, { - "n": "最热", - "v": "c2" - }, { - "n": "知乎高分", - "v": "c4" - }] - }, { - "key": "year", - "name": "年代", - "value": [{ - "n": "全部", - "v": "all" - }, { - "n": "2025", - "v": "2025" - }, { - "n": "2024", - "v": "2024" - }, { - "n": "2023", - "v": "2023" - }, { - "n": "2022", - "v": "2022" - }, { - "n": "2021", - "v": "2021" - }, { - "n": "2020", - "v": "2020" - }, { - "n": "2019", - "v": "2019" - }, { - "n": "2018", - "v": "2018" - }, { - "n": "2017", - "v": "2017" - }, { - "n": "2016", - "v": "2016" - }, { - "n": "2015", - "v": "2015" - }, { - "n": "2014", - "v": "2014" - }, { - "n": "2013", - "v": "2013" - }, { - "n": "2012", - "v": "2012" - }, { - "n": "2011", - "v": "2011" - }, { - "n": "2010", - "v": "2010" - }, { - "n": "2009", - "v": "2009" - }, { - "n": "2008", - "v": "2008" - }, { - "n": "2007", - "v": "2007" - }, { - "n": "2006", - "v": "2006" - }, { - "n": "2005", - "v": "2005" - }, { - "n": "2004", - "v": "2004" - }] - }], - "3": [{ - "key": "chargeInfo", - "name": "付费类型", - "value": [{ - "n": "全部", - "v": "all" - }, { - "n": "免费", - "v": "b1" - }, { - "n": "vip", - "v": "b2" - }, { - "n": "VIP用券", - "v": "b3" - }, { - "n": "付费点播", - "v": "b4" - }] - }, { - "key": "sort", - "name": "排序", - "value": [{ - "n": "最新", - "v": "c1" - }, { - "n": "最热", - "v": "c2" - }, { - "n": "知乎高分", - "v": "c4" - }] - }, { - "key": "year", - "name": "年代", - "value": [{ - "n": "全部", - "v": "all" - }, { - "n": "2025", - "v": "2025" - }, { - "n": "2024", - "v": "2024" - }, { - "n": "2023", - "v": "2023" - }, { - "n": "2022", - "v": "2022" - }, { - "n": "2021", - "v": "2021" - }, { - "n": "2020", - "v": "2020" - }, { - "n": "2019", - "v": "2019" - }, { - "n": "2018", - "v": "2018" - }, { - "n": "2017", - "v": "2017" - }, { - "n": "2016", - "v": "2016" - }, { - "n": "2015", - "v": "2015" - }, { - "n": "2014", - "v": "2014" - }, { - "n": "2013", - "v": "2013" - }, { - "n": "2012", - "v": "2012" - }, { - "n": "2011", - "v": "2011" - }, { - "n": "2010", - "v": "2010" - }, { - "n": "2009", - "v": "2009" - }, { - "n": "2008", - "v": "2008" - }, { - "n": "2007", - "v": "2007" - }, { - "n": "2006", - "v": "2006" - }, { - "n": "2005", - "v": "2005" - }, { - "n": "2004", - "v": "2004" - }] - }], - "50": [{ - "key": "chargeInfo", - "name": "付费类型", - "value": [{ - "n": "全部", - "v": "all" - }, { - "n": "免费", - "v": "b1" - }, { - "n": "vip", - "v": "b2" - }, { - "n": "VIP用券", - "v": "b3" - }, { - "n": "付费点播", - "v": "b4" - }] - }, { - "key": "sort", - "name": "排序", - "value": [{ - "n": "最新", - "v": "c1" - }, { - "n": "最热", - "v": "c2" - }, { - "n": "知乎高分", - "v": "c4" - }] - }, { - "key": "year", - "name": "年代", - "value": [{ - "n": "全部", - "v": "all" - }, { - "n": "2025", - "v": "2025" - }, { - "n": "2024", - "v": "2024" - }, { - "n": "2023", - "v": "2023" - }, { - "n": "2022", - "v": "2022" - }, { - "n": "2021", - "v": "2021" - }, { - "n": "2020", - "v": "2020" - }, { - "n": "2019", - "v": "2019" - }, { - "n": "2018", - "v": "2018" - }, { - "n": "2017", - "v": "2017" - }, { - "n": "2016", - "v": "2016" - }, { - "n": "2015", - "v": "2015" - }, { - "n": "2014", - "v": "2014" - }, { - "n": "2013", - "v": "2013" - }, { - "n": "2012", - "v": "2012" - }, { - "n": "2011", - "v": "2011" - }, { - "n": "2010", - "v": "2010" - }, { - "n": "2009", - "v": "2009" - }, { - "n": "2008", - "v": "2008" - }, { - "n": "2007", - "v": "2007" - }, { - "n": "2006", - "v": "2006" - }, { - "n": "2005", - "v": "2005" - }, { - "n": "2004", - "v": "2004" - }] - }], - "51": [{ - "key": "chargeInfo", - "name": "付费类型", - "value": [{ - "n": "全部", - "v": "all" - }, { - "n": "免费", - "v": "b1" - }, { - "n": "vip", - "v": "b2" - }, { - "n": "VIP用券", - "v": "b3" - }, { - "n": "付费点播", - "v": "b4" - }] - }, { - "key": "sort", - "name": "排序", - "value": [{ - "n": "最新", - "v": "c1" - }, { - "n": "最热", - "v": "c2" - }, { - "n": "知乎高分", - "v": "c4" - }] - }, { - "key": "year", - "name": "年代", - "value": [{ - "n": "全部", - "v": "all" - }, { - "n": "2025", - "v": "2025" - }, { - "n": "2024", - "v": "2024" - }, { - "n": "2023", - "v": "2023" - }, { - "n": "2022", - "v": "2022" - }, { - "n": "2021", - "v": "2021" - }, { - "n": "2020", - "v": "2020" - }, { - "n": "2019", - "v": "2019" - }, { - "n": "2018", - "v": "2018" - }, { - "n": "2017", - "v": "2017" - }, { - "n": "2016", - "v": "2016" - }, { - "n": "2015", - "v": "2015" - }, { - "n": "2014", - "v": "2014" - }, { - "n": "2013", - "v": "2013" - }, { - "n": "2012", - "v": "2012" - }, { - "n": "2011", - "v": "2011" - }, { - "n": "2010", - "v": "2010" - }, { - "n": "2009", - "v": "2009" - }, { - "n": "2008", - "v": "2008" - }, { - "n": "2007", - "v": "2007" - }, { - "n": "2006", - "v": "2006" - }, { - "n": "2005", - "v": "2005" - }, { - "n": "2004", - "v": "2004" - }] - }], - "115": [{ - "key": "chargeInfo", - "name": "付费类型", - "value": [{ - "n": "全部", - "v": "all" - }, { - "n": "免费", - "v": "b1" - }, { - "n": "vip", - "v": "b2" - }, { - "n": "VIP用券", - "v": "b3" - }, { - "n": "付费点播", - "v": "b4" - }] - }, { - "key": "sort", - "name": "排序", - "value": [{ - "n": "最新", - "v": "c1" - }, { - "n": "最热", - "v": "c2" - }, { - "n": "知乎高分", - "v": "c4" - }] - }, { - "key": "year", - "name": "年代", - "value": [{ - "n": "全部", - "v": "all" - }, { - "n": "2025", - "v": "2025" - }, { - "n": "2024", - "v": "2024" - }, { - "n": "2023", - "v": "2023" - }, { - "n": "2022", - "v": "2022" - }, { - "n": "2021", - "v": "2021" - }, { - "n": "2020", - "v": "2020" - }, { - "n": "2019", - "v": "2019" - }, { - "n": "2018", - "v": "2018" - }, { - "n": "2017", - "v": "2017" - }, { - "n": "2016", - "v": "2016" - }, { - "n": "2015", - "v": "2015" - }, { - "n": "2014", - "v": "2014" - }, { - "n": "2013", - "v": "2013" - }, { - "n": "2012", - "v": "2012" - }, { - "n": "2011", - "v": "2011" - }, { - "n": "2010", - "v": "2010" - }, { - "n": "2009", - "v": "2009" - }, { - "n": "2008", - "v": "2008" - }, { - "n": "2007", - "v": "2007" - }, { - "n": "2006", - "v": "2006" - }, { - "n": "2005", - "v": "2005" - }, { - "n": "2004", - "v": "2004" - }] - }] - }, - limit: 20, - play_parse: true, - lazy: $js.toString(() => { - try { - let api = "" + input.split("?")[0]; - console.log(api); - let response = fetch(api, { - method: 'get', - headers: { - 'User-Agent': 'okhttp/3.14.9', - 'Content-Type': 'application/x-www-form-urlencoded' - } - }); - let bata = JSON.parse(response); - if (bata.url.includes("mgtv")) { - input = { - parse: 0, - url: bata.url, - jx: 0, - danmaku: "http://127.0.0.1:9978/proxy?do=danmu&site=js&url=http://dm.qxq6.com/zy/api.php?url=" + input.split("?")[0] - }; - } else { - input = { - parse: 0, - url: input.split("?")[0], - jx: 1, - danmaku: "http://127.0.0.1:9978/proxy?do=danmu&site=js&url=http://dm.qxq6.com/zy/api.php?url=" + input.split("?")[0] - }; - } - } catch { - input = { - parse: 0, - url: input.split("?")[0], - jx: 1, - danmaku: "http://127.0.0.1:9978/proxy?do=danmu&site=js&url=http://dm.qxq6.com/zy/api.php?url=" + input.split("?")[0] - }; - } - }), - // 手动调用解析请求json的url,此lazy不方便 - // lazy:'js:print(input);fetch_params.headers["user-agent"]=MOBILE_UA;let html=request(input);let rurl=html.match(/window\\.open\\(\'(.*?)\',/)[1];rurl=urlDeal(rurl);input={parse:1,url:rurl};', - // 推荐:'.list_item;img&&alt;img&&src;a&&Text;a&&data-float', - 一级: 'json:data.hitDocs;title;img;updateInfo||rightCorner.text;playPartId', - // 一级:'json:data.hitDocs;title;img;updateInfo;playPartId', - 二级: $js.toString(() => { - fetch_params.headers.Referer = "https://www.mgtv.com"; - fetch_params.headers["User-Agent"] = MOBILE_UA; - pdfh = jsp.pdfh; - pdfa = jsp.pdfa; - pd = jsp.pd; - VOD = {}; - let d = []; - let html = request(input); - let json = JSON.parse(html); - let host = "https://www.mgtv.com"; - let ourl = json.data.list.length > 0 ? json.data.list[0].url : json.data.series[0].url; - if (!/^http/.test(ourl)) { - ourl = host + ourl - } - fetch_params.headers["User-Agent"] = MOBILE_UA; - html = request(ourl); - if (html.includes("window.location =")) { - print("开始获取ourl"); - ourl = pdfh(html, "meta[http-equiv=refresh]&&content").split("url=")[1]; - print("获取到ourl:" + ourl); - html = request(ourl) - } - try { - let details = pdfh(html, ".m-details&&Html").replace(/h1>/, "h6>").replace(/div/g, "br"); - print(details); - let actor = "", - director = "", - time = ""; - if (/播出时间/.test(details)) { - actor = pdfh(html, "p:eq(5)&&Text").substr(0, 25); - director = pdfh(html, "p:eq(4)&&Text"); - time = pdfh(html, "p:eq(3)&&Text") - } else { - actor = pdfh(html, "p:eq(4)&&Text").substr(0, 25); - director = pdfh(html, "p:eq(3)&&Text"); - time = "已完结" - } - let _img = pd(html, ".video-img&&img&&src"); - let JJ = pdfh(html, ".desc&&Text").split("简介:")[1]; - let _desc = time; - VOD.vod_name = pdfh(html, ".vt-txt&&Text"); - VOD.type_name = pdfh(html, "p:eq(0)&&Text").substr(0, 6); - VOD.vod_area = pdfh(html, "p:eq(1)&&Text"); - VOD.vod_actor = actor; - VOD.vod_director = director; - VOD.vod_remarks = _desc; - VOD.vod_pic = _img; - VOD.vod_content = JJ; - if (!VOD.vod_name) { - VOD.vod_name = VOD.type_name; - } - } catch (e) { - log("获取影片信息发生错误:" + e.message) - } - - function getRjpg(imgUrl, xs) { - xs = xs || 3; - let picSize = /jpg_/.test(imgUrl) ? imgUrl.split("jpg_")[1].split(".")[0] : false; - let rjpg = false; - if (picSize) { - let a = parseInt(picSize.split("x")[0]) * xs; - let b = parseInt(picSize.split("x")[1]) * xs; - rjpg = a + "x" + b + ".jpg" - } - let img = /jpg_/.test(imgUrl) && rjpg ? imgUrl.replace(imgUrl.split("jpg_")[1], rjpg) : imgUrl; - return img - } - - if (json.data.total === 1 && json.data.list.length === 1) { - let data = json.data.list[0]; - let url = "https://www.mgtv.com" + data.url; - d.push({ - title: data.t4, - desc: data.t2, - pic_url: getRjpg(data.img), - url: url - }) - } else if (json.data.list.length > 1) { - for (let i = 1; i <= json.data.total_page; i++) { - if (i > 1) { - json = JSON.parse(fetch(input.replace("page=1", "page=" + i), {})) - } - json.data.list.forEach(function(data) { - let url = "https://www.mgtv.com" + data.url; - if (data.isIntact == "1") { - d.push({ - title: data.t4, - desc: data.t2, - pic_url: getRjpg(data.img), - url: url - }) - } - }) - } - } else { - print(input + "暂无片源") - } - VOD.vod_play_from = "mgtv"; - VOD.vod_play_url = d.map(function(it) { - return it.title + "$" + it.url - }).join("#"); - setResult(d); - }), - - 搜索: $js.toString(() => { - fetch_params.headers.Referer = "https://www.mgtv.com"; - fetch_params.headers["User-Agent"] = MOBILE_UA; - let d = []; - let html = request(input); - let json = JSON.parse(html); - json.data.contents.forEach(function(data) { - if (data.type && data.type == 'media') { - let item = data.data[0]; - let desc = item.desc.join(','); - let fyclass = ''; - if (item.source === "imgo") { - let img = item.img ? item.img : ''; - try { - fyclass = item.rpt.match(/idx=(.*?)&/)[1] + '$'; - } catch (e) { - log(e.message); - fyclass = ''; - } - log(fyclass); - d.push({ - title: item.title.replace(/|<\/B>/g, ''), - img: img, - content: '', - desc: desc, - url: fyclass + item.url.match(/.*\/(.*?)\.html/)[1] - }) - } - } - }); - setResult(d); - }), -} \ No newline at end of file diff --git a/潇洒/js/花子动漫.js b/潇洒/js/花子动漫.js deleted file mode 100644 index f669f44..0000000 --- a/潇洒/js/花子动漫.js +++ /dev/null @@ -1,970 +0,0 @@ -var rule = { - title: '花子动漫[漫]', - host: 'https://www.huazidm.com', - class_name: 'TV动漫&剧场&特摄', - class_url: '1&2&3', - searchUrl: '/index.php/ajax/suggest?mid=1&wd=**&limit=50', - searchUrl: '/vodsearch/**----------fypage---.html', - searchable: 2, - quickSearch: 0, - headers: { - 'User-Agent': 'MOBILE_UA', - }, - url: '/index.php/api/vod#type=fyclassfyfilter&page=fypage', - filterable: 0, - filter_url: '&class={{fl.class}}&year={{fl.year}}&letter={{fl.letter}}&by={{fl.by}}', - filter: { - "1": [{ - "key": "class", - "name": "类型", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "异世界", - "v": "异世界" - }, { - "n": "百合", - "v": "百合" - }, { - "n": "后宫", - "v": "后宫" - }, { - "n": "热血", - "v": "热血" - }, { - "n": "纯爱", - "v": "纯爱" - }, { - "n": "穿越", - "v": "穿越" - }, { - "n": "奇幻", - "v": "奇幻" - }, { - "n": "战斗", - "v": "战斗" - }, { - "n": "后宫", - "v": "后宫" - }, { - "n": "搞笑", - "v": "搞笑" - }, { - "n": "日常", - "v": "日常" - }, { - "n": "科幻", - "v": "科幻" - }, { - "n": "治愈", - "v": "治愈" - }, { - "n": "校园", - "v": "校园" - }, { - "n": "恋爱", - "v": "恋爱" - }, { - "n": "冒险", - "v": "冒险" - }, { - "n": "推理", - "v": "推理" - }, { - "n": "机战", - "v": "机战" - }, { - "n": "音乐", - "v": "音乐" - }, { - "n": "萝莉", - "v": "萝莉" - }, { - "n": "恐怖", - "v": "恐怖" - }, { - "n": "惊悚", - "v": "惊悚" - }, { - "n": "泡面番", - "v": "泡面番" - }, { - "n": "游戏改", - "v": "游戏改" - }, { - "n": "小说改", - "v": "小说改" - }, { - "n": "漫画改", - "v": "漫画改" - }, { - "n": "腐", - "v": "腐" - }] - }, { - "key": "year", - "name": "年份", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "2025", - "v": "2025" - }, { - "n": "2024", - "v": "2024" - }, { - "n": "2023", - "v": "2023" - }, { - "n": "2022", - "v": "2022" - }, { - "n": "2021", - "v": "2021" - }, { - "n": "2020", - "v": "2020" - }, { - "n": "2019", - "v": "2019" - }, { - "n": "2018", - "v": "2018" - }, { - "n": "2017", - "v": "2017" - }, { - "n": "2016", - "v": "2016" - }, { - "n": "2015", - "v": "2015" - }, { - "n": "2014", - "v": "2014" - }, { - "n": "2013", - "v": "2013" - }, { - "n": "2012", - "v": "2012" - }, { - "n": "2011", - "v": "2011" - }, { - "n": "2010", - "v": "2010" - }, { - "n": "2009", - "v": "2009" - }, { - "n": "2008", - "v": "2008" - }, { - "n": "2007", - "v": "2007" - }, { - "n": "2006", - "v": "2006" - }, { - "n": "2005", - "v": "2005" - }, { - "n": "2004", - "v": "2004" - }, { - "n": "2003", - "v": "2003" - }, { - "n": "2002", - "v": "2002" - }, { - "n": "2001", - "v": "2001" - }, { - "n": "2000", - "v": "2000" - }, { - "n": "1999", - "v": "1999" - }, { - "n": "1998", - "v": "1998" - }, { - "n": "1997", - "v": "1997" - }, { - "n": "1996", - "v": "1996" - }, { - "n": "1995", - "v": "1995" - }, { - "n": "1994", - "v": "1994" - }, { - "n": "1993", - "v": "1993" - }, { - "n": "1992", - "v": "1992" - }, { - "n": "1991", - "v": "1991" - }, { - "n": "1990", - "v": "1990" - }, { - "n": "1989", - "v": "1989" - }, { - "n": "1988", - "v": "1988" - }, { - "n": "1987", - "v": "1987" - }, { - "n": "1986", - "v": "1986" - }, { - "n": "1985", - "v": "1985" - }, { - "n": "1984", - "v": "1984" - }, { - "n": "1983", - "v": "1983" - }, { - "n": "1982", - "v": "1982" - }, { - "n": "1981", - "v": "1981" - }, { - "n": "1980", - "v": "1980" - }] - }, { - "key": "letter", - "name": "字母", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "A", - "v": "A" - }, { - "n": "B", - "v": "B" - }, { - "n": "C", - "v": "C" - }, { - "n": "D", - "v": "D" - }, { - "n": "E", - "v": "E" - }, { - "n": "F", - "v": "F" - }, { - "n": "G", - "v": "G" - }, { - "n": "H", - "v": "H" - }, { - "n": "I", - "v": "I" - }, { - "n": "J", - "v": "J" - }, { - "n": "K", - "v": "K" - }, { - "n": "L", - "v": "L" - }, { - "n": "M", - "v": "M" - }, { - "n": "N", - "v": "N" - }, { - "n": "O", - "v": "O" - }, { - "n": "P", - "v": "P" - }, { - "n": "Q", - "v": "Q" - }, { - "n": "R", - "v": "R" - }, { - "n": "S", - "v": "S" - }, { - "n": "T", - "v": "T" - }, { - "n": "U", - "v": "U" - }, { - "n": "V", - "v": "V" - }, { - "n": "W", - "v": "W" - }, { - "n": "X", - "v": "X" - }, { - "n": "Y", - "v": "Y" - }, { - "n": "Z", - "v": "Z" - }, { - "n": "0-9", - "v": "0-9" - }] - }, { - "key": "by", - "name": "时间", - "value": [{ - "n": "按最新", - "v": "time" - }, { - "n": "按最热", - "v": "hits" - }, { - "n": "按评分", - "v": "score" - }] - }], - "2": [{ - "key": "class", - "name": "类型", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "异世界", - "v": "异世界" - }, { - "n": "百合", - "v": "百合" - }, { - "n": "热血", - "v": "热血" - }, { - "n": "穿越", - "v": "穿越" - }, { - "n": "奇幻", - "v": "奇幻" - }, { - "n": "战斗", - "v": "战斗" - }, { - "n": "搞笑", - "v": "搞笑" - }, { - "n": "日常", - "v": "日常" - }, { - "n": "科幻", - "v": "科幻" - }, { - "n": "治愈", - "v": "治愈" - }, { - "n": "校园", - "v": "校园" - }, { - "n": "恋爱", - "v": "恋爱" - }, { - "n": "冒险", - "v": "冒险" - }, { - "n": "机战", - "v": "机战" - }, { - "n": "音乐", - "v": "音乐" - }] - }, { - "key": "year", - "name": "年份", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "2025", - "v": "2025" - }, { - "n": "2024", - "v": "2024" - }, { - "n": "2023", - "v": "2023" - }, { - "n": "2022", - "v": "2022" - }, { - "n": "2021", - "v": "2021" - }, { - "n": "2020", - "v": "2020" - }, { - "n": "2019", - "v": "2019" - }, { - "n": "2018", - "v": "2018" - }, { - "n": "2017", - "v": "2017" - }, { - "n": "2016", - "v": "2016" - }, { - "n": "2015", - "v": "2015" - }, { - "n": "2014", - "v": "2014" - }, { - "n": "2013", - "v": "2013" - }, { - "n": "2012", - "v": "2012" - }, { - "n": "2011", - "v": "2011" - }, { - "n": "2010", - "v": "2010" - }, { - "n": "2009", - "v": "2009" - }, { - "n": "2008", - "v": "2008" - }, { - "n": "2007", - "v": "2007" - }, { - "n": "2006", - "v": "2006" - }, { - "n": "2005", - "v": "2005" - }, { - "n": "2004", - "v": "2004" - }, { - "n": "2003", - "v": "2003" - }, { - "n": "2002", - "v": "2002" - }, { - "n": "2001", - "v": "2001" - }, { - "n": "2000", - "v": "2000" - }, { - "n": "1999", - "v": "1999" - }, { - "n": "1998", - "v": "1998" - }, { - "n": "1997", - "v": "1997" - }, { - "n": "1996", - "v": "1996" - }, { - "n": "1995", - "v": "1995" - }, { - "n": "1994", - "v": "1994" - }, { - "n": "1993", - "v": "1993" - }, { - "n": "1992", - "v": "1992" - }, { - "n": "1991", - "v": "1991" - }, { - "n": "1990", - "v": "1990" - }, { - "n": "1989", - "v": "1989" - }, { - "n": "1988", - "v": "1988" - }, { - "n": "1987", - "v": "1987" - }, { - "n": "1986", - "v": "1986" - }, { - "n": "1985", - "v": "1985" - }, { - "n": "1984", - "v": "1984" - }, { - "n": "1983", - "v": "1983" - }, { - "n": "1982", - "v": "1982" - }, { - "n": "1981", - "v": "1981" - }, { - "n": "1980", - "v": "1980" - }] - }, { - "key": "letter", - "name": "字母", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "A", - "v": "A" - }, { - "n": "B", - "v": "B" - }, { - "n": "C", - "v": "C" - }, { - "n": "D", - "v": "D" - }, { - "n": "E", - "v": "E" - }, { - "n": "F", - "v": "F" - }, { - "n": "G", - "v": "G" - }, { - "n": "H", - "v": "H" - }, { - "n": "I", - "v": "I" - }, { - "n": "J", - "v": "J" - }, { - "n": "K", - "v": "K" - }, { - "n": "L", - "v": "L" - }, { - "n": "M", - "v": "M" - }, { - "n": "N", - "v": "N" - }, { - "n": "O", - "v": "O" - }, { - "n": "P", - "v": "P" - }, { - "n": "Q", - "v": "Q" - }, { - "n": "R", - "v": "R" - }, { - "n": "S", - "v": "S" - }, { - "n": "T", - "v": "T" - }, { - "n": "U", - "v": "U" - }, { - "n": "V", - "v": "V" - }, { - "n": "W", - "v": "W" - }, { - "n": "X", - "v": "X" - }, { - "n": "Y", - "v": "Y" - }, { - "n": "Z", - "v": "Z" - }, { - "n": "0-9", - "v": "0-9" - }] - }, { - "key": "by", - "name": "时间", - "value": [{ - "n": "按最新", - "v": "time" - }, { - "n": "按最热", - "v": "hits" - }, { - "n": "按评分", - "v": "score" - }] - }], - "3": [{ - "key": "class", - "name": "类型", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "动作", - "v": "动作" - }, { - "n": "奇幻", - "v": "奇幻" - }, { - "n": "科幻", - "v": "科幻" - }] - }, { - "key": "year", - "name": "年份", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "2025", - "v": "2025" - }, { - "n": "2024", - "v": "2024" - }, { - "n": "2023", - "v": "2023" - }, { - "n": "2022", - "v": "2022" - }, { - "n": "2021", - "v": "2021" - }, { - "n": "2020", - "v": "2020" - }, { - "n": "2019", - "v": "2019" - }, { - "n": "2018", - "v": "2018" - }, { - "n": "2017", - "v": "2017" - }, { - "n": "2016", - "v": "2016" - }, { - "n": "2015", - "v": "2015" - }, { - "n": "2014", - "v": "2014" - }, { - "n": "2013", - "v": "2013" - }, { - "n": "2012", - "v": "2012" - }, { - "n": "2011", - "v": "2011" - }, { - "n": "2010", - "v": "2010" - }, { - "n": "2009", - "v": "2009" - }, { - "n": "2008", - "v": "2008" - }, { - "n": "2007", - "v": "2007" - }, { - "n": "2006", - "v": "2006" - }, { - "n": "2005", - "v": "2005" - }, { - "n": "2004", - "v": "2004" - }, { - "n": "2003", - "v": "2003" - }, { - "n": "2002", - "v": "2002" - }, { - "n": "2001", - "v": "2001" - }, { - "n": "2000", - "v": "2000" - }, { - "n": "1999", - "v": "1999" - }, { - "n": "1998", - "v": "1998" - }, { - "n": "1997", - "v": "1997" - }, { - "n": "1996", - "v": "1996" - }, { - "n": "1995", - "v": "1995" - }, { - "n": "1994", - "v": "1994" - }, { - "n": "1993", - "v": "1993" - }, { - "n": "1992", - "v": "1992" - }, { - "n": "1991", - "v": "1991" - }, { - "n": "1990", - "v": "1990" - }, { - "n": "1989", - "v": "1989" - }, { - "n": "1988", - "v": "1988" - }, { - "n": "1987", - "v": "1987" - }, { - "n": "1986", - "v": "1986" - }, { - "n": "1985", - "v": "1985" - }, { - "n": "1984", - "v": "1984" - }, { - "n": "1983", - "v": "1983" - }, { - "n": "1982", - "v": "1982" - }, { - "n": "1981", - "v": "1981" - }, { - "n": "1980", - "v": "1980" - }] - }, { - "key": "letter", - "name": "字母", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "A", - "v": "A" - }, { - "n": "B", - "v": "B" - }, { - "n": "C", - "v": "C" - }, { - "n": "D", - "v": "D" - }, { - "n": "E", - "v": "E" - }, { - "n": "F", - "v": "F" - }, { - "n": "G", - "v": "G" - }, { - "n": "H", - "v": "H" - }, { - "n": "I", - "v": "I" - }, { - "n": "J", - "v": "J" - }, { - "n": "K", - "v": "K" - }, { - "n": "L", - "v": "L" - }, { - "n": "M", - "v": "M" - }, { - "n": "N", - "v": "N" - }, { - "n": "O", - "v": "O" - }, { - "n": "P", - "v": "P" - }, { - "n": "Q", - "v": "Q" - }, { - "n": "R", - "v": "R" - }, { - "n": "S", - "v": "S" - }, { - "n": "T", - "v": "T" - }, { - "n": "U", - "v": "U" - }, { - "n": "V", - "v": "V" - }, { - "n": "W", - "v": "W" - }, { - "n": "X", - "v": "X" - }, { - "n": "Y", - "v": "Y" - }, { - "n": "Z", - "v": "Z" - }, { - "n": "0-9", - "v": "0-9" - }] - }, { - "key": "by", - "name": "时间", - "value": [{ - "n": "按最新", - "v": "time" - }, { - "n": "按最热", - "v": "hits" - }, { - "n": "按评分", - "v": "score" - }] - }] - }, - filter_def: {}, - detailUrl: '/voddetail/fyid.html', - play_parse: true, - sniffer: 1, - is_video: 'obj/tos|bd.xhscdn|/ugc/', - lazy: $js.toString(() => { - input = { - parse: 1, - url: input, - //js:'try{let urls=Array.from(document.querySelectorAll("iframe")).filter(x=>x.src.includes("?url="));if(urls){location.href=urls[0].src}}catch{}document.querySelector("button").click()', - js: 'try{location.href=document.querySelector("#playleft iframe").src}catch{}document.querySelector("button.swal-button--confirm").click()', - parse_extra: '&is_pc=1&custom_regex=' + rule.is_video, - } - }), - limit: 6, - 推荐: '.list-vod.flex .public-list-box;a&&title;.lazy&&data-original;.public-list-prb&&Text;a&&href', - 一级: $js.toString(() => { - let body = input.split("#")[1]; - let t = Math.round(new Date / 1e3).toString(); - let key = md5("DS" + t + "DCC147D11943AF75"); - let url = input.split("#")[0]; - body = body + "&time=" + t + "&key=" + key; - print(body); - fetch_params.body = body; - let html = post(url, fetch_params); - let data = JSON.parse(html); - VODS = data.list.map(function(it) { - it.vod_pic = urljoin2(input.split("/i")[0], it.vod_pic); - return it - }); - }), - 二级: { - title: '.slide-info-title&&Text;.slide-info:eq(3)--strong&&Text', - img: '.detail-pic&&data-original', - desc: '.fraction&&Text;.slide-info-remarks:eq(1)&&Text;.slide-info-remarks:eq(2)&&Text;.slide-info:eq(2)--strong&&Text;.slide-info:eq(1)--strong&&Text', - content: '#height_limit&&Text', - tabs: '.anthology.wow.fadeInUp.animated&&.swiper-wrapper&&a', - tab_text: '.swiper-slide&&Text', - lists: '.anthology-list-box:eq(#id) li', - }, - 搜索: 'json:list;name;pic;;id', - 搜索: $js.toString(() => { - let html = fetch(input); - let list = pdfa(html, ".public-list-box"); - VODS = list.map(x => { - return { - vod_name: pdfh(x, ".thumb-txt&&Text"), - vod_pic: pdfh(x, ".lazy&&data-src"), - vod_remarks: pdfh(x, ".public-list-prb&&Text"), - vod_content: pdfh(x, ".thumb-blurb&&Text"), - vod_id: pdfh(x, "a&&href") - } - }); - }), - 图片替换: '&=>&' -} \ No newline at end of file diff --git a/潇洒/js/路漫漫.js b/潇洒/js/路漫漫.js deleted file mode 100644 index d781efa..0000000 --- a/潇洒/js/路漫漫.js +++ /dev/null @@ -1,549 +0,0 @@ -var rule = { - title: "路漫漫", - host: "http://www.lmm36.com", - url: "/vod/show/id/fyclassfyfilter.html", - searchUrl: '/vod/search/page/fypage/wd/**.html', - searchable: 2, - quickSearch: 0, - filterable: 1, - filter: { - "3": [{ - "key": "年代", - "name": "年代", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "2025", - "v": "/year/2025" - }, { - "n": "2024", - "v": "/year/2024" - }, { - "n": "2023", - "v": "/year/2023" - }, { - "n": "2022", - "v": "/year/2022" - }, { - "n": "2021", - "v": "/year/2021" - }, { - "n": "2020", - "v": "/year/2020" - }, { - "n": "2019", - "v": "/year/2019" - }, { - "n": "2018", - "v": "/year/2018" - }, { - "n": "2017", - "v": "/year/2017" - }, { - "n": "2016", - "v": "/year/2016" - }, { - "n": "2015", - "v": "/year/2015" - }, { - "n": "更早", - "v": "/year/2014-1980" - }] - }, { - "key": "排序", - "name": "排序", - "value": [{ - "n": "最近更新", - "v": "/by/time" - }, { - "n": "最高人气", - "v": "/by/hits" - }, { - "n": "最高评分", - "v": "/by/score" - }, { - "n": "最多点赞", - "v": "/by/up" - }] - }], - "4": [{ - "key": "年代", - "name": "年代", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "2025", - "v": "/year/2025" - }, { - "n": "2024", - "v": "/year/2024" - }, { - "n": "2023", - "v": "/year/2023" - }, { - "n": "2022", - "v": "/year/2022" - }, { - "n": "2021", - "v": "/year/2021" - }, { - "n": "2020", - "v": "/year/2020" - }, { - "n": "2019", - "v": "/year/2019" - }, { - "n": "2018", - "v": "/year/2018" - }, { - "n": "2017", - "v": "/year/2017" - }, { - "n": "2016", - "v": "/year/2016" - }, { - "n": "2015", - "v": "/year/2015" - }, { - "n": "更早", - "v": "/year/2014-1980" - }] - }, { - "key": "排序", - "name": "排序", - "value": [{ - "n": "最近更新", - "v": "/by/time" - }, { - "n": "最高人气", - "v": "/by/hits" - }, { - "n": "最高评分", - "v": "/by/score" - }, { - "n": "最多点赞", - "v": "/by/up" - }] - }], - "5": [{ - "key": "年代", - "name": "年代", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "2025", - "v": "/year/2025" - }, { - "n": "2024", - "v": "/year/2024" - }, { - "n": "2023", - "v": "/year/2023" - }, { - "n": "2022", - "v": "/year/2022" - }, { - "n": "2021", - "v": "/year/2021" - }, { - "n": "2020", - "v": "/year/2020" - }, { - "n": "2019", - "v": "/year/2019" - }, { - "n": "2018", - "v": "/year/2018" - }, { - "n": "2017", - "v": "/year/2017" - }, { - "n": "2016", - "v": "/year/2016" - }, { - "n": "2015", - "v": "/year/2015" - }, { - "n": "更早", - "v": "/year/2014-1980" - }] - }, { - "key": "排序", - "name": "排序", - "value": [{ - "n": "最近更新", - "v": "/by/time" - }, { - "n": "最高人气", - "v": "/by/hits" - }, { - "n": "最高评分", - "v": "/by/score" - }, { - "n": "最多点赞", - "v": "/by/up" - }] - }], - "6": [{ - "key": "年代", - "name": "年代", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "2025", - "v": "/year/2025" - }, { - "n": "2024", - "v": "/year/2024" - }, { - "n": "2023", - "v": "/year/2023" - }, { - "n": "2022", - "v": "/year/2022" - }, { - "n": "2021", - "v": "/year/2021" - }, { - "n": "2020", - "v": "/year/2020" - }, { - "n": "2019", - "v": "/year/2019" - }, { - "n": "2018", - "v": "/year/2018" - }, { - "n": "2017", - "v": "/year/2017" - }, { - "n": "2016", - "v": "/year/2016" - }, { - "n": "2015", - "v": "/year/2015" - }, { - "n": "更早", - "v": "/year/2014-1980" - }] - }, { - "key": "排序", - "name": "排序", - "value": [{ - "n": "最近更新", - "v": "/by/time" - }, { - "n": "最高人气", - "v": "/by/hits" - }, { - "n": "最高评分", - "v": "/by/score" - }, { - "n": "最多点赞", - "v": "/by/up" - }] - }], - "7": [{ - "key": "年代", - "name": "年代", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "2025", - "v": "/year/2025" - }, { - "n": "2024", - "v": "/year/2024" - }, { - "n": "2023", - "v": "/year/2023" - }, { - "n": "2022", - "v": "/year/2022" - }, { - "n": "2021", - "v": "/year/2021" - }, { - "n": "2020", - "v": "/year/2020" - }, { - "n": "2019", - "v": "/year/2019" - }, { - "n": "2018", - "v": "/year/2018" - }, { - "n": "2017", - "v": "/year/2017" - }, { - "n": "2016", - "v": "/year/2016" - }, { - "n": "2015", - "v": "/year/2015" - }, { - "n": "更早", - "v": "/year/2014-1980" - }] - }, { - "key": "排序", - "name": "排序", - "value": [{ - "n": "最近更新", - "v": "/by/time" - }, { - "n": "最高人气", - "v": "/by/hits" - }, { - "n": "最高评分", - "v": "/by/score" - }, { - "n": "最多点赞", - "v": "/by/up" - }] - }], - "8": [{ - "key": "年代", - "name": "年代", - "value": [{ - "n": "全部", - "v": "" - }, { - "n": "2025", - "v": "/year/2025" - }, { - "n": "2024", - "v": "/year/2024" - }, { - "n": "2023", - "v": "/year/2023" - }, { - "n": "2022", - "v": "/year/2022" - }, { - "n": "2021", - "v": "/year/2021" - }, { - "n": "2020", - "v": "/year/2020" - }, { - "n": "2019", - "v": "/year/2019" - }, { - "n": "2018", - "v": "/year/2018" - }, { - "n": "2017", - "v": "/year/2017" - }, { - "n": "2016", - "v": "/year/2016" - }, { - "n": "2015", - "v": "/year/2015" - }, { - "n": "更早", - "v": "/year/2014-1980" - }] - }, { - "key": "排序", - "name": "排序", - "value": [{ - "n": "最近更新", - "v": "/by/time" - }, { - "n": "最高人气", - "v": "/by/hits" - }, { - "n": "最高评分", - "v": "/by/score" - }, { - "n": "最多点赞", - "v": "/by/up" - }] - }] - }, - filter_url: "{{fl.排序}}{{fl.年代}}/page/fypage", - filter_def: "", - headers: { - "User-Agent": "MOBILE_UA" - }, - timeout: 5000, - class_name: "日本动漫&国产动漫&欧美动漫&日本动画电影&国产动画电影&欧美动画电影", - class_url: "6&7&8&3&4&5", - class_parse: "", - cate_exclude: "", - play_parse: true, - lazy: $js.toString(() => { - function getDAesString(token) { - eval(getCryptoJS()); - var key = CryptoJS.enc.Utf8.parse("ejjooopppqqqrwww"); - - var iv = CryptoJS.enc.Utf8.parse("1348987635684651"); - - var token = CryptoJS.AES.decrypt(token, key, { - iv: iv, - mode: CryptoJS.mode.CBC, - padding: CryptoJS.pad.Pkcs7, - }); - - return token.toString(CryptoJS.enc.Utf8); - } - - var html = JSON.parse(request(input).match(/r player_.*?=(.*?) { - function getClasses(item) { - let classes = []; - if (item.class_name && item.class_url) { - if (!/&|电影|电视剧|综艺|动漫[\u4E00-\u9FA5]+/.test(item.class_name)) { - try { - item.class_name = ungzip(item.class_name) - } catch (e) { - log(`不识别的class_name导致gzip解码失败:${e}`) - return classes - } - } - let names = item.class_name.split('&'); - let urls = item.class_url.split('&'); - let cnt = Math.min(names.length, urls.length); - for (let i = 0; i < cnt; i++) { - classes.push({ - 'type_id': urls[i], - 'type_name': names[i] - }); - } - } - return classes - } - if (typeof(batchFetch) === 'function') { - rule.search_limit = 16; - log('当前程序支持批量请求[batchFetch],搜索限制已设置为16'); - } - let _url = rule.params; - log(`传入参数:${_url}`); - if (_url && typeof(_url) === 'string' && /^(http|file)/.test(_url)) { - if (_url.includes('$')) { - let _url_params = _url.split('$'); - _url = _url_params[0]; - rule.search_match = !!(_url_params[1]); - if (_url_params.length > 2) { - rule.search_pic = !!(_url_params[2]); - } - } - let html = request(_url); - let json = JSON.parse(html); - let _classes = []; - rule.filter = {}; - rule.filter_def = {}; - json.forEach(it => { - let _obj = { - type_name: it.name, - type_id: it.url, - parse_url: it.parse_url || '', - searchable: it.searchable !== 0, - api: it.api || '', - cate_exclude: it.cate_exclude || '', - cate_excludes: it.cate_excludes || [], - }; - _classes.push(_obj); - try { - let json1 = []; - if (it.class_name && it.class_url) { - json1 = getClasses(it); - } else { - json1 = JSON.parse(request(urljoin(_obj.type_id, _obj.api || rule.classUrl))).class; - } - if (_obj.cate_excludes && Array.isArray(_obj.cate_excludes) && _obj.cate_excludes.length > 0) { - json1 = json1.filter(cl => !_obj.cate_excludes.includes(cl.type_name)); - } else if (_obj.cate_exclude) { - json1 = json1.filter(cl => !new RegExp(_obj.cate_exclude, 'i').test(cl.type_name)); - } - rule.filter[_obj.type_id] = [{ - "key": "类型", - "name": "类型", - "value": json1.map(i => { - return { - "n": i.type_name, - 'v': i.type_id - } - }) - }]; - if (json1.length > 0) { - rule.filter_def[it.url] = { - "类型": json1[0].type_id - }; - } - } catch (e) { - rule.filter[it.url] = [{ - "key": "类型", - "name": "类型", - "value": [{ - "n": "全部", - "v": "" - }] - }]; - } - }); - rule.classes = _classes; - } - }), - class_parse: $js.toString(() => { - input = rule.classes; - }), - 推荐: $js.toString(() => { - VODS = []; - if (rule.classes) { - let randomClass = getRandomItem(rule.classes); - let _url = urljoin(randomClass.type_id, input); - if (randomClass.api) { - _url = _url.replace('/api.php/provide/vod/', randomClass.api) - } - try { - let html = request(_url, { - timeout: rule.timeout - }); - let json = JSON.parse(html); - VODS = json.list; - VODS.forEach(it => { - it.vod_id = randomClass.type_id + '$' + it.vod_id; - it.vod_remarks = it.vod_remarks + '|' + randomClass.type_name; - }); - } catch (e) {} - } - }), - 一级: $js.toString(() => { - VODS = []; - if (rule.classes) { - let _url = urljoin(MY_CATE, input); - let current_vod = rule.classes.find(item => item.type_id === MY_CATE); - if (current_vod && current_vod.api) { - _url = _url.replace('/api.php/provide/vod/', current_vod.api) - } - let html = request(_url); - let json = JSON.parse(html); - VODS = json.list; - VODS.forEach(it => { - it.vod_id = MY_CATE + '$' + it.vod_id - }); - } - }), - 二级: $js.toString(() => { - VOD = {}; - if (orId === 'update_info') { - VOD = { - vod_content: rule.update_info.trim(), - vod_name: '更新日志', - type_name: '更新日志', - vod_pic: 'https://resource-cdn.tuxiaobei.com/video/FtWhs2mewX_7nEuE51_k6zvg6awl.png', - vod_remarks: `版本:${rule.version}`, - vod_play_from: '道长在线', - vod_play_url: '随机小视频$http://api.yujn.cn/api/zzxjj.php', - }; - } else { - if (rule.classes) { - let _url = urljoin(fyclass, input); - let current_vod = rule.classes.find(item => item.type_id === fyclass); - if (current_vod && current_vod.api) { - _url = _url.replace('/api.php/provide/vod/', current_vod.api) - } - let html = request(_url); - let json = JSON.parse(html); - let data = json.list; - VOD = data[0]; - if (current_vod && current_vod.type_name) { - VOD.vod_play_from = VOD.vod_play_from.split('$$$').map(it => current_vod.type_name + '|' + it).join('$$$') - } - } - } - }), - 搜索: $js.toString(() => { - VODS = []; - if (rule.classes) { - let canSearch = rule.classes.filter(it => it.searchable); - let page = Number(MY_PAGE); - page = (MY_PAGE - 1) % Math.ceil(canSearch.length / rule.search_limit) + 1; - let truePage = Math.ceil(MY_PAGE / Math.ceil(canSearch.length / rule.search_limit)); - if (rule.search_limit) { - let start = (page - 1) * rule.search_limit; - let end = page * rule.search_limit; - let t1 = new Date().getTime(); - let searchMode = typeof(batchFetch) === 'function' ? '批量' : '单个'; - log('start:' + start); - log('end:' + end); - log('搜索模式:' + searchMode); - log('精准搜索:' + rule.search_match); - log('强制获取图片:' + rule.search_pic); - if (start < canSearch.length) { - let search_classes = canSearch.slice(start, end); - let urls = []; - search_classes.forEach(it => { - let _url = urljoin(it.type_id, input); - if (it.api) { - _url = _url.replace('/api.php/provide/vod/', it.api) - } - _url = _url.replace("#TruePage#", "" + truePage); - urls.push(_url); - }); - let results_list = []; - let results = []; - if (typeof(batchFetch) === 'function') { - let reqUrls = urls.map(it => { - return { - url: it, - options: { - timeout: rule.timeout - } - } - }); - let rets = batchFetch(reqUrls); - let detailUrls = []; - let detailUrlCount = 0; - rets.forEach((ret, idx) => { - let it = search_classes[idx]; - if (ret) { - try { - let json = JSON.parse(ret); - let data = json.list; - data.forEach(i => { - i.site_name = it.type_name; - i.vod_id = it.type_id + '$' + i.vod_id; - i.vod_remarks = i.vod_remarks + '|' + it.type_name; - }); - if (rule.search_match) { - data = data.filter(item => item.vod_name && (new RegExp(KEY, 'i')).test(item.vod_name)) - } - if (data.length > 0) { - if (rule.search_pic && !data[0].vod_pic) { - log(`当前搜索站点【${it.type_name}】没图片,尝试访问二级去获取图片`); - let detailUrl = urls[idx].split('wd=')[0] + 'ac=detail&ids=' + data.map(k => k.vod_id.split('$')[1]).join(','); - detailUrls.push(detailUrl); - results_list.push({ - data: data, - has_pic: false, - detailUrlCount: detailUrlCount - }); - detailUrlCount++; - } else { - results_list.push({ - data: data, - has_pic: true - }); - } - } - } catch (e) { - log(`请求:${it.type_id}发生错误:${e.message}`) - } - } - }); - let reqUrls2 = detailUrls.map(it => { - return { - url: it, - options: { - timeout: rule.timeout - } - } - }); - let rets2 = reqUrls2.length > 0 ? batchFetch(reqUrls2) : []; - for (let k = 0; k < results_list.length; k++) { - let result_data = results_list[k].data; - if (!results_list[k].has_pic) { - try { - let detailJson = JSON.parse(rets2[results_list[k].detailUrlCount]); - log('二级数据列表元素数:' + detailJson.list.length); - result_data.forEach((d, _seq) => { - let detailVodPic = detailJson.list.find(vod => vod.vod_id.toString() === d.vod_id.split('$')[1]); - if (detailVodPic) { - Object.assign(d, { - vod_pic: detailVodPic.vod_pic - }); - } - }); - } catch (e) { - log(`强制获取网站${result_data[0].site_name}的搜索图片失败:${e.message}`); - } - } - results = results.concat(result_data); - } - } else { - urls.forEach((_url, idx) => { - let it = search_classes[idx]; - try { - let html = request(_url); - let json = JSON.parse(html); - let data = json.list; - data.forEach(i => { - i.vod_id = it.type_id + '$' + i.vod_id; - i.vod_remarks = i.vod_remarks + '|' + it.type_name; - }); - if (rule.search_match) { - data = data.filter(item => item.vod_name && (new RegExp(KEY, 'i')).test(item.vod_name)) - } - if (data.length > 0) { - if (rule.search_pic && !data[0].vod_pic) { - log(`当前搜索站点【${it.type_name}】没图片,尝试访问二级去获取图片`); - let detailUrl = urls[idx].split('wd=')[0] + 'ac=detail&ids=' + data.map(k => k.vod_id.split('$')[1]).join(','); - try { - let detailJson = JSON.parse(request(detailUrl)); - log('二级数据列表元素数:' + detailJson.list.length); - data.forEach((d, _seq) => { - let detailVodPic = detailJson.list.find(vod => vod.vod_id.toString() === d.vod_id.split('$')[1]); - if (detailVodPic) { - Object.assign(d, { - vod_pic: detailVodPic.vod_pic - }); - } - }); - } catch (e) { - log(`强制获取网站${it.type_id}的搜索图片失败:${e.message}`); - } - } - results = results.concat(data); - } - results = results.concat(data); - } catch (e) { - log(`请求:${it.type_id}发生错误:${e.message}`) - } - }); - } - VODS = results; - let t2 = new Date().getTime(); - log(`${searchMode}搜索:${urls.length}个站耗时:${(Number(t2) - Number(t1))}ms`) - } - } - } - }), - lazy: $js.toString(() => { - let parse_url = ''; - if (flag && flag.includes('|')) { - let type_name = flag.split('|')[0]; - let current_vod = rule.classes.find(item => item.type_name === type_name); - if (current_vod && current_vod.parse_url) { - parse_url = current_vod.parse_url - } - } - if (/\.(m3u8|mp4)/.test(input)) { - input = { - parse: 0, - url: input - } - } else { - if (parse_url.startsWith('json:')) { - let purl = parse_url.replace('json:', '') + input; - let html = request(purl); - input = { - parse: 0, - url: JSON.parse(html).url - } - } else { - input = parse_url + input; - } - } - }), -} \ No newline at end of file diff --git a/潇洒/json/1.json b/潇洒/json/1.json new file mode 100644 index 0000000..313308d --- /dev/null +++ b/潇洒/json/1.json @@ -0,0 +1 @@ +http://59.153.167.137:7788 \ No newline at end of file diff --git a/潇洒/json/BLHJ.json b/潇洒/json/BLHJ.json new file mode 100644 index 0000000..97231ad --- /dev/null +++ b/潇洒/json/BLHJ.json @@ -0,0 +1 @@ +The content may contain violation information \ No newline at end of file diff --git a/潇洒/json/哔哩视频.json b/潇洒/json/BLSP.json similarity index 100% rename from 潇洒/json/哔哩视频.json rename to 潇洒/json/BLSP.json diff --git a/潇洒/json/哔哩哔哩听书.json b/潇洒/json/BLTS.json similarity index 100% rename from 潇洒/json/哔哩哔哩听书.json rename to 潇洒/json/BLTS.json diff --git a/潇洒/json/哔哩哔哩小品.json b/潇洒/json/BLXP.json similarity index 100% rename from 潇洒/json/哔哩哔哩小品.json rename to 潇洒/json/BLXP.json diff --git a/潇洒/json/哔哩哔哩戏曲.json b/潇洒/json/BLXQ.json similarity index 100% rename from 潇洒/json/哔哩哔哩戏曲.json rename to 潇洒/json/BLXQ.json diff --git a/潇洒/json/哔哩哔哩相声.json b/潇洒/json/BLXS.json similarity index 100% rename from 潇洒/json/哔哩哔哩相声.json rename to 潇洒/json/BLXS.json diff --git a/潇洒/json/哔哩哔哩演唱会.json b/潇洒/json/BLYCH.json similarity index 100% rename from 潇洒/json/哔哩哔哩演唱会.json rename to 潇洒/json/BLYCH.json diff --git a/潇洒/XYQHiker/BT天堂.json b/潇洒/json/BTTT.json similarity index 100% rename from 潇洒/XYQHiker/BT天堂.json rename to 潇洒/json/BTTT.json diff --git a/潇洒/json/采集静态.json b/潇洒/json/CJJT.json similarity index 81% rename from 潇洒/json/采集静态.json rename to 潇洒/json/CJJT.json index ef1ce84..3bfedc3 100644 --- a/潇洒/json/采集静态.json +++ b/潇洒/json/CJJT.json @@ -1,12 +1,4 @@ [ - { - "name": "魔都资源", - "url": "https://caiji.moduapi.cc", - "parse_url": "", - "cate_exclude": "电影|连续剧|综艺|伦理片", - "class_name": "H4sIAAAAAAAAAzWPWQ6CQBBEb8M5FaMyxIh8iAskfriMIiJqXECH09A9cAtnmuGrX3VXV1IQiqrg4B7xd7ZwsW82p04kXJbTTnyu4GVGNOOJnMdGqFGJSLKxBUEEjGuSzg0HQyLuQ/7VhP0Z9gLyMW6u6CyrghENXLTXdE1fUFyIvF29JR9MR+DdyWcnMvAp2b1KERP1y2ZdaqrTDMScdps2om3HuNUcVrqDJtUwFJpMQ0WqG+Yl7RZ7jBKi5xt2AdEjMx8qVo0/1LC8rzQBAAA=", - "class_url": "1&2&3&4&5&6&10&11&12&13&14&15&16&17&18&20&21&22&23&24&25&26&27&28&29&30&31&32&33&34&35&36&37&38" - }, { "name": "360资源", "url": "https://360zy.com", @@ -88,6 +80,14 @@ "class_name": "H4sIAFlXhmYC/z1RbXaCMBC8TU7QW/RSip/oq8orxVp56hNoaqtFq1gFopfJZsMtGhLor93Z3czuTNBNgB0IuomkXbApwSyXdkpg8CHyrzJw5qPdI+D5ql1m2D+IVkdn1IFrVmaiORENT8/ZtOqK/itPbV2bM57Skl1sKd5GZVYsN7owjXS4xGWA8V6jow6YfgJ70VTJL4SenghpMetWR6rHiqYGimK8r4HeU2sx640i86YG5px/regaNZqqnjG7K5C74B54/kY4e5bWj0zmPB0SjL9x0iLyfCxDsW6DM9BEXizjFDpDokxWBksayPikHGTC6+FyVyri+TtOutVOfrExNeaoo01HRnfhXeuxaST8bQX4JRQNKuMbrCwC3Rn6S2ztZH9BHh7RfKzwbQhqKRAdi7UjmkP1hcrrJ8m26hRjfCiDDs9m/LYicD3xLMDNXZ4HRLYdcVoIa4ueQ3C0V52ixeBikcJKxH5s9vwBtOQp10cCAAA=", "class_url": "1&2&3&4&6&7&8&9&10&11&12&13&14&15&16&17&18&19&20&23&25&26&27&28&29&30&31&39&44&45&47&48&49&50&51&52&53&54&55&56&57&58&59&60&61&62&63&64&65&66&67&68&69&70" }, + { + "name": "快车资源", + "url": "https://caiji.kczyapi.com", + "parse_url": "", + "cate_exclude": "电影|电视剧|综艺|动漫|预告片|伦理|影视解说|体育赛事|港台三级|两性课堂|写真热舞", + "class_name": "H4sIAFZXhmYC/z1RbXaCMBC8TU7QW/RSip/oq8orxVp56hNoaqtFq1gFopfJZsMtGhLor93Z3czuTNBNgB0IuomkXbApwSyXdkpg8CHyrzJw5qPdI+D5ql1m2D+IVkdn1IFrVmaiORENT8/ZtOqK/itPbV2bM57Skl1sKd5GZVYsN7owjXS4xGWA8V6jow6YfgJ70VTJL4SenghpMetWR6rHiqYGimK8r4HeU2sx640i86YG5px/regaNZqqnjG7K5C74B54/kY4e5bWj0zmPB0SjL9x0iLyfCxDsW6DM9BEXizjFDpDokxWBksayPikHGTC6+FyVyri+TtOutVOfrExNeaoo01HRnfhXeuxaST8bQX4JRQNKuMbrCwC3Rn6S2ztZH9BHh7RfKzwbQhqKRAdi7UjmkP1hcrrJ8m26hRjfCiDDs9m/LYicD3xLMDNXZ4HRLYdcVoIa4ueQ3C0V52ixeBikcJKxH5s9vwBtOQp10cCAAA=", + "class_url": "1&2&3&4&6&7&8&9&10&11&12&13&14&15&16&17&18&19&20&23&25&26&27&28&29&30&31&39&44&45&47&48&49&50&51&52&53&54&55&56&57&58&59&60&61&62&63&64&65&66&67&68&69&70" + }, { "name": "️极速资源", "url": "https://jszyapi.com", @@ -113,6 +113,23 @@ "class_name": "H4sIAFZXhmYC/1WR0VLCQAxF/6bfqXQsbB9omYEq2JEHKqtQ2iIC0nbxZ5pk+Qt303VG307uZnJvsjQ9gtqTGHr6+4WaHQjpUdNqUVsNwjdst446lTIlqWmyRKM9+g9McgKXxhLex3iXcJ+Q7hVHT10tWHtWXS2tx209x6+SafluZEuYS7qOLUFU4eXK2uMrpjnT8QxZYkkXFagZ+y53LhxNmz8GHPt3niv6Qa4w1lHV7+kCuAIyeZsHrsBD9S+ak4lvpuVKl58e+iEOFuxdnKDu80SZXvHqMA4g+uAjDHJKJhw6LEltmMqCYt/r2jXFAf/B6WAFs5Yx/QEG4wmPmwEAAA==", "class_url": "1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&18&22&23&24&25&26&27&30&31&32&33&37&38&39&42&43&44&45&46&48&49&51&54" }, + { + "name": "天空资源", + "url": "https://m3u8.tiankongapi.com", + "parse_url": "", + "cate_exclude": "电影|连续剧|动漫|综艺|伦理片|电影解说|体育赛事|短剧", + "api": "/api.php/provide/vod/from/tkm3u8/", + "class_name": "H4sIAFdXhmYC/zVQW3LCMAy8jc/JYygknSllCqGUTPkoYAphEqCB4uD0Mrbk3KK2Yn95V9autMJpqeWJodhrOcNoyMzfJ1ZHHXEGGcf6xaFmu4Df3CEd75RMXR+OTtAfEOITfa8cgu4rdBKHbK//hdG7EhHVktSWCcU7nJIC4xzlnmpLqQSnaatvS/w0eBwYVg8TCabXvFk8eeL2GReBzDdWFAitHTTjAu41ebX+raMVQJoF0ub0pLzpdRLIpfCbWIF7kK5l+JfJf5jeDH1u7NbNR01pexkmE8ozuKqKbqHkm+mdTblU4pnhyt32H73g+qZ2AQAA", + "class_url": "1&2&3&4&5&6&7&8&9&10&11&12&20&21&22&23&24&25&26&27&28&29&30&31&32&33&34&35&36&37&38&39&40&41&42&44" + }, + { + "name": "百度云资源", + "url": "https://api.apibdzy.com", + "parse_url": "", + "cate_exclude": "电影|电视剧|综艺|动漫|伦理片|纪录片|体育赛事|资讯", + "class_name": "H4sIAFdXhmYC/zVP7W7CMAx8mzzn1vGVTgKqla4TSEgTLMAQLaBMkDZ9msRO32KNm/67O9t3Z0yl1VeGqXRiYrlgWNWOK2bjA9S/zNQ/uJwgn3rB6A2hbNMteoSzK7yNCYnEPiuP4HUJLxntcRGmMMuN4qTtRPtFOfAooLl71G6PJHzuKV+drF6RZ1ygPoVsTCvsq9pFCc+GLs4Cm7lHdvxnqoy0e0kC5YRfOucuYyCPonMYCDkML6+1USI83t8MpA8KJDpjlvhabSShXIRaRn+46Obk2qh35uTIXQrWjwKBfA75NpD2e2ST+B8HkFGOfQEAAA==", + "class_url": "1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&18&20&21&22&23&24&25&26&27&28&29&30&31&32&33&34&36&37&38&39" + }, { "name": "无尽资源", "url": "https://api.wujinapi.me", diff --git a/潇洒/XBPQ/哆啦新番社.json b/潇洒/json/DLXFS.json similarity index 100% rename from 潇洒/XBPQ/哆啦新番社.json rename to 潇洒/json/DLXFS.json diff --git a/潇洒/XYQHiker/电影港.json b/潇洒/json/DYG.json similarity index 100% rename from 潇洒/XYQHiker/电影港.json rename to 潇洒/json/DYG.json diff --git a/潇洒/XYQHiker/电影牛.json b/潇洒/json/DYN.json similarity index 100% rename from 潇洒/XYQHiker/电影牛.json rename to 潇洒/json/DYN.json diff --git a/潇洒/XBPQ/狐狸君.json b/潇洒/json/HLJ.json similarity index 100% rename from 潇洒/XBPQ/狐狸君.json rename to 潇洒/json/HLJ.json diff --git a/潇洒/XBPQ/海纳影视.json b/潇洒/json/HNYS.json similarity index 100% rename from 潇洒/XBPQ/海纳影视.json rename to 潇洒/json/HNYS.json diff --git a/潇洒/XYQHiker/盒子影视.json b/潇洒/json/HZYS.json similarity index 100% rename from 潇洒/XYQHiker/盒子影视.json rename to 潇洒/json/HZYS.json diff --git a/潇洒/XBPQ/面包影视.json b/潇洒/json/MBYS.json similarity index 100% rename from 潇洒/XBPQ/面包影视.json rename to 潇洒/json/MBYS.json diff --git a/潇洒/XYQHiker/农民影视.json b/潇洒/json/NMYS.json similarity index 100% rename from 潇洒/XYQHiker/农民影视.json rename to 潇洒/json/NMYS.json diff --git a/潇洒/XBPQ/七点影视.json b/潇洒/json/QDYS.json similarity index 100% rename from 潇洒/XBPQ/七点影视.json rename to 潇洒/json/QDYS.json diff --git a/潇洒/XBPQ/骚火影视.json b/潇洒/json/SHYS.json similarity index 97% rename from 潇洒/XBPQ/骚火影视.json rename to 潇洒/json/SHYS.json index 7b4b5fd..88d14d5 100644 --- a/潇洒/XBPQ/骚火影视.json +++ b/潇洒/json/SHYS.json @@ -1,6 +1,6 @@ { "简介": "p_txt show_part\">&&

    ", "副标题": "v_note\">&&", - "分类url": "https://saohuody.com/list/{cateId}-{catePg}.html", + "分类url": "https://saohuody.com/list/{cateId}-{catePg}.html;;d1", "分类": "国产剧$12#港剧$13#台剧$14#日剧$15#韩剧$16#美剧$17#海外$18#泰剧$19#动作$5#喜剧$6#爱情$7#科幻$8#恐怖$9#剧情$10#战争$11#动画$33" } \ No newline at end of file diff --git a/潇洒/XBPQ/三九影视.json b/潇洒/json/SJYS.json similarity index 100% rename from 潇洒/XBPQ/三九影视.json rename to 潇洒/json/SJYS.json diff --git a/潇洒/XBPQ/三四影视.json b/潇洒/json/SSYS.json similarity index 100% rename from 潇洒/XBPQ/三四影视.json rename to 潇洒/json/SSYS.json diff --git a/潇洒/XBPQ/雪糕影视.json b/潇洒/json/XGYS.json similarity index 100% rename from 潇洒/XBPQ/雪糕影视.json rename to 潇洒/json/XGYS.json diff --git a/潇洒/XBPQ/樱花动漫.json b/潇洒/json/YHDM.json similarity index 100% rename from 潇洒/XBPQ/樱花动漫.json rename to 潇洒/json/YHDM.json diff --git a/潇洒/XBPQ/永乐影视.json b/潇洒/json/YLYS.json similarity index 100% rename from 潇洒/XBPQ/永乐影视.json rename to 潇洒/json/YLYS.json diff --git a/潇洒/XBPQ/养生堂.json b/潇洒/json/YST.json similarity index 100% rename from 潇洒/XBPQ/养生堂.json rename to 潇洒/json/YST.json diff --git a/潇洒/json/aliyunpansearch.json b/潇洒/json/aliyunpansearch.json deleted file mode 100644 index 03d8470..0000000 --- a/潇洒/json/aliyunpansearch.json +++ /dev/null @@ -1,199 +0,0 @@ -{ - "classes": [ - { - "type_name": "电影", - "type_id": "dy" - }, - { - "type_name": "电视", - "type_id": "ds" - }, - { - "type_name": "短剧", - "type_id": "dj" - }, - { - "type_name": "综艺", - "type_id": "zy" - }, - { - "type_name": "动漫", - "type_id": "dm" - }, - { - "type_name": "音乐", - "type_id": "yy" - } - ], - "filters": { - "dy": [ - { - "key": "root", - "name": "来源", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "夸克", - "v": "2" - }, - { - "n": "UC", - "v": "5" - }, - { - "n": "阿里", - "v": "1" - }, - { - "n": "百度", - "v": "4" - } - ] - } - ], - "ds": [ - { - "key": "root", - "name": "来源", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "夸克", - "v": "2" - }, - { - "n": "UC", - "v": "5" - }, - { - "n": "阿里", - "v": "1" - }, - { - "n": "百度", - "v": "4" - } - ] - } - ], - "dj": [ - { - "key": "root", - "name": "来源", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "夸克", - "v": "2" - }, - { - "n": "UC", - "v": "5" - }, - { - "n": "阿里", - "v": "1" - }, - { - "n": "百度", - "v": "4" - } - ] - } - ], - "zy": [ - { - "key": "root", - "name": "来源", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "夸克", - "v": "2" - }, - { - "n": "UC", - "v": "5" - }, - { - "n": "阿里", - "v": "1" - }, - { - "n": "百度", - "v": "4" - } - ] - } - ], - "dm": [ - { - "key": "root", - "name": "来源", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "夸克", - "v": "2" - }, - { - "n": "UC", - "v": "5" - }, - { - "n": "阿里", - "v": "1" - }, - { - "n": "百度", - "v": "4" - } - ] - } - ], - "yy": [ - { - "key": "root", - "name": "来源", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "夸克", - "v": "2" - }, - { - "n": "UC", - "v": "5" - }, - { - "n": "阿里", - "v": "1" - }, - { - "n": "百度", - "v": "4" - } - ] - } - ] - }, - "siteUrl": "https://ys1api.yingso.fun/v7/ali/all" -} \ No newline at end of file diff --git a/潇洒/json/bj.json b/潇洒/json/bj.json deleted file mode 100644 index 0881d6e..0000000 --- a/潇洒/json/bj.json +++ /dev/null @@ -1,1465 +0,0 @@ -{ - "SiteUrl": "https://baijia.banye.tech:7086", - "Domains": [ - "http://cj.jiexi.news", - "https://baijia.885525.xyz", - "http://baijia.dpdns.org", - "http://bj.baijia.ddns-ip.net", - "http://bj.885525.xyz", - "http://baijia.filegear-sg.me" - ], - "SiteWord": "bj", - "SiteName": "百家", - "Classes": [ - { - "type_name": "百家电影", - "type_id": "1" - }, - { - "type_name": "百家剧集", - "type_id": "2" - }, - { - "type_name": "百家综艺", - "type_id": "3" - }, - { - "type_name": "百家动漫", - "type_id": "4" - }, - { - "type_name": "臻彩世界", - "type_id": "39" - }, - { - "type_name": "天翼&123", - "type_id": "38" - } - ], - "Filters": { - "1": [ - { - "name": "剧情", - "value": [ - { - "v": "喜剧", - "n": "喜剧" - }, - { - "v": "爱情", - "n": "爱情" - }, - { - "v": "恐怖", - "n": "恐怖" - }, - { - "v": "动作", - "n": "动作" - }, - { - "v": "科幻", - "n": "科幻" - }, - { - "v": "剧情", - "n": "剧情" - }, - { - "v": "战争", - "n": "战争" - }, - { - "v": "警匪", - "n": "警匪" - }, - { - "v": "犯罪", - "n": "犯罪" - }, - { - "v": "动画", - "n": "动画" - }, - { - "v": "奇幻", - "n": "奇幻" - }, - { - "v": "武侠", - "n": "武侠" - }, - { - "v": "冒险", - "n": "冒险" - }, - { - "v": "枪战", - "n": "枪战" - }, - { - "v": "恐怖", - "n": "恐怖" - }, - { - "v": "悬疑", - "n": "悬疑" - }, - { - "v": "惊悚", - "n": "惊悚" - }, - { - "v": "经典", - "n": "经典" - }, - { - "v": "青春", - "n": "青春" - }, - { - "v": "文艺", - "n": "文艺" - }, - { - "v": "微电影", - "n": "微电影" - }, - { - "v": "古装", - "n": "古装" - }, - { - "v": "历史", - "n": "历史" - }, - { - "v": "运动", - "n": "运动" - }, - { - "v": "农村", - "n": "农村" - }, - { - "v": "儿童", - "n": "儿童" - }, - { - "v": "网络电影", - "n": "网络电影" - } - ], - "key": "class" - }, - { - "name": "地区", - "value": [ - { - "v": "大陆", - "n": "大陆" - }, - { - "v": "香港", - "n": "香港" - }, - { - "v": "台湾", - "n": "台湾" - }, - { - "v": "美国", - "n": "美国" - }, - { - "v": "法国", - "n": "法国" - }, - { - "v": "英国", - "n": "英国" - }, - { - "v": "日本", - "n": "日本" - }, - { - "v": "韩国", - "n": "韩国" - }, - { - "v": "德国", - "n": "德国" - }, - { - "v": "泰国", - "n": "泰国" - }, - { - "v": "印度", - "n": "印度" - }, - { - "v": "意大利", - "n": "意大利" - }, - { - "v": "西班牙", - "n": "西班牙" - }, - { - "v": "加拿大", - "n": "加拿大" - }, - { - "v": "其他", - "n": "其他" - } - ], - "key": "area" - }, - { - "name": "语言", - "value": [ - { - "v": "国语", - "n": "国语" - }, - { - "v": "英语", - "n": "英语" - }, - { - "v": "粤语", - "n": "粤语" - }, - { - "v": "闽南语", - "n": "闽南语" - }, - { - "v": "韩语", - "n": "韩语" - }, - { - "v": "日语", - "n": "日语" - }, - { - "v": "法语", - "n": "法语" - }, - { - "v": "德语", - "n": "德语" - }, - { - "v": "其它", - "n": "其它" - } - ], - "key": "lang" - }, - { - "name": "时间", - "value": [ - { - "v": "2024", - "n": "2024" - }, - { - "v": "2023", - "n": "2023" - }, - { - "v": "2022", - "n": "2022" - }, - { - "v": "2021", - "n": "2021" - }, - { - "v": "2020", - "n": "2020" - }, - { - "v": "2019", - "n": "2019" - }, - { - "v": "2018", - "n": "2018" - }, - { - "v": "2017", - "n": "2017" - }, - { - "v": "2016", - "n": "2016" - }, - { - "v": "2015", - "n": "2015" - }, - { - "v": "2014", - "n": "2014" - }, - { - "v": "2013", - "n": "2013" - }, - { - "v": "2012", - "n": "2012" - }, - { - "v": "2011", - "n": "2011" - }, - { - "v": "2010", - "n": "2010" - } - ], - "key": "year" - }, - { - "name": "字母查找", - "value": [ - { - "v": "A", - "n": "A" - }, - { - "v": "B", - "n": "B" - }, - { - "v": "C", - "n": "C" - }, - { - "v": "D", - "n": "D" - }, - { - "v": "E", - "n": "E" - }, - { - "v": "F", - "n": "F" - }, - { - "v": "G", - "n": "G" - }, - { - "v": "H", - "n": "H" - }, - { - "v": "I", - "n": "I" - }, - { - "v": "J", - "n": "J" - }, - { - "v": "K", - "n": "K" - }, - { - "v": "L", - "n": "L" - }, - { - "v": "M", - "n": "M" - }, - { - "v": "N", - "n": "N" - }, - { - "v": "O", - "n": "O" - }, - { - "v": "P", - "n": "P" - }, - { - "v": "Q", - "n": "Q" - }, - { - "v": "R", - "n": "R" - }, - { - "v": "S", - "n": "S" - }, - { - "v": "T", - "n": "T" - }, - { - "v": "U", - "n": "U" - }, - { - "v": "V", - "n": "V" - }, - { - "v": "W", - "n": "W" - }, - { - "v": "X", - "n": "X" - }, - { - "v": "Y", - "n": "Y" - }, - { - "v": "Z", - "n": "Z" - }, - { - "v": "0-9", - "n": "0-9" - } - ], - "key": "character" - }, - { - "name": "评分排序", - "value": [ - { - "v": "time", - "n": "时间排序" - }, - { - "v": "hits", - "n": "人气排序" - }, - { - "v": "score", - "n": "评分排序" - } - ], - "key": "order" - } - ], - "2": [ - { - "name": "类型", - "value": [ - { - "v": "13", - "n": "国产剧" - }, - { - "v": "14", - "n": "欧美剧" - }, - { - "v": "15", - "n": "日韩剧" - }, - { - "v": "16", - "n": "港台剧" - }, - { - "v": "23", - "n": "泰剧" - } - ], - "key": "type" - }, - { - "name": "剧情", - "value": [ - { - "v": "古装", - "n": "古装" - }, - { - "v": "战争", - "n": "战争" - }, - { - "v": "青春偶像", - "n": "青春偶像" - }, - { - "v": "喜剧", - "n": "喜剧" - }, - { - "v": "家庭", - "n": "家庭" - }, - { - "v": "犯罪", - "n": "犯罪" - }, - { - "v": "动作", - "n": "动作" - }, - { - "v": "奇幻", - "n": "奇幻" - }, - { - "v": "剧情", - "n": "剧情" - }, - { - "v": "历史", - "n": "历史" - }, - { - "v": "经典", - "n": "经典" - }, - { - "v": "乡村", - "n": "乡村" - }, - { - "v": "情景", - "n": "情景" - }, - { - "v": "商战", - "n": "商战" - }, - { - "v": "网剧", - "n": "网剧" - }, - { - "v": "其他", - "n": "其他" - } - ], - "key": "class" - }, - { - "name": "地区", - "value": [ - { - "v": "中国大陆", - "n": "中国大陆" - }, - { - "v": "大陆", - "n": "大陆" - }, - { - "v": "内地", - "n": "内地" - }, - { - "v": "韩国", - "n": "韩国" - }, - { - "v": "香港", - "n": "香港" - }, - { - "v": "台湾", - "n": "台湾" - }, - { - "v": "日本", - "n": "日本" - }, - { - "v": "美国", - "n": "美国" - }, - { - "v": "泰国", - "n": "泰国" - }, - { - "v": "英国", - "n": "英国" - }, - { - "v": "新加坡", - "n": "新加坡" - }, - { - "v": "其他", - "n": "其他" - } - ], - "key": "area" - }, - { - "name": "语言", - "value": [ - { - "v": "国语", - "n": "国语" - }, - { - "v": "英语", - "n": "英语" - }, - { - "v": "粤语", - "n": "粤语" - }, - { - "v": "闽南语", - "n": "闽南语" - }, - { - "v": "韩语", - "n": "韩语" - }, - { - "v": "日语", - "n": "日语" - }, - { - "v": "其它", - "n": "其它" - } - ], - "key": "lang" - }, - { - "name": "时间", - "value": [ - { - "v": "2024", - "n": "2024" - }, - { - "v": "2023", - "n": "2023" - }, - { - "v": "2022", - "n": "2022" - }, - { - "v": "2021", - "n": "2021" - }, - { - "v": "2020", - "n": "2020" - }, - { - "v": "2019", - "n": "2019" - }, - { - "v": "2018", - "n": "2018" - }, - { - "v": "2017", - "n": "2017" - }, - { - "v": "2016", - "n": "2016" - }, - { - "v": "2015", - "n": "2015" - }, - { - "v": "2014", - "n": "2014" - }, - { - "v": "2013", - "n": "2013" - }, - { - "v": "2012", - "n": "2012" - }, - { - "v": "2011", - "n": "2011" - }, - { - "v": "2010", - "n": "2010" - } - ], - "key": "year" - }, - { - "name": "字母查找", - "value": [ - { - "v": "A", - "n": "A" - }, - { - "v": "B", - "n": "B" - }, - { - "v": "C", - "n": "C" - }, - { - "v": "D", - "n": "D" - }, - { - "v": "E", - "n": "E" - }, - { - "v": "F", - "n": "F" - }, - { - "v": "G", - "n": "G" - }, - { - "v": "H", - "n": "H" - }, - { - "v": "I", - "n": "I" - }, - { - "v": "J", - "n": "J" - }, - { - "v": "K", - "n": "K" - }, - { - "v": "L", - "n": "L" - }, - { - "v": "M", - "n": "M" - }, - { - "v": "N", - "n": "N" - }, - { - "v": "O", - "n": "O" - }, - { - "v": "P", - "n": "P" - }, - { - "v": "Q", - "n": "Q" - }, - { - "v": "R", - "n": "R" - }, - { - "v": "S", - "n": "S" - }, - { - "v": "T", - "n": "T" - }, - { - "v": "U", - "n": "U" - }, - { - "v": "V", - "n": "V" - }, - { - "v": "W", - "n": "W" - }, - { - "v": "X", - "n": "X" - }, - { - "v": "Y", - "n": "Y" - }, - { - "v": "Z", - "n": "Z" - }, - { - "v": "0-9", - "n": "0-9" - } - ], - "key": "character" - }, - { - "name": "评分排序", - "value": [ - { - "v": "time", - "n": "时间排序" - }, - { - "v": "hits", - "n": "人气排序" - }, - { - "v": "score", - "n": "评分排序" - } - ], - "key": "order" - } - ], - "3": [ - { - "name": "类型", - "value": [ - { - "v": "20", - "n": "国产" - }, - { - "v": "21", - "n": "日韩" - }, - { - "v": "22", - "n": "欧美" - } - ], - "key": "type" - }, - { - "name": "时间", - "value": [ - { - "v": "2024", - "n": "2024" - }, - { - "v": "2023", - "n": "2023" - }, - { - "v": "2022", - "n": "2022" - }, - { - "v": "2021", - "n": "2021" - }, - { - "v": "2020", - "n": "2020" - }, - { - "v": "2019", - "n": "2019" - }, - { - "v": "2018", - "n": "2018" - }, - { - "v": "2017", - "n": "2017" - }, - { - "v": "2016", - "n": "2016" - }, - { - "v": "2015", - "n": "2015" - }, - { - "v": "2014", - "n": "2014" - }, - { - "v": "2013", - "n": "2013" - }, - { - "v": "2012", - "n": "2012" - }, - { - "v": "2011", - "n": "2011" - }, - { - "v": "2010", - "n": "2010" - } - ], - "key": "year" - }, - { - "name": "字母查找", - "value": [ - { - "v": "A", - "n": "A" - }, - { - "v": "B", - "n": "B" - }, - { - "v": "C", - "n": "C" - }, - { - "v": "D", - "n": "D" - }, - { - "v": "E", - "n": "E" - }, - { - "v": "F", - "n": "F" - }, - { - "v": "G", - "n": "G" - }, - { - "v": "H", - "n": "H" - }, - { - "v": "I", - "n": "I" - }, - { - "v": "J", - "n": "J" - }, - { - "v": "K", - "n": "K" - }, - { - "v": "L", - "n": "L" - }, - { - "v": "M", - "n": "M" - }, - { - "v": "N", - "n": "N" - }, - { - "v": "O", - "n": "O" - }, - { - "v": "P", - "n": "P" - }, - { - "v": "Q", - "n": "Q" - }, - { - "v": "R", - "n": "R" - }, - { - "v": "S", - "n": "S" - }, - { - "v": "T", - "n": "T" - }, - { - "v": "U", - "n": "U" - }, - { - "v": "V", - "n": "V" - }, - { - "v": "W", - "n": "W" - }, - { - "v": "X", - "n": "X" - }, - { - "v": "Y", - "n": "Y" - }, - { - "v": "Z", - "n": "Z" - }, - { - "v": "0-9", - "n": "0-9" - } - ], - "key": "character" - }, - { - "name": "评分排序", - "value": [ - { - "v": "time", - "n": "时间排序" - }, - { - "v": "hits", - "n": "人气排序" - }, - { - "v": "score", - "n": "评分排序" - } - ], - "key": "order" - } - ], - "25": [ - { - "name": "时间", - "value": [ - { - "v": "2024", - "n": "2024" - }, - { - "v": "2023", - "n": "2023" - }, - { - "v": "2022", - "n": "2022" - }, - { - "v": "2021", - "n": "2021" - }, - { - "v": "2020", - "n": "2020" - }, - { - "v": "2019", - "n": "2019" - }, - { - "v": "2018", - "n": "2018" - }, - { - "v": "2017", - "n": "2017" - }, - { - "v": "2016", - "n": "2016" - }, - { - "v": "2015", - "n": "2015" - }, - { - "v": "2014", - "n": "2014" - }, - { - "v": "2013", - "n": "2013" - }, - { - "v": "2012", - "n": "2012" - }, - { - "v": "2011", - "n": "2011" - }, - { - "v": "2010", - "n": "2010" - } - ], - "key": "year" - }, - { - "name": "字母查找", - "value": [ - { - "v": "A", - "n": "A" - }, - { - "v": "B", - "n": "B" - }, - { - "v": "C", - "n": "C" - }, - { - "v": "D", - "n": "D" - }, - { - "v": "E", - "n": "E" - }, - { - "v": "F", - "n": "F" - }, - { - "v": "G", - "n": "G" - }, - { - "v": "H", - "n": "H" - }, - { - "v": "I", - "n": "I" - }, - { - "v": "J", - "n": "J" - }, - { - "v": "K", - "n": "K" - }, - { - "v": "L", - "n": "L" - }, - { - "v": "M", - "n": "M" - }, - { - "v": "N", - "n": "N" - }, - { - "v": "O", - "n": "O" - }, - { - "v": "P", - "n": "P" - }, - { - "v": "Q", - "n": "Q" - }, - { - "v": "R", - "n": "R" - }, - { - "v": "S", - "n": "S" - }, - { - "v": "T", - "n": "T" - }, - { - "v": "U", - "n": "U" - }, - { - "v": "V", - "n": "V" - }, - { - "v": "W", - "n": "W" - }, - { - "v": "X", - "n": "X" - }, - { - "v": "Y", - "n": "Y" - }, - { - "v": "Z", - "n": "Z" - }, - { - "v": "0-9", - "n": "0-9" - } - ], - "key": "character" - }, - { - "name": "评分排序", - "value": [ - { - "v": "time", - "n": "时间排序" - }, - { - "v": "hits", - "n": "人气排序" - }, - { - "v": "score", - "n": "评分排序" - } - ], - "key": "order" - } - ], - "4": [ - { - "name": "时间", - "value": [ - { - "v": "2024", - "n": "2024" - }, - { - "v": "2023", - "n": "2023" - }, - { - "v": "2022", - "n": "2022" - }, - { - "v": "2021", - "n": "2021" - }, - { - "v": "2020", - "n": "2020" - }, - { - "v": "2019", - "n": "2019" - }, - { - "v": "2018", - "n": "2018" - }, - { - "v": "2017", - "n": "2017" - }, - { - "v": "2016", - "n": "2016" - }, - { - "v": "2015", - "n": "2015" - }, - { - "v": "2014", - "n": "2014" - }, - { - "v": "2013", - "n": "2013" - }, - { - "v": "2012", - "n": "2012" - }, - { - "v": "2011", - "n": "2011" - }, - { - "v": "2010", - "n": "2010" - } - ], - "key": "year" - }, - { - "name": "字母查找", - "value": [ - { - "v": "A", - "n": "A" - }, - { - "v": "B", - "n": "B" - }, - { - "v": "C", - "n": "C" - }, - { - "v": "D", - "n": "D" - }, - { - "v": "E", - "n": "E" - }, - { - "v": "F", - "n": "F" - }, - { - "v": "G", - "n": "G" - }, - { - "v": "H", - "n": "H" - }, - { - "v": "I", - "n": "I" - }, - { - "v": "J", - "n": "J" - }, - { - "v": "K", - "n": "K" - }, - { - "v": "L", - "n": "L" - }, - { - "v": "M", - "n": "M" - }, - { - "v": "N", - "n": "N" - }, - { - "v": "O", - "n": "O" - }, - { - "v": "P", - "n": "P" - }, - { - "v": "Q", - "n": "Q" - }, - { - "v": "R", - "n": "R" - }, - { - "v": "S", - "n": "S" - }, - { - "v": "T", - "n": "T" - }, - { - "v": "U", - "n": "U" - }, - { - "v": "V", - "n": "V" - }, - { - "v": "W", - "n": "W" - }, - { - "v": "X", - "n": "X" - }, - { - "v": "Y", - "n": "Y" - }, - { - "v": "Z", - "n": "Z" - }, - { - "v": "0-9", - "n": "0-9" - } - ], - "key": "character" - }, - { - "name": "评分排序", - "value": [ - { - "v": "time", - "n": "时间排序" - }, - { - "v": "hits", - "n": "人气排序" - }, - { - "v": "score", - "n": "评分排序" - } - ], - "key": "order" - } - ] - } -} \ No newline at end of file diff --git a/潇洒/XYQHiker/巴士动漫.json b/潇洒/json/bsdm.json similarity index 83% rename from 潇洒/XYQHiker/巴士动漫.json rename to 潇洒/json/bsdm.json index d2132d8..f0b465a 100644 --- a/潇洒/XYQHiker/巴士动漫.json +++ b/潇洒/json/bsdm.json @@ -1,16 +1,16 @@ { "规则名": "动漫巴士", "规则作者": "", - "请求头参数": "User-Agent$MOBILE_UA#Accept$text/html#accept-language$zh-CN,zh;q=0.8", + "请求头参数": "User-Agent$MOBILE_UA#Referer$https://dm84.tv", "网页编码格式": "UTF-8", "图片是否需要代理": "0", "是否开启获取首页数据": "1", - "首页推荐链接": "https://dm84.net", + "首页推荐链接": "https://dm84.tv", "首页列表数组规则": "body&&.v_list", "首页片单列表数组规则": "li", "首页片单是否Jsoup写法": "1", "分类起始页码": "1", - "分类链接": "https://dm84.net/list-{cateId}-{catePg}.html[firstPage=https://dm84.net/list-{cateId}.html]", + "分类链接": "https://dm84.tv/list-{cateId}-{catePg}.html[firstPage=https://dm84.tv/list-{cateId}.html]", "分类名称": "国产动漫&日本动漫&欧美动漫&动漫电影", "分类名称替换词": "1&2&3&4", "筛选数据": {}, @@ -40,10 +40,10 @@ "分类片单链接": "a&&href", "分类片单图片": ".lazy&&data-bg", "分类片单副标题": ".desc&&Text", - "分类片单链接加前缀": "https://dm84.net", + "分类片单链接加前缀": "https://dm84.tv", "分类片单链接加后缀": "", - "搜索请求头参数": "User-Agent$手机#Accept$text/html#accept-language$zh-CN,zh;q=0.8", - "搜索链接": "https://dm84.net/s-{wd}---------{SearchPg}.html", + "搜索请求头参数": "User-Agent$手机#Accept$text/html", + "搜索链接": "https://dm84.tv/s-{wd}---------{SearchPg}.html", "POST请求数据": "", "搜索截取模式": "1", "搜索列表数组规则": ".v_list&&li", @@ -52,7 +52,7 @@ "搜索片单标题": "a&&title!在线观看", "搜索片单链接": "a&&href", "搜索片单副标题": ".desc&&Text", - "搜索片单链接加前缀": "https://dm84.net", + "搜索片单链接加前缀": "https://dm84.tv", "搜索片单链接加后缀": "", "链接是否直接播放": "0", "直接播放链接加前缀": "", @@ -72,7 +72,7 @@ "选集标题": "a&&Text", "选集链接": "a&&href", "是否反转选集序列": "1", - "选集链接加前缀": "https://dm84.net", + "选集链接加前缀": "https://dm84.tv", "选集链接加后缀": "", "分析MacPlayer": "0", "是否开启手动嗅探": "0", diff --git a/潇洒/json/hm.json b/潇洒/json/hm.json index 7c02c93..27a3d03 100644 --- a/潇洒/json/hm.json +++ b/潇洒/json/hm.json @@ -1,5 +1,5 @@ { - "SiteUrl": "https://haimian.eu.org,https://www.haimianxz.com,https://www.hmxz.org,https://www.5536806.xyz,http://haimian.eu.org", + "SiteUrl": "https://www.haimianxz.com,https://www.hmxz.org,https://www.5536806.xyz,http://haimian.eu.org", "Classes": [ { "type_name": "电影", @@ -18,5 +18,5 @@ "type_id": "3" } ], - "Cookie": "__51vcke__K2MEuBiiS0iv1Gsb=50317c8c-a927-5311-8f63-949521ddbf0c; __51vuft__K2MEuBiiS0iv1Gsb=1746033908927; _ga=GA1.1.1243371970.1746580792; __51uvsct__K2MEuBiiS0iv1Gsb=6; __vtins__K2MEuBiiS0iv1Gsb=%7B%22sid%22%3A%20%223cca69eb-bcd1-5ef4-bf3e-812319c6e2e0%22%2C%20%22vd%22%3A%2018%2C%20%22stt%22%3A%2047625%2C%20%22dr%22%3A%202161%2C%20%22expires%22%3A%201748073260198%2C%20%22ct%22%3A%201748071460198%7D; _ga_4HLWS2N0SW=GS2.1.s1748096693$o5$g0$t1748096693$j0$l0$h0; bbs_sid=44bo0pnqufjhkai0ecg2dno2rb; _xn_accesscount_visited=1; Hm_lvt_d8d486f5aec7b83ea1172477c2ecde4f=1748622198; HMACCOUNT=F2191C60A382CF45; bbs_token=cN2N5OuguYW1knrDFA3sw9J2hjMEkWi_2FSYX_2FQa91_2FR2_2FxmeY; Hm_lpvt_d8d486f5aec7b83ea1172477c2ecde4f=1748622484" + "Cookie": "bbs_sid=nll6gb39qj1e4fgkvsjh930ti5; _xn_accesscount_visited=1; __51uvsct__K2MEuBiiS0iv1Gsb=1; __51vcke__K2MEuBiiS0iv1Gsb=df02f20c-b83d-507b-b310-c3f8ab36a87a; __51vuft__K2MEuBiiS0iv1Gsb=1745249876903; bbs_token=rhHYDxTHFdsKEOsD84q8NBkSi6aTY8KlfnqpjudmsOxKBcJe; __vtins__K2MEuBiiS0iv1Gsb=%7B%22sid%22%3A%20%2299dcbd93-0d23-5a24-abb5-ec507c6c248a%22%2C%20%22vd%22%3A%2017%2C%20%22stt%22%3A%20464771%2C%20%22dr%22%3A%201425%2C%20%22expires%22%3A%201745251199999%2C%20%22ct%22%3A%201745250341665%7D" } \ No newline at end of file diff --git a/潇洒/json/kf.json b/潇洒/json/kf.json index 00a2e5b..db16411 100644 --- a/潇洒/json/kf.json +++ b/潇洒/json/kf.json @@ -1,5 +1,5 @@ { - "SiteUrl": "https://www.kuafuzy.com,https://www.kfzy.cc,www.kuafuzys.com,www.kuafuzys.vip", + "SiteUrl": "https://www.kuafuzy.com,https://www.kfzy.cc", "Classes": [ { "type_name": "电影", @@ -26,5 +26,5 @@ "type_id": "6" } ], - "Cookie": "bbs_token=zNQpYs_2BmC2e_2FcUM_2BmuihZ33Jswh_2Fj7sPtelqcw_3D_3D; bbs_sid=65idikju2chtl9sv5or02qlpjj" + "Cookie": "bbs_token=zNQpYs_2BmC2e_2FcUM_2BmuihZ33Jswh_2Fj7sPtelqcw_3D_3D; bbs_sid=lgs96gh42gevj7lsg5f8o3kjsi" } \ No newline at end of file diff --git a/潇洒/json/pan1.json b/潇洒/json/pan1.json deleted file mode 100644 index f8fbfdb..0000000 --- a/潇洒/json/pan1.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "SiteUrl": "https://time.123in.link,https://pan1.me,https://123.panbox.my", - "Classes": [ - { - "type_name": "电影", - "type_id": "2" - }, - { - "type_name": "剧集", - "type_id": "48" - }, - { - "type_name": "4K原盘", - "type_id": "56" - }, - { - "type_name": "综艺", - "type_id": "52" - }, - { - "type_name": "动漫", - "type_id": "37" - } - ], - "Cookie": "bbs_sid=rrru52bda4v655kl9u1c87f00m; bbs_token=dZRAvHbHcUZkuJ7oHALqWoUs00C1fGqqXDXH7I8LH6hMddXP" -} \ No newline at end of file diff --git a/潇洒/json/wogg.json b/潇洒/json/wogg.json index ffdc39f..f946ac9 100644 --- a/潇洒/json/wogg.json +++ b/潇洒/json/wogg.json @@ -1,7 +1,6 @@ { "SiteUrl": "https://wogg.banye.tech:7086", "Domains": [ - "http://woggpan.wogg.lol", "https://wogg.xxooo.cf", "https://wogg.333232.xyz", "https://woggpan.333232.xyz", @@ -571,8 +570,8 @@ "name": "时间", "value": [ { - "v": "2025", - "n": "2025" + "v": "2025", + "n": "2025" }, { "v": "2024", diff --git a/潇洒/json/jh.json b/潇洒/json/xbky.json similarity index 91% rename from 潇洒/json/jh.json rename to 潇洒/json/xbky.json index 83de831..01872d2 100644 --- a/潇洒/json/jh.json +++ b/潇洒/json/xbky.json @@ -3,8 +3,8 @@ "Domains": [ "http://xsayang.fun:12512" ], - "SiteWord": "juhe", - "SiteName": "聚合", + "SiteWord": "xbky", + "SiteName": "小斑快映", "Classes": [ { "type_name": "电影", diff --git a/潇洒/json/xf.json b/潇洒/json/xf.json deleted file mode 100644 index 2188258..0000000 --- a/潇洒/json/xf.json +++ /dev/null @@ -1,1461 +0,0 @@ -{ - "SiteUrl": "https://xiafan.banye.tech:7086", - "Domains": [ - "http://154.204.177.231", - "http://www.xn--ghqy10g1w0a.xyz" - ], - "SiteWord": "xf", - "SiteName": "下饭", - "Classes": [ - { - "type_name": "下饭电影", - "type_id": "1" - }, - { - "type_name": "下饭剧集", - "type_id": "2" - }, - { - "type_name": "下饭综艺", - "type_id": "4" - }, - { - "type_name": "下饭动漫", - "type_id": "3" - }, - { - "type_name": "下饭记录片", - "type_id": "28" - }, - { - "type_name": "臻彩世界", - "type_id": "30" - } - ], - "Filters": { - "1": [ - { - "name": "剧情", - "value": [ - { - "v": "喜剧", - "n": "喜剧" - }, - { - "v": "爱情", - "n": "爱情" - }, - { - "v": "恐怖", - "n": "恐怖" - }, - { - "v": "动作", - "n": "动作" - }, - { - "v": "科幻", - "n": "科幻" - }, - { - "v": "剧情", - "n": "剧情" - }, - { - "v": "战争", - "n": "战争" - }, - { - "v": "警匪", - "n": "警匪" - }, - { - "v": "犯罪", - "n": "犯罪" - }, - { - "v": "动画", - "n": "动画" - }, - { - "v": "奇幻", - "n": "奇幻" - }, - { - "v": "武侠", - "n": "武侠" - }, - { - "v": "冒险", - "n": "冒险" - }, - { - "v": "枪战", - "n": "枪战" - }, - { - "v": "恐怖", - "n": "恐怖" - }, - { - "v": "悬疑", - "n": "悬疑" - }, - { - "v": "惊悚", - "n": "惊悚" - }, - { - "v": "经典", - "n": "经典" - }, - { - "v": "青春", - "n": "青春" - }, - { - "v": "文艺", - "n": "文艺" - }, - { - "v": "微电影", - "n": "微电影" - }, - { - "v": "古装", - "n": "古装" - }, - { - "v": "历史", - "n": "历史" - }, - { - "v": "运动", - "n": "运动" - }, - { - "v": "农村", - "n": "农村" - }, - { - "v": "儿童", - "n": "儿童" - }, - { - "v": "网络电影", - "n": "网络电影" - } - ], - "key": "class" - }, - { - "name": "地区", - "value": [ - { - "v": "大陆", - "n": "大陆" - }, - { - "v": "香港", - "n": "香港" - }, - { - "v": "台湾", - "n": "台湾" - }, - { - "v": "美国", - "n": "美国" - }, - { - "v": "法国", - "n": "法国" - }, - { - "v": "英国", - "n": "英国" - }, - { - "v": "日本", - "n": "日本" - }, - { - "v": "韩国", - "n": "韩国" - }, - { - "v": "德国", - "n": "德国" - }, - { - "v": "泰国", - "n": "泰国" - }, - { - "v": "印度", - "n": "印度" - }, - { - "v": "意大利", - "n": "意大利" - }, - { - "v": "西班牙", - "n": "西班牙" - }, - { - "v": "加拿大", - "n": "加拿大" - }, - { - "v": "其他", - "n": "其他" - } - ], - "key": "area" - }, - { - "name": "语言", - "value": [ - { - "v": "国语", - "n": "国语" - }, - { - "v": "英语", - "n": "英语" - }, - { - "v": "粤语", - "n": "粤语" - }, - { - "v": "闽南语", - "n": "闽南语" - }, - { - "v": "韩语", - "n": "韩语" - }, - { - "v": "日语", - "n": "日语" - }, - { - "v": "法语", - "n": "法语" - }, - { - "v": "德语", - "n": "德语" - }, - { - "v": "其它", - "n": "其它" - } - ], - "key": "lang" - }, - { - "name": "时间", - "value": [ - { - "v": "2024", - "n": "2024" - }, - { - "v": "2023", - "n": "2023" - }, - { - "v": "2022", - "n": "2022" - }, - { - "v": "2021", - "n": "2021" - }, - { - "v": "2020", - "n": "2020" - }, - { - "v": "2019", - "n": "2019" - }, - { - "v": "2018", - "n": "2018" - }, - { - "v": "2017", - "n": "2017" - }, - { - "v": "2016", - "n": "2016" - }, - { - "v": "2015", - "n": "2015" - }, - { - "v": "2014", - "n": "2014" - }, - { - "v": "2013", - "n": "2013" - }, - { - "v": "2012", - "n": "2012" - }, - { - "v": "2011", - "n": "2011" - }, - { - "v": "2010", - "n": "2010" - } - ], - "key": "year" - }, - { - "name": "字母查找", - "value": [ - { - "v": "A", - "n": "A" - }, - { - "v": "B", - "n": "B" - }, - { - "v": "C", - "n": "C" - }, - { - "v": "D", - "n": "D" - }, - { - "v": "E", - "n": "E" - }, - { - "v": "F", - "n": "F" - }, - { - "v": "G", - "n": "G" - }, - { - "v": "H", - "n": "H" - }, - { - "v": "I", - "n": "I" - }, - { - "v": "J", - "n": "J" - }, - { - "v": "K", - "n": "K" - }, - { - "v": "L", - "n": "L" - }, - { - "v": "M", - "n": "M" - }, - { - "v": "N", - "n": "N" - }, - { - "v": "O", - "n": "O" - }, - { - "v": "P", - "n": "P" - }, - { - "v": "Q", - "n": "Q" - }, - { - "v": "R", - "n": "R" - }, - { - "v": "S", - "n": "S" - }, - { - "v": "T", - "n": "T" - }, - { - "v": "U", - "n": "U" - }, - { - "v": "V", - "n": "V" - }, - { - "v": "W", - "n": "W" - }, - { - "v": "X", - "n": "X" - }, - { - "v": "Y", - "n": "Y" - }, - { - "v": "Z", - "n": "Z" - }, - { - "v": "0-9", - "n": "0-9" - } - ], - "key": "character" - }, - { - "name": "评分排序", - "value": [ - { - "v": "time", - "n": "时间排序" - }, - { - "v": "hits", - "n": "人气排序" - }, - { - "v": "score", - "n": "评分排序" - } - ], - "key": "order" - } - ], - "2": [ - { - "name": "类型", - "value": [ - { - "v": "13", - "n": "国产剧" - }, - { - "v": "14", - "n": "欧美剧" - }, - { - "v": "15", - "n": "日韩剧" - }, - { - "v": "16", - "n": "港台剧" - }, - { - "v": "23", - "n": "泰剧" - } - ], - "key": "type" - }, - { - "name": "剧情", - "value": [ - { - "v": "古装", - "n": "古装" - }, - { - "v": "战争", - "n": "战争" - }, - { - "v": "青春偶像", - "n": "青春偶像" - }, - { - "v": "喜剧", - "n": "喜剧" - }, - { - "v": "家庭", - "n": "家庭" - }, - { - "v": "犯罪", - "n": "犯罪" - }, - { - "v": "动作", - "n": "动作" - }, - { - "v": "奇幻", - "n": "奇幻" - }, - { - "v": "剧情", - "n": "剧情" - }, - { - "v": "历史", - "n": "历史" - }, - { - "v": "经典", - "n": "经典" - }, - { - "v": "乡村", - "n": "乡村" - }, - { - "v": "情景", - "n": "情景" - }, - { - "v": "商战", - "n": "商战" - }, - { - "v": "网剧", - "n": "网剧" - }, - { - "v": "其他", - "n": "其他" - } - ], - "key": "class" - }, - { - "name": "地区", - "value": [ - { - "v": "中国大陆", - "n": "中国大陆" - }, - { - "v": "大陆", - "n": "大陆" - }, - { - "v": "内地", - "n": "内地" - }, - { - "v": "韩国", - "n": "韩国" - }, - { - "v": "香港", - "n": "香港" - }, - { - "v": "台湾", - "n": "台湾" - }, - { - "v": "日本", - "n": "日本" - }, - { - "v": "美国", - "n": "美国" - }, - { - "v": "泰国", - "n": "泰国" - }, - { - "v": "英国", - "n": "英国" - }, - { - "v": "新加坡", - "n": "新加坡" - }, - { - "v": "其他", - "n": "其他" - } - ], - "key": "area" - }, - { - "name": "语言", - "value": [ - { - "v": "国语", - "n": "国语" - }, - { - "v": "英语", - "n": "英语" - }, - { - "v": "粤语", - "n": "粤语" - }, - { - "v": "闽南语", - "n": "闽南语" - }, - { - "v": "韩语", - "n": "韩语" - }, - { - "v": "日语", - "n": "日语" - }, - { - "v": "其它", - "n": "其它" - } - ], - "key": "lang" - }, - { - "name": "时间", - "value": [ - { - "v": "2024", - "n": "2024" - }, - { - "v": "2023", - "n": "2023" - }, - { - "v": "2022", - "n": "2022" - }, - { - "v": "2021", - "n": "2021" - }, - { - "v": "2020", - "n": "2020" - }, - { - "v": "2019", - "n": "2019" - }, - { - "v": "2018", - "n": "2018" - }, - { - "v": "2017", - "n": "2017" - }, - { - "v": "2016", - "n": "2016" - }, - { - "v": "2015", - "n": "2015" - }, - { - "v": "2014", - "n": "2014" - }, - { - "v": "2013", - "n": "2013" - }, - { - "v": "2012", - "n": "2012" - }, - { - "v": "2011", - "n": "2011" - }, - { - "v": "2010", - "n": "2010" - } - ], - "key": "year" - }, - { - "name": "字母查找", - "value": [ - { - "v": "A", - "n": "A" - }, - { - "v": "B", - "n": "B" - }, - { - "v": "C", - "n": "C" - }, - { - "v": "D", - "n": "D" - }, - { - "v": "E", - "n": "E" - }, - { - "v": "F", - "n": "F" - }, - { - "v": "G", - "n": "G" - }, - { - "v": "H", - "n": "H" - }, - { - "v": "I", - "n": "I" - }, - { - "v": "J", - "n": "J" - }, - { - "v": "K", - "n": "K" - }, - { - "v": "L", - "n": "L" - }, - { - "v": "M", - "n": "M" - }, - { - "v": "N", - "n": "N" - }, - { - "v": "O", - "n": "O" - }, - { - "v": "P", - "n": "P" - }, - { - "v": "Q", - "n": "Q" - }, - { - "v": "R", - "n": "R" - }, - { - "v": "S", - "n": "S" - }, - { - "v": "T", - "n": "T" - }, - { - "v": "U", - "n": "U" - }, - { - "v": "V", - "n": "V" - }, - { - "v": "W", - "n": "W" - }, - { - "v": "X", - "n": "X" - }, - { - "v": "Y", - "n": "Y" - }, - { - "v": "Z", - "n": "Z" - }, - { - "v": "0-9", - "n": "0-9" - } - ], - "key": "character" - }, - { - "name": "评分排序", - "value": [ - { - "v": "time", - "n": "时间排序" - }, - { - "v": "hits", - "n": "人气排序" - }, - { - "v": "score", - "n": "评分排序" - } - ], - "key": "order" - } - ], - "3": [ - { - "name": "类型", - "value": [ - { - "v": "20", - "n": "国产" - }, - { - "v": "21", - "n": "日韩" - }, - { - "v": "22", - "n": "欧美" - } - ], - "key": "type" - }, - { - "name": "时间", - "value": [ - { - "v": "2024", - "n": "2024" - }, - { - "v": "2023", - "n": "2023" - }, - { - "v": "2022", - "n": "2022" - }, - { - "v": "2021", - "n": "2021" - }, - { - "v": "2020", - "n": "2020" - }, - { - "v": "2019", - "n": "2019" - }, - { - "v": "2018", - "n": "2018" - }, - { - "v": "2017", - "n": "2017" - }, - { - "v": "2016", - "n": "2016" - }, - { - "v": "2015", - "n": "2015" - }, - { - "v": "2014", - "n": "2014" - }, - { - "v": "2013", - "n": "2013" - }, - { - "v": "2012", - "n": "2012" - }, - { - "v": "2011", - "n": "2011" - }, - { - "v": "2010", - "n": "2010" - } - ], - "key": "year" - }, - { - "name": "字母查找", - "value": [ - { - "v": "A", - "n": "A" - }, - { - "v": "B", - "n": "B" - }, - { - "v": "C", - "n": "C" - }, - { - "v": "D", - "n": "D" - }, - { - "v": "E", - "n": "E" - }, - { - "v": "F", - "n": "F" - }, - { - "v": "G", - "n": "G" - }, - { - "v": "H", - "n": "H" - }, - { - "v": "I", - "n": "I" - }, - { - "v": "J", - "n": "J" - }, - { - "v": "K", - "n": "K" - }, - { - "v": "L", - "n": "L" - }, - { - "v": "M", - "n": "M" - }, - { - "v": "N", - "n": "N" - }, - { - "v": "O", - "n": "O" - }, - { - "v": "P", - "n": "P" - }, - { - "v": "Q", - "n": "Q" - }, - { - "v": "R", - "n": "R" - }, - { - "v": "S", - "n": "S" - }, - { - "v": "T", - "n": "T" - }, - { - "v": "U", - "n": "U" - }, - { - "v": "V", - "n": "V" - }, - { - "v": "W", - "n": "W" - }, - { - "v": "X", - "n": "X" - }, - { - "v": "Y", - "n": "Y" - }, - { - "v": "Z", - "n": "Z" - }, - { - "v": "0-9", - "n": "0-9" - } - ], - "key": "character" - }, - { - "name": "评分排序", - "value": [ - { - "v": "time", - "n": "时间排序" - }, - { - "v": "hits", - "n": "人气排序" - }, - { - "v": "score", - "n": "评分排序" - } - ], - "key": "order" - } - ], - "25": [ - { - "name": "时间", - "value": [ - { - "v": "2024", - "n": "2024" - }, - { - "v": "2023", - "n": "2023" - }, - { - "v": "2022", - "n": "2022" - }, - { - "v": "2021", - "n": "2021" - }, - { - "v": "2020", - "n": "2020" - }, - { - "v": "2019", - "n": "2019" - }, - { - "v": "2018", - "n": "2018" - }, - { - "v": "2017", - "n": "2017" - }, - { - "v": "2016", - "n": "2016" - }, - { - "v": "2015", - "n": "2015" - }, - { - "v": "2014", - "n": "2014" - }, - { - "v": "2013", - "n": "2013" - }, - { - "v": "2012", - "n": "2012" - }, - { - "v": "2011", - "n": "2011" - }, - { - "v": "2010", - "n": "2010" - } - ], - "key": "year" - }, - { - "name": "字母查找", - "value": [ - { - "v": "A", - "n": "A" - }, - { - "v": "B", - "n": "B" - }, - { - "v": "C", - "n": "C" - }, - { - "v": "D", - "n": "D" - }, - { - "v": "E", - "n": "E" - }, - { - "v": "F", - "n": "F" - }, - { - "v": "G", - "n": "G" - }, - { - "v": "H", - "n": "H" - }, - { - "v": "I", - "n": "I" - }, - { - "v": "J", - "n": "J" - }, - { - "v": "K", - "n": "K" - }, - { - "v": "L", - "n": "L" - }, - { - "v": "M", - "n": "M" - }, - { - "v": "N", - "n": "N" - }, - { - "v": "O", - "n": "O" - }, - { - "v": "P", - "n": "P" - }, - { - "v": "Q", - "n": "Q" - }, - { - "v": "R", - "n": "R" - }, - { - "v": "S", - "n": "S" - }, - { - "v": "T", - "n": "T" - }, - { - "v": "U", - "n": "U" - }, - { - "v": "V", - "n": "V" - }, - { - "v": "W", - "n": "W" - }, - { - "v": "X", - "n": "X" - }, - { - "v": "Y", - "n": "Y" - }, - { - "v": "Z", - "n": "Z" - }, - { - "v": "0-9", - "n": "0-9" - } - ], - "key": "character" - }, - { - "name": "评分排序", - "value": [ - { - "v": "time", - "n": "时间排序" - }, - { - "v": "hits", - "n": "人气排序" - }, - { - "v": "score", - "n": "评分排序" - } - ], - "key": "order" - } - ], - "4": [ - { - "name": "时间", - "value": [ - { - "v": "2024", - "n": "2024" - }, - { - "v": "2023", - "n": "2023" - }, - { - "v": "2022", - "n": "2022" - }, - { - "v": "2021", - "n": "2021" - }, - { - "v": "2020", - "n": "2020" - }, - { - "v": "2019", - "n": "2019" - }, - { - "v": "2018", - "n": "2018" - }, - { - "v": "2017", - "n": "2017" - }, - { - "v": "2016", - "n": "2016" - }, - { - "v": "2015", - "n": "2015" - }, - { - "v": "2014", - "n": "2014" - }, - { - "v": "2013", - "n": "2013" - }, - { - "v": "2012", - "n": "2012" - }, - { - "v": "2011", - "n": "2011" - }, - { - "v": "2010", - "n": "2010" - } - ], - "key": "year" - }, - { - "name": "字母查找", - "value": [ - { - "v": "A", - "n": "A" - }, - { - "v": "B", - "n": "B" - }, - { - "v": "C", - "n": "C" - }, - { - "v": "D", - "n": "D" - }, - { - "v": "E", - "n": "E" - }, - { - "v": "F", - "n": "F" - }, - { - "v": "G", - "n": "G" - }, - { - "v": "H", - "n": "H" - }, - { - "v": "I", - "n": "I" - }, - { - "v": "J", - "n": "J" - }, - { - "v": "K", - "n": "K" - }, - { - "v": "L", - "n": "L" - }, - { - "v": "M", - "n": "M" - }, - { - "v": "N", - "n": "N" - }, - { - "v": "O", - "n": "O" - }, - { - "v": "P", - "n": "P" - }, - { - "v": "Q", - "n": "Q" - }, - { - "v": "R", - "n": "R" - }, - { - "v": "S", - "n": "S" - }, - { - "v": "T", - "n": "T" - }, - { - "v": "U", - "n": "U" - }, - { - "v": "V", - "n": "V" - }, - { - "v": "W", - "n": "W" - }, - { - "v": "X", - "n": "X" - }, - { - "v": "Y", - "n": "Y" - }, - { - "v": "Z", - "n": "Z" - }, - { - "v": "0-9", - "n": "0-9" - } - ], - "key": "character" - }, - { - "name": "评分排序", - "value": [ - { - "v": "time", - "n": "时间排序" - }, - { - "v": "hits", - "n": "人气排序" - }, - { - "v": "score", - "n": "评分排序" - } - ], - "key": "order" - } - ] - } -} \ No newline at end of file diff --git a/潇洒/json/初中课堂.json b/潇洒/json/初中课堂.json deleted file mode 100644 index 8e89f18..0000000 --- a/潇洒/json/初中课堂.json +++ /dev/null @@ -1,1398 +0,0 @@ -{ - "class": [ - { - "type_name": "7年级语文", - "type_id": "7年级语文" - }, - { - "type_name": "7年级数学", - "type_id": "7年级数学" - }, - { - "type_name": "7年级英语", - "type_id": "7年级英语" - }, - { - "type_name": "7年级历史", - "type_id": "7年级历史" - }, - { - "type_name": "7年级地理", - "type_id": "7年级地理" - }, - { - "type_name": "7年级生物", - "type_id": "7年级生物" - }, - { - "type_name": "7年级物理", - "type_id": "7年级物理" - }, - { - "type_name": "7年级化学", - "type_id": "7年级化学" - }, - { - "type_name": "8年级语文", - "type_id": "8年级语文" - }, - { - "type_name": "8年级数学", - "type_id": "8年级数学" - }, - { - "type_name": "8年级英语", - "type_id": "8年级英语" - }, - { - "type_name": "8年级历史", - "type_id": "8年级历史" - }, - { - "type_name": "8年级地理", - "type_id": "8年级地理" - }, - { - "type_name": "8年级生物", - "type_id": "8年级生物" - }, - { - "type_name": "8年级物理", - "type_id": "8年级物理" - }, - { - "type_name": "8年级化学", - "type_id": "8年级化学" - }, - { - "type_name": "9年级语文", - "type_id": "9年级语文" - }, - { - "type_name": "9年级数学", - "type_id": "9年级数学" - }, - { - "type_name": "9年级英语", - "type_id": "9年级英语" - }, - { - "type_name": "9年级历史", - "type_id": "9年级历史" - }, - { - "type_name": "9年级地理", - "type_id": "9年级地理" - }, - { - "type_name": "9年级生物", - "type_id": "9年级生物" - }, - { - "type_name": "9年级物理", - "type_id": "9年级物理" - }, - { - "type_name": "9年级化学", - "type_id": "9年级化学" - } - ], - "filters": { - "7年级语文": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版7年级语文" - }, - { - "n": "人教版", - "v": "人教版7年级语文" - }, - { - "n": "北师大版", - "v": "北师大版7年级语文" - }, - { - "n": "苏教版", - "v": "苏教版7年级语文" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "7年级英语": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版7年级英语" - }, - { - "n": "人教版", - "v": "人教版7年级英语" - }, - { - "n": "北师大版", - "v": "北师大版7年级英语" - }, - { - "n": "苏教版", - "v": "苏教版7年级英语" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "7年级数学": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版7年级数学" - }, - { - "n": "人教版", - "v": "人教版7年级数学" - }, - { - "n": "北师大版", - "v": "北师大版7年级数学" - }, - { - "n": "苏教版", - "v": "苏教版7年级数学" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "7年级化学": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版7年级化学" - }, - { - "n": "人教版", - "v": "人教版7年级化学" - }, - { - "n": "北师大版", - "v": "北师大版7年级化学" - }, - { - "n": "苏教版", - "v": "苏教版7年级化学" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "7年级物理": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版7年级物理" - }, - { - "n": "人教版", - "v": "人教版7年级物理" - }, - { - "n": "北师大版", - "v": "北师大版7年级物理" - }, - { - "n": "苏教版", - "v": "苏教版7年级物理" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "7年级生物": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版7年级生物" - }, - { - "n": "人教版", - "v": "人教版7年级生物" - }, - { - "n": "北师大版", - "v": "北师大版7年级生物" - }, - { - "n": "苏教版", - "v": "苏教版7年级生物" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "7年级历史": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版7年级历史" - }, - { - "n": "人教版", - "v": "人教版7年级历史" - }, - { - "n": "北师大版", - "v": "北师大版7年级历史" - }, - { - "n": "苏教版", - "v": "苏教版7年级历史" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "7年级地理": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版7年级地理" - }, - { - "n": "人教版", - "v": "人教版7年级地理" - }, - { - "n": "北师大版", - "v": "北师大版7年级地理" - }, - { - "n": "苏教版", - "v": "苏教版7年级地理" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "8年级语文": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版8年级语文" - }, - { - "n": "人教版", - "v": "人教版8年级语文" - }, - { - "n": "北师大版", - "v": "北师大版8年级语文" - }, - { - "n": "苏教版", - "v": "苏教版8年级语文" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "8年级英语": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版8年级英语" - }, - { - "n": "人教版", - "v": "人教版8年级英语" - }, - { - "n": "北师大版", - "v": "北师大版8年级英语" - }, - { - "n": "苏教版", - "v": "苏教版8年级英语" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "8年级数学": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版8年级数学" - }, - { - "n": "人教版", - "v": "人教版8年级数学" - }, - { - "n": "北师大版", - "v": "北师大版8年级数学" - }, - { - "n": "苏教版", - "v": "苏教版8年级数学" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "8年级化学": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版8年级化学" - }, - { - "n": "人教版", - "v": "人教版8年级化学" - }, - { - "n": "北师大版", - "v": "北师大版8年级化学" - }, - { - "n": "苏教版", - "v": "苏教版8年级化学" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "8年级物理": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版8年级物理" - }, - { - "n": "人教版", - "v": "人教版8年级物理" - }, - { - "n": "北师大版", - "v": "北师大版8年级物理" - }, - { - "n": "苏教版", - "v": "苏教版8年级物理" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "8年级生物": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版8年级生物" - }, - { - "n": "人教版", - "v": "人教版8年级生物" - }, - { - "n": "北师大版", - "v": "北师大版8年级生物" - }, - { - "n": "苏教版", - "v": "苏教版8年级生物" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "8年级历史": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版8年级历史" - }, - { - "n": "人教版", - "v": "人教版8年级历史" - }, - { - "n": "北师大版", - "v": "北师大版8年级历史" - }, - { - "n": "苏教版", - "v": "苏教版8年级历史" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "8年级地理": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版8年级地理" - }, - { - "n": "人教版", - "v": "人教版8年级地理" - }, - { - "n": "北师大版", - "v": "北师大版8年级地理" - }, - { - "n": "苏教版", - "v": "苏教版8年级地理" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "9年级语文": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版9年级语文" - }, - { - "n": "人教版", - "v": "人教版9年级语文" - }, - { - "n": "北师大版", - "v": "北师大版9年级语文" - }, - { - "n": "苏教版", - "v": "苏教版9年级语文" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "9年级英语": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版9年级英语" - }, - { - "n": "人教版", - "v": "人教版9年级英语" - }, - { - "n": "北师大版", - "v": "北师大版9年级英语" - }, - { - "n": "苏教版", - "v": "苏教版9年级英语" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "9年级数学": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版9年级数学" - }, - { - "n": "人教版", - "v": "人教版9年级数学" - }, - { - "n": "北师大版", - "v": "北师大版9年级数学" - }, - { - "n": "苏教版", - "v": "苏教版9年级数学" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "9年级化学": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版9年级化学" - }, - { - "n": "人教版", - "v": "人教版9年级化学" - }, - { - "n": "北师大版", - "v": "北师大版9年级化学" - }, - { - "n": "苏教版", - "v": "苏教版9年级化学" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "9年级物理": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版9年级物理" - }, - { - "n": "人教版", - "v": "人教版9年级物理" - }, - { - "n": "北师大版", - "v": "北师大版9年级物理" - }, - { - "n": "苏教版", - "v": "苏教版9年级物理" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "9年级生物": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版9年级生物" - }, - { - "n": "人教版", - "v": "人教版9年级生物" - }, - { - "n": "北师大版", - "v": "北师大版9年级生物" - }, - { - "n": "苏教版", - "v": "苏教版9年级生物" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "9年级历史": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版9年级历史" - }, - { - "n": "人教版", - "v": "人教版9年级历史" - }, - { - "n": "北师大版", - "v": "北师大版9年级历史" - }, - { - "n": "苏教版", - "v": "苏教版9年级历史" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "9年级地理": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版9年级地理" - }, - { - "n": "人教版", - "v": "人教版9年级地理" - }, - { - "n": "北师大版", - "v": "北师大版9年级地理" - }, - { - "n": "苏教版", - "v": "苏教版9年级地理" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ] - } -} \ No newline at end of file diff --git a/潇洒/json/哔哩合集.json b/潇洒/json/哔哩合集.json deleted file mode 100644 index b3aec1f..0000000 --- a/潇洒/json/哔哩合集.json +++ /dev/null @@ -1,5310 +0,0 @@ -{ - "class": [ - { - "type_name": "沙雕动漫", - "type_id": "一口气沙雕动漫" - }, - { - "type_name": "纪录片", - "type_id": "纪录片超清" - }, - { - "type_name": "演唱会", - "type_id": "演唱会超清" - }, - { - "type_name": "美食", - "type_id": "美食超清" - }, - { - "type_name": "食谱", - "type_id": "食谱" - }, - { - "type_name": "体育", - "type_id": "体育超清" - }, - { - "type_name": "球星", - "type_id": "球星" - }, - { - "type_name": "旅游", - "type_id": "旅游" - }, - { - "type_name": "风景", - "type_id": "风景4K" - }, - { - "type_name": "说案", - "type_id": "说案" - }, - { - "type_name": "知名UP主", - "type_id": "知名UP主" - }, - { - "type_name": "探索发现", - "type_id": "探索发现超清" - }, - { - "type_name": "鬼畜", - "type_id": "鬼畜" - }, - { - "type_name": "搞笑", - "type_id": "搞笑超清" - }, - { - "type_name": "儿童", - "type_id": "儿童超清" - }, - { - "type_name": "动物世界", - "type_id": "动物世界超清" - }, - { - "type_name": "相声小品", - "type_id": "相声小品超清" - }, - { - "type_name": "戏曲", - "type_id": "戏曲" - }, - { - "type_name": "解说", - "type_id": "解说" - }, - { - "type_name": "演讲", - "type_id": "演讲" - }, - { - "type_name": "小姐姐", - "type_id": "小姐姐超清" - }, - { - "type_name": "荒野求生", - "type_id": "荒野求生超清" - }, - { - "type_name": "健身", - "type_id": "健身" - }, - { - "type_name": "帕梅拉", - "type_id": "帕梅拉" - }, - { - "type_name": "太极拳", - "type_id": "太极拳" - }, - { - "type_name": "广场舞", - "type_id": "广场舞" - }, - { - "type_name": "舞蹈", - "type_id": "舞蹈" - }, - { - "type_name": "音乐", - "type_id": "音乐" - }, - { - "type_name": "歌曲", - "type_id": "歌曲" - }, - { - "type_name": "MV", - "type_id": "MV4K" - }, - { - "type_name": "舞曲", - "type_id": "舞曲超清" - }, - { - "type_name": "4K", - "type_id": "4K" - }, - { - "type_name": "电影", - "type_id": "电影" - }, - { - "type_name": "电视剧", - "type_id": "电视剧" - }, - { - "type_name": "白噪音", - "type_id": "白噪音超清" - }, - { - "type_name": "考公考证", - "type_id": "考公考证" - }, - { - "type_name": "平面设计教学", - "type_id": "平面设计教学" - }, - { - "type_name": "软件教程", - "type_id": "软件教程" - }, - { - "type_name": "Windows", - "type_id": "Windows" - } - ], - "filters": { - "考公考证": [ - { - "key": "order", - "name": "排序", - "value": [ - { - "n": "综合排序", - "v": "0" - }, - { - "n": "最多点击", - "v": "click" - }, - { - "n": "最新发布", - "v": "pubdate" - }, - { - "n": "最多弹幕", - "v": "dm" - }, - { - "n": "最多收藏", - "v": "stow" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "演唱会超清": [ - { - "key": "order", - "name": "排序", - "value": [ - { - "n": "综合排序", - "v": "0" - }, - { - "n": "最多点击", - "v": "click" - }, - { - "n": "最新发布", - "v": "pubdate" - }, - { - "n": "最多弹幕", - "v": "dm" - }, - { - "n": "最多收藏", - "v": "stow" - } - ] - }, - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "演唱会超清" - }, - { - "n": "A阿杜", - "v": "阿杜演唱会超清" - }, - { - "n": "A阿黛尔", - "v": "阿黛尔演唱会超清" - }, - { - "n": "BBeyond", - "v": "Beyond演唱会超清" - }, - { - "n": "BBy2", - "v": "By2演唱会超清" - }, - { - "n": "BBIGBANG", - "v": "BIGBANG演唱会超清" - }, - { - "n": "B布兰妮", - "v": "布兰妮演唱会超清" - }, - { - "n": "B坂井泉水", - "v": "坂井泉水演唱会超清" - }, - { - "n": "C陈奕迅", - "v": "陈奕迅演唱会超清" - }, - { - "n": "C蔡依林", - "v": "蔡依林演唱会超清" - }, - { - "n": "C初音未来", - "v": "初音未来演唱会超清" - }, - { - "n": "C蔡健雅", - "v": "蔡健雅演唱会超清" - }, - { - "n": "C陈小春", - "v": "陈小春演唱会超清" - }, - { - "n": "C草蜢", - "v": "草蜢演唱会超清" - }, - { - "n": "C陈慧娴", - "v": "陈慧娴演唱会超清" - }, - { - "n": "C崔健", - "v": "崔健演唱会超清" - }, - { - "n": "C仓木麻衣", - "v": "仓木麻衣演唱会超清" - }, - { - "n": "D戴荃", - "v": "戴荃演唱会超清" - }, - { - "n": "D动力火车", - "v": "动力火车演唱会超清" - }, - { - "n": "D邓丽君", - "v": "邓丽君演唱会超清" - }, - { - "n": "D丁当", - "v": "丁当演唱会超清" - }, - { - "n": "D刀郎", - "v": "刀郎演唱会超清" - }, - { - "n": "D邓紫棋", - "v": "邓紫棋演唱会超清" - }, - { - "n": "D戴佩妮", - "v": "戴佩妮演唱会超清" - }, - { - "n": "D邓丽君", - "v": "邓丽君演唱会超清" - }, - { - "n": "F飞儿乐队", - "v": "飞儿乐队演唱会超清" - }, - { - "n": "F费玉清", - "v": "费玉清演唱会超清" - }, - { - "n": "F费翔", - "v": "费翔演唱会超清" - }, - { - "n": "F方大同", - "v": "方大同演唱会超清" - }, - { - "n": "F房东的猫", - "v": "房东的猫演唱会超清" - }, - { - "n": "F凤飞飞", - "v": "凤飞飞演唱会超清" - }, - { - "n": "F凤凰传奇", - "v": "凤凰传奇演唱会超清" - }, - { - "n": "G郭采洁", - "v": "郭采洁演唱会超清" - }, - { - "n": "G光良", - "v": "光良演唱会超清" - }, - { - "n": "G郭静", - "v": "郭静演唱会超清" - }, - { - "n": "G郭富城", - "v": "郭富城演唱会超清" - }, - { - "n": "H胡彦斌", - "v": "胡彦斌演唱会超清" - }, - { - "n": "H胡夏", - "v": "胡夏演唱会超清" - }, - { - "n": "H韩红", - "v": "韩红演唱会超清" - }, - { - "n": "H黄品源", - "v": "黄品源演唱会超清" - }, - { - "n": "H黄小琥", - "v": "黄小琥演唱会超清" - }, - { - "n": "H花儿乐队", - "v": "花儿乐队演唱会超清" - }, - { - "n": "H黄家强", - "v": "黄家强演唱会超清" - }, - { - "n": "H后街男孩", - "v": "后街男孩演唱会超清" - }, - { - "n": "J经典老歌", - "v": "经典老歌演唱会超清" - }, - { - "n": "J贾斯丁比伯", - "v": "贾斯丁比伯演唱会超清" - }, - { - "n": "J金池", - "v": "金池演唱会超清" - }, - { - "n": "J金志文", - "v": "金志文演唱会超清" - }, - { - "n": "J焦迈奇", - "v": "焦迈奇演唱会超清" - }, - { - "n": "K筷子兄弟", - "v": "筷子兄弟演唱会超清" - }, - { - "n": "L李玟", - "v": "李玟演唱会超清" - }, - { - "n": "L林忆莲", - "v": "林忆莲演唱会超清" - }, - { - "n": "L李克勤", - "v": "李克勤演唱会超清" - }, - { - "n": "L刘宪华", - "v": "刘宪华演唱会超清" - }, - { - "n": "L李圣杰", - "v": "李圣杰演唱会超清" - }, - { - "n": "L林宥嘉", - "v": "林宥嘉演唱会超清" - }, - { - "n": "L梁静茹", - "v": "梁静茹演唱会超清" - }, - { - "n": "L李健", - "v": "李健演唱会超清" - }, - { - "n": "L林俊杰", - "v": "林俊杰演唱会超清" - }, - { - "n": "L李玉刚", - "v": "李玉刚演唱会超清" - }, - { - "n": "L林志炫", - "v": "林志炫演唱会超清" - }, - { - "n": "L李荣浩", - "v": "李荣浩演唱会超清" - }, - { - "n": "L李宇春", - "v": "李宇春演唱会超清" - }, - { - "n": "L洛天依", - "v": "洛天依演唱会超清" - }, - { - "n": "L林子祥", - "v": "林子祥演唱会超清" - }, - { - "n": "L李宗盛", - "v": "李宗盛演唱会超清" - }, - { - "n": "L黎明", - "v": "黎明演唱会超清" - }, - { - "n": "L刘德华", - "v": "刘德华演唱会超清" - }, - { - "n": "L罗大佑", - "v": "罗大佑演唱会超清" - }, - { - "n": "L林肯公园", - "v": "林肯公园演唱会超清" - }, - { - "n": "LLadyGaga", - "v": "LadyGaga演唱会超清" - }, - { - "n": "L旅行团乐队", - "v": "旅行团乐队演唱会超清" - }, - { - "n": "M莫文蔚", - "v": "莫文蔚演唱会超清" - }, - { - "n": "M毛不易", - "v": "毛不易演唱会超清" - }, - { - "n": "M梅艳芳", - "v": "梅艳芳演唱会超清" - }, - { - "n": "M迈克尔杰克逊", - "v": "迈克尔杰克逊演唱会超清" - }, - { - "n": "N南拳妈妈", - "v": "南拳妈妈演唱会超清" - }, - { - "n": "P朴树", - "v": "朴树演唱会超清" - }, - { - "n": "Q齐秦", - "v": "齐秦演唱会超清" - }, - { - "n": "Q青鸟飞鱼", - "v": "青鸟飞鱼演唱会超清" - }, - { - "n": "R容祖儿", - "v": "容祖儿演唱会超清" - }, - { - "n": "R任贤齐", - "v": "任贤齐演唱会超清" - }, - { - "n": "S水木年华", - "v": "水木年华演唱会超清" - }, - { - "n": "S孙燕姿", - "v": "孙燕姿演唱会超清" - }, - { - "n": "S苏打绿", - "v": "苏打绿演唱会超清" - }, - { - "n": "SSHE", - "v": "SHE演唱会超清" - }, - { - "n": "S孙楠", - "v": "孙楠演唱会超清" - }, - { - "n": "T陶喆", - "v": "陶喆演唱会超清" - }, - { - "n": "T谭咏麟", - "v": "谭咏麟演唱会超清" - }, - { - "n": "T田馥甄", - "v": "田馥甄演唱会超清" - }, - { - "n": "T谭维维", - "v": "谭维维演唱会超清" - }, - { - "n": "T逃跑计划", - "v": "逃跑计划演唱会超清" - }, - { - "n": "T田震", - "v": "田震演唱会超清" - }, - { - "n": "T谭晶", - "v": "谭晶演唱会超清" - }, - { - "n": "T屠洪刚", - "v": "屠洪刚演唱会超清" - }, - { - "n": "T泰勒·斯威夫特", - "v": "泰勒·斯威夫特演唱会超清" - }, - { - "n": "W王力宏", - "v": "王力宏演唱会超清" - }, - { - "n": "W王杰", - "v": "王杰演唱会超清" - }, - { - "n": "W吴克群", - "v": "吴克群演唱会超清" - }, - { - "n": "W王心凌", - "v": "王心凌演唱会超清" - }, - { - "n": "W王靖雯", - "v": "好声音王靖雯演唱会超清" - }, - { - "n": "W汪峰", - "v": "汪峰演唱会超清" - }, - { - "n": "W伍佰", - "v": "伍佰演唱会超清" - }, - { - "n": "W王菲", - "v": "王菲演唱会超清" - }, - { - "n": "W五月天", - "v": "五月天演唱会超清" - }, - { - "n": "W汪苏泷", - "v": "汪苏泷演唱会超清" - }, - { - "n": "X徐佳莹", - "v": "徐佳莹演唱会超清" - }, - { - "n": "X弦子", - "v": "弦子演唱会超清" - }, - { - "n": "X萧亚轩", - "v": "萧亚轩演唱会超清" - }, - { - "n": "X许巍", - "v": "许巍演唱会超清" - }, - { - "n": "X薛之谦", - "v": "薛之谦演唱会超清" - }, - { - "n": "X许嵩", - "v": "许嵩演唱会超清" - }, - { - "n": "X小虎队", - "v": "小虎队演唱会超清" - }, - { - "n": "X萧敬腾", - "v": "萧敬腾演唱会超清" - }, - { - "n": "X谢霆锋", - "v": "谢霆锋演唱会超清" - }, - { - "n": "X徐小凤", - "v": "徐小凤演唱会超清" - }, - { - "n": "X信乐队", - "v": "信乐队演唱会超清" - }, - { - "n": "Y夜愿乐队", - "v": "夜愿乐队演唱会超清" - }, - { - "n": "Y羽泉", - "v": "羽泉演唱会超清" - }, - { - "n": "Y郁可唯", - "v": "郁可唯演唱会超清" - }, - { - "n": "Y叶倩文", - "v": "叶倩文演唱会超清" - }, - { - "n": "Y杨坤", - "v": "杨坤演唱会超清" - }, - { - "n": "Y庾澄庆", - "v": "庾澄庆演唱会超清" - }, - { - "n": "Y尤长靖", - "v": "尤长靖演唱会超清" - }, - { - "n": "Y易烊千玺", - "v": "易烊千玺演唱会超清" - }, - { - "n": "Y袁娅维", - "v": "袁娅维演唱会超清" - }, - { - "n": "Y杨丞琳", - "v": "杨丞琳演唱会超清" - }, - { - "n": "Y杨千嬅", - "v": "杨千嬅演唱会超清" - }, - { - "n": "Y杨宗纬", - "v": "杨宗纬演唱会超清" - }, - { - "n": "Z郑秀文", - "v": "郑秀文演唱会超清" - }, - { - "n": "Z周杰伦", - "v": "周杰伦演唱会超清" - }, - { - "n": "Z张学友", - "v": "张学友演唱会超清" - }, - { - "n": "Z张信哲", - "v": "张信哲演唱会超清" - }, - { - "n": "Z张宇", - "v": "张宇演唱会超清" - }, - { - "n": "Z周华健", - "v": "周华健演唱会超清" - }, - { - "n": "Z张韶涵", - "v": "张韶涵演唱会超清" - }, - { - "n": "Z周深", - "v": "周深演唱会超清" - }, - { - "n": "Z纵贯线", - "v": "纵贯线演唱会超清" - }, - { - "n": "Z赵雷", - "v": "赵雷演唱会超清" - }, - { - "n": "Z周传雄", - "v": "周传雄演唱会超清" - }, - { - "n": "Z张国荣", - "v": "张国荣演唱会超清" - }, - { - "n": "Z周慧敏", - "v": "周慧敏演唱会超清" - }, - { - "n": "Z张惠妹", - "v": "张惠妹演唱会超清" - }, - { - "n": "Z周笔畅", - "v": "周笔畅演唱会超清" - }, - { - "n": "Z郑中基", - "v": "郑中基演唱会超清" - }, - { - "n": "Z张艺兴", - "v": "张艺兴演唱会超清" - }, - { - "n": "Z张震岳", - "v": "张震岳演唱会超清" - }, - { - "n": "Z张雨生", - "v": "张雨生演唱会超清" - }, - { - "n": "Z郑智化", - "v": "郑智化演唱会超清" - }, - { - "n": "Z卓依婷", - "v": "卓依婷演唱会超清" - }, - { - "n": "Z中岛美雪", - "v": "中岛美雪演唱会超清" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "探索发现超清": [ - { - "key": "order", - "name": "排序", - "value": [ - { - "n": "综合排序", - "v": "0" - }, - { - "n": "最多点击", - "v": "click" - }, - { - "n": "最新发布", - "v": "pubdate" - }, - { - "n": "最多弹幕", - "v": "dm" - }, - { - "n": "最多收藏", - "v": "stow" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "电影": [ - { - "key": "order", - "name": "排序", - "value": [ - { - "n": "综合排序", - "v": "0" - }, - { - "n": "最多点击", - "v": "click" - }, - { - "n": "最新发布", - "v": "pubdate" - }, - { - "n": "最多弹幕", - "v": "dm" - }, - { - "n": "最多收藏", - "v": "stow" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "鬼畜": [ - { - "key": "order", - "name": "排序", - "value": [ - { - "n": "综合排序", - "v": "0" - }, - { - "n": "最多点击", - "v": "click" - }, - { - "n": "最新发布", - "v": "pubdate" - }, - { - "n": "最多弹幕", - "v": "dm" - }, - { - "n": "最多收藏", - "v": "stow" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "一口气沙雕动漫": [ - { - "key": "order", - "name": "排序", - "value": [ - { - "n": "综合排序", - "v": "0" - }, - { - "n": "最多点击", - "v": "click" - }, - { - "n": "最新发布", - "v": "pubdate" - }, - { - "n": "最多弹幕", - "v": "dm" - }, - { - "n": "最多收藏", - "v": "stow" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "说案": [ - { - "key": "order", - "name": "排序", - "value": [ - { - "n": "综合排序", - "v": "0" - }, - { - "n": "最多点击", - "v": "click" - }, - { - "n": "最新发布", - "v": "pubdate" - }, - { - "n": "最多弹幕", - "v": "dm" - }, - { - "n": "最多收藏", - "v": "stow" - } - ] - }, - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "说案" - }, - { - "n": "汤圆", - "v": "汤圆说案" - }, - { - "n": "唐唐", - "v": "唐唐说案" - }, - { - "n": "罗翔", - "v": "罗翔说刑法" - }, - { - "n": "何家弘", - "v": "何家弘说案" - }, - { - "n": "韩诺", - "v": "韩诺说案" - }, - { - "n": "老V", - "v": "老V说案" - }, - { - "n": "禁播档案‼️", - "v": "禁播档案" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "演讲": [ - { - "key": "order", - "name": "排序", - "value": [ - { - "n": "综合排序", - "v": "0" - }, - { - "n": "最多点击", - "v": "click" - }, - { - "n": "最新发布", - "v": "pubdate" - }, - { - "n": "最多弹幕", - "v": "dm" - }, - { - "n": "最多收藏", - "v": "stow" - } - ] - }, - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "全部演讲4K" - }, - { - "n": "A艾跃进", - "v": "艾跃进演讲4K" - }, - { - "n": "C超级演说家", - "v": "超级演说家4K" - }, - { - "n": "D电影", - "v": "电影演讲4K" - }, - { - "n": "D典籍里的中国", - "v": "典籍里的中国4K" - }, - { - "n": "G感动中国", - "v": "感动中国4K" - }, - { - "n": "G郭继承", - "v": "郭继承演讲4K" - }, - { - "n": "H华春莹", - "v": "华春莹演讲4K" - }, - { - "n": "L雷军", - "v": "雷军演讲4K" - }, - { - "n": "L罗翔", - "v": "罗翔演讲4K" - }, - { - "n": "R任正非", - "v": "任正非演讲4K" - }, - { - "n": "TED", - "v": "TED演讲4K" - }, - { - "n": "W汪文斌", - "v": "汪文斌演讲4K" - }, - { - "n": "Y一刻", - "v": "一刻演讲4K" - }, - { - "n": "Z赵立坚", - "v": "赵立坚演讲4K" - }, - { - "n": "Z郑强", - "v": "郑强演讲4K" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "解说": [ - { - "key": "order", - "name": "排序", - "value": [ - { - "n": "综合排序", - "v": "0" - }, - { - "n": "最多点击", - "v": "click" - }, - { - "n": "最新发布", - "v": "pubdate" - }, - { - "n": "最多弹幕", - "v": "dm" - }, - { - "n": "最多收藏", - "v": "stow" - } - ] - }, - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "解说" - }, - { - "n": "电影", - "v": "电影解说" - }, - { - "n": "电视", - "v": "电视解说" - }, - { - "n": "历史", - "v": "历史解说" - }, - { - "n": "动漫", - "v": "动漫解说" - }, - { - "n": "小说", - "v": "小说解说" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "风景4K": [ - { - "key": "order", - "name": "排序", - "value": [ - { - "n": "综合排序", - "v": "0" - }, - { - "n": "最多点击", - "v": "click" - }, - { - "n": "最新发布", - "v": "pubdate" - }, - { - "n": "最多弹幕", - "v": "dm" - }, - { - "n": "最多收藏", - "v": "stow" - } - ] - }, - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "风景4K" - }, - { - "n": "A澳门", - "v": "澳门风景4K" - }, - { - "n": "A安徽", - "v": "安徽风景4K" - }, - { - "n": "B布达拉宫", - "v": "布达拉宫风景4K" - }, - { - "n": "B北京", - "v": "北京风景4K" - }, - { - "n": "C重庆", - "v": "重庆风景4K" - }, - { - "n": "C草原", - "v": "草原风景4K" - }, - { - "n": "D大海", - "v": "大海风景4K" - }, - { - "n": "F福建", - "v": "福建风景4K" - }, - { - "n": "G广东", - "v": "广东风景4K" - }, - { - "n": "G广西", - "v": "广西风景4K" - }, - { - "n": "G贵州", - "v": "贵州风景4K" - }, - { - "n": "G甘肃", - "v": "甘肃风景4K" - }, - { - "n": "H海南", - "v": "海南风景4K" - }, - { - "n": "H河北", - "v": "河北风景4K" - }, - { - "n": "H河南", - "v": "河南风景4K" - }, - { - "n": "H湖北", - "v": "湖北风景4K" - }, - { - "n": "H湖南", - "v": "湖南风景4K" - }, - { - "n": "H黑龙江", - "v": "黑龙江风景4K" - }, - { - "n": "J吉林", - "v": "吉林风景4K" - }, - { - "n": "J江苏", - "v": "江苏风景4K" - }, - { - "n": "J江西", - "v": "江西风景4K" - }, - { - "n": "L辽宁", - "v": "辽宁风景4K" - }, - { - "n": "M民宿", - "v": "民宿风景4K" - }, - { - "n": "N内蒙古", - "v": "内蒙古风景4K" - }, - { - "n": "N宁夏", - "v": "宁夏风景4K" - }, - { - "n": "Q青海", - "v": "青海风景4K" - }, - { - "n": "S上海", - "v": "上海风景4K" - }, - { - "n": "S陕西", - "v": "陕西风景4K" - }, - { - "n": "S四川", - "v": "四川风景4K" - }, - { - "n": "S山西", - "v": "山西风景4K" - }, - { - "n": "S山东", - "v": "山东风景4K" - }, - { - "n": "T天津", - "v": "天津风景4K" - }, - { - "n": "T台湾", - "v": "台湾风景4K" - }, - { - "n": "T天空", - "v": "天空风景4K" - }, - { - "n": "X西湖", - "v": "西湖风景4K" - }, - { - "n": "X西藏", - "v": "西藏风景4K" - }, - { - "n": "X新疆", - "v": "新疆风景4K" - }, - { - "n": "X香港", - "v": "香港风景4K" - }, - { - "n": "Y云南", - "v": "云南风景4K" - }, - { - "n": "Z浙江", - "v": "浙江风景4K" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "MV4K": [ - { - "key": "order", - "name": "排序", - "value": [ - { - "n": "综合排序", - "v": "0" - }, - { - "n": "最多点击", - "v": "click" - }, - { - "n": "最新发布", - "v": "pubdate" - }, - { - "n": "最多弹幕", - "v": "dm" - }, - { - "n": "最多收藏", - "v": "stow" - } - ] - }, - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "MV4K" - }, - { - "n": "A阿杜", - "v": "阿杜MV4K" - }, - { - "n": "A阿黛尔", - "v": "阿黛尔MV4K" - }, - { - "n": "BBeyond", - "v": "BeyondMV4K" - }, - { - "n": "BBy2", - "v": "By2MV4K" - }, - { - "n": "BBIGBANG", - "v": "BIGBANGMV4K" - }, - { - "n": "B布兰妮", - "v": "布兰妮MV4K" - }, - { - "n": "C陈奕迅", - "v": "陈奕迅MV4K" - }, - { - "n": "C蔡依林", - "v": "蔡依林MV4K" - }, - { - "n": "C初音未来", - "v": "初音未来MV4K" - }, - { - "n": "C蔡健雅", - "v": "蔡健雅MV4K" - }, - { - "n": "C陈小春", - "v": "陈小春MV4K" - }, - { - "n": "C草蜢", - "v": "草蜢MV4K" - }, - { - "n": "C陈慧娴", - "v": "陈慧娴MV4K" - }, - { - "n": "C崔健", - "v": "崔健MV4K" - }, - { - "n": "C仓木麻衣", - "v": "仓木麻衣MV4K" - }, - { - "n": "D戴荃", - "v": "戴荃MV4K" - }, - { - "n": "D动力火车", - "v": "动力火车MV4K" - }, - { - "n": "D邓丽君", - "v": "邓丽君MV4K" - }, - { - "n": "D丁当", - "v": "丁当MV4K" - }, - { - "n": "D刀郎", - "v": "刀郎MV4K" - }, - { - "n": "D邓紫棋", - "v": "邓紫棋MV4K" - }, - { - "n": "D戴佩妮", - "v": "戴佩妮MV4K" - }, - { - "n": "D邓丽君", - "v": "邓丽君MV4K" - }, - { - "n": "F飞儿乐队", - "v": "飞儿乐队MV4K" - }, - { - "n": "F费玉清", - "v": "费玉清MV4K" - }, - { - "n": "F费翔", - "v": "费翔MV4K" - }, - { - "n": "F方大同", - "v": "方大同MV4K" - }, - { - "n": "F房东的猫", - "v": "房东的猫MV4K" - }, - { - "n": "F凤飞飞", - "v": "凤飞飞MV4K" - }, - { - "n": "F凤凰传奇", - "v": "凤凰传奇MV4K" - }, - { - "n": "G古风歌曲", - "v": "古风歌曲4K" - }, - { - "n": "G国乐大典", - "v": "国乐大典4K" - }, - { - "n": "G郭采洁", - "v": "郭采洁MV4K" - }, - { - "n": "G光良", - "v": "光良MV4K" - }, - { - "n": "G郭静", - "v": "郭静MV4K" - }, - { - "n": "G郭富城", - "v": "郭富城MV4K" - }, - { - "n": "H胡彦斌", - "v": "胡彦斌MV4K" - }, - { - "n": "H胡夏", - "v": "胡夏MV4K" - }, - { - "n": "H韩红", - "v": "韩红MV4K" - }, - { - "n": "H黄品源", - "v": "黄品源MV4K" - }, - { - "n": "H黄小琥", - "v": "黄小琥MV4K" - }, - { - "n": "H花儿乐队", - "v": "花儿乐队MV4K" - }, - { - "n": "H黄家强", - "v": "黄家强MV4K" - }, - { - "n": "H后街男孩", - "v": "后街男孩MV4K" - }, - { - "n": "J经典老歌", - "v": "经典老歌4K" - }, - { - "n": "J贾斯丁比伯", - "v": "贾斯丁比伯MV4K" - }, - { - "n": "J金池", - "v": "金池MV4K" - }, - { - "n": "J金志文", - "v": "金志文MV4K" - }, - { - "n": "J焦迈奇", - "v": "焦迈奇MV4K" - }, - { - "n": "K筷子兄弟", - "v": "筷子兄弟MV4K" - }, - { - "n": "L李玟", - "v": "李玟MV4K" - }, - { - "n": "L林忆莲", - "v": "林忆莲MV4K" - }, - { - "n": "L李克勤", - "v": "李克勤MV4K" - }, - { - "n": "L刘宪华", - "v": "刘宪华MV4K" - }, - { - "n": "L李圣杰", - "v": "李圣杰MV4K" - }, - { - "n": "L林宥嘉", - "v": "林宥嘉MV4K" - }, - { - "n": "L梁静茹", - "v": "梁静茹MV4K" - }, - { - "n": "L李健", - "v": "李健MV4K" - }, - { - "n": "L林俊杰", - "v": "林俊杰MV4K" - }, - { - "n": "L李玉刚", - "v": "李玉刚MV4K" - }, - { - "n": "L林志炫", - "v": "林志炫MV4K" - }, - { - "n": "L李荣浩", - "v": "李荣浩MV4K" - }, - { - "n": "L李宇春", - "v": "李宇春MV4K" - }, - { - "n": "L洛天依", - "v": "洛天依MV4K" - }, - { - "n": "L林子祥", - "v": "林子祥MV4K" - }, - { - "n": "L李宗盛", - "v": "李宗盛MV4K" - }, - { - "n": "L黎明", - "v": "黎明MV4K" - }, - { - "n": "L刘德华", - "v": "刘德华MV4K" - }, - { - "n": "L罗大佑", - "v": "罗大佑MV4K" - }, - { - "n": "L林肯公园", - "v": "林肯公园MV4K" - }, - { - "n": "LLadyGaga", - "v": "LadyGagaMV4K" - }, - { - "n": "L旅行团乐队", - "v": "旅行团乐队MV4K" - }, - { - "n": "M莫文蔚", - "v": "莫文蔚MV4K" - }, - { - "n": "M毛不易", - "v": "毛不易MV4K" - }, - { - "n": "M梅艳芳", - "v": "梅艳芳MV4K" - }, - { - "n": "M迈克尔杰克逊", - "v": "迈克尔杰克逊MV4K" - }, - { - "n": "N南拳妈妈", - "v": "南拳妈妈MV4K" - }, - { - "n": "P朴树", - "v": "朴树MV4K" - }, - { - "n": "Q齐秦", - "v": "齐秦MV4K" - }, - { - "n": "Q青鸟飞鱼", - "v": "青鸟飞鱼MV4K" - }, - { - "n": "R容祖儿", - "v": "容祖儿MV4K" - }, - { - "n": "R热歌", - "v": "热歌MV4K" - }, - { - "n": "R任贤齐", - "v": "任贤齐MV4K" - }, - { - "n": "S水木年华", - "v": "水木年华MV4K" - }, - { - "n": "S孙燕姿", - "v": "孙燕姿MV4K" - }, - { - "n": "S苏打绿", - "v": "苏打绿MV4K" - }, - { - "n": "SSHE", - "v": "SHEMV4K" - }, - { - "n": "S孙楠", - "v": "孙楠MV4K" - }, - { - "n": "T陶喆", - "v": "陶喆MV4K" - }, - { - "n": "T谭咏麟", - "v": "谭咏麟MV4K" - }, - { - "n": "T田馥甄", - "v": "田馥甄MV4K" - }, - { - "n": "T谭维维", - "v": "谭维维MV4K" - }, - { - "n": "T逃跑计划", - "v": "逃跑计划MV4K" - }, - { - "n": "T田震", - "v": "田震MV4K" - }, - { - "n": "T谭晶", - "v": "谭晶MV4K" - }, - { - "n": "T屠洪刚", - "v": "屠洪刚MV4K" - }, - { - "n": "T泰勒·斯威夫特", - "v": "泰勒·斯威夫特MV4K" - }, - { - "n": "W王力宏", - "v": "王力宏MV4K" - }, - { - "n": "W王杰", - "v": "王杰MV4K" - }, - { - "n": "W吴克群", - "v": "吴克群MV4K" - }, - { - "n": "W王心凌", - "v": "王心凌MV4K" - }, - { - "n": "W汪峰", - "v": "汪峰MV4K" - }, - { - "n": "W伍佰", - "v": "伍佰MV4K" - }, - { - "n": "W王菲", - "v": "王菲MV4K" - }, - { - "n": "W五月天", - "v": "五月天MV4K" - }, - { - "n": "W汪苏泷", - "v": "汪苏泷MV4K" - }, - { - "n": "X徐佳莹", - "v": "徐佳莹MV4K" - }, - { - "n": "X弦子", - "v": "弦子MV4K" - }, - { - "n": "X萧亚轩", - "v": "萧亚轩MV4K" - }, - { - "n": "X许巍", - "v": "许巍MV4K" - }, - { - "n": "X薛之谦", - "v": "薛之谦MV4K" - }, - { - "n": "X许嵩", - "v": "许嵩MV4K" - }, - { - "n": "X小虎队", - "v": "小虎队MV4K" - }, - { - "n": "X萧敬腾", - "v": "萧敬腾MV4K" - }, - { - "n": "X谢霆锋", - "v": "谢霆锋MV4K" - }, - { - "n": "X徐小凤", - "v": "徐小凤MV4K" - }, - { - "n": "X信乐队", - "v": "信乐队MV4K" - }, - { - "n": "Y夜愿乐队", - "v": "夜愿乐队MV4K" - }, - { - "n": "Y原创音乐", - "v": "原创音乐MV4K" - }, - { - "n": "Y羽泉", - "v": "羽泉MV4K" - }, - { - "n": "Y粤语", - "v": "粤语MV4K" - }, - { - "n": "Y郁可唯", - "v": "郁可唯MV4K" - }, - { - "n": "Y叶倩文", - "v": "叶倩文MV4K" - }, - { - "n": "Y杨坤", - "v": "杨坤MV4K" - }, - { - "n": "Y庾澄庆", - "v": "庾澄庆MV4K" - }, - { - "n": "Y尤长靖", - "v": "尤长靖MV4K" - }, - { - "n": "Y易烊千玺", - "v": "易烊千玺MV4K" - }, - { - "n": "Y袁娅维", - "v": "袁娅维MV4K" - }, - { - "n": "Y杨丞琳", - "v": "杨丞琳MV4K" - }, - { - "n": "Y杨千嬅", - "v": "杨千嬅MV4K" - }, - { - "n": "Y杨宗纬", - "v": "杨宗纬MV4K" - }, - { - "n": "Z周杰伦", - "v": "周杰伦MV4K" - }, - { - "n": "Z张学友", - "v": "张学友MV4K" - }, - { - "n": "Z张信哲", - "v": "张信哲MV4K" - }, - { - "n": "Z张宇", - "v": "张宇MV4K" - }, - { - "n": "Z周华健", - "v": "周华健MV4K" - }, - { - "n": "Z张韶涵", - "v": "张韶涵MV4K" - }, - { - "n": "Z周深", - "v": "周深MV4K" - }, - { - "n": "Z纵贯线", - "v": "纵贯线MV4K" - }, - { - "n": "Z赵雷", - "v": "赵雷MV4K" - }, - { - "n": "Z周传雄", - "v": "周传雄MV4K" - }, - { - "n": "Z张国荣", - "v": "张国荣MV4K" - }, - { - "n": "Z周慧敏", - "v": "周慧敏MV4K" - }, - { - "n": "Z张惠妹", - "v": "张惠妹MV4K" - }, - { - "n": "Z周笔畅", - "v": "周笔畅MV4K" - }, - { - "n": "Z郑中基", - "v": "郑中基MV4K" - }, - { - "n": "Z张艺兴", - "v": "张艺兴MV4K" - }, - { - "n": "Z张震岳", - "v": "张震岳MV4K" - }, - { - "n": "Z中国好声音", - "v": "中国好声音MV4K" - }, - { - "n": "Z张雨生", - "v": "张雨生MV4K" - }, - { - "n": "Z郑智化", - "v": "郑智化MV4K" - }, - { - "n": "Z卓依婷", - "v": "卓依婷MV4K" - }, - { - "n": "Z中岛美雪", - "v": "中岛美雪MV4K" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "帕梅拉": [ - { - "key": "order", - "name": "排序", - "value": [ - { - "n": "综合排序", - "v": "0" - }, - { - "n": "最多点击", - "v": "click" - }, - { - "n": "最新发布", - "v": "pubdate" - }, - { - "n": "最多弹幕", - "v": "dm" - }, - { - "n": "最多收藏", - "v": "stow" - } - ] - }, - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "帕梅拉" - }, - { - "n": "瘦腿", - "v": "帕梅拉瘦腿" - }, - { - "n": "腹部", - "v": "帕梅拉腹部" - }, - { - "n": "手臂", - "v": "帕梅拉手臂" - }, - { - "n": "热身", - "v": "帕梅拉热身" - }, - { - "n": "舞蹈", - "v": "帕梅拉舞蹈" - }, - { - "n": "燃脂", - "v": "帕梅拉燃脂" - }, - { - "n": "有氧", - "v": "帕梅拉有氧" - }, - { - "n": "拉伸", - "v": "帕梅拉拉伸" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "知名UP主": [ - { - "key": "order", - "name": "排序", - "value": [ - { - "n": "综合排序", - "v": "0" - }, - { - "n": "最多点击", - "v": "click" - }, - { - "n": "最新发布", - "v": "pubdate" - }, - { - "n": "最多弹幕", - "v": "dm" - }, - { - "n": "最多收藏", - "v": "stow" - } - ] - }, - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "知名UP主" - }, - { - "n": "菠萝赛东", - "v": "菠萝赛东" - }, - { - "n": "冯提莫", - "v": "冯提莫" - }, - { - "n": "林延秋", - "v": "林延秋" - }, - { - "n": "-LKs-", - "v": "-LKs-" - }, - { - "n": "小约翰可汗", - "v": "小约翰可汗" - }, - { - "n": "low馆长", - "v": "low馆长" - }, - { - "n": "自说自话的总裁", - "v": "自说自话的总裁" - }, - { - "n": "所长林超", - "v": "所长林超" - }, - { - "n": "世界未解之谜M", - "v": "世界未解之谜M" - }, - { - "n": "李永乐老师官方", - "v": "李永乐老师官方" - }, - { - "n": "罗兹", - "v": "罗兹" - }, - { - "n": "回到2049", - "v": "回到2049" - }, - { - "n": "二次元的中科院物理所", - "v": "二次元的中科院物理所" - }, - { - "n": "毕导THU", - "v": "毕导THU" - }, - { - "n": "罗翔讲刑法", - "v": "罗翔讲刑法" - }, - { - "n": "戴博士实验室", - "v": "戴博士实验室" - }, - { - "n": "芳斯塔芙", - "v": "芳斯塔芙" - }, - { - "n": "参赛者网", - "v": "参赛者网" - }, - { - "n": "三维地图看世界", - "v": "三维地图看世界" - }, - { - "n": "有机社会", - "v": "有机社会" - }, - { - "n": "乌鸦校尉CaptainWuya", - "v": "乌鸦校尉CaptainWuya" - }, - { - "n": "果壳", - "v": "果壳" - }, - { - "n": "严伯钧", - "v": "严伯钧" - }, - { - "n": "是你们的康康", - "v": "是你们的康康" - }, - { - "n": "老爸评测", - "v": "老爸评测" - }, - { - "n": "硬核的半佛仙人", - "v": "硬核的半佛仙人" - }, - { - "n": "盗月社食遇记", - "v": "盗月社食遇记" - }, - { - "n": "我是郭杰瑞", - "v": "我是郭杰瑞" - }, - { - "n": "无穷小亮的科普日常", - "v": "无穷小亮的科普日常" - }, - { - "n": "papi酱", - "v": "papi酱" - }, - { - "n": "老番茄", - "v": "老番茄" - }, - { - "n": "绵羊料理", - "v": "绵羊料理" - }, - { - "n": "老师好我叫何同学", - "v": "老师好我叫何同学" - }, - { - "n": "敬汉卿", - "v": "敬汉卿" - }, - { - "n": "周六野Zoey", - "v": "周六野Zoey" - }, - { - "n": "木鱼水心", - "v": "木鱼水心" - }, - { - "n": "凉风Kaze", - "v": "凉风Kaze" - }, - { - "n": "小潮院长", - "v": "小潮院长" - }, - { - "n": "中国BOY超级大猩猩", - "v": "中国BOY超级大猩猩" - }, - { - "n": "李子柒", - "v": "李子柒" - }, - { - "n": "敖厂长", - "v": "敖厂长" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "太极拳": [ - { - "key": "order", - "name": "排序", - "value": [ - { - "n": "综合排序", - "v": "0" - }, - { - "n": "最多点击", - "v": "click" - }, - { - "n": "最新发布", - "v": "pubdate" - }, - { - "n": "最多弹幕", - "v": "dm" - }, - { - "n": "最多收藏", - "v": "stow" - } - ] - }, - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "太极拳" - }, - { - "n": "邱慧芳", - "v": "太极拳邱慧芳" - }, - { - "n": "陈氏", - "v": "太极拳陈氏" - }, - { - "n": "武当", - "v": "太极拳武当" - }, - { - "n": "二十四式", - "v": "太极拳二十四式" - }, - { - "n": "三十六式", - "v": "太极拳三十六式" - }, - { - "n": "五禽戏", - "v": "五禽戏" - }, - { - "n": "八段锦", - "v": "八段锦" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "舞蹈": [ - { - "key": "order", - "name": "排序", - "value": [ - { - "n": "综合排序", - "v": "0" - }, - { - "n": "最多点击", - "v": "click" - }, - { - "n": "最新发布", - "v": "pubdate" - }, - { - "n": "最多弹幕", - "v": "dm" - }, - { - "n": "最多收藏", - "v": "stow" - } - ] - }, - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "舞蹈" - }, - { - "n": "宅舞", - "v": "宅舞" - }, - { - "n": "街舞", - "v": "街舞" - }, - { - "n": "中国舞", - "v": "中国舞" - }, - { - "n": "广场舞", - "v": "广场舞" - }, - { - "n": "交谊舞", - "v": "交谊舞" - }, - { - "n": "教程", - "v": "舞蹈教程" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "音乐": [ - { - "key": "order", - "name": "排序", - "value": [ - { - "n": "综合排序", - "v": "0" - }, - { - "n": "最多点击", - "v": "click" - }, - { - "n": "最新发布", - "v": "pubdate" - }, - { - "n": "最多弹幕", - "v": "dm" - }, - { - "n": "最多收藏", - "v": "stow" - } - ] - }, - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "音乐" - }, - { - "n": "钢琴曲", - "v": "钢琴曲" - }, - { - "n": "协奏曲", - "v": "协奏曲r" - }, - { - "n": "中国古风音乐", - "v": "中国古风音乐" - }, - { - "n": "背景音乐", - "v": "背景音乐" - }, - { - "n": "助眠音乐r", - "v": "助眠音乐" - }, - { - "n": "胎教音乐", - "v": "胎教音乐" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "歌曲": [ - { - "key": "order", - "name": "排序", - "value": [ - { - "n": "综合排序", - "v": "0" - }, - { - "n": "最多点击", - "v": "click" - }, - { - "n": "最新发布", - "v": "pubdate" - }, - { - "n": "最多弹幕", - "v": "dm" - }, - { - "n": "最多收藏", - "v": "stow" - } - ] - }, - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "歌曲" - }, - { - "n": "香港歌曲", - "v": "香港歌曲" - }, - { - "n": "台湾歌曲", - "v": "台湾歌曲" - }, - { - "n": "内地歌曲", - "v": "内地歌曲" - }, - { - "n": "英文歌曲", - "v": "英文歌曲" - }, - { - "n": "日文歌曲", - "v": "日文歌曲" - }, - { - "n": "小语种歌曲", - "v": "小语种歌曲" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "平面设计教学": [ - { - "key": "order", - "name": "排序", - "value": [ - { - "n": "综合排序", - "v": "0" - }, - { - "n": "最多点击", - "v": "click" - }, - { - "n": "最新发布", - "v": "pubdate" - }, - { - "n": "最多弹幕", - "v": "dm" - }, - { - "n": "最多收藏", - "v": "stow" - } - ] - }, - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "平面设计教学" - }, - { - "n": "Adobe Photoshop", - "v": "Adobe Photoshop教程" - }, - { - "n": "Adobe Illustrator", - "v": "Adobe Illustrator教程" - }, - { - "n": "CorelDRAW", - "v": "CorelDRAW教程" - }, - { - "n": "Adobe InDesign", - "v": "Adobe InDesign教程" - }, - { - "n": "Adobe Pagermaker", - "v": "Adobe Pagermaker教程" - }, - { - "n": "SAI", - "v": "SAI教程" - }, - { - "n": "Adobe Bridge", - "v": "Adobe Bridge教程" - }, - { - "n": "Adobe Pagermaker", - "v": "Adobe Pagermake教程r" - }, - { - "n": "3D Studio Max", - "v": "3D Studio Max教程" - }, - { - "n": "PR", - "v": "PR教程" - }, - { - "n": "AE", - "v": "AE教程" - }, - { - "n": "CINEMA 4D", - "v": "CINEMA 4D教程" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "软件教程": [ - { - "key": "order", - "name": "排序", - "value": [ - { - "n": "综合排序", - "v": "0" - }, - { - "n": "最多点击", - "v": "click" - }, - { - "n": "最新发布", - "v": "pubdate" - }, - { - "n": "最多弹幕", - "v": "dm" - }, - { - "n": "最多收藏", - "v": "stow" - } - ] - }, - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "软件教程" - }, - { - "n": "MT管理器", - "v": "MT管理器" - }, - { - "n": "NP管理器", - "v": "NP管理器" - }, - { - "n": "mixplorer", - "v": "mixplorer" - }, - { - "n": "脱壳", - "v": "脱壳" - }, - { - "n": "爬虫", - "v": "爬虫" - }, - { - "n": "json&jar", - "v": "json&jar" - }, - { - "n": "网盘挂载", - "v": "网盘挂载" - }, - { - "n": "alist+WebDav", - "v": "alist+WebDav" - }, - { - "n": "TVBox修改", - "v": "TVBox修改教程" - }, - { - "n": "EXCEL", - "v": "EXCEL教程" - }, - { - "n": "Git入门到精通", - "v": "Git入门到精通" - }, - { - "n": "java", - "v": "java教程" - }, - { - "n": "phyton", - "v": "phyton教程" - }, - { - "n": "xml", - "v": "xml教程" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "Windows": [ - { - "key": "order", - "name": "排序", - "value": [ - { - "n": "综合排序", - "v": "0" - }, - { - "n": "最多点击", - "v": "click" - }, - { - "n": "最新发布", - "v": "pubdate" - }, - { - "n": "最多弹幕", - "v": "dm" - }, - { - "n": "最多收藏", - "v": "stow" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "小姐姐超清": [ - { - "key": "order", - "name": "排序", - "value": [ - { - "n": "综合排序", - "v": "0" - }, - { - "n": "最多点击", - "v": "click" - }, - { - "n": "最新发布", - "v": "pubdate" - }, - { - "n": "最多弹幕", - "v": "dm" - }, - { - "n": "最多收藏", - "v": "stow" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "广场舞超清": [ - { - "key": "order", - "name": "排序", - "value": [ - { - "n": "综合排序", - "v": "0" - }, - { - "n": "最多点击", - "v": "click" - }, - { - "n": "最新发布", - "v": "pubdate" - }, - { - "n": "最多弹幕", - "v": "dm" - }, - { - "n": "最多收藏", - "v": "stow" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "舞曲超清": [ - { - "key": "order", - "name": "排序", - "value": [ - { - "n": "综合排序", - "v": "0" - }, - { - "n": "最多点击", - "v": "click" - }, - { - "n": "最新发布", - "v": "pubdate" - }, - { - "n": "最多弹幕", - "v": "dm" - }, - { - "n": "最多收藏", - "v": "stow" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "白噪音超清": [ - { - "key": "order", - "name": "排序", - "value": [ - { - "n": "综合排序", - "v": "0" - }, - { - "n": "最多点击", - "v": "click" - }, - { - "n": "最新发布", - "v": "pubdate" - }, - { - "n": "最多弹幕", - "v": "dm" - }, - { - "n": "最多收藏", - "v": "stow" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "搞笑超清": [ - { - "key": "order", - "name": "排序", - "value": [ - { - "n": "综合排序", - "v": "0" - }, - { - "n": "最多点击", - "v": "click" - }, - { - "n": "最新发布", - "v": "pubdate" - }, - { - "n": "最多弹幕", - "v": "dm" - }, - { - "n": "最多收藏", - "v": "stow" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "体育超清": [ - { - "key": "order", - "name": "排序", - "value": [ - { - "n": "综合排序", - "v": "0" - }, - { - "n": "最多点击", - "v": "click" - }, - { - "n": "最新发布", - "v": "pubdate" - }, - { - "n": "最多弹幕", - "v": "dm" - }, - { - "n": "最多收藏", - "v": "stow" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "4K": [ - { - "key": "order", - "name": "排序", - "value": [ - { - "n": "综合排序", - "v": "0" - }, - { - "n": "最多点击", - "v": "click" - }, - { - "n": "最新发布", - "v": "pubdate" - }, - { - "n": "最多弹幕", - "v": "dm" - }, - { - "n": "最多收藏", - "v": "stow" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "足球比赛合集超清": [ - { - "key": "order", - "name": "排序", - "value": [ - { - "n": "综合排序", - "v": "0" - }, - { - "n": "最多点击", - "v": "click" - }, - { - "n": "最新发布", - "v": "pubdate" - }, - { - "n": "最多弹幕", - "v": "dm" - }, - { - "n": "最多收藏", - "v": "stow" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "篮球超清": [ - { - "key": "order", - "name": "排序", - "value": [ - { - "n": "综合排序", - "v": "0" - }, - { - "n": "最多点击", - "v": "click" - }, - { - "n": "最新发布", - "v": "pubdate" - }, - { - "n": "最多弹幕", - "v": "dm" - }, - { - "n": "最多收藏", - "v": "stow" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "动物世界超清": [ - { - "key": "order", - "name": "排序", - "value": [ - { - "n": "综合排序", - "v": "0" - }, - { - "n": "最多点击", - "v": "click" - }, - { - "n": "最新发布", - "v": "pubdate" - }, - { - "n": "最多弹幕", - "v": "dm" - }, - { - "n": "最多收藏", - "v": "stow" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "儿童超清": [ - { - "key": "order", - "name": "排序", - "value": [ - { - "n": "综合排序", - "v": "0" - }, - { - "n": "最多点击", - "v": "click" - }, - { - "n": "最新发布", - "v": "pubdate" - }, - { - "n": "最多弹幕", - "v": "dm" - }, - { - "n": "最多收藏", - "v": "stow" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "荒野求生超清": [ - { - "key": "order", - "name": "排序", - "value": [ - { - "n": "综合排序", - "v": "0" - }, - { - "n": "最多点击", - "v": "click" - }, - { - "n": "最新发布", - "v": "pubdate" - }, - { - "n": "最多弹幕", - "v": "dm" - }, - { - "n": "最多收藏", - "v": "stow" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "纪录片超清": [ - { - "key": "order", - "name": "排序", - "value": [ - { - "n": "综合排序", - "v": "0" - }, - { - "n": "最多点击", - "v": "click" - }, - { - "n": "最新发布", - "v": "pubdate" - }, - { - "n": "最多弹幕", - "v": "dm" - }, - { - "n": "最多收藏", - "v": "stow" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "食谱": [ - { - "key": "order", - "name": "排序", - "value": [ - { - "n": "综合排序", - "v": "0" - }, - { - "n": "最多点击", - "v": "click" - }, - { - "n": "最新发布", - "v": "pubdate" - }, - { - "n": "最多弹幕", - "v": "dm" - }, - { - "n": "最多收藏", - "v": "stow" - } - ] - }, - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "食谱" - }, - { - "n": "川菜食谱", - "v": "川菜食谱" - }, - { - "n": "豫菜食谱", - "v": "豫菜食谱" - }, - { - "n": "淮扬菜食谱", - "v": "淮扬菜食谱" - }, - { - "n": "湘菜食谱", - "v": "湘菜食谱" - }, - { - "n": "鲁菜食谱", - "v": "鲁菜食谱" - }, - { - "n": "粤菜食谱", - "v": "粤菜食谱" - }, - { - "n": "潮菜食谱", - "v": "潮菜食谱" - }, - { - "n": "浙菜食谱", - "v": "浙菜食谱" - }, - { - "n": "徽菜食谱", - "v": "徽菜食谱" - }, - { - "n": "闽菜食谱", - "v": "闽菜食谱" - }, - { - "n": "苏菜食谱", - "v": "苏菜食谱" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "健身": [ - { - "key": "order", - "name": "排序", - "value": [ - { - "n": "综合排序", - "v": "0" - }, - { - "n": "最多点击", - "v": "click" - }, - { - "n": "最新发布", - "v": "pubdate" - }, - { - "n": "最多弹幕", - "v": "dm" - }, - { - "n": "最多收藏", - "v": "stow" - } - ] - }, - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "健身" - }, - { - "n": "瘦腿", - "v": "瘦腿" - }, - { - "n": "腹部", - "v": "腹部" - }, - { - "n": "手臂", - "v": "手臂" - }, - { - "n": "热身", - "v": "热身" - }, - { - "n": "帕梅拉", - "v": "帕梅拉" - }, - { - "n": "燃脂", - "v": "燃脂" - }, - { - "n": "有氧", - "v": "有氧" - }, - { - "n": "拉伸", - "v": "拉伸" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "窗白噪音": [ - { - "key": "order", - "name": "排序", - "value": [ - { - "n": "综合排序", - "v": "0" - }, - { - "n": "最多点击", - "v": "click" - }, - { - "n": "最新发布", - "v": "pubdate" - }, - { - "n": "最多弹幕", - "v": "dm" - }, - { - "n": "最多收藏", - "v": "stow" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "美食超清": [ - { - "key": "order", - "name": "排序", - "value": [ - { - "n": "综合排序", - "v": "0" - }, - { - "n": "最多点击", - "v": "click" - }, - { - "n": "最新发布", - "v": "pubdate" - }, - { - "n": "最多弹幕", - "v": "dm" - }, - { - "n": "最多收藏", - "v": "stow" - } - ] - }, - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "美食超清" - }, - { - "n": "舌尖上的中国", - "v": "舌尖上的中国超清" - }, - { - "n": "老字号", - "v": "老字号美食超清" - }, - { - "n": "家常菜", - "v": "家常菜美食超清" - }, - { - "n": "香港美食探店", - "v": "香港美食探店超清" - }, - { - "n": "澳门美食探店", - "v": "澳门美食探店超清" - }, - { - "n": "上海美食探店", - "v": "上海美食探店超清" - }, - { - "n": "北京美食探店", - "v": "北京美食探店超清" - }, - { - "n": "重庆美食探店", - "v": "重庆美食探店超清" - }, - { - "n": "南京美食探店", - "v": "南京美食探店超清" - }, - { - "n": "广州美食探店", - "v": "广州美食探店超清" - }, - { - "n": "杭州美食探店", - "v": "杭州美食探店超清" - }, - { - "n": "成都美食探店", - "v": "成都美食探店超清" - }, - { - "n": "苏州美食探店", - "v": "苏州美食探店超清" - }, - { - "n": "武汉美食探店", - "v": "武汉美食探店超清" - }, - { - "n": "台湾美食探店", - "v": "台湾美食探店超清" - }, - { - "n": "川菜", - "v": "川菜美食超清" - }, - { - "n": "豫菜", - "v": "豫菜美食超清" - }, - { - "n": "淮扬菜", - "v": "淮扬菜美食超清" - }, - { - "n": "湘菜", - "v": "湘菜美食超清" - }, - { - "n": "鲁菜", - "v": "鲁菜美食超清" - }, - { - "n": "粤菜", - "v": "粤菜美食超清" - }, - { - "n": "潮菜", - "v": "潮菜美食超清" - }, - { - "n": "浙菜", - "v": "浙菜美食超清" - }, - { - "n": "徽菜", - "v": "徽菜美食超清" - }, - { - "n": "闽菜", - "v": "闽菜美食超清" - }, - { - "n": "东北菜", - "v": "东北菜美食超清" - }, - { - "n": "客家菜", - "v": "客家菜美食超清" - }, - { - "n": "苏菜", - "v": "苏菜美食超清" - }, - { - "n": "火锅", - "v": "火锅" - }, - { - "n": "面食", - "v": "面食" - }, - { - "n": "炒菜", - "v": "炒菜" - }, - { - "n": "点心", - "v": "点心" - }, - { - "n": "日料", - "v": "日料" - }, - { - "n": "小吃", - "v": "小吃" - }, - { - "n": "素食", - "v": "素食" - }, - { - "n": "蒸菜", - "v": "蒸菜" - }, - { - "n": "凉菜", - "v": "凉菜" - }, - { - "n": "早餐", - "v": "早餐" - }, - { - "n": "披萨", - "v": "披萨" - }, - { - "n": "烤鱼", - "v": "烤鱼" - }, - { - "n": "海鲜", - "v": "海鲜美食超清" - }, - { - "n": "汉堡", - "v": "汉堡" - }, - { - "n": "韩国菜", - "v": "韩国菜" - }, - { - "n": "泰国菜", - "v": "泰国菜" - }, - { - "n": "穆斯林菜", - "v": "穆斯林菜" - }, - { - "n": "法国菜", - "v": "法国菜" - }, - { - "n": "意大利菜", - "v": "意大利菜" - }, - { - "n": "西班牙菜", - "v": "西班牙菜" - }, - { - "n": "土耳其菜", - "v": "土耳其菜系" - }, - { - "n": "阿拉伯菜", - "v": "阿拉伯菜" - }, - { - "n": "德国菜", - "v": "德国菜" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "广场舞": [ - { - "key": "order", - "name": "排序", - "value": [ - { - "n": "综合排序", - "v": "0" - }, - { - "n": "最多点击", - "v": "click" - }, - { - "n": "最新发布", - "v": "pubdate" - }, - { - "n": "最多弹幕", - "v": "dm" - }, - { - "n": "最多收藏", - "v": "stow" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "球星": [ - { - "key": "order", - "name": "排序", - "value": [ - { - "n": "综合排序", - "v": "0" - }, - { - "n": "最多点击", - "v": "click" - }, - { - "n": "最新发布", - "v": "pubdate" - }, - { - "n": "最多弹幕", - "v": "dm" - }, - { - "n": "最多收藏", - "v": "stow" - } - ] - }, - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "球星" - }, - { - "n": "梅西", - "v": "梅西" - }, - { - "n": "C罗", - "v": "C罗" - }, - { - "n": "天下足球", - "v": "天下足球" - }, - { - "n": "罗纳尔多", - "v": "罗纳尔多" - }, - { - "n": "亨利", - "v": "亨利" - }, - { - "n": "小罗", - "v": "小罗" - }, - { - "n": "齐达内", - "v": "齐达内" - }, - { - "n": "贝克汉姆", - "v": "贝克汉姆" - }, - { - "n": "内马尔", - "v": "内马尔" - }, - { - "n": "德布劳内", - "v": "德布劳内" - }, - { - "n": "欧冠", - "v": "欧冠" - }, - { - "n": "世界杯", - "v": "世界杯" - }, - { - "n": "西甲", - "v": "西甲" - }, - { - "n": "英超", - "v": "英超" - }, - { - "n": "意甲", - "v": "意甲" - }, - { - "n": "德甲", - "v": "德甲" - }, - { - "n": "国米", - "v": "国米" - }, - { - "n": "皇马", - "v": "皇马" - }, - { - "n": "巴萨", - "v": "巴萨" - }, - { - "n": "巴黎圣日耳曼", - "v": "巴黎圣日耳曼" - }, - { - "n": "曼联", - "v": "曼联" - }, - { - "n": "曼城", - "v": "曼城" - }, - { - "n": "NBA", - "v": "NBA" - }, - { - "n": "詹姆斯", - "v": "詹姆斯" - }, - { - "n": "库里", - "v": "库里" - }, - { - "n": "杜兰特", - "v": "杜兰特" - }, - { - "n": "UFC", - "v": "UFC" - }, - { - "n": "斯诺克", - "v": "斯诺克" - }, - { - "n": "网球", - "v": "网球" - }, - { - "n": "F1", - "v": "F1" - }, - { - "n": "高尔夫", - "v": "高尔夫" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "电视剧": [ - { - "key": "order", - "name": "排序", - "value": [ - { - "n": "综合排序", - "v": "0" - }, - { - "n": "最多点击", - "v": "click" - }, - { - "n": "最新发布", - "v": "pubdate" - }, - { - "n": "最多弹幕", - "v": "dm" - }, - { - "n": "最多收藏", - "v": "stow" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "相声小品超清": [ - { - "key": "order", - "name": "排序", - "value": [ - { - "n": "综合排序", - "v": "0" - }, - { - "n": "最多点击", - "v": "click" - }, - { - "n": "最新发布", - "v": "pubdate" - }, - { - "n": "最多弹幕", - "v": "dm" - }, - { - "n": "最多收藏", - "v": "stow" - } - ] - }, - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "相声小品" - }, - { - "n": "单口相声", - "v": "单口相声" - }, - { - "n": "群口相声", - "v": "群口相声" - }, - { - "n": "德云社", - "v": "德云社" - }, - { - "n": "青曲社", - "v": "青曲社" - }, - { - "n": "郭德纲", - "v": "郭德纲" - }, - { - "n": "岳云鹏", - "v": "岳云鹏" - }, - { - "n": "曹云金", - "v": "曹云金" - }, - { - "n": "评书", - "v": "评书" - }, - { - "n": "小曲", - "v": "小曲" - }, - { - "n": "二人转", - "v": "二人转" - }, - { - "n": "春晚小品", - "v": "春晚小品" - }, - { - "n": "赵本山", - "v": "赵本山" - }, - { - "n": "陈佩斯", - "v": "陈佩斯" - }, - { - "n": "冯巩", - "v": "冯巩" - }, - { - "n": "宋小宝", - "v": "宋小宝" - }, - { - "n": "赵丽蓉", - "v": "赵丽蓉" - }, - { - "n": "郭达", - "v": "郭达" - }, - { - "n": "潘长江", - "v": "潘长江" - }, - { - "n": "郭冬临", - "v": "郭冬临" - }, - { - "n": "严顺开", - "v": "严顺开" - }, - { - "n": "文松", - "v": "文松" - }, - { - "n": "开心麻花", - "v": "开心麻花" - }, - { - "n": "屌丝男士", - "v": "屌丝男士" - }, - { - "n": "喜剧综艺", - "v": "喜剧综艺" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "戏曲": [ - { - "key": "order", - "name": "排序", - "value": [ - { - "n": "综合排序", - "v": "0" - }, - { - "n": "最多点击", - "v": "click" - }, - { - "n": "最新发布", - "v": "pubdate" - }, - { - "n": "最多弹幕", - "v": "dm" - }, - { - "n": "最多收藏", - "v": "stow" - } - ] - }, - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "戏曲" - }, - { - "n": "京剧", - "v": "京剧" - }, - { - "n": "越剧", - "v": "越剧" - }, - { - "n": "黄梅戏", - "v": "黄梅戏" - }, - { - "n": "评剧", - "v": "评剧" - }, - { - "n": "豫剧", - "v": "豫剧" - }, - { - "n": "昆曲", - "v": "昆曲" - }, - { - "n": "高腔", - "v": "高腔" - }, - { - "n": "梆子腔", - "v": "梆子腔" - }, - { - "n": "河北梆子", - "v": "河北梆子" - }, - { - "n": "晋剧", - "v": "晋剧" - }, - { - "n": "蒲剧", - "v": "蒲剧" - }, - { - "n": "雁剧", - "v": "雁剧" - }, - { - "n": "上党梆子", - "v": "上党梆子" - }, - { - "n": "秦腔", - "v": "秦腔" - }, - { - "n": "武安平调", - "v": "武安平调" - }, - { - "n": "二人台", - "v": "二人台" - }, - { - "n": "吉剧", - "v": "吉剧" - }, - { - "n": "龙江剧", - "v": "龙江剧" - }, - { - "n": "越调", - "v": "越调" - }, - { - "n": "河南曲剧", - "v": "河南曲剧" - }, - { - "n": "山东梆子", - "v": "山东梆子" - }, - { - "n": "淮剧", - "v": "淮剧" - }, - { - "n": "沪剧", - "v": "沪剧" - }, - { - "n": "滑稽戏", - "v": "滑稽戏" - }, - { - "n": "婺剧", - "v": "婺剧" - }, - { - "n": "绍剧", - "v": "绍剧" - }, - { - "n": "徽剧", - "v": "徽剧" - }, - { - "n": "闽剧", - "v": "闽剧" - }, - { - "n": "莆仙戏", - "v": "莆仙戏" - }, - { - "n": "梨园戏", - "v": "梨园戏" - }, - { - "n": "高甲戏", - "v": "高甲戏" - }, - { - "n": "赣剧", - "v": "赣剧" - }, - { - "n": "采茶戏", - "v": "采茶戏" - }, - { - "n": "汉剧", - "v": "汉剧" - }, - { - "n": "湘剧", - "v": "湘剧" - }, - { - "n": "祁剧", - "v": "祁剧" - }, - { - "n": "湖南花鼓戏", - "v": "湖南花鼓戏" - }, - { - "n": "粤剧", - "v": "粤剧" - }, - { - "n": "潮剧", - "v": "潮剧" - }, - { - "n": "桂剧", - "v": "桂剧" - }, - { - "n": "彩调", - "v": "彩调" - }, - { - "n": "壮剧", - "v": "壮剧" - }, - { - "n": "川剧", - "v": "川剧" - }, - { - "n": "黔剧", - "v": "黔剧" - }, - { - "n": "滇剧", - "v": "滇剧" - }, - { - "n": "傣剧", - "v": "傣剧" - }, - { - "n": "藏剧", - "v": "藏剧" - }, - { - "n": "皮影戏", - "v": "皮影戏" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "旅游": [ - { - "key": "order", - "name": "排序", - "value": [ - { - "n": "综合排序", - "v": "0" - }, - { - "n": "最多点击", - "v": "click" - }, - { - "n": "最新发布", - "v": "pubdate" - }, - { - "n": "最多弹幕", - "v": "dm" - }, - { - "n": "最多收藏", - "v": "stow" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "游泳": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "泳姿" - }, - { - "n": "蝶泳", - "v": "蝶泳" - }, - { - "n": "仰泳", - "v": "仰泳" - }, - { - "n": "蛙泳", - "v": "蛙泳" - }, - { - "n": "自由泳", - "v": "自由泳" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ] - } -} \ No newline at end of file diff --git a/潇洒/json/小学课堂.json b/潇洒/json/小学课堂.json deleted file mode 100644 index 7daba97..0000000 --- a/潇洒/json/小学课堂.json +++ /dev/null @@ -1,1050 +0,0 @@ -{ - "class": [ - { - "type_name": "1年级语文", - "type_id": "1年级语文" - }, - { - "type_name": "1年级数学", - "type_id": "1年级数学" - }, - { - "type_name": "1年级英语", - "type_id": "1年级英语" - }, - { - "type_name": "2年级语文", - "type_id": "2年级语文" - }, - { - "type_name": "2年级数学", - "type_id": "2年级数学" - }, - { - "type_name": "2年级英语", - "type_id": "2年级英语" - }, - { - "type_name": "3年级语文", - "type_id": "3年级语文" - }, - { - "type_name": "3年级数学", - "type_id": "3年级数学" - }, - { - "type_name": "3年级英语", - "type_id": "3年级英语" - }, - { - "type_name": "4年级语文", - "type_id": "4年级语文" - }, - { - "type_name": "4年级数学", - "type_id": "4年级数学" - }, - { - "type_name": "4年级英语", - "type_id": "4年级英语" - }, - { - "type_name": "5年级语文", - "type_id": "5年级语文" - }, - { - "type_name": "5年级数学", - "type_id": "5年级数学" - }, - { - "type_name": "5年级英语", - "type_id": "5年级英语" - }, - { - "type_name": "6年级语文", - "type_id": "6年级语文" - }, - { - "type_name": "6年级数学", - "type_id": "6年级数学" - }, - { - "type_name": "6年级英语", - "type_id": "6年级英语" - } - ], - "filters": { - "1年级语文": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版1年级语文" - }, - { - "n": "人教版", - "v": "人教版1年级语文" - }, - { - "n": "北师大版", - "v": "北师大版1年级语文" - }, - { - "n": "苏教版", - "v": "苏教版1年级语文" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "1年级英语": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版1年级英语" - }, - { - "n": "人教版", - "v": "人教版1年级英语" - }, - { - "n": "北师大版", - "v": "北师大版1年级英语" - }, - { - "n": "苏教版", - "v": "苏教版1年级英语" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "1年级数学": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版1年级数学" - }, - { - "n": "人教版", - "v": "人教版1年级数学" - }, - { - "n": "北师大版", - "v": "北师大版1年级数学" - }, - { - "n": "苏教版", - "v": "苏教版1年级数学" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "2年级语文": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版2年级语文" - }, - { - "n": "人教版", - "v": "人教版2年级语文" - }, - { - "n": "北师大版", - "v": "北师大版2年级语文" - }, - { - "n": "苏教版", - "v": "苏教版2年级语文" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "2年级英语": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版2年级英语" - }, - { - "n": "人教版", - "v": "人教版2年级英语" - }, - { - "n": "北师大版", - "v": "北师大版2年级英语" - }, - { - "n": "苏教版", - "v": "苏教版2年级英语" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "2年级数学": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版2年级数学" - }, - { - "n": "人教版", - "v": "人教版2年级数学" - }, - { - "n": "北师大版", - "v": "北师大版2年级数学" - }, - { - "n": "苏教版", - "v": "苏教版2年级数学" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "3年级语文": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版3年级语文" - }, - { - "n": "人教版", - "v": "人教版3年级语文" - }, - { - "n": "北师大版", - "v": "北师大版3年级语文" - }, - { - "n": "苏教版", - "v": "苏教版3年级语文" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "3年级英语": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版3年级英语" - }, - { - "n": "人教版", - "v": "人教版3年级英语" - }, - { - "n": "北师大版", - "v": "北师大版3年级英语" - }, - { - "n": "苏教版", - "v": "苏教版3年级英语" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "3年级数学": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版3年级数学" - }, - { - "n": "人教版", - "v": "人教版3年级数学" - }, - { - "n": "北师大版", - "v": "北师大版3年级数学" - }, - { - "n": "苏教版", - "v": "苏教版3年级数学" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "4年级语文": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版4年级语文" - }, - { - "n": "人教版", - "v": "人教版4年级语文" - }, - { - "n": "北师大版", - "v": "北师大版4年级语文" - }, - { - "n": "苏教版", - "v": "苏教版4年级语文" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "4年级英语": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版4年级英语" - }, - { - "n": "人教版", - "v": "人教版4年级英语" - }, - { - "n": "北师大版", - "v": "北师大版4年级英语" - }, - { - "n": "苏教版", - "v": "苏教版4年级英语" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "4年级数学": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版4年级数学" - }, - { - "n": "人教版", - "v": "人教版4年级数学" - }, - { - "n": "北师大版", - "v": "北师大版4年级数学" - }, - { - "n": "苏教版", - "v": "苏教版4年级数学" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "5年级语文": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版5年级语文" - }, - { - "n": "人教版", - "v": "人教版5年级语文" - }, - { - "n": "北师大版", - "v": "北师大版5年级语文" - }, - { - "n": "苏教版", - "v": "苏教版5年级语文" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "5年级英语": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版5年级英语" - }, - { - "n": "人教版", - "v": "人教版5年级英语" - }, - { - "n": "北师大版", - "v": "北师大版5年级英语" - }, - { - "n": "苏教版", - "v": "苏教版5年级英语" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "5年级数学": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版5年级数学" - }, - { - "n": "人教版", - "v": "人教版5年级数学" - }, - { - "n": "北师大版", - "v": "北师大版5年级数学" - }, - { - "n": "苏教版", - "v": "苏教版5年级数学" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "6年级语文": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版6年级语文" - }, - { - "n": "人教版", - "v": "人教版6年级语文" - }, - { - "n": "北师大版", - "v": "北师大版6年级语文" - }, - { - "n": "苏教版", - "v": "苏教版6年级语文" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "6年级英语": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版6年级英语" - }, - { - "n": "人教版", - "v": "人教版6年级英语" - }, - { - "n": "北师大版", - "v": "北师大版6年级英语" - }, - { - "n": "苏教版", - "v": "苏教版6年级英语" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "6年级数学": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版6年级数学" - }, - { - "n": "人教版", - "v": "人教版6年级数学" - }, - { - "n": "北师大版", - "v": "北师大版6年级数学" - }, - { - "n": "苏教版", - "v": "苏教版6年级数学" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ] - } -} \ No newline at end of file diff --git a/潇洒/json/少儿教育.json b/潇洒/json/少儿教育.json deleted file mode 100644 index db0d684..0000000 --- a/潇洒/json/少儿教育.json +++ /dev/null @@ -1,454 +0,0 @@ -{ - "class": [ - { - "type_name": "儿童早教", - "type_id": "儿童早教" - }, - { - "type_name": "儿童启蒙故事", - "type_id": "儿童启蒙故事" - }, - { - "type_name": "儿童英语启蒙", - "type_id": "儿童英语启蒙" - }, - { - "type_name": "儿童歌曲", - "type_id": "儿童歌曲" - }, - { - "type_name": "儿童绘画", - "type_id": "儿童绘画" - }, - { - "type_name": "睡前故事", - "type_id": "睡前故事" - }, - { - "type_name": "儿童动画", - "type_id": "儿童动画" - }, - { - "type_name": "儿童音乐", - "type_id": "儿童音乐" - }, - { - "type_name": "儿童安全教育", - "type_id": "儿童安全教育" - }, - { - "type_name": "贝瓦儿歌", - "type_id": "贝瓦儿歌" - }, - { - "type_name": "悟空识字", - "type_id": "悟空识字" - }, - { - "type_name": "宝宝巴士", - "type_id": "宝宝巴士" - }, - { - "type_name": "儿歌多多", - "type_id": "儿歌多多" - }, - { - "type_name": "学而思", - "type_id": "学而思" - } - ], - "filters": { - "儿童早教": [ - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "儿童启蒙故事": [ - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "儿童英语启蒙": [ - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "儿童歌曲": [ - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "儿童绘画": [ - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "睡前故事": [ - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "儿童动画": [ - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "儿童音乐": [ - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "儿童安全教育": [ - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "贝瓦儿歌": [ - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "悟空识字": [ - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "宝宝巴士": [ - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "儿歌多多": [ - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "学而思": [ - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ] - } -} \ No newline at end of file diff --git a/潇洒/json/高中课堂.json b/潇洒/json/高中课堂.json deleted file mode 100644 index ea8a3e0..0000000 --- a/潇洒/json/高中课堂.json +++ /dev/null @@ -1,1576 +0,0 @@ -{ - "class": [ - { - "type_name": "高一语文", - "type_id": "高一语文" - }, - { - "type_name": "高一数学", - "type_id": "高一数学" - }, - { - "type_name": "高一英语", - "type_id": "高一英语" - }, - { - "type_name": "高一历史", - "type_id": "高一历史" - }, - { - "type_name": "高一地理", - "type_id": "高一地理" - }, - { - "type_name": "高一生物", - "type_id": "高一生物" - }, - { - "type_name": "高一思想政治", - "type_id": "高一思想政治" - }, - { - "type_name": "高一物理", - "type_id": "高一物理" - }, - { - "type_name": "高一化学", - "type_id": "高一化学" - }, - { - "type_name": "高二语文", - "type_id": "高二语文" - }, - { - "type_name": "高二数学", - "type_id": "高二数学" - }, - { - "type_name": "高二英语", - "type_id": "高二英语" - }, - { - "type_name": "高二历史", - "type_id": "高二历史" - }, - { - "type_name": "高二地理", - "type_id": "高二地理" - }, - { - "type_name": "高二生物", - "type_id": "高二生物" - }, - { - "type_name": "高二思想政治", - "type_id": "高二思想政治" - }, - { - "type_name": "高二物理", - "type_id": "高二物理" - }, - { - "type_name": "高二化学", - "type_id": "高二化学" - }, - { - "type_name": "高三语文", - "type_id": "高三语文" - }, - { - "type_name": "高三数学", - "type_id": "高三数学" - }, - { - "type_name": "高三英语", - "type_id": "高三英语" - }, - { - "type_name": "高三历史", - "type_id": "高三历史" - }, - { - "type_name": "高三地理", - "type_id": "高三地理" - }, - { - "type_name": "高三生物", - "type_id": "高三生物" - }, - { - "type_name": "高三思想政治", - "type_id": "高三思想政治" - }, - { - "type_name": "高三物理", - "type_id": "高三物理" - }, - { - "type_name": "高三化学", - "type_id": "高三化学" - }, - { - "type_name": "高中信息技术", - "type_id": "高中信息技术" - } - ], - "filters": { - "高一语文": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版高一语文" - }, - { - "n": "人教版", - "v": "人教版高一语文" - }, - { - "n": "北师大版", - "v": "北师大版高一语文" - }, - { - "n": "苏教版", - "v": "苏教版高一语文" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "高一英语": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版高一英语" - }, - { - "n": "人教版", - "v": "人教版高一英语" - }, - { - "n": "北师大版", - "v": "北师大版高一英语" - }, - { - "n": "苏教版", - "v": "苏教版高一英语" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "高一数学": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版高一数学" - }, - { - "n": "人教版", - "v": "人教版高一数学" - }, - { - "n": "北师大版", - "v": "北师大版高一数学" - }, - { - "n": "苏教版", - "v": "苏教版高一数学" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "高一物理": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版高一物理" - }, - { - "n": "人教版", - "v": "人教版高一物理" - }, - { - "n": "北师大版", - "v": "北师大版高一物理" - }, - { - "n": "苏教版", - "v": "苏教版高一物理" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "高一化学": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版高一化学" - }, - { - "n": "人教版", - "v": "人教版高一化学" - }, - { - "n": "北师大版", - "v": "北师大版高一化学" - }, - { - "n": "苏教版", - "v": "苏教版高一化学" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "高一历史": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版高一历史" - }, - { - "n": "人教版", - "v": "人教版高一历史" - }, - { - "n": "北师大版", - "v": "北师大版高一历史" - }, - { - "n": "苏教版", - "v": "苏教版高一历史" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "高一生物": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版高一生物" - }, - { - "n": "人教版", - "v": "人教版高一生物" - }, - { - "n": "北师大版", - "v": "北师大版高一生物" - }, - { - "n": "苏教版", - "v": "苏教版高一生物" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "高一思想政治": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版高一思想政治" - }, - { - "n": "人教版", - "v": "人教版高一思想政治" - }, - { - "n": "北师大版", - "v": "北师大版高一思想政治" - }, - { - "n": "苏教版", - "v": "苏教版高一思想政治" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "高一地理": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版高一地理" - }, - { - "n": "人教版", - "v": "人教版高一地理" - }, - { - "n": "北师大版", - "v": "北师大版高一地理" - }, - { - "n": "苏教版", - "v": "苏教版高一地理" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "高二语文": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版高二语文" - }, - { - "n": "人教版", - "v": "人教版高二语文" - }, - { - "n": "北师大版", - "v": "北师大版高二语文" - }, - { - "n": "苏教版", - "v": "苏教版高二语文" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "高二英语": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版高二英语" - }, - { - "n": "人教版", - "v": "人教版高二英语" - }, - { - "n": "北师大版", - "v": "北师大版高二英语" - }, - { - "n": "苏教版", - "v": "苏教版高二英语" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "高二数学": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版高二数学" - }, - { - "n": "人教版", - "v": "人教版高二数学" - }, - { - "n": "北师大版", - "v": "北师大版高二数学" - }, - { - "n": "苏教版", - "v": "苏教版高二数学" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "高二物理": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版高二物理" - }, - { - "n": "人教版", - "v": "人教版高二物理" - }, - { - "n": "北师大版", - "v": "北师大版高二物理" - }, - { - "n": "苏教版", - "v": "苏教版高二物理" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "高二化学": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版高二化学" - }, - { - "n": "人教版", - "v": "人教版高二化学" - }, - { - "n": "北师大版", - "v": "北师大版高二化学" - }, - { - "n": "苏教版", - "v": "苏教版高二化学" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "高二历史": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版高二历史" - }, - { - "n": "人教版", - "v": "人教版高二历史" - }, - { - "n": "北师大版", - "v": "北师大版高二历史" - }, - { - "n": "苏教版", - "v": "苏教版高二历史" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "高二生物": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版高二生物" - }, - { - "n": "人教版", - "v": "人教版高二生物" - }, - { - "n": "北师大版", - "v": "北师大版高二生物" - }, - { - "n": "苏教版", - "v": "苏教版高二生物" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "高二思想政治": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版高二思想政治" - }, - { - "n": "人教版", - "v": "人教版高二思想政治" - }, - { - "n": "北师大版", - "v": "北师大版高二思想政治" - }, - { - "n": "苏教版", - "v": "苏教版高二思想政治" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "高二地理": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版高二地理" - }, - { - "n": "人教版", - "v": "人教版高二地理" - }, - { - "n": "北师大版", - "v": "北师大版高二地理" - }, - { - "n": "苏教版", - "v": "苏教版高二地理" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "高三语文": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版高三语文" - }, - { - "n": "人教版", - "v": "人教版高三语文" - }, - { - "n": "北师大版", - "v": "北师大版高三语文" - }, - { - "n": "苏教版", - "v": "苏教版高三语文" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "高三英语": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版高三英语" - }, - { - "n": "人教版", - "v": "人教版高三英语" - }, - { - "n": "北师大版", - "v": "北师大版高三英语" - }, - { - "n": "苏教版", - "v": "苏教版高三英语" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "高三数学": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版高三数学" - }, - { - "n": "人教版", - "v": "人教版高三数学" - }, - { - "n": "北师大版", - "v": "北师大版高三数学" - }, - { - "n": "苏教版", - "v": "苏教版高三数学" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "高三物理": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版高三物理" - }, - { - "n": "人教版", - "v": "人教版高三物理" - }, - { - "n": "北师大版", - "v": "北师大版高三物理" - }, - { - "n": "苏教版", - "v": "苏教版高三物理" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "高三化学": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版高三化学" - }, - { - "n": "人教版", - "v": "人教版高三化学" - }, - { - "n": "北师大版", - "v": "北师大版高三化学" - }, - { - "n": "苏教版", - "v": "苏教版高三化学" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "高三历史": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版高三历史" - }, - { - "n": "人教版", - "v": "人教版高三历史" - }, - { - "n": "北师大版", - "v": "北师大版高三历史" - }, - { - "n": "苏教版", - "v": "苏教版高三历史" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "高三生物": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版高三生物" - }, - { - "n": "人教版", - "v": "人教版高三生物" - }, - { - "n": "北师大版", - "v": "北师大版高三生物" - }, - { - "n": "苏教版", - "v": "苏教版高三生物" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "高三思想政治": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版高三思想政治" - }, - { - "n": "人教版", - "v": "人教版高三思想政治" - }, - { - "n": "北师大版", - "v": "北师大版高三思想政治" - }, - { - "n": "苏教版", - "v": "苏教版高三思想政治" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ], - "高三地理": [ - { - "key": "tid", - "name": "分类", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "沪教版", - "v": "沪教版高三地理" - }, - { - "n": "人教版", - "v": "人教版高三地理" - }, - { - "n": "北师大版", - "v": "北师大版高三地理" - }, - { - "n": "苏教版", - "v": "苏教版高三地理" - } - ] - }, - { - "key": "duration", - "name": "时长", - "value": [ - { - "n": "全部", - "v": "0" - }, - { - "n": "60分钟以上", - "v": "4" - }, - { - "n": "30~60分钟", - "v": "3" - }, - { - "n": "10~30分钟", - "v": "2" - }, - { - "n": "10分钟以下", - "v": "1" - } - ] - } - ] - } -} \ No newline at end of file diff --git a/潇洒/lives/AI直播.txt b/潇洒/lives/AI直播.txt new file mode 100644 index 0000000..5c54329 --- /dev/null +++ b/潇洒/lives/AI直播.txt @@ -0,0 +1,936 @@ +央视频道,#genre# +CCTV-1,http://php.jdshipin.com/TVOD/iptv.php?id=rthk33 +CCTV-1,http://[2409:8087:74f0:22::4]:6610/270000001128/9900000501/index.m3u8 +CCTV-1,http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221226016/index.m3u8 +CCTV-1,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226559/index.m3u8 +CCTV-1,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226559/index.m3u8 +CCTV-1,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226895/1.m3u8 +CCTV-1,http://iptv.huuc.edu.cn/hls/cctv1hd.m3u8 +CCTV-1,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226230/1.m3u8 +CCTV-2,http://php.jdshipin.com/TVOD/hljyd.php?id=3221225588 +CCTV-2,http://goo.bkpcp.top/mg/CCTV2 +CCTV-2,http://[2409:8087:74f0:22::4]:6410/270000001128/9900000502/index.m3u8 +CCTV-2,http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221225588/index.m3u8 +CCTV-2,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226540/index.m3u8 +CCTV-2,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226540/index.m3u8 +CCTV-2,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226893/1.m3u8 +CCTV-2,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226230/1.m3u8 +CCTV-2,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226371/1.m3u8 +CCTV-2,http://iptv.huuc.edu.cn/hls/cctv2hd.m3u8 +CCTV-3,http://php.jdshipin.com/TVOD/hljyd.php?id=3221226021 +CCTV-3,http://[2409:8087:74f0:22::4]:6410/270000001111/1110000303/index.m3u8 +CCTV-3,http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221226021/index.m3u8 +CCTV-3,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226021/index.m3u8 +CCTV-3,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226021/index.m3u8 +CCTV-3,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226471/1.m3u8 +CCTV-3,http://[2409:8087:1a01:df::4041]:80/TVOD/88888888/224/3221225799/main.m3u8 +CCTV-3,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226456/1.m3u8 +CCTV-3,http://iptv.huuc.edu.cn/hls/cctv3hd.m3u8 +CCTV-4,https://global.cgtn.cicc.media.caton.cloud/master/cgtn-america.m3u8 +CCTV-4,http://php.jdshipin.com/TVOD/hljyd.php?id=3221226428 +CCTV-4,http://z.b.bkpcp.top/m.php?id=CCTV-4国际 +CCTV-4,http://[2409:8087:74f0:22::4]:6410/270000001128/9900000503/index.m3u8 +CCTV-4,http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221226007/index.m3u8 +CCTV-4,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226428/index.m3u8 +CCTV-4,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226428/index.m3u8 +CCTV-4,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226335/1.m3u8 +CCTV-4,http://iptv.huuc.edu.cn/hls/cctv4hd.m3u8 +CCTV-5,http://omnix.cn:4000/udp/225.1.8.89:8000 +CCTV-5,http://php.jdshipin.com/TVOD/hljyd.php?id=3221226019 +CCTV-5,http://[2409:8087:74f0:22::4]:6410/270000001111/1110000305/index.m3u8 +CCTV-5,http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221226019/index.m3u8 +CCTV-5,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226019/index.m3u8 +CCTV-5,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226019/index.m3u8 +CCTV-5,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226469/1.m3u8 +CCTV-5,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226894/1.m3u8 +CCTV-5,http://iptv.huuc.edu.cn/hls/cctv5hd.m3u8 +CCTV-5,https://ldcctvwbcdks.v.kcdnvip.com/ldcctvwbcd/cdrmldcctv5plus_1/index.m3u8?b=200-2100 +CCTV-5+,http://qwt.zhibotv.top:2016/全网通.php?id=CCTV5+ +CCTV-5+,http://php.jdshipin.com/TVOD/hljyd.php?id=3221225603 +CCTV-5+,http://[2409:8087:74f0:22::4]:6410/270000001111/1110000306/index.m3u8 +CCTV-5+,http://[2409:8087:74f0:22::4]:6410/270000001128/9900000506/index.m3u8 +CCTV-5+,http://[2409:8087:74f0:22::4]:6410/270000001128/9900000507/index.m3u8 +CCTV-5+,http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221225603/index.m3u8 +CCTV-5+,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225603/index.m3u8 +CCTV-5+,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225603/index.m3u8 +CCTV-5+,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226894/1.m3u8 +CCTV-6,http://php.jdshipin.com/TVOD/hljyd.php?id=3221226010 +CCTV-6,http://[2409:8087:74f0:22::4]:6410/270000001111/1110000307/index.m3u8 +CCTV-6,http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221226010/index.m3u8 +CCTV-6,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226010/index.m3u8 +CCTV-6,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226010/index.m3u8 +CCTV-6,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226468/1.m3u8 +CCTV-6,http://iptv.huuc.edu.cn/hls/cctv6hd.m3u8 +CCTV-7,http://php.jdshipin.com/TVOD/hljyd.php?id=3221225733 +CCTV-7,http://goo.bkpcp.top/mg/CCTV7 +CCTV-7,http://[2409:8087:74f0:22::4]:6410/270000001128/9900000504/index.m3u8 +CCTV-7,http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221225733/index.m3u8 +CCTV-7,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225733/index.m3u8 +CCTV-7,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225733/index.m3u8 +CCTV-7,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226946/1.m3u8 +CCTV-7,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226234/1.m3u8 +CCTV-7,http://iptv.huuc.edu.cn/hls/cctv7hd.m3u8 +CCTV-8,http://php.jdshipin.com/TVOD/hljyd.php?id=3221226008 +CCTV-8,http://goo.bkpcp.top/mg/cctv8 +CCTV-8,http://[2409:8087:74f0:22::9]:6410/270000001111/1110000309/index.m3u8 +CCTV-8,http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221226008/index.m3u8 +CCTV-8,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226008/index.m3u8 +CCTV-8,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226008/index.m3u8 +CCTV-8,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226485/1.m3u8 +CCTV-8,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226451/1.m3u8 +CCTV-8,http://[2409:8087:1a01:df::4051]:80/TVOD/88888888/224/3221225795/main.m3u8 +CCTV-8,http://iptv.huuc.edu.cn/hls/cctv8hd.m3u8 +CCTV-9,http://omnix.cn:4000/udp/225.1.8.9:8112 +CCTV-9,http://php.jdshipin.com/TVOD/hljyd.php?id=3221225734 +CCTV-9,http://[2409:8087:74f0:22::4]:6410/270000001128/9900000505/index.m3u8 +CCTV-9,http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221225734/index.m3u8 +CCTV-9,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225734/index.m3u8 +CCTV-9,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225734/index.m3u8 +CCTV-9,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226944/1.m3u8 +CCTV-9,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226236/1.m3u8 +CCTV-9,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226450/1.m3u8 +CCTV-10,http://z.b.bkpcp.top/m.php?id=CCTV-10科教科教 +CCTV-10,http://goo.bkpcp.top/mg/cctv10 +CCTV-10,http://[2409:8087:74f0:22::4]:6410/270000001128/9900000506/index.m3u8 +CCTV-10,http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221225730/index.m3u8 +CCTV-10,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226473/index.m3u8 +CCTV-10,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226473/index.m3u8 +CCTV-10,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226937/1.m3u8 +CCTV-10,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226449/1.m3u8 +CCTV-10,http://iptv.huuc.edu.cn/hls/cctv10hd.m3u8 +CCTV-11,http://php.jdshipin.com/TVOD/hljyd.php?id=3221226565 +CCTV-11,http://[2409:8087:74f0:22::4]:6410/270000001128/9900000508/index.m3u8 +CCTV-11,http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221225597/index.m3u8 +CCTV-11,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226565/index.m3u8 +CCTV-11,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226565/index.m3u8 +CCTV-11,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226334/1.m3u8 +CCTV-11,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226448/1.m3u8 +CCTV-11,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226228/1.m3u8 +CCTV-12,http://php.jdshipin.com/TVOD/hljyd.php?id=3221225731 +CCTV-12,http://z.b.bkpcp.top/m.php?id=CCTV-12社会与法社会与法 +CCTV-12,http://[2409:8087:74f0:22::4]:6410/270000001128/9900000509/index.m3u8 +CCTV-12,http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221225731/index.m3u8 +CCTV-12,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226568/index.m3u8 +CCTV-12,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226568/index.m3u8 +CCTV-12,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226942/1.m3u8 +CCTV-12,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226228/1.m3u8 +CCTV-12,http://iptv.huuc.edu.cn/hls/cctv12hd.m3u8 +CCTV-12,http://lu.wqwqwq.sbs/itv/1000000005000265012.m3u8?cdn=ystenlive +CCTV-13,http://ali-m-l.cztv.com/channels/lantian/channel21/1080p.m3u8 +CCTV-13,https://event.pull.hebtv.com/jishi/cp1.m3u8 +CCTV-13,http://z.b.bkpcp.top/m.php?id=cctv13 +CCTV-13,http://j.x.bkpcp.top/jx/CCTV13HD +CCTV-13,http://jwplay.hebyun.com.cn/live/cctv13/1500k/tzwj_video.m3u8 +CCTV-13,https://ldncctvwbcdcnc.v.wscdns.com/ldncctvwbcd/cdrmldcctv13_1/index.m3u8 +CCTV-13,http://[2409:8087:74f0:22::4]:6410/270000001128/9900000510/index.m3u8 +CCTV-13,http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221226011/index.m3u8 +CCTV-13,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226537/index.m3u8 +CCTV-13,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226537/index.m3u8 +CCTV-14,http://php.jdshipin.com/TVOD/hljyd.php?id=3221225732 +CCTV-14,http://[2409:8087:74f0:22::4]:6410/270000001128/9900000511/index.m3u8 +CCTV-14,http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221225732/index.m3u8 +CCTV-14,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226591/index.m3u8 +CCTV-14,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226591/index.m3u8 +CCTV-14,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226947/1.m3u8 +CCTV-14,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226229/1.m3u8 +CCTV-14,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226445/1.m3u8 +CCTV-14,https://event.pull.hebtv.com/jishi/cp2.m3u8 +CCTV-14,http://iptv.huuc.edu.cn/hls/cctv14hd.m3u8 +CCTV-15,http://hwrr.jx.chinamobile.com:8080/PLTV/88888888/224/3221225641/index.m3u8 +CCTV-15,http://[2409:8087:74f0:22::4]:6410/270000001128/9900000512/index.m3u8 +CCTV-15,http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221225601/index.m3u8 +CCTV-15,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226476/index.m3u8 +CCTV-15,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226476/index.m3u8 +CCTV-15,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226333/1.m3u8 +CCTV-15,http://[2409:8087:1a01:df::4033]:80/TVOD/88888888/224/3221226127/main.m3u8 +CCTV-15,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226444/1.m3u8 +CCTV-16,http://php.jdshipin.com/TVOD/hljyd.php?id=3221226100 +CCTV-16,http://[2409:8087:74f0:22::4]:6410/270000001128/9900000016/index.m3u8 +CCTV-16,http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221226100/index.m3u8 +CCTV-16,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226100/index.m3u8 +CCTV-16,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226100/index.m3u8 +CCTV-16,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227002/1.m3u8 +CCTV-16,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226887/1.m3u8 +CCTV-16,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226888/1.m3u8 +CCTV-16,http://livetv.wqwqwq.sbs/gaoma/cctv4k16.m3u8 +CCTV-16,http://lu.wqwqwq.sbs/itv/1000000006000233002.m3u8?cdn=ystenlive +CCTV-17,http://php.jdshipin.com/TVOD/hljyd.php?id=3221225765 +CCTV-17,http://[2409:8087:74f0:22::4]:6410/270000001128/9900000513/index.m3u8 +CCTV-17,http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221225765/index.m3u8 +CCTV-17,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225765/index.m3u8 +CCTV-17,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225765/index.m3u8 +CCTV-17,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226318/1.m3u8 +CCTV-17,http://[2409:8087:1a01:df::4025]:80/TVOD/88888888/224/3221225708/main.m3u8 +CCTV-17,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226442/1.m3u8 + +卫视频道,#genre# +安徽卫视,http://satellitepull.cnr.cn/live/wxahws/playlist.m3u8 +安徽卫视,http://drive.mxmy.net:8888/udp/239.3.1.211:8064 +安徽卫视,http://php.jdshipin.com/TVOD/hljyd.php?id=3221226391 +安徽卫视,http://j.x.bkpcp.top/jx/ANHUIHD +安徽卫视,http://[2409:8087:74f0:22::7]:6410/270000001128/9900000514/index.m3u8 +安徽卫视,http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226391/index.m3u8 +安徽卫视,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226391/index.m3u8 +安徽卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226391/index.m3u8 +安徽卫视,http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010041/1.m3u8 +安徽卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226943/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7E0QmKQ_slRCwvVVUUfxPVbw%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +安多卫视,http://php.jdshipin.com/TVOD/hljyd.php?id=3221225659 +安多卫视,http://[2409:8087:1a0b:df::4007]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225659/index.m3u8 +安多卫视,https://liveout.xntv.tv/a65jur/96iln2.m3u8 +安多卫视,https://liveout.xntv.tv/a65jur/90p2i1.m3u8?zqinghd +北京卫视,http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010143 +北京卫视,http://z.b.bkpcp.top/m.php?id=bjws +北京卫视,http://j.x.bkpcp.top/jx/BEIJHD +北京卫视,http://[2409:8087:1:20:20::2c]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226436/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7ElMQ3ov45VmhzipweN5VstQ%7E_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNPg_yZ8DZHTaSU92MIl_o3b%2CEND +北京卫视,http://[2409:8087:74f0:22::6]:6410/270000001128/9900000516/index.m3u8 +北京卫视,http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226450/index.m3u8 +北京卫视,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226450/index.m3u8 +北京卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226450/index.m3u8 +北京卫视,http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010143/1.m3u8 +北京卫视,http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010043/1.m3u8 +兵团卫视,http://[2409:8087:1a0b:df::4020]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226439/index.m3u8 +重庆卫视,http://satellitepull.cnr.cn/live/wxcqws/playlist.m3u8 +重庆卫视,http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010053 +重庆卫视,http://z.b.bkpcp.top/m.php?id=cqws +重庆卫视,http://j.x.bkpcp.top/jx/CHONGQHD +重庆卫视,http://[2409:8087:74f0:22::7]:6410/270000001128/9900000517/index.m3u8 +重庆卫视,http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226409/index.m3u8 +重庆卫视,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226409/index.m3u8 +重庆卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226409/index.m3u8 +重庆卫视,http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010053/1.m3u8 +重庆卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226337/1.m3u8 +东方卫视,http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010054 +东方卫视,http://z.b.bkpcp.top/m.php?id=dfws#rtsp://115.85.232.19/PLTV/88888910/224/3221225531/10000100000000060000000000107311_0.smil +东方卫视,http://goo.bkpcp.top/mg/dfws +东方卫视,http://[2409:8087:74f0:22::5]:6410/270000001128/9900000518/index.m3u8 +东方卫视,http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226345/index.m3u8 +东方卫视,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226345/index.m3u8 +东方卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226345/index.m3u8 +东方卫视,http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010054/1.m3u8 +东方卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226898/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7E0uh4lyjjBCCN7TCq21vSIQ%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +东方卫视,http://iptv.huuc.edu.cn/hls/dfhd.m3u8 +东南卫视,http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010096 +东南卫视,http://z.b.bkpcp.top/m.php?id=dnws +东南卫视,http://j.x.bkpcp.top/jx/DONGNHD +东南卫视,http://[2409:8087:74f0:22::4]:6610/270000001128/9900000519/index.m3u8 +东南卫视,http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226341/index.m3u8 +东南卫视,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226341/index.m3u8 +东南卫视,http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010096/1.m3u8 +东南卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226991/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EQ6F5Mjgs0tJyEArWFL3vQA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +东南卫视,http://iptv.huuc.edu.cn/hls/dnhd.m3u8 +东南卫视,http://live.zohi.tv/video/s10001-fztv-3/index.m3u8 +甘肃卫视,http://qwt.zhibotv.top:2016/全网通.php?id=甘肃卫视 +甘肃卫视,http://live.zohi.tv/video/s10001-fztv-3/index.m3u8 +甘肃卫视,http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010098 +甘肃卫视,http://z.b.bkpcp.top/m.php?id=gsws +甘肃卫视,http://j.x.bkpcp.top/jx/GSWS +甘肃卫视,http://goo.bkpcp.top/mg/gsws +甘肃卫视,http://[2409:8087:74f0:22::5]:6410/270000001128/9900000023/index.m3u8 +甘肃卫视,http://[2409:8087:74f0:22::7]:6410/270000001111/1110000322/index.m3u8 +甘肃卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225633/index.m3u8 +甘肃卫视,http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010098/1.m3u8 +广东卫视,http://satellitepull.cnr.cn/live/wxgdws/playlist.m3u8 +广东卫视,http://php.jdshipin.com:8880/TVOD/gsyd.php?id=9900000520 +广东卫视,http://z.b.bkpcp.top/m.php?id=gdws +广东卫视,http://j.x.bkpcp.top/jx/GUANGDHD +广东卫视,http://goo.bkpcp.top/mg/gdws +广东卫视,http://[2409:8087:74f0:22::6]:6410/270000001128/9900000520/index.m3u8 +广东卫视,http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226248/index.m3u8 +广东卫视,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226248/index.m3u8 +广东卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226248/index.m3u8 +广东卫视,http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010055/1.m3u8 +广西卫视,http://php.jdshipin.com/TVOD/hljyd.php?id=3221226549 +广西卫视,http://z.b.bkpcp.top/m.php?id=gxws +广西卫视,https://mobilelive.gxtv.cn/live/gx_live1004/playlist.m3u8 +广西卫视,http://goo.bkpcp.top/mg/gxws +广西卫视,http://live.cztv.cc:85/live/ggpd.m3u8 +广西卫视,http://[2409:8087:74f0:22::7]:6410/270000001128/9900000034/index.m3u8 +广西卫视,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226549/index.m3u8 +广西卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226549/index.m3u8 +广西卫视,http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010099/1.m3u8 +广西卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227010/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EkAhb-89sxdm9fz6-heXCuw%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +贵州卫视,http://satellitepull.cnr.cn/live/wx32gzws/playlist.m3u8 +贵州卫视,http://drive.mxmy.net:8888/udp/239.3.1.149:8076 +贵州卫视,http://php.jdshipin.com/TVOD/hljyd.php?id=3221226474 +贵州卫视,http://z.b.bkpcp.top/m.php?id=gzws +贵州卫视,http://j.x.bkpcp.top/jx/GUIZHD +贵州卫视,http://goo.bkpcp.top/mg/gzws +贵州卫视,http://[2409:8087:74f0:22::7]:6410/270000001128/9900000036/index.m3u8 +贵州卫视,http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226474/index.m3u8 +贵州卫视,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226474/index.m3u8 +贵州卫视,http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010100/1.m3u8 +海南卫视,http://satellitepull.cnr.cn/live/wxhainlyws/playlist.m3u8 +海南卫视,http://171.15.18.199:8180/TV00000000000000000028@HHZT +海南卫视,http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010083 +海南卫视,http://z.b.bkpcp.top/m.php?id=hinws +海南卫视,http://j.x.bkpcp.top/jx/HAINHD +海南卫视,http://goo.bkpcp.top/mg/hinws +海南卫视,http://[2409:8087:74f0:22::7]:6410/270000001128/9900000037/index.m3u8 +海南卫视,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226465/index.m3u8 +海南卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226574/1.m3u8 +海南卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226922/1.m3u8 +河北卫视,http://171.15.18.199:8180/TV00000000000000000035@HHZT +河北卫视,http://drive.mxmy.net:8888/udp/239.3.1.148:8072 +河北卫视,http://php.fjl626.cn/hebei.php?id=hbws +河北卫视,http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010101 +河北卫视,http://z.b.bkpcp.top/m.php?id=hbws +河北卫视,https://jwplay.hebyun.com.cn/live/hbwstv/1500k/tzwj_video.m3u8 +河北卫视,http://[2409:8087:74f0:22::7]:6410/270000001128/9900000057/index.m3u8 +河北卫视,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226406/index.m3u8 +河北卫视,http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010101/1.m3u8 +河北卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227014/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7ErSGjhI3DMaaAASPrbQJYTg%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +河南卫视,http://tvpull.dxhmt.cn:9081/tv/11425-1.m3u8 +河南卫视,http://php.jdshipin.com/TVOD/hljyd.php?id=3221226480 +河南卫视,http://z.b.bkpcp.top/m.php?id=hnws +河南卫视,http://j.x.bkpcp.top/jx/HENHD +河南卫视,http://goo.bkpcp.top/mg/hnws +河南卫视,http://[2409:8087:74f0:22::7]:6410/270000001128/9900000027/index.m3u8 +河南卫视,http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226480/index.m3u8 +河南卫视,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226480/index.m3u8 +河南卫视,http://dsj.motem.top:8880/bptv/10000100000000050000000003887270.m3u8 +湖北卫视,http://satellitepull.cnr.cn/live/wx32hubws/playlist.m3u8 +湖北卫视,http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010057 +湖北卫视,http://z.b.bkpcp.top/m.php?id=hubws +湖北卫视,http://j.x.bkpcp.top/jx/HUBEIHD +湖北卫视,http://goo.bkpcp.top/mg/hubws +湖北卫视,http://[2409:8087:74f0:22::5]:6410/270000001128/9900000522/index.m3u8 +湖北卫视,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226477/index.m3u8 +湖北卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226477/index.m3u8 +湖北卫视,http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010057/1.m3u8 +湖北卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226952/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EREB40lnZnCEwjRy7LZuhIQ%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +湖南卫视,http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010058 +湖南卫视,http://z.b.bkpcp.top/m.php?id=hunws +湖南卫视,http://j.x.bkpcp.top/jx/HUNANHD +湖南卫视,http://[2409:8087:74f0:22::5]:6410/270000001128/9900000523/index.m3u8 +湖南卫视,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226307/index.m3u8 +湖南卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226307/index.m3u8 +湖南卫视,http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010058/1.m3u8 +湖南卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226493/1.m3u8 +湖南卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226509/1.m3u8 +湖南卫视,http://iptv.huuc.edu.cn/hls/hunanhd.m3u8 +黑龙江卫视,http://satellitepull.cnr.cn/live/wx32hljws/playlist.m3u8 +黑龙江卫视,http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010056 +黑龙江卫视,http://j.x.bkpcp.top/jx/HEILJHD +黑龙江卫视,http://l.cztvcloud.com/channels/lantian/SXyuyao3/720p.m3u8 +黑龙江卫视,http://[2409:8087:4c0a:22:1::11]:6410/170000001115/UmaiCHAN181356BESTVSMGSMG/index.m3u8 +黑龙江卫视,http://[2409:8087:74f0:22::6]:6410/270000001128/9900000521/index.m3u8 +黑龙江卫视,http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225799/index.m3u8 +黑龙江卫视,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226327/index.m3u8 +黑龙江卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226327/index.m3u8 +黑龙江卫视,http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010056/1.m3u8 +吉林卫视,http://satellitepull.cnr.cn/live/wxjlws/playlist.m3u8 +吉林卫视,http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010075 +吉林卫视,http://z.b.bkpcp.top/m.php?id=jlws +吉林卫视,http://j.x.bkpcp.top/jx/JILHD +吉林卫视,http://goo.bkpcp.top/mg/jlws +吉林卫视,http://[2409:8087:74f0:22::5]:6410/270000001128/9900000030/index.m3u8 +吉林卫视,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226397/index.m3u8 +吉林卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226533/1.m3u8 +吉林卫视,http://dsj.motem.top:8880/bptv/10000100000000050000000004972569.m3u8 +江苏卫视,http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010059 +江苏卫视,http://z.b.bkpcp.top/m.php?id=jsws +江苏卫视,http://goo.bkpcp.top/mg/jsws +江苏卫视,http://[2409:8087:74f0:22::6]:6410/270000001128/9900000524/index.m3u8 +江苏卫视,http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226310/index.m3u8 +江苏卫视,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226310/index.m3u8 +江苏卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226310/index.m3u8 +江苏卫视,http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010059/1.m3u8 +江苏卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226897/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7E0BmO6uHF7WFoTed__Xr3NQ%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +江苏卫视,http://iptv.huuc.edu.cn/hls/jshd.m3u8 +江西卫视,http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010060 +江西卫视,http://z.b.bkpcp.top/m.php?id=jxws +江西卫视,http://goo.bkpcp.top/mg/jxws +江西卫视,http://[2409:8087:74f0:22::4]:6610/270000001128/9900000525/index.m3u8 +江西卫视,http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226344/index.m3u8 +江西卫视,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226344/index.m3u8 +江西卫视,http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010060/1.m3u8 +江西卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226956/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7Ei6ZIpVizXlewg-YfGvH8dA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +江西卫视,http://[2409:8087:1a01:df::4027]:80/TVOD/88888888/224/3221225935/main.m3u8 +江西卫视,http://iptv.huuc.edu.cn/hls/jxhd.m3u8 +康巴卫视,http://php.jdshipin.com/TVOD/hljyd.php?id=3221225660 +康巴卫视,http://[2409:8087:1a0b:df::4005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225660/index.m3u8 +康巴卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227027/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EkHMvBpWz4rccMxNvSRekpQ%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +辽宁卫视,http://php.jdshipin.com/TVOD/hljyd.php?id=3221226546 +辽宁卫视,http://z.b.bkpcp.top/m.php?id=lnws +辽宁卫视,http://j.x.bkpcp.top/jx/LIAONHD +辽宁卫视,http://[2409:8087:74f0:22::7]:6410/270000001128/9900000526/index.m3u8 +辽宁卫视,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226546/index.m3u8 +辽宁卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226546/index.m3u8 +辽宁卫视,http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010061/1.m3u8 +辽宁卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226327/1.m3u8 +辽宁卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226336/1.m3u8 +辽宁卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226488/1.m3u8 +内蒙古卫视,http://qwt.zhibotv.top:2016/全网通.php?id=内蒙古卫视 +内蒙古卫视,http://satellitepull.cnr.cn/live/wx32nmgws/playlist.m3u8 +内蒙古卫视,http://php.jdshipin.com/TVOD/hljyd.php?id=3221225634 +内蒙古卫视,http://z.b.bkpcp.top/m.php?id=nmws +内蒙古卫视,http://j.x.bkpcp.top/jx/NMGWS +内蒙古卫视,http://goo.bkpcp.top/mg/nmws +内蒙古卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225634/index.m3u8 +内蒙古卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226530/1.m3u8 +内蒙古卫视,http://dsj.motem.top:8880/bptv/10000100000000050000000003887427.m3u8 +宁夏卫视,http://qwt.zhibotv.top:2016/全网通.php?id=宁夏卫视 +宁夏卫视,http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010110 +宁夏卫视,http://z.b.bkpcp.top/m.php?id=nxws +宁夏卫视,http://j.x.bkpcp.top/jx/NXWS +宁夏卫视,http://goo.bkpcp.top/mg/nxws +宁夏卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225632/index.m3u8 +宁夏卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227003/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7ESco1zinvdUYzleEkXYhIvA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +宁夏卫视,http://dsj.motem.top:8880/bptv/10000100000000050000000003887433.m3u8 +青海卫视,http://satellitepull.cnr.cn/live/wx32qhws/playlist.m3u8 +青海卫视,http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010111 +青海卫视,http://z.b.bkpcp.top/m.php?id=qhws +青海卫视,http://j.x.bkpcp.top/jx/QHWS +青海卫视,http://goo.bkpcp.top/mg/qhws +青海卫视,http://[2409:8087:74f0:22::5]:6410/270000001128/9900000042/index.m3u8 +青海卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225628/index.m3u8 +青海卫视,http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010111/1.m3u8 +青海卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226529/1.m3u8 +青海卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226916/1.m3u8 +山东卫视,http://satellitepull.cnr.cn/live/wxsdws/playlist.m3u8 +山东卫视,http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010066 +山东卫视,http://z.b.bkpcp.top/m.php?id=sdws +山东卫视,http://j.x.bkpcp.top/jx/SHANDHD +山东卫视,http://l.cztvcloud.com/channels/lantian/SXshengzhou1/720p.m3u8 +山东卫视,http://[2409:8087:74f0:22::5]:6410/270000001128/9900000527/index.m3u8 +山东卫视,http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226456/index.m3u8 +山东卫视,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226456/index.m3u8 +山东卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226456/index.m3u8 +山东卫视,http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010066/1.m3u8 +山西卫视,http://qwt.zhibotv.top:2016/全网通.php?id=山西卫视 +山西卫视,http://satellitepull.cnr.cn/live/wxssxws/playlist.m3u8 +山西卫视,http://171.15.18.199:8180/TV00000000000000000038@HHZT +山西卫视,http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010114 +山西卫视,http://j.x.bkpcp.top/jx/SXWS +山西卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225624/index.m3u8 +山西卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226531/1.m3u8 +山西卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226920/1.m3u8 +山西卫视,http://dsj.motem.top:8880/bptv/10000100000000050000000003887413.m3u8 +山西卫视,http://m3u8.channel.wsrtv.com.cn/cms/videos/nmip-media/channellive/channel7/playlist.m3u8 +陕西卫视,http://qwt.zhibotv.top:2016/全网通.php?id=陕西卫视 +陕西卫视,http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010113 +陕西卫视,http://z.b.bkpcp.top/m.php?id=sxws +陕西卫视,http://gat.bkpcp.top/ymg.php?id=sxws +陕西卫视,http://goo.bkpcp.top/mg/sxws +陕西卫视,http://hlsbkmgsplive.miguvideo.com/migu/kailu/shan3xiws/57/20220809/index.m3u8 +陕西卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225625/index.m3u8 +陕西卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226532/1.m3u8 +陕西卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226926/1.m3u8 +陕西卫视,http://dsj.motem.top:8880/bptv/10000100000000050000000003887404.m3u8 +四川卫视,http://php.jdshipin.com/TVOD/hljyd.php?id=3221226338 +四川卫视,http://z.b.bkpcp.top/m.php?id=scws +四川卫视,http://j.x.bkpcp.top/jx/SICHD +四川卫视,http://[2409:8087:74f0:22::6]:6410/270000001128/9900000025/index.m3u8 +四川卫视,http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226338/index.m3u8 +四川卫视,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226338/index.m3u8 +四川卫视,http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010115/1.m3u8 +四川卫视,http://iptv.huuc.edu.cn/hls/schd.m3u8 +四川卫视,http://dsj.motem.top:8880/bptv/10000100000000050000000003887274.m3u8 +四川卫视,http://live.wqwqwq.sbs/itv/5000000004000006119.m3u8?cdn=bestzb +深圳卫视,http://satellitepull.cnr.cn/live/wxszws/playlist.m3u8 +深圳卫视,http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010068 +深圳卫视,http://[2409:8087:74f0:22::5]:6410/270000001128/9900000529/index.m3u8 +深圳卫视,http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226313/index.m3u8 +深圳卫视,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226313/index.m3u8 +深圳卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226313/index.m3u8 +深圳卫视,http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010068/1.m3u8 +深圳卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226959/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EGrVNEZREjuNVKiTJo2mtwg%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +深圳卫视,http://iptv.huuc.edu.cn/hls/szhd.m3u8 +深圳卫视,http://dsj.motem.top:8880/bptv/10000100000000050000000003873474.m3u8 +三沙卫视,http://qwt.zhibotv.top:2016/全网通.php?id=三沙卫视 +三沙卫视,http://[2409:8087:5e00:24::1e]:6060/000000001000/4600001000000000117/1.m3u8 +三沙卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226544/1.m3u8 +三沙卫视,http://dsj.motem.top:8880/bptv/10000100000000050000000003887452.m3u8 +三沙卫视,https://livessws.hnntv.cn/live/ssws_02hnntv.m3u8?_upt=c509d0ea1747156492 +天津卫视,http://php.jdshipin.com/TVOD/hljyd.php?id=3221226459 +天津卫视,http://j.x.bkpcp.top/jx/TIANJHD +天津卫视,http://[2409:8087:74f0:22::6]:6410/270000001128/9900000530/index.m3u8 +天津卫视,http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226459/index.m3u8 +天津卫视,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226459/index.m3u8 +天津卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226459/index.m3u8 +天津卫视,http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010069/1.m3u8 +天津卫视,http://[2409:8087:1a01:df::4030]:80/TVOD/88888888/224/3221225972/main.m3u8 +天津卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226246/1.m3u8 +天津卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226489/1.m3u8 +新疆卫视,http://satellitepull.cnr.cn/live/wxxjws/playlist.m3u8 +新疆卫视,http://php.jdshipin.com/TVOD/hljyd.php?id=3221225635 +新疆卫视,http://z.b.bkpcp.top/m.php?id=xjws +新疆卫视,http://j.x.bkpcp.top/jx/XJWS +新疆卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225635/index.m3u8 +新疆卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226546/1.m3u8 +新疆卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226923/1.m3u8 +新疆卫视,http://dsj.motem.top:8880/bptv/10000100000000050000000003887448.m3u8 +新疆卫视,http://goo.bkpcp.top/mg/xjws +西藏卫视,http://qwt.zhibotv.top:2016/全网通.php?id=西藏卫视 +西藏卫视,http://php.jdshipin.com/TVOD/hljyd.php?id=3221225638 +西藏卫视,http://z.b.bkpcp.top/m.php?id=xzws +西藏卫视,http://goo.bkpcp.top/mg/xzws +西藏卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226527/1.m3u8 +西藏卫视,http://dsj.motem.top:8880/bptv/10000100000000050000000003887434.m3u8 +云南卫视,http://qwt.zhibotv.top:2016/全网通.php?id=云南卫视 +云南卫视,http://satellitepull.cnr.cn/live/wxynws/playlist.m3u8 +云南卫视,http://php.jdshipin.com/TVOD/hljyd.php?id=3221226444 +云南卫视,http://z.b.bkpcp.top/m.php?id=ynws +云南卫视,http://goo.bkpcp.top/mg/ynws +云南卫视,http://[2409:8087:74f0:22::7]:6410/270000001128/9900000035/index.m3u8 +云南卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226444/index.m3u8 +云南卫视,http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010119/1.m3u8 +云南卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226543/1.m3u8 +云南卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226928/1.m3u8 +延边卫视,http://qwt.zhibotv.top:2016/全网通.php?id=延边卫视 +延边卫视,http://satellitepull.cnr.cn/live/wxybws/playlist.m3u8 +延边卫视,http://l.cztvcloud.com/channels/lantian/SXxinchang2/720p.m3u8# +延边卫视,http://[2409:8087:1a0b:df::4020]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226516/index.m3u8 +延边卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227045/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7Eq0D3NdTUN7FuRzr8eJsbQA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +浙江卫视,http://8.138.7.223/tv/zjws.m3u8 +浙江卫视,http://ali-m-l.cztv.com/channels/lantian/channel001/1080p.m3u8 +浙江卫视,http://ali-m-l.cztv.com/channels/lantian/channel01/1080p.m3u8 +浙江卫视,http://zwebl02.cztv.com/live/channel011080P.m3u8?auth_key=2524708799-0-0-9a1229d8b9d311024ebea08c3fb1d63f +浙江卫视,http://zhfivel02.cztv.com/channel01/1080p.m3u8?auth_key=2524708799-0-0-adde67b1b344fdd5e512f30a4ae31915 +浙江卫视,http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010070 +浙江卫视,http://z.b.bkpcp.top/m.php?id=zjws +浙江卫视,http://goo.bkpcp.top/mg/zjws +浙江卫视,http://l.cztvcloud.com/channels/lantian/SXpinghu3/720p.m3u8 +浙江卫视,http://[2409:8087:74f0:22::5]:6410/270000001128/9900000531/index.m3u8 + +安徽频道,#genre# +安徽导视,http://dspdhls.appcoo.com:8888/live/dspd/index.m3u8 + +北京频道,#genre# +北京卫视,http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010143 +北京卫视,http://z.b.bkpcp.top/m.php?id=bjws +北京卫视,http://j.x.bkpcp.top/jx/BEIJHD +北京卫视,http://[2409:8087:1:20:20::2c]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226436/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7ElMQ3ov45VmhzipweN5VstQ%7E_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNPg_yZ8DZHTaSU92MIl_o3b%2CEND +北京卫视,http://[2409:8087:74f0:22::6]:6410/270000001128/9900000516/index.m3u8 +北京卫视,http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226450/index.m3u8 +北京卫视,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226450/index.m3u8 +北京卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226450/index.m3u8 +北京卫视,http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010143/1.m3u8 +北京卫视,http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010043/1.m3u8 +北京文艺,http://[2409:8087:1:20:20::29]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226440/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EWrJcgMpdGPvZavpf4dmmrQ%7E_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNNhmwDsUZnvQgU5E5wiGA2g%2CEND +北京影视,http://[2409:8087:1:20:20::2a]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226433/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EygquRbh9L0wUPRY53fsZWw%7E_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNO62IynDcU1yYDL1b4Xte8T%2CEND +北京财经,https://wstvcpudali.v.myalicdn.com/wstvcpud/udrmbtv5_1/index.m3u8?adapt=0&BR=audio +北京财经,http://[2409:8087:1:20:20::2a]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226516/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7Eh9_SEkmWeMdS1TMnIILZgg%7E_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNPIiicEW7OIvk1s-X-PXHqO%2CEND +北京财经,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226516/1.m3u8 +北京财经,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226560/1.m3u8 +北京生活,https://wstvcpudali.v.myalicdn.com/wstvcpud/udrmbtv7_1/index.m3u8?adapt=0&BR=audio +北京生活,http://[2409:8087:1:20:20::2a]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226514/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7Es-PVNcPJsjr_oBdcXGT40g%7E_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNMWvZ0r6eMXcXJOGrCpJiq1%2CEND +北京生活,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226514/1.m3u8 +北京生活,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226561/1.m3u8 +北京新闻,https://satellitepull.cnr.cn/live/wxbjxwgb/playlist.m3u8 +北京新闻,https://wstvcpudali.v.myalicdn.com/wstvcpud/udrmbtv9_1/index.m3u8?adapt=0&BR=audio +北京新闻,https://ls.qingting.fm/live/339/64k.m3u8 +北京新闻,http://[2409:8087:1:20:20::2a]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226437/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EncK5uEAdYwWMsf8WJWI1mQ%7E_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNO_LSIQh_h2P54Cz-MqgJqC%2CEND +北京新闻,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226437/1.m3u8 +北京新闻,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226512/1.m3u8 +北京新闻,http://dsj.motem.top:8880/bptv/10000100000000050000000003870780.m3u8 +北京新闻,http://iptv.huuc.edu.cn/hls/btv9hd.m3u8 +北京新闻,http://yc.myds.me:35455/bptv/10000100000000050000000003870780.m3u8 +北京新闻,https://brtv-radiolive.rbc.cn/alive/fm945.m3u8 +北京国际,http://[2409:8087:1:20:20::2a]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226510/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EIfgL7tTUNqHAIdgvKuwj8A%7E_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNPr9j5nfyiWS_jEXD6m401A%2CEND +北京纪实科教,http://[2409:8087:1:20:20::29]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226434/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7Ejj3PtVjzl6ZzFdM-Vi1dmQ%7E_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNPJa61jREJv4ZfZigyrxX0U%2CEND +北京体育休闲,http://[2409:8087:1:20:20::29]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226438/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EeVAybrHg955d_IRT9e_uHQ%7E_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNMLCKqkSfuGOusJwBMwlCbz%2CEND +萌宠TV,http://[2409:8087:1:20:20::26]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226555/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7E_PpxWPtvSZRFtu_Ged-vQ%7E_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNO0istnBuoA2R9ODSCqyIyS%2CEND +淘电影,http://[2409:8087:1:20:20::26]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226552/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EXOsrWMA-UCdUl1hQSR9EKw%7E_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNNg3bzRax0E9tLmO9xgXVx8%2CEND +淘电影,http://dsj.motem.top:8880/bptv/10000100000000050000000003887498.m3u8 +淘电影,http://yc.myds.me:35455/bptv/10000100000000050000000003887498.m3u8 +淘剧场,http://[2409:8087:1:20:20::26]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226553/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EQaJ92NID2SpQlY6_VJVogg%7E_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNOuQYJeiYEeFWTkFfE86Vq-%2CEND +淘剧场,http://dsj.motem.top:8880/bptv/10000100000000050000000003887497.m3u8 +淘娱乐,http://[2409:8087:1:20:20::2c]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226551/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7Ex0efg9fpenP8E8lWJUb5Lg%7E_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNNg3bzRax0E9tLmO9xgXVx8%2CEND +淘娱乐,http://dsj.motem.top:8880/bptv/10000100000000050000000003887499.m3u8 + +重庆频道,#genre# +重庆新闻,https://satellitepull.cnr.cn/live/wxcqxwgb/playlist.m3u8 +重庆汽摩,http://218.89.240.144:59901/tsfile/live/1010_1.m3u8?key=txiptv +重庆汽摩,rtsp://123.147.112.17:8089/04000001/01000000004000000000000000000371?AuthInfo=xxx&userid=gf001&userid=gf001 + +福建频道,#genre# +东南卫视,http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010096 +东南卫视,http://z.b.bkpcp.top/m.php?id=dnws +东南卫视,http://j.x.bkpcp.top/jx/DONGNHD +东南卫视,http://[2409:8087:74f0:22::4]:6610/270000001128/9900000519/index.m3u8 +东南卫视,http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226341/index.m3u8 +东南卫视,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226341/index.m3u8 +东南卫视,http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010096/1.m3u8 +东南卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226991/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EQ6F5Mjgs0tJyEArWFL3vQA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +东南卫视,http://iptv.huuc.edu.cn/hls/dnhd.m3u8 +东南卫视,http://live.zohi.tv/video/s10001-fztv-3/index.m3u8 +海峡卫视,http://hlsbkmgsplive.miguvideo.com/migu/kailu/haixiaws/57/20230724/01.m3u8 +海峡卫视,http://hlsbkmgsplive.miguvideo.com/migu/kailu/haixiaws/57/20230724/01.m3u8?msisdn=&Channel_ID=&ContentId=&HlsSubType=&HlsProfileId=&encrypt= +海峡卫视,http://goo.bkpcp.top/mg/hxws +福建综合,http://8.138.7.223/tv/fjtv.php?id=4 +福建公共,http://8.138.7.223/tv/fjtv.php?id=6 +福建新闻,http://satellitepull.cnr.cn/live/wx32fjxwgb/playlist.m3u8 +福建新闻,https://satellitepull.cnr.cn/live/wx32fjxwgb/playlist.m3u8 +福建电视剧,http://8.138.7.223/tv/fjtv.php?id=7 +福建旅游,http://8.138.7.223/tv/fjtv.php?id=8 +福建经济,http://satellitepull.cnr.cn/live/wx32fjdnjjgb/playlist.m3u8 +福建文体,http://8.138.7.223/tv/fjtv.php?id=10 +福建少儿,http://8.138.7.223/tv/fjtv.php?id=2 + +甘肃频道,#genre# +甘肃经济,https://hls.gstv.com.cn/49048r/10iv1j.m3u8 +甘肃文化影视,https://hls.gstv.com.cn/49048r/w1l6d5.m3u8 +甘肃公共应急,https://hls.gstv.com.cn/49048r/3t5xyc.m3u8 +甘肃都市,https://hls.gstv.com.cn/49048r/l54391.m3u8 +甘肃少儿,https://hls.gstv.com.cn/49048r/922k96.m3u8 + +广东频道,#genre# +广东珠江,http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010091 +广东珠江,http://cdn2.163189.xyz/live/gdzj/stream.m3u8 +广东珠江,https://tv.cdn.com.mp/live/gdzj/stream.m3u8 +广东珠江,http://cdn2.132.us.kg/live/gdzj/stream.m3u8 +广东珠江,http://lu.wqwqwq.sbs/itv/2000000003000000033.m3u8?cdn=hnbblive +广东体育,https://epg.pw/stream/7b470f9fc5c305db0c8622117b7b25ca00eb35ba3e93e865cf0ff9df5c736681.m3u8 +广东体育,http://cdn2.163189.xyz/live/gdty/stream.m3u8 +广东体育,http://cdn2.132.us.kg/live/gdty/stream.m3u8 +广东民生,http://183.237.95.108:9901/tsfile/live/1032_1.m3u8?key=txiptv&playlive=0&authid=0 +广东民生,http://183.11.239.36:808/hls/18/index.m3u8 +广东新闻,https://satellitepull.cnr.cn/live/wxgdxwgb/playlist.m3u8 +广东少儿,http://gmxw.7766.org:808/hls/175/index.m3u8 +大湾区卫视,http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010108 +大湾区卫视,http://z.b.bkpcp.top/m.php?id=dwqws +大湾区卫视,http://goo.bkpcp.top/mg/dwqws +大湾区卫视,http://jp1.jdiptv.cc/live/nfws.m3u8?kdstime= +大湾区卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226540/1.m3u8 +深圳卫视,http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010068 +深圳卫视,http://[2409:8087:74f0:22::5]:6410/270000001128/9900000529/index.m3u8 +深圳卫视,http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226313/index.m3u8 +深圳卫视,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226313/index.m3u8 +深圳卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226313/index.m3u8 +深圳卫视,http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010068/1.m3u8 +深圳卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226959/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EGrVNEZREjuNVKiTJo2mtwg%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +深圳卫视,http://iptv.huuc.edu.cn/hls/szhd.m3u8 +深圳卫视,http://dsj.motem.top:8880/bptv/10000100000000050000000003873474.m3u8 +广州综合,http://php.jdshipin.com:8880/gztv.php?id=zhonghe +广州影视,http://php.jdshipin.com:8880/gztv.php?id=yingshi#https://tencentplay.gztv.com/live/yingshi.m3u8?txSecret=7e9bddad7c8911626ed1d2c09fc605d9&txTime=18d00acf487 +广州竞赛,http://php.jdshipin.com:8880/gztv.php?id=jingsai#https://tencentplay.gztv.com/live/jingsai.m3u8?txSecret=49c8041461997c7a97dbcc3c7fd11b4f&txTime=18d00acf487 +佛山综合,http://php.jdshipin.com:8880/fstv.php?id=fszh +汕头文旅,http://tv.zzlag.top:9003/hls/5/index.m3u8 + +广西频道,#genre# +广西国际,https://hlscdn.liangtv.cn/live/0234c48e0bc24fe1b41b9999a253e581/1075ee38e04f490690f6a36a16e09c79.m3u8 +广西国际,http://hlscdn.liangtv.cn/live/0234c48e0bc24fe1b41b9999a253e581/1075ee38e04f490690f6a36a16e09c79.m3u8?fbl= +广西新闻,https://mobilelive.gxtv.cn/live/gx_live1007/playlist.m3u8 +南宁公共,http://jzlive.jztvnews.com:90/live/jzgg.m3u8 +南宁公共,http://688b7cbf9b7a8d911a085372b6c70ab5.livehwc3.cn/hls.nntv.cn/nnlive/XWZH_24.m3u8?sub_m3u8=true&edge_slice=true&user_session_id=d1391be1fc200f8e4700c5d82b44edae +南宁影视娱乐,http://688b7cbf9b7a8d911a085372b6c70ab5.livehwc3.cn/hls.nntv.cn/nnlive/YSYL_244.m3u8?sub_m3u8=true&edge_slice=true&user_session_id=e7eb508555e76e08cc1b198d04f41fb5 +南宁新闻综合,rtmp://tv.qntv.net/channellive/ch1?zguizd +南宁新闻综合,http://688b7cbf9b7a8d911a085372b6c70ab5.livehwc3.cn/hls.nntv.cn/nnlive/XWZH_24.m3u8?sub_m3u8=true&edge_slice=true&user_session_id=d1391be1fc200f8e4700c5d82b44edae + +贵州频道,#genre# + +海南频道,#genre# +海南新闻,http://satellitepull.cnr.cn/live/wxhainxwgb/playlist.m3u8 +海南新闻,https://satellitepull.cnr.cn/live/wxhainxwgb/playlist.m3u8 +海南新闻,http://[2409:8087:5e00:24::1e]:6060/000000001000/4600001000000000111/1.m3u8 +海南新闻,http://ls.qingting.fm/live/1861.m3u8 +海南自贸,http://[2409:8087:5e00:24::1e]:6060/000000001000/4600001000000000116/1.m3u8 +海南公共,http://[2409:8087:5e00:24::1e]:6060/000000001000/460000100000000057/1.m3u8 +海南文旅,http://[2409:8087:5e00:24::1e]:6060/000000001000/4600001000000000113/1.m3u8 +海南少儿,http://[2409:8087:5e00:24::1e]:6060/000000001000/4600001000000000112/1.m3u8 + +河北频道,#genre# +河北都市,https://jwplay.hebyun.com.cn/live/hbdstv/1500k/tzwj_video.m3u8#http://tv.pull.hebtv.com/jishi/dushipindao.m3u8?t=2510710360&k=4380da13735a230c080ce8ff404033af +河北都市,http://jwplay.hebyun.com.cn/live/hbnmtv/1500k/tzwj_video.m3u8 +河北少儿科教,http://php.fjl626.cn/hebei.php?id=sekj + +河南频道,#genre# +河南民生,http://61.163.181.78:85/tsfile/live/1005_1.m3u8?key=txiptv&playlive=1&authid=0 +河南法治,http://www.cdnstv.com:6398/hls/1112/index.m3u8 +河南电视剧,http://www.cdnstv.com:6398/hls/1113/index.m3u8 +河南新闻,http://www.cdnstv.com:6398/hls/1114/index.m3u8 +河南乡村,http://www.cdnstv.com:6398/hls/1116/index.m3u8 + +湖北频道,#genre# +湖北综合,http://[2409:8087:4c0a:22:1::11]:6410/170000001115/UmaiCHAN638072216f7da/index.m3u8?AuthInfo=9kOOdBn7MFF%2F2bWjKgahUUAdKgLqNB5aOAUhcp5CeNLx3R3LdIBdA5q61lut1LwZcw4SC2tJubc%2Bq5t%2F61jvWCtjrJL0x%2BHncPgdmcbBW9I +湖北经视,http://58.19.43.46:9901/tsfile/live/1017_1.m3u8 +湖北影视,http://58.19.43.46:9901/tsfile/live/1016_1.m3u8 +湖北教育,http://[2409:8087:4c0a:22:1::11]:6410/170000001115/UmaiCHAN638072a6cbbf6/index.m3u8?AuthInfo=9kOOdBn7MFF%2F2bWjKgahUUAdKgLqNB5aOAUhcp5CeNKTFQuOKNd5i0HMa3ydMWIQ6kJ2fBJGJ77BLTXK72CqUYQsX3ZguYt0954s9hfZTfc +湖北生活,http://satellitepull.cnr.cn/live/wx32hubczshgb/playlist.m3u8 +湖北生活,https://satellitepull.cnr.cn/live/wx32hubczshgb/playlist.m3u8 +湖北生活,http://[2409:8087:4c0a:22:1::11]:6410/170000001115/UmaiCHAN638072c62e405/index.m3u8?AuthInfo=9kOOdBn7MFF%2F2bWjKgahUUAdKgLqNB5aOAUhcp5CeNKJPodw5BcDirSOw7egztI5bUvJjqPzSNAhrA37GrbRBIAjGQpzP0QmgsmuHnQyd2c + +湖南频道,#genre# +湖南国际,http://php.jdshipin.com:8880/iptv.php +湖南经视,http://php.jdshipin.com:8880/iptv.php +湖南都市,http://php.jdshipin.com:8880/iptv.php +湖南娱乐,http://php.jdshipin.com:8880/iptv.php +湖南电视剧,http://php.jdshipin.com:8880/iptv.php +湖南爱晚,http://p2.vzan.com/527645544/149039617847513156/live.m3u8 +湖南爱晚,http://php.jdshipin.com:8880/iptv.php +湖南电影,http://php.jdshipin.com:8880/iptv.php +金鹰卡通,http://[2409:8087:1a0b:df::4008]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225653/index.m3u8 +金鹰卡通,http://dsj.motem.top:8880/bptv/10000100000000050000000004796942.m3u8 +金鹰纪实,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226572/1.m3u8 +快乐垂钓,http://php.jdshipin.com/itv6.php?cid=bestzb&id=5000000011000031206 + +黑龙江频道,#genre# +黑龙江影视,http://php.jdshipin.com/TVOD/hljyd.php?id=3221226298 +黑龙江影视,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226298/index.m3u8 +黑龙江文体,http://php.jdshipin.com/TVOD/hljyd.php?id=3221226239 +黑龙江文体,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226239/index.m3u8 +黑龙江文体,http://[2409:8087:1a01:df::4025]:80/TVOD/88888888/224/3221225965/main.m3u8 +黑龙江都市,http://php.jdshipin.com/TVOD/hljyd.php?id=3221226301 +黑龙江都市,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226301/index.m3u8 +黑龙江都市,http://[2409:8087:1a01:df::4055]:80/TVOD/88888888/224/3221225969/main.m3u8 +黑龙江少儿,http://php.jdshipin.com/TVOD/hljyd.php?id=3221226304 +黑龙江少儿,https://ls.qingting.fm/live/4972/64k.m3u8 +黑龙江少儿,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226304/index.m3u8 +哈尔滨新闻综合,http://php.jdshipin.com/TVOD/hljyd.php?id=3221226434 +哈尔滨影视,http://111.43.126.240:9003/hls/5/index.m3u8 +哈尔滨影视,http://stream.hrbtv.net/yspd/sd/live.m3u8 +哈尔滨影视,https://stream.hrbtv.net/yspd/sd/live.m3u8 +哈尔滨资讯,http://stream.hrbtv.net/zxpd/sd/live.m3u8 +哈尔滨生活,http://111.43.126.240:9003/hls/3/index.m3u8 +哈尔滨生活,https://stream.hrbtv.net/shpd/sd/live.m3u8 +哈尔滨生活,https://stream.hrbtv.net/shpd/playlist.m3u8 +哈尔滨生活,http://stream.hrbtv.net/shpd/sd/live.m3u8 +哈尔滨娱乐,https://stream.hrbtv.net/ylpd/sd/live.m3u8 +哈尔滨娱乐,http://stream.hrbtv.net/ylpd/sd/live.m3u8 + +吉林频道,#genre# +吉林乡村,https://satellitepull.cnr.cn/live/wxjlxcgb/playlist.m3u8 +延边卫视,http://l.cztvcloud.com/channels/lantian/SXxinchang2/720p.m3u8# +延边卫视,http://[2409:8087:1a0b:df::4020]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226516/index.m3u8 +延边卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227045/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7Eq0D3NdTUN7FuRzr8eJsbQA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND + +江苏频道,#genre# +江苏卫视,http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010059 +江苏卫视,http://z.b.bkpcp.top/m.php?id=jsws +江苏卫视,http://goo.bkpcp.top/mg/jsws +江苏卫视,http://[2409:8087:74f0:22::6]:6410/270000001128/9900000524/index.m3u8 +江苏卫视,http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226310/index.m3u8 +江苏卫视,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226310/index.m3u8 +江苏卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226310/index.m3u8 +江苏卫视,http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010059/1.m3u8 +江苏卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226897/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7E0BmO6uHF7WFoTed__Xr3NQ%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +江苏卫视,http://iptv.huuc.edu.cn/hls/jshd.m3u8 +江苏城市,http://z.b.bkpcp.top/m.php?id=jscs +江苏城市,https://stream1.freetv.fun/675206b8446ce719bfb293b5a5296db3aa26521c9810de7c996838247cc56964.ctv +江苏综艺,https://stream1.freetv.fun/f8ef469943662bed2abc6609d9ef1720b9e93a8a0bd6f5789133461e36763f37.m3u8 +江苏影视,http://z.b.bkpcp.top/m.php?id=jsys +江苏影视,https://stream1.freetv.fun/a89dd489fa013bc4f36bcc4afe388f1783e2251c276e2566a9359d68a61c6d91.ctv +江苏体育休闲,https://stream1.freetv.fun/af1087a1c24fff7af556ac8e6c5c623303d52966f67a998cefb52c17811b09a2.ctv +江苏教育,http://z.b.bkpcp.top/m.php?id=jsjy +江苏教育,http://goo.bkpcp.top/mg/jsjy +江苏教育,https://stream1.freetv.fun/7174b4fd66ddb2a7456b7040105dc27a1e57c166593870bb773cb5f6b4546c54.ctv +南京新闻综合,http://z.b.bkpcp.top/m.php?id=njxwzh +南京新闻综合,http://live.nbs.cn/channels/njtv/xwzh/nbs06.m3u8 +南京新闻综合,https://live.nbs.cn/channels/njtv/xwzh/nbs06.m3u8 +南京教科,http://live.nbs.cn/channels/njtv/jkpd/nbs06.m3u8 +南京教科,https://live.nbs.cn/channels/njtv/jkpd/nbs06.m3u8 +南京十八,http://z.b.bkpcp.top/m.php?id=njsb +南京十八,http://live.nbs.cn/channels/njtv/sbpd/500k.m3u8 +南京十八,http://live.nbs.cn/channels/njtv/sbpd/m3u8:500k/live.m3u8 +南京十八,https://live.nbs.cn/channels/njtv/sbpd/m3u8:500k/live.m3u8 +南京十八,http://live.nbs.cn/channels/njtv/sbpd/500k.m3u8?zjiangsd +南京信息,http://live.nbs.cn/channels/njtv/xxpd/500k.m3u8?zjiangsd +南京娱乐,http://live.nbs.cn/channels/njtv/ylpd/500k.m3u8?zjiangsd +南京少儿,http://live.nbs.cn/channels/njtv/sepd/nbs23.m3u8 +南京少儿,https://live.nbs.cn/channels/njtv/sepd/nbs23.m3u8 +南京少儿,http://live.nbs.cn/channels/njtv/sepd/m3u8:500k/live.m3u8 +南京少儿,http://live.nbs.cn/channels/njtv/sepd/500k.m3u8?zjiangsd +南京生活,https://live.nbs.cn/channels/njtv/shpd/m3u8:500k/live.m3u8 + +辽宁频道,#genre# +辽宁都市,https://ls.qingting.fm/live/1099/64k.m3u8 +辽宁影视剧,http://120.76.248.139/live/bfgd/4200000070.m3u8 +辽宁影视剧,http://dassby.qqff.top:99/live/%E8%BE%BD%E5%AE%81%E5%BD%B1%E8%A7%86%E5%89%A7/index.m3u8 +辽宁生活,http://120.76.248.139/live/bfgd/4200000073.m3u8 +辽宁生活,http://dassby.qqff.top:99/live/辽宁生活/index.m3u8 +辽宁教育青少,http://120.76.248.139/live/bfgd/4200000075.m3u8 +辽宁教育青少,http://dassby.qqff.top:99/live/辽宁教育青少/index.m3u8 +辽宁北方,http://120.76.248.139/live/bfgd/4200000071.m3u8 +辽宁北方,http://dassby.qqff.top:99/live/辽宁北方/index.m3u8 +朝阳新闻综合,http://120.76.248.139/live/bfgd/4200000282.m3u8 + +内蒙古频道,#genre# +内蒙古经济生活,https://ls.qingting.fm/live/1885/64k.m3u8 +内蒙古农牧,http://play1-qk.nmtv.cn:80/live/1686561299036179.m3u8 + +宁夏频道,#genre# +宁夏经济,https://ls.qingting.fm/live/1841/64k.m3u8 + +青海频道,#genre# +安多卫视,http://php.jdshipin.com/TVOD/hljyd.php?id=3221225659 +安多卫视,http://[2409:8087:1a0b:df::4007]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225659/index.m3u8 +安多卫视,https://liveout.xntv.tv/a65jur/96iln2.m3u8 +安多卫视,https://liveout.xntv.tv/a65jur/90p2i1.m3u8?zqinghd + +山东频道,#genre# +山东齐鲁,http://61.156.228.12:8154/tsfile/live/1001_1.m3u8?key=txiptv&playlive=1&authid=0 +山东齐鲁,http://111.14.181.15:9901/tsfile/live/1000_1.m3u8 +山东文旅,http://58.57.40.22:9901/tsfile/live/1023_1.m3u8 +山东综艺,http://123.129.70.178:9901/tsfile/live/1001_1.m3u8 +山东综艺,http://111.14.181.15:9901/tsfile/live/1004_1.m3u8 +山东生活,http://ls.qingting.fm/live/60260.m3u8 +山东新闻,http://ls.qingting.fm/live/60180.m3u8 + +山西频道,#genre# + +陕西频道,#genre# +陕西都市青春,http://112.46.105.20:8009/hls/19/index.m3u8 +农林卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226544/1.m3u8 + +四川频道,#genre# +四川科教,http://182.150.115.21:8030/pcgacg/pcgacg_0.m3u8 + +上海频道,#genre# +上海新闻综合,http://z.b.bkpcp.top/m.php?id=shxwzh +上海第一财经,https://satellitepull.cnr.cn/live/wx32dycjgb/playlist.m3u8 +上海都市,http://yc.myds.me:35455/itv/5000000010000018926.m3u8?cdn=bestzb +哈哈炫动,http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010117 +哈哈炫动,http://[2409:8087:1a0b:df::4001]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225657/index.m3u8 +哈哈炫动,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226931/1.m3u8 +动漫秀场,http://php.jdshipin.com/itv6.php?cid=bestzb&id=5000000011000031113 +游戏风云,http://php.jdshipin.com/itv6.php?cid=bestzb&id=5000000011000031114 +游戏风云,http://z.b.bkpcp.top/m.php?id=yxfy +游戏风云,http://gat.bkpcp.top/ymg.php?id=yxfy +法治天地,http://php.jdshipin.com/itv6.php?cid=bestzb&id=9001547084732463424 +法治天地,http://z.b.bkpcp.top/m.php?id=fztd +劲爆体育,http://php.jdshipin.com/itv6s.php?cid=hnbblive&id=2000000002000000008 +劲爆体育,http://z.b.bkpcp.top/m.php?id=jbty +劲爆体育,http://goo.bkpcp.top/mg/jbty +魅力足球,http://z.b.bkpcp.top/m.php?id=mlzq +魅力足球,http://gat.bkpcp.top/ymg.php?id=mlzq +魅力足球,http://goo.bkpcp.top/mg/mlzq +欢笑剧场,http://z.b.bkpcp.top/m.php?id=hxjc +欢笑剧场,http://gat.bkpcp.top/ymg.php?id=hxjc +欢笑剧场,http://goo.bkpcp.top/mg/hxjc +七彩戏剧,http://php.jdshipin.com/itv6s.php?cid=bestzb&id=5000000011000031116 +七彩戏剧,http://z.b.bkpcp.top/m.php?id=qcxj +生活时尚,rtsp://115.153.245.70/PLTV/88888888/224/3221225603/iptv7992.smil +生活时尚,rtsp://115.153.254.81/PLTV/88888888/224/3221225603/iptv7992.smil +生活时尚,rtsp://115.153.240.228:554/PLTV/88888888/224/3221225603/iptv7992.smil +生活时尚,rtsp://115.153.212.72/PLTV/88888888/224/3221225603/iptv7992.smil +生活时尚,rtsp://115.153.247.80/PLTV/88888888/224/3221225603/iptv7992.smil +生活时尚,rtsp://115.153.230.145/PLTV/88888888/224/3221225603/iptv7992.smil +生活时尚,rtsp://115.153.222.112:554/PLTV/88888888/224/3221225603/iptv7992.smil +生活时尚,rtsp://115.153.233.154/PLTV/88888888/224/3221225603/iptv7992.smil +生活时尚,rtsp://123.147.112.17:8089/04000001/01000000004000000000000000000418?AuthInfo=xxx&userid=gf001&userid=gf001 +乐游,http://112.46.105.20:8009/hls/75/index.m3u8 +东方财经,http://[2409:8087:5e00:24::2d]:6610/000000001000/1/5000000007000010003/index.m3u8?channel-id=bestzb&Contentid=5000000007000010003&livemode=1&stbId=3 +东方财经,http://yc.myds.me:35455/itv/5000000007000010003.m3u8?cdn=bestzb +新视觉,http://120.76.248.139/live/bfgd/4200000249.m3u8 + +天津频道,#genre# +天津新闻,http://nas.hssvm.com:8888/udp/225.1.1.130:5002 +天津文艺,http://nas.hssvm.com:8888/udp/225.1.1.131:5002 +天津都市,http://nas.hssvm.com:8888/udp/225.1.1.128:5002 +滨海新闻,http://traffic.jbh.tjbh.com/live/bhtv10/playlist.m3u8 + +新疆频道,#genre# +兵团卫视,http://[2409:8087:1a0b:df::4020]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226439/index.m3u8 + +云南频道,#genre# + +浙江频道,#genre# +浙江卫视,http://zwebl02.cztv.com/live/channel011080P.m3u8?auth_key=2524708799-0-0-9a1229d8b9d311024ebea08c3fb1d63f +浙江卫视,http://zhfivel02.cztv.com/channel01/1080p.m3u8?auth_key=2524708799-0-0-adde67b1b344fdd5e512f30a4ae31915 +浙江卫视,http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010070 +浙江卫视,http://z.b.bkpcp.top/m.php?id=zjws +浙江卫视,http://goo.bkpcp.top/mg/zjws +浙江卫视,http://l.cztvcloud.com/channels/lantian/SXpinghu3/720p.m3u8 +浙江卫视,http://[2409:8087:74f0:22::5]:6410/270000001128/9900000531/index.m3u8 +浙江卫视,http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226339/index.m3u8 +浙江卫视,http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226339/index.m3u8 +浙江卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226339/index.m3u8 +浙江钱江,http://l.cztvcloud.com/channels/lantian/SXyuyao2/720p.m3u8 +浙江经济生活,http://zwebl02.cztv.com/live/channel031080P.m3u8?auth_key=2524708799-0-0-cc09266f8e043a6df28eb148cb488d37 +浙江经济生活,http://zhfivel02.cztv.com/channel03/1080p.m3u8?auth_key=2524708799-0-0-76c0751e0f656453baf39803124fc08a +浙江经济生活,http://l.cztvcloud.com/channels/lantian/SXxiaoshan2/720p.m3u8 +浙江经济生活,http://ali-vl.cztv.com/channels/lantian/channel003/360p.m3u8 +浙江经济生活,http://ls.qingting.fm/live/1099.m3u8 +浙江教科影视,http://zwebl02.cztv.com/live/channel041080P.m3u8?auth_key=2524708799-0-0-f195b808217db133bfd648edc01e91fa +浙江教科影视,http://zhfivel02.cztv.com/channel04/1080p.m3u8?auth_key=2524708799-0-0-514823d0816d4af94a9f32bd7614ed67 +浙江教科影视,http://ali-vl.cztv.com/channels/lantian/channel004/360p.m3u8 +浙江影视娱乐,http://ali-m-l.cztv.com/channels/lantian/channel005/1080p.m3u8 +浙江民生休闲,http://zhfivel02.cztv.com/channel06/1080p.m3u8?auth_key=2524708799-0-0-59c4fe94512c59a90316fbf17ae2fbef +浙江民生休闲,http://ali-vl.cztv.com/channels/lantian/channel006/360p.m3u8 +浙江新闻,http://zwebl02.cztv.com/live/channel071080P.m3u8?auth_key=2524708799-0-0-e3b50ca59d2c0883d5386d8bc4cdefbc +浙江新闻,http://zhfivel02.cztv.com/channel07/1080p.m3u8?auth_key=2524708799-0-0-4af48ba83e791a300595dd0b2bb30e6e +浙江新闻,http://ali-vl.cztv.com/channels/lantian/channel007/360p.m3u8 +浙江少儿,https://qiniup-m-l.cztv.com/channels/lantian/channel008/1080p.m3u8 +浙江少儿,https://ct-m-l.cztv.com/channels/lantian/channel008/1080p.m3u8 +浙江少儿,http://ali-vl.cztv.com/channels/lantian/channel008/360p.m3u8 +浙江少儿,http://ali-m-l.cztv.com/channels/lantian/channel008/1080p.m3u8?fbl= +浙江国际,http://zwebl02.cztv.com/live/channel101080P.m3u8?auth_key=2524708799-0-0-c9473fea1da3eff0f29f4c9cf2b36519 +浙江国际,http://zhfivel02.cztv.com/channel10/1080p.m3u8?auth_key=2524708799-0-0-646cad31c1d94b002a325cd75475d30f +浙江国际,https://ct-m-l.cztv.com/channels/lantian/channel010/1080p.m3u8 +浙江国际,https://qiniup-m-l.cztv.com/channels/lantian/channel010/1080p.m3u8 +浙江国际,http://ali-vl.cztv.com/channels/lantian/channel010/360p.m3u8 +浙江之江纪录,http://ali-m-l.cztv.com/channels/lantian/channel012/1080p.m3u8 +杭州综合,http://goo.bkpcp.top/mg/hzzh +杭州明珠,http://goo.bkpcp.top/mg/hzmz +杭州生活,http://goo.bkpcp.top/mg/hzsh +杭州影视,http://goo.bkpcp.top/mg/hzys +杭州少体,http://goo.bkpcp.top/mg/hzse + +其它频道,#genre# +CGTN,https://0472.org/hls/cgtn.m3u8 +CGTN,https://news.cgtn.com/resource/live/english/cgtn-news.m3u8 +CGTN阿语,https://0472.org/hls/cgtna.m3u8 +CGTN俄语,https://0472.org/hls/cgtne.m3u8 +CGTN法语,https://0472.org/hls/cgtnf.m3u8 +CGTN纪录,https://0472.org/hls/cgtnd.m3u8 +CGTN西语,https://0472.org/hls/cgtnx.m3u8 +CGTN英语,https://0472.org/hls/cgtn.m3u8 +CHC动作电影,http://z.b.bkpcp.top/m.php +CHC动作电影,http://goo.bkpcp.top/mg/dzdy +CHC动作电影,http://z.b.bkpcp.top/m.php?id=dzdy +CHC动作电影,https://stream1.freetv.fun/chcdong-zuo-dian-ying-24.ctv +CHC动作电影,http://eastscreen.tv/ooooo.php +CHC动作电影,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226329/1.m3u8 +CHC家庭影院,http://gat.bkpcp.top/ymg.php?id=jtyy +CHC家庭影院,http://goo.bkpcp.top/mg/jtyy +CHC家庭影院,http://z.b.bkpcp.top/m.php?id=jtyy +CHC家庭影院,https://stream1.freetv.fun/chcjia-ting-ying-yuan-17.ctv +CHC家庭影院,http://eastscreen.tv/ooooo.php +CHC影迷电影,https://stream1.freetv.fun/chcying-mi-dian-ying-12.ctv +CHC影迷电影,https://stream1.freetv.fun/chcying-mi-dian-ying-15.ctv +CHC影迷电影,http://eastscreen.tv/ooooo.php +黑莓电影,http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010073 +黑莓电影,http://[2409:8087:1:20:20::27]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226939/1.m3u8 +黑莓电影,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226939/1.m3u8 +黑莓电影,https://epg.pw/stream/ffcb6572863f0745a7369fbd9d901f1dfd0ab8fab8bad8bebb4e01c90b303c47.m3u8 +黑莓动画,http://php.jdshipin.com/TVOD/hnyd.php?id=200000001898/460000089800010002 +黑莓动画,http://[2409:8087:1a0b:df::4006]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225662/index.m3u8 +黑莓动画,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226935/1.m3u8 + +港·澳·台,#genre# +凤凰中文,https://cdn.iptv8k.top/dl/jrys.php?id=19&time=20240926215313&ip=111.229.253.40 +凤凰中文,http://playtv-live.ifeng.com/live/06OLEGEGM4G_audio.m3u8 +凤凰中文,http://php.jdshipin.com/TVOD/iptv.php +凤凰资讯,http://playtv-live.ifeng.com/live/06OLEEWQKN4_audio.m3u8 +凤凰资讯,http://php.jdshipin.com/TVOD/iptv.php +凤凰资讯,http://cdn3.132.us.kg/live/fhzx/stream.m3u8 +凤凰香港,https://cdn.iptv8k.top/dl/jrys.php?id=18&time=20240926215313&ip=111.229.253.40 +翡翠台,https://cdn.iptv8k.top/dl/jrys.php?id=3&time=20240926215313&ip=111.229.253.40『线路08』 +翡翠台,http://php.jdshipin.com:8880/TVOD/iptv.php?id=fct3&token=512df05ba47edb46400575c93e179adb7981226d414516400ed1d382cb126adc517715d4ccd3a2276bf3c7b72d52f58905225cf0b1cc461b7888443f +翡翠台,http://cdn9.163189.xyz/smt1.1.php?id=jade_twn +翡翠台,http://v2h.jdshipin.com/jade2/jade.stream/chunklist_w100.m3u8 +无线新闻,http://php.jdshipin.com:8880/TVOD/iptv.php?id=tvbxw +无线新闻,https://cdn9.163189.xyz/smt3.1.1.php?id=inews_twn +无线新闻,http://cdn9.163189.xyz/smt1.1.php?id=inews_twn +无线新闻,https://v2hcdn.jdshipin.com/news/news.stream/chunklist_w105.m3u8 +无线新闻,http://v2hcdn.jdshipin.com/news/news.stream/chunklist_w1005.m3u8 +无线星河,http://php.jdshipin.com/smt.php?id=Xinhe +美亚电影,https://live.tvfix.org/live/mydy/index.m3u8 +天映经典,https://cdn.iptv8k.top/dl/jrys.php?id=71&time=20240926215313&ip=111.229.253.40 +东森超视,https://cdn.iptv8k.top/dl/jrys.php?id=216&time=20240926215313&ip=111.229.253.40#rtmp://f13h.mine.nu/sat/tv331#rtmp://f13h.mine.nu/sat/tv331 +东森综合,https://cdn.iptv8k.top/dl/jrys.php?id=221&time=20240926215313&ip=111.229.253.40 +东森新闻,https://stream1.freetv.fun/dong-sen-xin-wen-1.m3u8 +三立新闻,https://cdn.iptv8k.top/dl/jrys.php?id=273&time=20240926215313&ip=111.229.253.40 +三立新闻,https://stream1.freetv.fun/san-li-xin-wen-3.m3u8 +龙华电影,https://cdn8.163189.xyz/live/lhdy/stream.m3u8 +纬来育乐,https://cdn.iptv8k.top/dl/jrys.php?id=289&time=20240926215313&ip=111.229.253.40 +纬来体育,https://cdn.iptv8k.top/dl/jrys.php?id=292&time=20240926215313&ip=111.229.253.40 + +AKTV,#genre# +TVB翡翠台,http://php.jdshipin.com:8880/smt.php?id=jade_twn +东森新闻,https://stream1.freetv.fun/dong-sen-xin-wen-1.m3u8 +龙华电影,https://cdn8.163189.xyz/live/lhdy/stream.m3u8 + +海外频道,#genre# +AXS TV Now,https://dikcfc9915kp8.cloudfront.net/hls/1080p/playlist.m3u8 \ No newline at end of file diff --git a/潇洒/lives/APTV.txt b/潇洒/lives/APTV.txt new file mode 100644 index 0000000..2bed75d --- /dev/null +++ b/潇洒/lives/APTV.txt @@ -0,0 +1,234 @@ +#EXTM3U x-tvg-url="https://epg.aptv.app/pp.xml.gz,https://epg.aptv.app/xml" catchup="append" catchup-source="?playbackbegin=${(b)yyyyMMddHHmmss}&playbackend=${(e)yyyyMMddHHmmss}" +#EXT-X-APP APTV +#EXT-X-APTV-TYPE remote +#EXT-X-SUB-URL https://gh.aptv.app/https://raw.githubusercontent.com/Kimentanm/aptv/master/m3u/iptv.m3u + +#EXTINF:-1 tvg-name="CHC家庭影院" group-title="央视IPV4",CHC家庭影院 +http://148.135.93.213/live.php?id=CHC家庭影院 +#EXTINF:-1 tvg-name="CHC动作电影" http-user-agent="AptvPlayer-UA" group-title="央视IPV4",CHC动作电影 +http://118.89.87.74:88/live.php?id=CHC动作电影 +#EXTINF:-1 tvg-name="CHC影迷电影" group-title="央视IPV4",CHC影迷电影 +http://148.135.93.213/live.php?id=CHC影迷电影 +#EXTINF:-1 tvg-id="CCTV1" tvg-name="CCTV1" http-user-agent="AptvPlayer-UA" group-title="央视IPV4",CCTV1 +http://118.89.87.74:88/live.php?id=CCTV1 +#EXTINF:-1 tvg-id="CCTV2" tvg-name="CCTV2" group-title="央视IPV4",CCTV2 +http://148.135.93.213/live.php?id=CCTV2 +#EXTINF:-1 tvg-id="CCTV3" tvg-name="CCTV3" http-user-agent="AptvPlayer-UA" group-title="央视IPV4",CCTV3 +http://118.89.87.74:88/live.php?id=CCTV3 +#EXTINF:-1 tvg-id="CCTV4" tvg-name="CCTV4" group-title="央视IPV4",CCTV4 +http://148.135.93.213/live.php?id=CCTV4 +#EXTINF:-1 tvg-id="CCTV5" tvg-name="CCTV5" http-user-agent="AptvPlayer-UA" group-title="央视IPV4",CCTV5 +http://118.89.87.74:88/live.php?id=CCTV5 +#EXTINF:-1 tvg-id="CCTV5PLUS" tvg-name="CCTV5+" group-title="央视IPV4",CCTV5+ +http://148.135.93.213/live.php?id=CCTV5p +#EXTINF:-1 tvg-id="CCTV6" tvg-name="CCTV6" http-user-agent="AptvPlayer-UA" group-title="央视IPV4",CCTV6 +http://118.89.87.74:88/live.php?id=CCTV6 +#EXTINF:-1 tvg-id="CCTV7" tvg-name="CCTV7" group-title="央视IPV4",CCTV7 +http://148.135.93.213/live.php?id=CCTV7 +#EXTINF:-1 tvg-id="CCTV8" tvg-name="CCTV8" http-user-agent="AptvPlayer-UA" group-title="央视IPV4",CCTV8 +http://118.89.87.74:88/live.php?id=CCTV8 +#EXTINF:-1 tvg-id="CCTV9" tvg-name="CCTV9" group-title="央视IPV4",CCTV9 +http://148.135.93.213/live.php?id=CCTV9 +#EXTINF:-1 tvg-id="CCTV10" tvg-name="CCTV10" http-user-agent="AptvPlayer-UA" group-title="央视IPV4",CCTV10 +http://118.89.87.74:88/live.php?id=CCTV10 +#EXTINF:-1 tvg-id="CCTV11" tvg-name="CCTV11" group-title="央视IPV4",CCTV11 +http://148.135.93.213/live.php?id=CCTV11 +#EXTINF:-1 tvg-id="CCTV12" tvg-name="CCTV12" http-user-agent="AptvPlayer-UA" group-title="央视IPV4",CCTV12 +http://118.89.87.74:88/live.php?id=CCTV12 +#EXTINF:-1 tvg-id="CCTV13" tvg-name="CCTV13" group-title="央视IPV4",CCTV13 +http://148.135.93.213/live.php?id=CCTV13 +#EXTINF:-1 tvg-id="CCTV14" tvg-name="CCTV14" http-user-agent="AptvPlayer-UA" group-title="央视IPV4",CCTV14 +http://118.89.87.74:88/live.php?id=CCTV14 +#EXTINF:-1 tvg-id="CCTV15" tvg-name="CCTV15" group-title="央视IPV4",CCTV15 +http://148.135.93.213/live.php?id=CCTV15 +#EXTINF:-1 tvg-id="CCTV16" tvg-name="CCTV16" http-user-agent="AptvPlayer-UA" group-title="央视IPV4",CCTV16 +http://118.89.87.74:88/live.php?id=CCTV16 +#EXTINF:-1 tvg-id="CCTV17" tvg-name="CCTV17" group-title="央视IPV4",CCTV17 +http://148.135.93.213/live.php?id=CCTV17 +#EXTINF:-1 tvg-id="CGTN" tvg-name="CGTN" group-title="央视IPV4",CGTN英语 +https://0472.org/hls/cgtn.m3u8 +#EXTINF:-1 tvg-id="CGTN纪录" tvg-name="CGTN纪录" group-title="央视IPV4",CGTN纪录 +https://0472.org/hls/cgtnd.m3u8 +#EXTINF:-1 tvg-id="CGTN西语" tvg-name="CGTN西语" group-title="央视IPV4",CGTN西语 +https://0472.org/hls/cgtnx.m3u8 +#EXTINF:-1 tvg-id="CGTN法语" tvg-name="CGTN法语" group-title="央视IPV4",CGTN法语 +https://0472.org/hls/cgtnf.m3u8 +#EXTINF:-1 tvg-id="CGTN阿语" tvg-name="CGTN阿语" group-title="央视IPV4",CGTN阿语 +https://0472.org/hls/cgtna.m3u8 +#EXTINF:-1 tvg-id="CGTN俄语" tvg-name="CGTN俄语" group-title="央视IPV4",CGTN俄语 +https://0472.org/hls/cgtne.m3u8 + +#EXTINF:-1 tvg-id="重温经典" tvg-name="重温经典" http-user-agent="AptvPlayer-UA" group-title="卫视IPV4",重温经典 +http://118.89.87.74:88/live.php?id=重温经典 +#EXTINF:-1 tvg-id="翡翠台" tvg-name="翡翠台" http-user-agent="AptvPlayer-UA" group-title="卫视IPV4",翡翠台 +http://118.89.87.74:88/live.php?id=翡翠台 +#EXTINF:-1 tvg-id="五星体育" tvg-name="五星体育" http-user-agent="iPhone" http-header="Referer=https://live.kankanews.com/" group-title="卫视IPV4",五星体育 +http://118.89.87.74:88/live.php?id=五星体育 +#EXTINF:-1 tvg-id="凤凰资讯" tvg-name="凤凰资讯" http-user-agent="iPhone" group-title="卫视IPV4" catchup="append" catchup-source="?playseek=${(b)yyyyMMddHHmmss}-${(e)yyyyMMddHHmmss}",凤凰资讯 +http://118.89.87.74:88/phenix.php?id=fhzx +#EXTINF:-1 tvg-id="凤凰中文" tvg-name="凤凰中文" http-user-agent="iPhone" group-title="卫视IPV4" catchup="append" catchup-source="?playseek=${(b)yyyyMMddHHmmss}-${(e)yyyyMMddHHmmss}",凤凰中文 +http://118.89.87.74:88/phenix.php?id=fhzw +#EXTINF:-1 tvg-id="凤凰香港" tvg-name="凤凰香港" http-user-agent="iPhone" group-title="卫视IPV4" catchup="append" catchup-source="?playseek=${(b)yyyyMMddHHmmss}-${(e)yyyyMMddHHmmss}",凤凰香港 +http://118.89.87.74:88/phenix.php?id=fhhk +#EXTINF:-1 tvg-id="香港卫视" tvg-name="香港卫视" http-user-agent="AptvPlayer-UA" group-title="卫视IPV4",香港卫视 +http://118.89.87.74:88/live.php?id=香港卫视 +#EXTINF:-1 tvg-id="湖南卫视" tvg-name="湖南卫视" http-user-agent="AptvPlayer-UA" group-title="卫视IPV4",湖南卫视 +http://118.89.87.74:88/live.php?id=湖南卫视 +#EXTINF:-1 tvg-id="北京卫视" tvg-name="北京卫视" http-user-agent="AptvPlayer-UA" group-title="卫视IPV4",北京卫视 +http://118.89.87.74:88/live.php?id=北京卫视 +#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" http-user-agent="AptvPlayer-UA" group-title="卫视IPV4",深圳卫视 +http://118.89.87.74:88/live.php?id=深圳卫视 +#EXTINF:-1 tvg-id="浙江卫视" tvg-name="浙江卫视" http-user-agent="AptvPlayer-UA" group-title="卫视IPV4",浙江卫视 +http://118.89.87.74:88/live.php?id=浙江卫视 +#EXTINF:-1 tvg-id="江苏卫视" tvg-name="江苏卫视" http-user-agent="AptvPlayer-UA" http-header="Referer=https://litchi-play-encrypted-site.jstv.com/" group-title="卫视IPV4",江苏卫视 +http://118.89.87.74:88/live.php?id=江苏卫视 +#EXTINF:-1 tvg-id="陕西卫视" tvg-name="陕西卫视" http-user-agent="AptvPlayer-UA" group-title="卫视IPV4",陕西卫视 +http://118.89.87.74:88/live.php?id=陕西卫视 +#EXTINF:-1 tvg-id="湖北卫视" tvg-name="湖北卫视" http-user-agent="AptvPlayer-UA" group-title="卫视IPV4",湖北卫视 +http://118.89.87.74:88/live.php?id=湖北卫视 +#EXTINF:-1 tvg-id="内蒙古卫视" tvg-name="内蒙古卫视" http-user-agent="AptvPlayer-UA" group-title="卫视IPV4",内蒙古卫视 +http://118.89.87.74:88/live.php?id=内蒙古卫视 +#EXTINF:-1 tvg-id="江西卫视" tvg-name="江西卫视" http-user-agent="AptvPlayer-UA" group-title="卫视IPV4",江西卫视 +http://118.89.87.74:88/live.php?id=江西卫视 +#EXTINF:-1 tvg-id="广东卫视" tvg-name="广东卫视" http-user-agent="AptvPlayer-UA" group-title="卫视IPV4",广东卫视 +http://118.89.87.74:88/live.php?id=广东卫视 +#EXTINF:-1 tvg-id="东方卫视" tvg-name="东方卫视" http-user-agent="AptvPlayer-UA" group-title="卫视IPV4",东方卫视 +http://118.89.87.74:88/live.php?id=东方卫视 +#EXTINF:-1 tvg-id="西藏卫视" tvg-name="西藏卫视" http-user-agent="AptvPlayer-UA" group-title="卫视IPV4",西藏卫视 +http://118.89.87.74:88/live.php?id=西藏卫视 +#EXTINF:-1 tvg-id="新疆卫视" tvg-name="新疆卫视" http-user-agent="AptvPlayer-UA" group-title="卫视IPV4",新疆卫视 +http://118.89.87.74:88/live.php?id=新疆卫视 +#EXTINF:-1 tvg-id="青海卫视" tvg-name="青海卫视" group-title="卫视IPV4",青海卫视 +http://148.135.93.213/live.php?id=青海卫视 +#EXTINF:-1 tvg-id="东南卫视" tvg-name="东南卫视" group-title="卫视IPV4",东南卫视 +http://148.135.93.213/live.php?id=东南卫视 +#EXTINF:-1 tvg-id="吉林卫视" tvg-name="吉林卫视" group-title="卫视IPV4",吉林卫视 +http://148.135.93.213/live.php?id=吉林卫视 +#EXTINF:-1 tvg-id="四川卫视" tvg-name="四川卫视" group-title="卫视IPV4",四川卫视 +http://148.135.93.213/live.php?id=四川卫视 +#EXTINF:-1 tvg-id="天津卫视" tvg-name="天津卫视" group-title="卫视IPV4",天津卫视 +http://148.135.93.213/live.php?id=天津卫视 +#EXTINF:-1 tvg-id="安徽卫视" tvg-name="安徽卫视" http-user-agent="iPhone" http-referer="https://www.ahtv.cn/" group-title="卫视IPV4",安徽卫视 +http://118.89.87.74:88/live.php?id=安徽卫视 +#EXTINF:-1 tvg-id="山东卫视" tvg-name="山东卫视" group-title="卫视IPV4",山东卫视 +http://148.135.93.213/live.php?id=山东卫视 +#EXTINF:-1 tvg-id="山西卫视" tvg-name="山西卫视" group-title="卫视IPV4",山西卫视 +http://148.135.93.213/live.php?id=山西卫视 +#EXTINF:-1 tvg-id="广西卫视" tvg-name="广西卫视" group-title="卫视IPV4",广西卫视 +http://148.135.93.213/live.php?id=广西卫视 +#EXTINF:-1 tvg-id="河北卫视" tvg-name="河北卫视" group-title="卫视IPV4",河北卫视 +http://148.135.93.213/live.php?id=河北卫视 +#EXTINF:-1 tvg-id="河南卫视" tvg-name="河南卫视" group-title="卫视IPV4",河南卫视 +http://148.135.93.213/live.php?id=河南卫视 +#EXTINF:-1 tvg-id="甘肃卫视" tvg-name="甘肃卫视" group-title="卫视IPV4",甘肃卫视 +http://148.135.93.213/live.php?id=甘肃卫视 +#EXTINF:-1 tvg-id="贵州卫视" tvg-name="贵州卫视" group-title="卫视IPV4",贵州卫视 +http://148.135.93.213/live.php?id=贵州卫视 +#EXTINF:-1 tvg-id="辽宁卫视" tvg-name="辽宁卫视" group-title="卫视IPV4",辽宁卫视 +http://148.135.93.213/live.php?id=辽宁卫视 +#EXTINF:-1 tvg-id="重庆卫视" tvg-name="重庆卫视" group-title="卫视IPV4",重庆卫视 +http://148.135.93.213/live.php?id=重庆卫视 +#EXTINF:-1 tvg-id="黑龙江卫视" tvg-name="黑龙江卫视" group-title="卫视IPV4",黑龙江卫视 +http://148.135.93.213/live.php?id=黑龙江卫视 +#EXTINF:-1 tvg-id="海南卫视" tvg-name="海南卫视" group-title="卫视IPV4",海南卫视 +http://148.135.93.213/live.php?id=海南卫视 +#EXTINF:-1 tvg-id="大湾区卫视" tvg-name="大湾区卫视" group-title="卫视IPV4",大湾区卫视 +http://148.135.93.213/live.php?id=大湾区卫视 + +#EXTINF:-1 tvg-id="北京卫视" tvg-name="北京卫视" http-user-agent="AptvPlayer-UA" group-title="4K8K频道",北京卫视-4K +http://118.89.87.74:88/live.php?id=北京卫视 +#EXTINF:-1 tvg-id="深圳卫视" tvg-name="深圳卫视" http-user-agent="AptvPlayer-UA" group-title="4K8K频道",深圳卫视-4K +http://118.89.87.74:88/live.php?id=深圳卫视 +#EXTINF:-1 tvg-id="苏州4K" tvg-name="苏州4K" group-title="4K8K频道",苏州4K +https://tylive.kan0512.com/norecord/csztv4k_4k.m3u8 +#EXTINF:-1 tvg-id="河北4K" tvg-name="河北4K" group-title="4K8K频道",河北4K +https://event.pull.hebtv.com:443/live/live101.m3u8 +#EXTINF:-1 tvg-id="北京纪实科教" tvg-name="北京纪实科教" http-user-agent="AptvPlayer-UA" group-title="4K8K频道" tvg-logo="https://gcore.jsdelivr.net/gh/taksssss/tv/icon/北京纪实科教.png",北京纪实科教8K +http://118.89.87.74:88/brtv8k.php + +#EXTINF:-1 tvg-name="春晚" group-title="历年春晚",春晚1983 +https://alimov2.a.kwimgs.com/upic/2022/01/31/15/BMjAyMjAxMzExNTU5MTRfNDAzMDAxOTlfNjYyNzMxNjcwMjBfMF8z_b_Beb3bda599f76c60c463c433ca7460153.mp4 +#EXTINF:-1 tvg-name="春晚" group-title="历年春晚",春晚1984 +https://alimov2.a.kwimgs.com/upic/2022/01/31/15/BMjAyMjAxMzExNTU5NTRfNDAzMDAxOTlfNjYyNzMyMzg3MTRfMF8z_b_B192356dadbc90d207ba16964d4c2914c.mp4 +#EXTINF:-1 tvg-name="春晚" group-title="历年春晚",春晚1985 +https://alimov2.a.kwimgs.com/upic/2022/01/31/16/BMjAyMjAxMzExNjAwMDFfNDAzMDAxOTlfNjYyNzMyNTAwMzJfMF8z_b_Be73c5abcbc0eeb2ec9fce6842e1362a4.mp4 +#EXTINF:-1 tvg-name="春晚" group-title="历年春晚",春晚1986 +https://alimov2.a.kwimgs.com/upic/2022/01/31/16/BMjAyMjAxMzExNjAwMDRfNDAzMDAxOTlfNjYyNzMyNTU0OTRfMF8z_b_B24f7d19f1132fa5d7f502f8377ad5567.mp4 +#EXTINF:-1 tvg-name="春晚" group-title="历年春晚",春晚1987 +https://alimov2.a.kwimgs.com/upic/2022/01/31/16/BMjAyMjAxMzExNjAwMDhfNDAzMDAxOTlfNjYyNzMyNjMyMDNfMF8z_b_B570493ed8f7200d4013a66b2d21b2de9.mp4 +#EXTINF:-1 tvg-name="春晚" group-title="历年春晚",春晚1988 +https://alimov2.a.kwimgs.com/upic/2022/01/31/16/BMjAyMjAxMzExNjAwMTJfNDAzMDAxOTlfNjYyNzMyNjkxNjBfMF8z_b_B8c835b83a92d25bde81ba22c5cd9521e.mp4 +#EXTINF:-1 tvg-name="春晚" group-title="历年春晚",春晚1989 +https://alimov2.a.kwimgs.com/upic/2022/01/31/16/BMjAyMjAxMzExNjAwMTVfNDAzMDAxOTlfNjYyNzMyNzQ2OTlfMF8z_b_Be477b27b9ce655d2372df56a5a3d96ef.mp4 +#EXTINF:-1 tvg-name="春晚" group-title="历年春晚",春晚1990 +https://cdn8.yzzy-online.com/20220704/597_e0d90c37/1000k/hls/index.m3u8 +#EXTINF:-1 tvg-name="春晚" group-title="历年春晚",春晚1991 +https://alimov2.a.kwimgs.com/upic/2022/01/31/16/BMjAyMjAxMzExNjI2MTVfNDAzMDAxOTlfNjYyNzYwNjUxNjVfMF8z_b_B8feb7b85888678d71bf37a259c6850f6.mp4 +#EXTINF:-1 tvg-name="春晚" group-title="历年春晚",春晚1992 +https://txmov2.a.kwimgs.com/bs3/video-hls/5256826755663896297_hlshd15.m3u8 +#EXTINF:-1 tvg-name="春晚" group-title="历年春晚",春晚1993 +https://alimov2.a.kwimgs.com/upic/2023/01/13/22/BMjAyMzAxMTMyMjEwMDNfNDAzMDAxOTlfOTM1MTIzMzYwODJfMF8z_b_B647d10e431b4cc5e48e6c77347d69021.mp4 +#EXTINF:-1 tvg-name="春晚" group-title="历年春晚",春晚1994 +https://alimov2.a.kwimgs.com/upic/2023/01/13/22/BMjAyMzAxMTMyMjEwMDNfNDAzMDAxOTlfOTM1MTIzMzYxMjNfMF8z_b_B3dde97f36273f04403d4dc5eec611a35.mp4 +#EXTINF:-1 tvg-name="春晚" group-title="历年春晚",春晚1995 +https://alimov2.a.kwimgs.com/upic/2023/01/13/20/BMjAyMzAxMTMyMDA5MjJfNDAzMDAxOTlfOTM0OTkwNDQwNzVfMF8z_b_B811c0dec6b9a3d3074a18522c185010a.mp4 +#EXTINF:-1 tvg-name="春晚" group-title="历年春晚",春晚1996 +https://alimov2.a.kwimgs.com/upic/2023/01/13/22/BMjAyMzAxMTMyMjEwMDNfNDAzMDAxOTlfOTM1MTIzMzYxNTJfMF8z_b_Bd841eae10ab1c9955ef55fbedfae6c45.mp4 +#EXTINF:-1 tvg-name="春晚" group-title="历年春晚",春晚1997 +https://txmov2.a.kwimgs.com/bs3/video-hls/5230649583590411879_hlshd15.m3u8 +#EXTINF:-1 tvg-name="春晚" group-title="历年春晚",春晚1998 +https://txmov2.a.kwimgs.com/bs3/video-hls/5225864507896315430_hlshd15.m3u8 +#EXTINF:-1 tvg-name="春晚" group-title="历年春晚",春晚1999 +https://alimov2.a.kwimgs.com/upic/2023/01/13/20/BMjAyMzAxMTMyMDA5MjJfNDAzMDAxOTlfOTM0OTkwNDQxNTRfMF8z_b_B0b5e52bc003285ef66ec0cbb2be08556.mp4 +#EXTINF:-1 tvg-name="春晚" group-title="历年春晚",春晚2000 +https://alimov2.a.kwimgs.com/upic/2023/01/13/21/BMjAyMzAxMTMyMTE4MzRfNDAzMDAxOTlfOTM1MDY4ODIxMTNfMF8z_b_Bdddf4e7ef0ff6cfd477857bb40e78419.mp4 +#EXTINF:-1 tvg-name="春晚" group-title="历年春晚",春晚2001 +https://alimov2.a.kwimgs.com/upic/2023/01/13/20/BMjAyMzAxMTMyMDA5MjJfNDAzMDAxOTlfOTM0OTkwNDQyMDFfMF8z_b_B70592cb7c4054e9cabb675e849bbf4bd.mp4 +#EXTINF:-1 tvg-name="春晚" group-title="历年春晚",春晚2002 +https://alimov2.a.kwimgs.com/upic/2023/01/13/21/BMjAyMzAxMTMyMTE4MzRfNDAzMDAxOTlfOTM1MDY4ODIxNDdfMF8z_b_Ba6271d10b7e6cfae83759033a091f257.mp4 +#EXTINF:-1 tvg-name="春晚" group-title="历年春晚",春晚2003 +https://alimov2.a.kwimgs.com/upic/2023/01/14/23/BMjAyMzAxMTQyMzQxNDdfNDAzMDAxOTlfOTM2MTU0MTk1NDFfMF8z_b_B182749d2cd2ea9323639254af385f24b.mp4 +#EXTINF:-1 tvg-name="春晚" group-title="历年春晚",春晚2004 +https://alimov2.a.kwimgs.com/upic/2023/01/13/21/BMjAyMzAxMTMyMTE4MzRfNDAzMDAxOTlfOTM1MDY4ODIxOTVfMF8z_b_B86c4430b82ff5a7f4e8132f6ee558536.mp4 +#EXTINF:-1 tvg-name="春晚" group-title="历年春晚",春晚2005 +https://alimov2.a.kwimgs.com/upic/2023/01/13/20/BMjAyMzAxMTMyMDA5MjJfNDAzMDAxOTlfOTM0OTkwNDQyMzhfMF8z_b_B35ad7cc86aec8fc9e5ddfb31fc7bed63.mp4 +#EXTINF:-1 tvg-name="春晚" group-title="历年春晚",春晚2006 +https://alimov2.a.kwimgs.com/upic/2023/01/13/20/BMjAyMzAxMTMyMDA5MjJfNDAzMDAxOTlfOTM0OTkwNDQyNzlfMF8z_b_Bbc3703fc331dc994c50859c19aad28ff.mp4 +#EXTINF:-1 tvg-name="春晚" group-title="历年春晚",春晚2007 +https://alimov2.a.kwimgs.com/upic/2023/01/13/20/BMjAyMzAxMTMyMDA5MjJfNDAzMDAxOTlfOTM0OTkwNDQzMjNfMF8z_b_B00b069c7899976459ceeaa99353dfefe.mp4 +#EXTINF:-1 tvg-name="春晚" group-title="历年春晚",春晚2008 +https://alimov2.a.kwimgs.com/upic/2023/01/13/20/BMjAyMzAxMTMyMDA5MjJfNDAzMDAxOTlfOTM0OTkwNDQzNTNfMF8z_b_Bd7346962e61bd7b84e11a1fa6e4616f9.mp4 +#EXTINF:-1 tvg-name="春晚" group-title="历年春晚",春晚2009 +https://alimov2.a.kwimgs.com/upic/2023/01/13/20/BMjAyMzAxMTMyMDA5MjJfNDAzMDAxOTlfOTM0OTkwNDQzOTBfMF8z_b_B29a36a85e0277f6c2a1f033ef7c10708.mp4 +#EXTINF:-1 tvg-name="春晚" group-title="历年春晚",春晚2010 +https://alimov2.a.kwimgs.com/upic/2023/01/13/20/BMjAyMzAxMTMyMDA5MjJfNDAzMDAxOTlfOTM0OTkwNDQ0MjlfMF8z_b_B8818807a00eed329a69fb494f405bd43.mp4 +#EXTINF:-1 tvg-name="春晚" group-title="历年春晚",春晚2011 +https://alimov2.a.kwimgs.com/upic/2023/01/16/11/BMjAyMzAxMTYxMTA3MjFfNDAzMDAxOTlfOTM3MjcyMjA3ODhfMF8z_b_B8214200efc869dc6fcf99dad619fa4c1.mp4 +#EXTINF:-1 tvg-name="春晚" group-title="历年春晚",春晚2012 +https://cdn8.yzzy-online.com/20220704/591_82b72f82/1000k/hls/index.m3u8 +#EXTINF:-1 tvg-name="春晚" group-title="历年春晚",春晚2013 +https://alimov2.a.kwimgs.com/upic/2023/01/13/20/BMjAyMzAxMTMyMDA5MjJfNDAzMDAxOTlfOTM0OTkwNDQ1NjNfMF8z_b_B4fea55408dca4471a68a963ae096be59.mp4 +#EXTINF:-1 tvg-name="春晚" group-title="历年春晚",春晚2014 +https://alimov2.a.kwimgs.com/upic/2023/01/06/16/BMjAyMzAxMDYxNjMxMTNfNDAzMDAxOTlfOTI4OTY2ODAzNjlfMF8z_b_Bdee65c77f9e7b2120a185c919dad81d2.mp4 +#EXTINF:-1 tvg-name="春晚" group-title="历年春晚",春晚2015 +https://alimov2.a.kwimgs.com/upic/2023/01/13/20/BMjAyMzAxMTMyMDA5MjJfNDAzMDAxOTlfOTM0OTkwNDQ2MTZfMF8z_b_B4851f43f5a2bc2871a9b0ec87294a6e7.mp4 +#EXTINF:-1 tvg-name="春晚" group-title="历年春晚",春晚2016 +https://cdn8.yzzy-online.com/20220704/577_cda9c8d1/1000k/hls/index.m3u8 +#EXTINF:-1 tvg-name="春晚" group-title="历年春晚",春晚2017 +https://alimov2.a.kwimgs.com/upic/2023/01/13/20/BMjAyMzAxMTMyMDA5MjJfNDAzMDAxOTlfOTM0OTkwNDQ2NDhfMF8z_b_B6527b0c2ce3dda1d9b3f34edd4fdb9aa.mp4 +#EXTINF:-1 tvg-name="春晚" group-title="历年春晚",春晚2018 +https://alimov2.a.kwimgs.com/upic/2023/01/06/16/BMjAyMzAxMDYxNjMxMTRfNDAzMDAxOTlfOTI4OTY2ODE2MTBfMF8z_b_B11a778e34390a21de42d407e94f45b91.mp4 +#EXTINF:-1 tvg-name="春晚" group-title="历年春晚",春晚2019 +https://alimov2.a.kwimgs.com/upic/2023/01/06/16/BMjAyMzAxMDYxNjMxMTRfNDAzMDAxOTlfOTI4OTY2ODE2MTBfMF8z_b_B11a778e34390a21de42d407e94f45b91.mp4 +#EXTINF:-1 tvg-name="春晚" group-title="历年春晚",春晚2020 +https://alimov2.a.kwimgs.com/upic/2022/01/30/17/BMjAyMjAxMzAxNzA5NDdfNDAzMDAxOTlfNjYxNzQ2MDAyMTFfMF8z_b_B5d51d9564c5670dc66faeba20aa7af3f.mp4 +#EXTINF:-1 tvg-name="春晚" group-title="历年春晚",春晚2021 +https://alimov2.a.kwimgs.com/upic/2022/01/30/17/BMjAyMjAxMzAxNzE4NTJfNDAzMDAxOTlfNjYxNzUzOTg3NjlfMF8z_b_Be41d9503181d7b0608a839ed401e02c2.mp4 +#EXTINF:-1 tvg-name="春晚" group-title="历年春晚",春晚2022 +https://alimov2.a.kwimgs.com/upic/2022/02/01/11/BMjAyMjAyMDExMTEwMjNfNDAzMDAxOTlfNjYzNzA4MTk4NzNfMF8z_b_B898cc7ddd0025bf54ddb18ec1f723c84.mp4 +#EXTINF:-1 tvg-name="春晚" group-title="历年春晚",春晚2023 +https://txmov2.a.kwimgs.com/bs3/video-hls/5251197255879398624_hlshd15.m3u8 +#EXTINF:-1 tvg-name="春晚" group-title="历年春晚",春晚2024 +https://p2.bdstatic.com/rtmp.liveshow.lss-user.baidubce.com/live/stream_bduid_6488563992_8982723413/merged_1707497046297_88536_25144_41936.m3u8 +#EXTINF:-1 tvg-name="春晚" group-title="历年春晚",春晚2025 +https://res.cctvnews.cctv.com/video/3005/record/cctv/merge1/133396667284143308839013005/8fbd6180bdef4da19f6155cf6b4652e1-4.m3u8 diff --git a/潇洒/lives/Guovin.txt b/潇洒/lives/Guovin.txt new file mode 100644 index 0000000..1521c35 --- /dev/null +++ b/潇洒/lives/Guovin.txt @@ -0,0 +1,2693 @@ +#EXTM3U x-tvg-url="https://raw.githubusercontent.com/mytv-android/iptv-api/refs/heads/master/output/epg/epg.gz" +#EXTINF:-1 tvg-name="CCTV1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV1.png" group-title="📺央视频道",CCTV-1 +http://39.164.180.36:19901/tsfile/live/0001_2.m3u8?key=txiptv&playlive=0&authid=0 +#EXTINF:-1 tvg-name="CCTV1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV1.png" group-title="📺央视频道",CCTV-1 +http://123.160.232.254:9901/tsfile/live/0001_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 tvg-name="CCTV1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV1.png" group-title="📺央视频道",CCTV-1 +http://www.dsk.cc/php/bfgd.php?id=cctv1&m.m3u8 +#EXTINF:-1 tvg-name="CCTV1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV1.png" group-title="📺央视频道",CCTV-1 +http://120.76.248.139/live/bfgd/4200000201.m3u8 +#EXTINF:-1 tvg-name="CCTV1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV1.png" group-title="📺央视频道",CCTV-1 +http://120.76.248.139/live/bfgd/4200000484.m3u8 +#EXTINF:-1 tvg-name="CCTV1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV1.png" group-title="📺央视频道",CCTV-1 +http://ali-m-l.cztv.com/channels/lantian/channel15/1080p.m3u8 +#EXTINF:-1 tvg-name="CCTV1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV1.png" group-title="📺央视频道",CCTV-1 +http://112.123.243.37:50085/tsfile/live/0001_1.m3u8 +#EXTINF:-1 tvg-name="CCTV1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV1.png" group-title="📺央视频道",CCTV-1 +http://114.238.59.2:4000/rtp/239.49.8.19:9614 +#EXTINF:-1 tvg-name="CCTV1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV1.png" group-title="📺央视频道",CCTV-1 +http://114.238.59.148:4000/rtp/239.49.8.19:9614 +#EXTINF:-1 tvg-name="CCTV1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV1.png" group-title="📺央视频道",CCTV-1 +http://120.76.248.139/live/bfgd/4200000488.m3u8 +#EXTINF:-1 tvg-name="CCTV2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV2.png" group-title="📺央视频道",CCTV-2 +http://www.dsk.cc/php/bfgd.php?id=cctv2&m.m3u8 +#EXTINF:-1 tvg-name="CCTV2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV2.png" group-title="📺央视频道",CCTV-2 +http://120.76.248.139/live/bfgd/4200000061.m3u8 +#EXTINF:-1 tvg-name="CCTV2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV2.png" group-title="📺央视频道",CCTV-2 +http://39.164.180.36:19901/tsfile/live/0002_1.m3u8?key=txiptv&playlive=0&authid=0 +#EXTINF:-1 tvg-name="CCTV2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV2.png" group-title="📺央视频道",CCTV-2 +http://123.160.232.254:9901/tsfile/live/0002_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 tvg-name="CCTV2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV2.png" group-title="📺央视频道",CCTV-2 +http://222.169.85.8:9901/tsfile/live/0002_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 tvg-name="CCTV2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV2.png" group-title="📺央视频道",CCTV-2 +http://cz.crossec.com:35455/mgtv/631780532.m3u8 +#EXTINF:-1 tvg-name="CCTV2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV2.png" group-title="📺央视频道",CCTV-2 +http://106.115.24.17:9901/tsfile/live/1001_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 tvg-name="CCTV2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV2.png" group-title="📺央视频道",CCTV-2 +http://b.zgjok.com:35455/mgtv/631780532.m3u8 +#EXTINF:-1 tvg-name="CCTV2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV2.png" group-title="📺央视频道",CCTV-2 +http://114.238.59.148:4000/rtp/239.49.8.50:9802 +#EXTINF:-1 tvg-name="CCTV2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV2.png" group-title="📺央视频道",CCTV-2 +http://223.241.247.214:9901/tsfile/live/0002_1.m3u8 +#EXTINF:-1 tvg-name="CCTV3" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV3.png" group-title="📺央视频道",CCTV-3 +http://39.164.180.36:19901/tsfile/live/0001_1.m3u8?key=txiptv&playlive=0&authid=0 +#EXTINF:-1 tvg-name="CCTV3" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV3.png" group-title="📺央视频道",CCTV-3 +http://123.160.232.254:9901/tsfile/live/0003_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 tvg-name="CCTV3" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV3.png" group-title="📺央视频道",CCTV-3 +http://101.74.30.190:9901/tsfile/live/0003_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 tvg-name="CCTV3" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV3.png" group-title="📺央视频道",CCTV-3 +http://106.115.24.17:9901/tsfile/live/1002_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 tvg-name="CCTV3" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV3.png" group-title="📺央视频道",CCTV-3 +http://cz.crossec.com:35455/mgtv/624878271.m3u8 +#EXTINF:-1 tvg-name="CCTV3" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV3.png" group-title="📺央视频道",CCTV-3 +http://php.cqshushu.ggff.net/jzb.php?id=cctv3&公众号【医工学习日志】 +#EXTINF:-1 tvg-name="CCTV3" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV3.png" group-title="📺央视频道",CCTV-3 +http://home.yulei.online:9999/rtp/226.0.2.208:9576 +#EXTINF:-1 tvg-name="CCTV3" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV3.png" group-title="📺央视频道",CCTV-3 +http://222.169.85.8:9901/tsfile/live/0003_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 tvg-name="CCTV3" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV3.png" group-title="📺央视频道",CCTV-3 +http://qjrhc.jydjd.top:2911/udp/224.1.100.64:11111 +#EXTINF:-1 tvg-name="CCTV3" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV3.png" group-title="📺央视频道",CCTV-3 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226471/1.m3u8 +#EXTINF:-1 tvg-name="CCTV4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV4.png" group-title="📺央视频道",CCTV-4 +http://39.164.180.36:19901/tsfile/live/0004_1.m3u8?key=txiptv&playlive=0&authid=0 +#EXTINF:-1 tvg-name="CCTV4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV4.png" group-title="📺央视频道",CCTV-4 +http://123.160.232.254:9901/tsfile/live/0004_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 tvg-name="CCTV4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV4.png" group-title="📺央视频道",CCTV-4 +http://b.zgjok.com:35455/mgtv/631780421.m3u8 +#EXTINF:-1 tvg-name="CCTV4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV4.png" group-title="📺央视频道",CCTV-4 +http://drive.mxmy.net:8888/udp/239.3.1.214:4220 +#EXTINF:-1 tvg-name="CCTV4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV4.png" group-title="📺央视频道",CCTV-4 +http://php.cqshushu.ggff.net/jzb.php?id=cctv5&公众号【医工学习日志】 +#EXTINF:-1 tvg-name="CCTV4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV4.png" group-title="📺央视频道",CCTV-4 +http://home.yulei.online:9999/rtp/226.0.2.156:9160 +#EXTINF:-1 tvg-name="CCTV4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV4.png" group-title="📺央视频道",CCTV-4 +http://fxgm.fxjf.work:19901/tsfile/live/0004_1.m3u8 +#EXTINF:-1 tvg-name="CCTV4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV4.png" group-title="📺央视频道",CCTV-4 +http://qjrhc.jydjd.top:2911/udp/224.1.100.104:11111 +#EXTINF:-1 tvg-name="CCTV4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV4.png" group-title="📺央视频道",CCTV-4 +http://120.76.248.139/live/bfgd/4200000063.m3u8 +#EXTINF:-1 tvg-name="CCTV4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV4.png" group-title="📺央视频道",CCTV-4 +http://60.26.181.220:4022/rtp/225.1.1.150:5002 +#EXTINF:-1 tvg-name="CCTV5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5.png" group-title="📺央视频道",CCTV-5 +http://120.76.248.139/live/bfgd/4200000064.m3u8 +#EXTINF:-1 tvg-name="CCTV5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5.png" group-title="📺央视频道",CCTV-5 +http://123.160.232.254:9901/tsfile/live/0005_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 tvg-name="CCTV5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5.png" group-title="📺央视频道",CCTV-5 +http://39.164.180.36:19901/tsfile/live/0005_1.m3u8?key=txiptv&playlive=0&authid=0 +#EXTINF:-1 tvg-name="CCTV5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5.png" group-title="📺央视频道",CCTV-5 +http://b.zgjok.com:35455/mgtv/641886683.m3u8 +#EXTINF:-1 tvg-name="CCTV5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5.png" group-title="📺央视频道",CCTV-5 +https://ldcctvwbcdbd.a.bdydns.com/ldcctvwbcd/cdrmldcctv5plus_1/index.m3u8 +#EXTINF:-1 tvg-name="CCTV5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5.png" group-title="📺央视频道",CCTV-5 +http://222.169.85.8:9901/tsfile/live/0005_1.m3u8 +#EXTINF:-1 tvg-name="CCTV5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5.png" group-title="📺央视频道",CCTV-5 +https://ldcctvwbcdtxy.liveplay.myqcloud.com/ldcctvwbcd/cdrmldcctv5plus_1_td.m3u8 +#EXTINF:-1 tvg-name="CCTV5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5.png" group-title="📺央视频道",CCTV-5 +https://ldcctvwbcdtxy.liveplay.myqcloud.com/ldcctvwbcd/cdrmldcctv5plus_1/index.m3u8?b=200-2100 +#EXTINF:-1 tvg-name="CCTV5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5.png" group-title="📺央视频道",CCTV-5 +http://qjrhc.jydjd.top:2911/udp/224.1.100.82:11111 +#EXTINF:-1 tvg-name="CCTV5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5.png" group-title="📺央视频道",CCTV-5 +https://ldcctvwbcdbd.a.bdydns.com/ldcctvwbcd/cdrmldcctv5plus_1/index.m3u8?BR=td +#EXTINF:-1 tvg-name="CCTV6" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV6.png" group-title="📺央视频道",CCTV-6 +http://120.76.248.139/live/bfgd/4200000065.m3u8 +#EXTINF:-1 tvg-name="CCTV6" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV6.png" group-title="📺央视频道",CCTV-6 +http://39.164.180.36:19901/tsfile/live/0006_1.m3u8?key=txiptv&playlive=0&authid=0 +#EXTINF:-1 tvg-name="CCTV6" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV6.png" group-title="📺央视频道",CCTV-6 +http://123.160.232.254:9901/tsfile/live/0006_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 tvg-name="CCTV6" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV6.png" group-title="📺央视频道",CCTV-6 +http://i.880824.xyz:35455/mgtv/624878396.m3u8 +#EXTINF:-1 tvg-name="CCTV6" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV6.png" group-title="📺央视频道",CCTV-6 +http://cz.crossec.com:35455/mgtv/624878396.m3u8 +#EXTINF:-1 tvg-name="CCTV6" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV6.png" group-title="📺央视频道",CCTV-6 +http://www.dsk.cc/php/bfgd.php?id=cctv6&m.m3u8 +#EXTINF:-1 tvg-name="CCTV6" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV6.png" group-title="📺央视频道",CCTV-6 +http://101.74.30.190:9901/tsfile/live/0006_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 tvg-name="CCTV6" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV6.png" group-title="📺央视频道",CCTV-6 +http://60.26.181.220:4022/rtp/225.1.1.195:5002 +#EXTINF:-1 tvg-name="CCTV6" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV6.png" group-title="📺央视频道",CCTV-6 +http://222.169.85.8:9901/tsfile/live/0006_1.m3u8?key=txiptv +#EXTINF:-1 tvg-name="CCTV6" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV6.png" group-title="📺央视频道",CCTV-6 +http://qjrhc.jydjd.top:2911/udp/224.1.100.84:11111 +#EXTINF:-1 tvg-name="CCTV7" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV7.png" group-title="📺央视频道",CCTV-7 +http://cz.crossec.com:35455/mgtv/673168121.m3u8 +#EXTINF:-1 tvg-name="CCTV7" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV7.png" group-title="📺央视频道",CCTV-7 +http://123.160.232.254:9901/tsfile/live/0007_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 tvg-name="CCTV7" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV7.png" group-title="📺央视频道",CCTV-7 +http://39.164.180.36:19901/tsfile/live/0007_1.m3u8?key=txiptv&playlive=0&authid=0 +#EXTINF:-1 tvg-name="CCTV7" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV7.png" group-title="📺央视频道",CCTV-7 +http://live.junhao.mil.cn/rmt9502/3e6e7c5477314ec38f5e58e2a5c70024.m3u8?txSecret=57978fafb9c19880afa5c8687e8241d8&txTime=7A42BAFF +#EXTINF:-1 tvg-name="CCTV7" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV7.png" group-title="📺央视频道",CCTV-7 +http://b.zgjok.com:35455/mgtv/673168121.m3u8 +#EXTINF:-1 tvg-name="CCTV7" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV7.png" group-title="📺央视频道",CCTV-7 +http://60.26.181.220:4022/rtp/225.1.1.138:5002 +#EXTINF:-1 tvg-name="CCTV7" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV7.png" group-title="📺央视频道",CCTV-7 +http://101.74.30.190:9901/tsfile/live/0007_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 tvg-name="CCTV7" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV7.png" group-title="📺央视频道",CCTV-7 +http://fxgm.fxjf.work:19901/tsfile/live/0007_1.m3u8 +#EXTINF:-1 tvg-name="CCTV7" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV7.png" group-title="📺央视频道",CCTV-7 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226946/1.m3u8 +#EXTINF:-1 tvg-name="CCTV7" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV7.png" group-title="📺央视频道",CCTV-7 +http://[2409:8087:74f0:22::4]:6410/270000001128/9900000504/index.m3u8 +#EXTINF:-1 tvg-name="CCTV8" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV8.png" group-title="📺央视频道",CCTV-8 +http://cz.crossec.com:35455/mgtv/624878356.m3u8 +#EXTINF:-1 tvg-name="CCTV8" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV8.png" group-title="📺央视频道",CCTV-8 +http://123.160.232.254:9901/tsfile/live/0008_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 tvg-name="CCTV8" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV8.png" group-title="📺央视频道",CCTV-8 +http://39.164.180.36:19901/tsfile/live/0008_1.m3u8?key=txiptv&playlive=0&authid=0 +#EXTINF:-1 tvg-name="CCTV8" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV8.png" group-title="📺央视频道",CCTV-8 +http://106.115.24.16:9901/tsfile/live/0008_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 tvg-name="CCTV8" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV8.png" group-title="📺央视频道",CCTV-8 +http://101.74.30.190:9901/tsfile/live/0008_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 tvg-name="CCTV8" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV8.png" group-title="📺央视频道",CCTV-8 +http://60.26.181.220:4022/rtp/225.1.1.196:5002 +#EXTINF:-1 tvg-name="CCTV8" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV8.png" group-title="📺央视频道",CCTV-8 +http://220.169.100.41:10087/udp/239.76.253.158:9000 +#EXTINF:-1 tvg-name="CCTV8" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV8.png" group-title="📺央视频道",CCTV-8 +http://fxgm.fxjf.work:19901/tsfile/live/0008_1.m3u8 +#EXTINF:-1 tvg-name="CCTV8" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV8.png" group-title="📺央视频道",CCTV-8 +http://112.123.243.37:50085/tsfile/live/0009_1.m3u8?key=txiptv&playlive=0&authid=0 +#EXTINF:-1 tvg-name="CCTV8" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV8.png" group-title="📺央视频道",CCTV-8 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226485/1.m3u8 +#EXTINF:-1 tvg-name="CCTV9" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV9.png" group-title="📺央视频道",CCTV-9 +http://cz.crossec.com:35455/mgtv/673168140.m3u8 +#EXTINF:-1 tvg-name="CCTV9" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV9.png" group-title="📺央视频道",CCTV-9 +http://39.164.180.36:19901/tsfile/live/0009_1.m3u8?key=txiptv&playlive=0&au +#EXTINF:-1 tvg-name="CCTV9" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV9.png" group-title="📺央视频道",CCTV-9 +http://39.164.180.36:19901/tsfile/live/0009_1.m3u8?key=txiptv&playlive=0&authid=0 +#EXTINF:-1 tvg-name="CCTV9" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV9.png" group-title="📺央视频道",CCTV-9 +http://106.115.24.16:9901/tsfile/live/0009_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 tvg-name="CCTV9" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV9.png" group-title="📺央视频道",CCTV-9 +http://123.160.232.254:9901/tsfile/live/0009_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 tvg-name="CCTV9" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV9.png" group-title="📺央视频道",CCTV-9 +http://101.74.30.190:9901/tsfile/live/0009_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 tvg-name="CCTV9" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV9.png" group-title="📺央视频道",CCTV-9 +http://112.123.243.37:50085/tsfile/live/0010_1.m3u8 +#EXTINF:-1 tvg-name="CCTV9" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV9.png" group-title="📺央视频道",CCTV-9 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226944/1.m3u8 +#EXTINF:-1 tvg-name="CCTV9" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV9.png" group-title="📺央视频道",CCTV-9 +http://[2409:8087:74f0:22::4]:6410/270000001128/9900000505/index.m3u8 +#EXTINF:-1 tvg-name="CCTV9" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV9.png" group-title="📺央视频道",CCTV-9 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221225734/index.m3u8 +#EXTINF:-1 tvg-name="CCTV10" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV10.png" group-title="📺央视频道",CCTV-10 +http://cz.crossec.com:35455/mgtv/624878405.m3u8 +#EXTINF:-1 tvg-name="CCTV10" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV10.png" group-title="📺央视频道",CCTV-10 +http://39.164.180.36:19901/tsfile/live/0010_1.m3u8?key=txiptv&playlive=0&authid=0 +#EXTINF:-1 tvg-name="CCTV10" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV10.png" group-title="📺央视频道",CCTV-10 +http://123.160.232.254:9901/tsfile/live/0010_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 tvg-name="CCTV10" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV10.png" group-title="📺央视频道",CCTV-10 +http://fxgm.fxjf.work:19901/tsfile/live/0010_1.m3u8 +#EXTINF:-1 tvg-name="CCTV10" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV10.png" group-title="📺央视频道",CCTV-10 +http://220.169.100.41:10087/udp/239.76.253.160:9000 +#EXTINF:-1 tvg-name="CCTV10" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV10.png" group-title="📺央视频道",CCTV-10 +http://49.71.190.192:8000/rtp/239.49.8.54:9818 +#EXTINF:-1 tvg-name="CCTV10" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV10.png" group-title="📺央视频道",CCTV-10 +http://222.169.85.8:9901/tsfile/live/0010_1.m3u8 +#EXTINF:-1 tvg-name="CCTV10" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV10.png" group-title="📺央视频道",CCTV-10 +http://117.12.149.38:4022/rtp/225.1.1.140:5002 +#EXTINF:-1 tvg-name="CCTV10" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV10.png" group-title="📺央视频道",CCTV-10 +http://112.123.243.37:50085/tsfile/live/0011_1.m3u8?key=txiptv&playlive=0&authid=0 +#EXTINF:-1 tvg-name="CCTV10" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV10.png" group-title="📺央视频道",CCTV-10 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226937/1.m3u8 +#EXTINF:-1 tvg-name="CCTV11" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV11.png" group-title="📺央视频道",CCTV-11 +http://cz.crossec.com:35455/mgtv/667987558.m3u8 +#EXTINF:-1 tvg-name="CCTV11" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV11.png" group-title="📺央视频道",CCTV-11 +http://39.164.180.36:19901/tsfile/live/0011_1.m3u8?key=txiptv&playlive=0&authid=0 +#EXTINF:-1 tvg-name="CCTV11" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV11.png" group-title="📺央视频道",CCTV-11 +http://123.160.232.254:9901/tsfile/live/0011_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 tvg-name="CCTV11" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV11.png" group-title="📺央视频道",CCTV-11 +http://drive.mxmy.net:8888/udp/239.3.1.152:8120 +#EXTINF:-1 tvg-name="CCTV11" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV11.png" group-title="📺央视频道",CCTV-11 +http://nn.7x9d.cn/xzc2.php?ua=TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgNi4xOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTA2LjAuMC4wIFNhZmFyaS81MzcuMzY=&hls=aHR0cDovL3d3dy5kc2suY2MvcGhwL3N4Z2QucGhwP2lkPWNjdHYxMQ== +#EXTINF:-1 tvg-name="CCTV11" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV11.png" group-title="📺央视频道",CCTV-11 +http://222.169.85.8:9901/tsfile/live/0011_1.m3u8?key=txiptv +#EXTINF:-1 tvg-name="CCTV11" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV11.png" group-title="📺央视频道",CCTV-11 +http://fxgm.fxjf.work:19901/tsfile/live/0011_1.m3u8 +#EXTINF:-1 tvg-name="CCTV11" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV11.png" group-title="📺央视频道",CCTV-11 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226334/1.m3u8 +#EXTINF:-1 tvg-name="CCTV11" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV11.png" group-title="📺央视频道",CCTV-11 +http://[2409:8087:74f0:22::4]:6410/270000001128/9900000508/index.m3u8 +#EXTINF:-1 tvg-name="CCTV11" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV11.png" group-title="📺央视频道",CCTV-11 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221225597/index.m3u8 +#EXTINF:-1 tvg-name="CCTV12" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV12.png" group-title="📺央视频道",CCTV-12 +http://cz.crossec.com:35455/mgtv/673168185.m3u8 +#EXTINF:-1 tvg-name="CCTV12" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV12.png" group-title="📺央视频道",CCTV-12 +http://39.164.180.36:19901/tsfile/live/0012_1.m3u8?key=txiptv&playlive=0&authid=0 +#EXTINF:-1 tvg-name="CCTV12" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV12.png" group-title="📺央视频道",CCTV-12 +http://123.160.232.254:9901/tsfile/live/0012_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 tvg-name="CCTV12" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV12.png" group-title="📺央视频道",CCTV-12 +http://b.zgjok.com:35455/mgtv/673168185.m3u8 +#EXTINF:-1 tvg-name="CCTV12" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV12.png" group-title="📺央视频道",CCTV-12 +http://drive.mxmy.net:8888/udp/239.3.1.64:8124 +#EXTINF:-1 tvg-name="CCTV12" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV12.png" group-title="📺央视频道",CCTV-12 +http://116.237.148.215:8881/rtp/239.45.3.10:5140 +#EXTINF:-1 tvg-name="CCTV12" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV12.png" group-title="📺央视频道",CCTV-12 +http://222.218.122.114:8188/udp/239.81.0.119:4056 +#EXTINF:-1 tvg-name="CCTV12" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV12.png" group-title="📺央视频道",CCTV-12 +http://112.123.243.37:50085/tsfile/live/0013_1.m3u8 +#EXTINF:-1 tvg-name="CCTV12" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV12.png" group-title="📺央视频道",CCTV-12 +http://49.71.190.192:8000/rtp/239.49.8.55:9822 +#EXTINF:-1 tvg-name="CCTV12" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV12.png" group-title="📺央视频道",CCTV-12 +http://nn.7x9d.cn/xzc2.php?ua=TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgNi4xOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTA2LjAuMC4wIFNhZmFyaS81MzcuMzY=&hls=aHR0cDovL3d3dy5kc2suY2MvcGhwL3N4Z2QucGhwP2lkPWNjdHYxMg== +#EXTINF:-1 tvg-name="CCTV13" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV13.png" group-title="📺央视频道",CCTV-13 +http://39.164.180.36:19901/tsfile/live/0013_1.m3u8?key=txiptv&playlive=0&authid=0 +#EXTINF:-1 tvg-name="CCTV13" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV13.png" group-title="📺央视频道",CCTV-13 +http://cz.crossec.com:35455/mgtv/608807423.m3u8 +#EXTINF:-1 tvg-name="CCTV13" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV13.png" group-title="📺央视频道",CCTV-13 +http://b.zgjok.com:35455/mgtv/608807423.m3u8 +#EXTINF:-1 tvg-name="CCTV13" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV13.png" group-title="📺央视频道",CCTV-13 +http://ali-m-l.cztv.com/channels/lantian/channel21/1080p.m3u8 +#EXTINF:-1 tvg-name="CCTV13" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV13.png" group-title="📺央视频道",CCTV-13 +http://drive.mxmy.net:8888/udp/239.3.1.124:8128 +#EXTINF:-1 tvg-name="CCTV13" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV13.png" group-title="📺央视频道",CCTV-13 +http://123.160.232.254:9901/tsfile/live/0013_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 tvg-name="CCTV13" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV13.png" group-title="📺央视频道",CCTV-13 +http://aiony.top:35455/mgtv/608807423.m3u8 +#EXTINF:-1 tvg-name="CCTV13" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV13.png" group-title="📺央视频道",CCTV-13 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226316/1.m3u8 +#EXTINF:-1 tvg-name="CCTV13" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV13.png" group-title="📺央视频道",CCTV-13 +https://event.pull.hebtv.com/jishi/cp1.m3u8 +#EXTINF:-1 tvg-name="CCTV13" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV13.png" group-title="📺央视频道",CCTV-13 +http://z.b.bkpcp.top/m.php?id=cctv13 +#EXTINF:-1 tvg-name="CCTV14" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV14.png" group-title="📺央视频道",CCTV-14 +http://cz.crossec.com:35455/mgtv/624878440.m3u8 +#EXTINF:-1 tvg-name="CCTV14" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV14.png" group-title="📺央视频道",CCTV-14 +http://39.164.180.36:19901/tsfile/live/0014_1.m3u8?key=txiptv&playlive=0&authid=0 +#EXTINF:-1 tvg-name="CCTV14" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV14.png" group-title="📺央视频道",CCTV-14 +http://123.160.232.254:9901/tsfile/live/0014_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 tvg-name="CCTV14" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV14.png" group-title="📺央视频道",CCTV-14 +http://60.26.181.220:4022/rtp/225.1.1.144:5002 +#EXTINF:-1 tvg-name="CCTV14" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV14.png" group-title="📺央视频道",CCTV-14 +http://drive.mxmy.net:8888/udp/239.3.1.65:8132 +#EXTINF:-1 tvg-name="CCTV14" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV14.png" group-title="📺央视频道",CCTV-14 +http://116.237.148.215:8881/rtp/239.45.3.23:5140 +#EXTINF:-1 tvg-name="CCTV14" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV14.png" group-title="📺央视频道",CCTV-14 +http://222.218.122.114:8188/udp/239.81.0.120:4056 +#EXTINF:-1 tvg-name="CCTV14" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV14.png" group-title="📺央视频道",CCTV-14 +http://114.238.59.148:4000/rtp/239.49.8.56:9826 +#EXTINF:-1 tvg-name="CCTV14" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV14.png" group-title="📺央视频道",CCTV-14 +http://fxgm.fxjf.work:19901/tsfile/live/0014_1.m3u8 +#EXTINF:-1 tvg-name="CCTV14" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV14.png" group-title="📺央视频道",CCTV-14 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226947/1.m3u8 +#EXTINF:-1 tvg-name="CCTV15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV15.png" group-title="📺央视频道",CCTV-15 +http://cz.crossec.com:35455/mgtv/673168223.m3u8 +#EXTINF:-1 tvg-name="CCTV15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV15.png" group-title="📺央视频道",CCTV-15 +http://222.134.245.16:9901/tsfile/live/0015_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 tvg-name="CCTV15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV15.png" group-title="📺央视频道",CCTV-15 +http://112.123.243.37:50085/tsfile/live/0016_1.m3u8 +#EXTINF:-1 tvg-name="CCTV15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV15.png" group-title="📺央视频道",CCTV-15 +http://drive.mxmy.net:8888/udp/239.3.1.153:8136 +#EXTINF:-1 tvg-name="CCTV15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV15.png" group-title="📺央视频道",CCTV-15 +http://123.160.232.254:9901/tsfile/live/0015_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 tvg-name="CCTV15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV15.png" group-title="📺央视频道",CCTV-15 +http://112.123.243.37:50085/tsfile/live/0016_1.m3u8?key=txiptv&playlive=0&authid=0 +#EXTINF:-1 tvg-name="CCTV15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV15.png" group-title="📺央视频道",CCTV-15 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226333/1.m3u8 +#EXTINF:-1 tvg-name="CCTV15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV15.png" group-title="📺央视频道",CCTV-15 +http://[2409:8087:74f0:22::4]:6410/270000001128/9900000512/index.m3u8 +#EXTINF:-1 tvg-name="CCTV15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV15.png" group-title="📺央视频道",CCTV-15 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221225601/index.m3u8 +#EXTINF:-1 tvg-name="CCTV15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV15.png" group-title="📺央视频道",CCTV-15 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226476/index.m3u8 +#EXTINF:-1 tvg-name="CCTV16" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV16.png" group-title="📺央视频道",CCTV-16 +http://60.179.80.157:8888/udp/233.50.201.192:5140 +#EXTINF:-1 tvg-name="CCTV16" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV16.png" group-title="📺央视频道",CCTV-16 +http://117.12.149.38:4022/rtp/225.1.2.237:5002 +#EXTINF:-1 tvg-name="CCTV16" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV16.png" group-title="📺央视频道",CCTV-16 +http://60.26.181.220:4022/rtp/225.1.2.237:5002 +#EXTINF:-1 tvg-name="CCTV16" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV16.png" group-title="📺央视频道",CCTV-16 +http://221.219.101.18:4022/rtp/239.3.1.184:8001 +#EXTINF:-1 tvg-name="CCTV16" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV16.png" group-title="📺央视频道",CCTV-16 +http://drive.mxmy.net:8888/udp/239.3.1.184:8001 +#EXTINF:-1 tvg-name="CCTV16" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV16.png" group-title="📺央视频道",CCTV-16 +http://111.193.239.245:9999/rtp/239.3.1.184:8001 +#EXTINF:-1 tvg-name="CCTV16" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV16.png" group-title="📺央视频道",CCTV-16 +http://home.yulei.online:9999/rtp/226.0.2.169:9264 +#EXTINF:-1 tvg-name="CCTV16" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV16.png" group-title="📺央视频道",CCTV-16 +http://b.zgjok.com:35455/nptv/cctv16.m3u8 +#EXTINF:-1 tvg-name="CCTV16" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV16.png" group-title="📺央视频道",CCTV-16 +http://cz.crossec.com:35455/nptv/cctv16.m3u8 +#EXTINF:-1 tvg-name="CCTV16" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV16.png" group-title="📺央视频道",CCTV-16 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227002/1.m3u8 +#EXTINF:-1 tvg-name="CCTV17" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV17.png" group-title="📺央视频道",CCTV-17 +http://cz.crossec.com:35455/mgtv/673168256.m3u8 +#EXTINF:-1 tvg-name="CCTV17" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV17.png" group-title="📺央视频道",CCTV-17 +http://117.12.149.38:4022/rtp/225.1.2.52:5002 +#EXTINF:-1 tvg-name="CCTV17" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV17.png" group-title="📺央视频道",CCTV-17 +http://drive.mxmy.net:8888/udp/239.3.1.151:8144 +#EXTINF:-1 tvg-name="CCTV17" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV17.png" group-title="📺央视频道",CCTV-17 +http://116.237.148.215:8881/rtp/239.45.3.52:5140 +#EXTINF:-1 tvg-name="CCTV17" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV17.png" group-title="📺央视频道",CCTV-17 +http://b.zgjok.com:35455/mgtv/673168256.m3u8 +#EXTINF:-1 tvg-name="CCTV17" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV17.png" group-title="📺央视频道",CCTV-17 +http://114.226.231.231:8787/rtp/239.49.8.52:9810 +#EXTINF:-1 tvg-name="CCTV17" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV17.png" group-title="📺央视频道",CCTV-17 +http://49.71.190.192:8000/rtp/239.49.8.52:9810 +#EXTINF:-1 tvg-name="CCTV17" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV17.png" group-title="📺央视频道",CCTV-17 +http://aiony.top:35455/mgtv/673168256.m3u8 +#EXTINF:-1 tvg-name="CCTV17" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV17.png" group-title="📺央视频道",CCTV-17 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226318/1.m3u8 +#EXTINF:-1 tvg-name="CCTV17" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV17.png" group-title="📺央视频道",CCTV-17 +http://[2409:8087:74f0:22::4]:6410/270000001128/9900000513/index.m3u8 +#EXTINF:-1 tvg-name="CCTV5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5+.png" group-title="📺央视频道",CCTV-5+ +http://39.164.180.36:19901/tsfile/live/0016_1.m3u8?key=txiptv&playlive=0&authid=0 +#EXTINF:-1 tvg-name="CCTV5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5+.png" group-title="📺央视频道",CCTV-5+ +http://cz.crossec.com:35455/mgtv/641886773.m3u8 +#EXTINF:-1 tvg-name="CCTV5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5+.png" group-title="📺央视频道",CCTV-5+ +http://b.zgjok.com:35455/mgtv/641886773.m3u8 +#EXTINF:-1 tvg-name="CCTV5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5+.png" group-title="📺央视频道",CCTV-5+ +http://112.123.243.37:50085/tsfile/live/0006_1.m3u8?key=txiptv&playlive=0&authid=0 +#EXTINF:-1 tvg-name="CCTV5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5+.png" group-title="📺央视频道",CCTV-5+ +http://60.26.181.220:4022/rtp/225.1.1.121:5002 +#EXTINF:-1 tvg-name="CCTV5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5+.png" group-title="📺央视频道",CCTV-5+ +http://117.12.149.38:4022/rtp/225.1.1.121:5002 +#EXTINF:-1 tvg-name="CCTV5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5+.png" group-title="📺央视频道",CCTV-5+ +http://omnix.cn:4000/udp/225.1.8.20:8004 +#EXTINF:-1 tvg-name="CCTV5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5+.png" group-title="📺央视频道",CCTV-5+ +http://114.226.231.231:8787/rtp/239.49.8.18:9610 +#EXTINF:-1 tvg-name="CCTV5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5+.png" group-title="📺央视频道",CCTV-5+ +http://49.71.190.192:8000/rtp/239.49.8.18:9610 +#EXTINF:-1 tvg-name="CCTV5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5+.png" group-title="📺央视频道",CCTV-5+ +http://drive.mxmy.net:8888/udp/239.3.1.130:8004 +#EXTINF:-1 tvg-name="CETV1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CETV1.png" group-title="📺央视频道",CETV1 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226494/1.m3u8 +#EXTINF:-1 tvg-name="CETV1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CETV1.png" group-title="📺央视频道",CETV1 +http://[2409:8087:1a0b:df::4020]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225652/index.m3u8 +#EXTINF:-1 tvg-name="CETV1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CETV1.png" group-title="📺央视频道",CETV1 +http://otttv.bj.chinamobile.com/PLTV/88888888/224/3221227021/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7ELlgU9sgTT7iMtFgKHFa-dA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="CETV2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CETV2.png" group-title="📺央视频道",CETV2 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226537/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7E7AxXs4eTU2oiWrhopr9sHw%7E_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNNxsM0Bor098BJglrhfEQTl%2CEND +#EXTINF:-1 tvg-name="CETV2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CETV2.png" group-title="📺央视频道",CETV2 +http://[2409:8087:1a0b:df::4013]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226425/index.m3u8 +#EXTINF:-1 tvg-name="CETV2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CETV2.png" group-title="📺央视频道",CETV2 +http://[2409:8087:74d6:22::7]:6410/270000001128/9900000071/index.m3u8 +#EXTINF:-1 tvg-name="CETV4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CETV4.png" group-title="📺央视频道",CETV4 +https://gcalic.v.myalicdn.com/gc/wgw05_1/index.m3u8?contentid=2820180516001 +#EXTINF:-1 tvg-name="CETV4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CETV4.png" group-title="📺央视频道",CETV4 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226997/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EAw_OvjRgJVjtlaOa0dcgzg%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="CETV4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CETV4.png" group-title="📺央视频道",CETV4 +http://[2409:8087:1a0b:df::4020]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225783/index.m3u8 +#EXTINF:-1 tvg-name="CETV4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CETV4.png" group-title="📺央视频道",CETV4 +http://otttv.bj.chinamobile.com/PLTV/88888888/224/3221226997/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EAw_OvjRgJVjtlaOa0dcgzg%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="CETV1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CETV1.png" group-title="📺央视频道",CETV-1 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226494/1.m3u8 +#EXTINF:-1 tvg-name="CETV1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CETV1.png" group-title="📺央视频道",CETV-1 +http://[2409:8087:1a0b:df::4020]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225652/index.m3u8 +#EXTINF:-1 tvg-name="CETV1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CETV1.png" group-title="📺央视频道",CETV-1 +http://otttv.bj.chinamobile.com/PLTV/88888888/224/3221227021/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7ELlgU9sgTT7iMtFgKHFa-dA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="CETV2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CETV2.png" group-title="📺央视频道",CETV-2 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226537/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7E7AxXs4eTU2oiWrhopr9sHw%7E_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNNxsM0Bor098BJglrhfEQTl%2CEND +#EXTINF:-1 tvg-name="CETV2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CETV2.png" group-title="📺央视频道",CETV-2 +http://[2409:8087:1a0b:df::4013]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226425/index.m3u8 +#EXTINF:-1 tvg-name="CETV2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CETV2.png" group-title="📺央视频道",CETV-2 +http://[2409:8087:74d6:22::7]:6410/270000001128/9900000071/index.m3u8 +#EXTINF:-1 tvg-name="CETV3" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CETV3.png" group-title="📺央视频道",CETV-3 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226577/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EhE2Z89HKgsQOlN9opVn1iw%7E_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNN03yUnk4zBVk1bynPPL3hZ%2CEND +#EXTINF:-1 tvg-name="CETV3" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CETV3.png" group-title="📺央视频道",CETV-3 +http://[2409:8087:7004:20:1000::22]:6610/yinhe/2/ch00000090990000001309/index.m3u8 +#EXTINF:-1 tvg-name="CETV4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CETV4.png" group-title="📺央视频道",CETV-4 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226997/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EAw_OvjRgJVjtlaOa0dcgzg%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="CETV4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CETV4.png" group-title="📺央视频道",CETV-4 +http://[2409:8087:1a0b:df::4020]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225783/index.m3u8 +#EXTINF:-1 tvg-name="CETV4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CETV4.png" group-title="📺央视频道",CETV-4 +http://otttv.bj.chinamobile.com/PLTV/88888888/224/3221226997/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EAw_OvjRgJVjtlaOa0dcgzg%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="文化精品" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/文化精品.png" group-title="💰央视付费频道",文化精品 +http://[2409:8087:7001:20:2::3]/dbiptv.sn.chinamobile.com/PLTV/88888893/224/3221226981/index.m3u8 +#EXTINF:-1 tvg-name="央视台球" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/央视台球.png" group-title="💰央视付费频道",央视台球 +http://[2409:8087:7001:20:2::3]/dbiptv.sn.chinamobile.com/PLTV/88888893/224/3221226956/index.m3u8 +#EXTINF:-1 tvg-name="风云音乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/风云音乐.png" group-title="💰央视付费频道",风云音乐 +http://[2409:8087:7001:20:2::3]/dbiptv.sn.chinamobile.com/PLTV/88888893/224/3221226953/index.m3u8 +#EXTINF:-1 tvg-name="第一剧场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/第一剧场.png" group-title="💰央视付费频道",第一剧场 +https://live.tvfix.org/live/cmc/index.m3u8 +#EXTINF:-1 tvg-name="第一剧场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/第一剧场.png" group-title="💰央视付费频道",第一剧场 +http://cdn.jdshipin.com:8880/huya.php?id=11342390 +#EXTINF:-1 tvg-name="第一剧场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/第一剧场.png" group-title="💰央视付费频道",第一剧场 +http://[2409:8087:7001:20:2::3]/dbiptv.sn.chinamobile.com/PLTV/88888893/224/3221226959/index.m3u8 +#EXTINF:-1 tvg-name="风云剧场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/风云剧场.png" group-title="💰央视付费频道",风云剧场 +http://[2409:8087:7001:20:2::3]/dbiptv.sn.chinamobile.com/PLTV/88888893/224/3221226950/index.m3u8 +#EXTINF:-1 tvg-name="怀旧剧场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/怀旧剧场.png" group-title="💰央视付费频道",怀旧剧场 +http://[2409:8087:7001:20:2::3]/dbiptv.sn.chinamobile.com/PLTV/88888893/224/3221226972/index.m3u8 +#EXTINF:-1 tvg-name="女性时尚" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/女性时尚.png" group-title="💰央视付费频道",女性时尚 +http://[2409:8087:7001:20:2::3]/dbiptv.sn.chinamobile.com/PLTV/88888893/224/3221226969/index.m3u8 +#EXTINF:-1 tvg-name="高尔夫网球" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/高尔夫网球.png" group-title="💰央视付费频道",高尔夫网球 +http://[2409:8087:7001:20:2::3]/dbiptv.sn.chinamobile.com/PLTV/88888893/224/3221226978/index.m3u8 +#EXTINF:-1 tvg-name="风云足球" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/风云足球.png" group-title="💰央视付费频道",风云足球 +http://[2409:8087:7001:20:2::3]/dbiptv.sn.chinamobile.com/PLTV/88888893/224/3221226984/index.m3u8 +#EXTINF:-1 tvg-name="电视指南" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/电视指南.png" group-title="💰央视付费频道",电视指南 +http://[2409:8087:7001:20:2::3]/dbiptv.sn.chinamobile.com/PLTV/88888893/224/3221226987/index.m3u8 +#EXTINF:-1 tvg-name="世界地理" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/世界地理.png" group-title="💰央视付费频道",世界地理 +http://[2409:8087:7001:20:2::3]/dbiptv.sn.chinamobile.com/PLTV/88888893/224/3221226947/index.m3u8 +#EXTINF:-1 tvg-name="兵器科技" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/兵器科技.png" group-title="💰央视付费频道",兵器科技 +http://[2409:8087:7001:20:2::3]/dbiptv.sn.chinamobile.com/PLTV/88888893/224/3221226975/index.m3u8 +#EXTINF:-1 tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/广东卫视.png" group-title="📡卫视频道",广东卫视 +https://txmov2.a.kwimgs.com/upic/2023/01/26/09/BMjAyMzAxMjYwOTE3NDVfNzM5MzQzNzIyXzk0NjI1OTUwNTA3XzBfMw==_b_B81ddda927d33445d544befd008e60109.mp4 +#EXTINF:-1 tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/广东卫视.png" group-title="📡卫视频道",广东卫视 +http://39.164.180.36:19901/tsfile/live/0125_1.m3u8?key=txiptv&playlive=0&authid=0 +#EXTINF:-1 tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/广东卫视.png" group-title="📡卫视频道",广东卫视 +http://123.160.232.254:9901/tsfile/live/0125_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/广东卫视.png" group-title="📡卫视频道",广东卫视 +http://49.71.190.192:8000/rtp/239.49.8.13:9422 +#EXTINF:-1 tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/广东卫视.png" group-title="📡卫视频道",广东卫视 +http://b.zgjok.com:35455/nptv/guangdong.m3u8 +#EXTINF:-1 tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/广东卫视.png" group-title="📡卫视频道",广东卫视 +http://qjrhc.jydjd.top:2911/udp/224.1.100.96:11111 +#EXTINF:-1 tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/广东卫视.png" group-title="📡卫视频道",广东卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226961/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7E2MGyx659D_aaDPP0qt3NgA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/广东卫视.png" group-title="📡卫视频道",广东卫视 +http://z.b.bkpcp.top/m.php?id=gdws +#EXTINF:-1 tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/广东卫视.png" group-title="📡卫视频道",广东卫视 +http://j.x.bkpcp.top/jx/GUANGDHD +#EXTINF:-1 tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/广东卫视.png" group-title="📡卫视频道",广东卫视 +http://[2409:8087:74f0:22::6]:6410/270000001128/9900000520/index.m3u8 +#EXTINF:-1 tvg-name="香港卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/香港卫视.png" group-title="📡卫视频道",香港卫视 +http://cctvtxyh5c.liveplay.myqcloud.com/cstv/xianggangweishi_2/index.m3u8 +#EXTINF:-1 tvg-name="浙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江卫视.png" group-title="📡卫视频道",浙江卫视 +https://ali-m-l.cztv.com/channels/lantian/channel001/1080p.m3u8 +#EXTINF:-1 tvg-name="浙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江卫视.png" group-title="📡卫视频道",浙江卫视 +http://39.164.180.36:19901/tsfile/live/0124_1.m3u8?key=txiptv&playlive=0&authid=0 +#EXTINF:-1 tvg-name="浙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江卫视.png" group-title="📡卫视频道",浙江卫视 +http://123.160.232.254:9901/tsfile/live/0124_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 tvg-name="浙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江卫视.png" group-title="📡卫视频道",浙江卫视 +http://112.123.243.37:50085/tsfile/live/0019_1.m3u8 +#EXTINF:-1 tvg-name="浙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江卫视.png" group-title="📡卫视频道",浙江卫视 +http://139.155.142.13:9177/miguHD.php?id=浙江卫视 +#EXTINF:-1 tvg-name="浙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江卫视.png" group-title="📡卫视频道",浙江卫视 +http://ali-m-l.cztv.com/channels/lantian/channel001/1080p.m3u8 +#EXTINF:-1 tvg-name="浙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江卫视.png" group-title="📡卫视频道",浙江卫视 +http://222.218.122.114:8188/udp/239.81.0.108:4056 +#EXTINF:-1 tvg-name="浙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江卫视.png" group-title="📡卫视频道",浙江卫视 +http://drive.mxmy.net:8888/udp/239.3.1.137:8036 +#EXTINF:-1 tvg-name="浙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江卫视.png" group-title="📡卫视频道",浙江卫视 +http://cz.crossec.com:35455/nptv/zhejiang.m3u8 +#EXTINF:-1 tvg-name="浙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江卫视.png" group-title="📡卫视频道",浙江卫视 +http://112.123.243.37:50085/tsfile/live/0019_1.m3u8?key=txiptv&playlive=0&authid=0 +#EXTINF:-1 tvg-name="湖南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/湖南卫视.png" group-title="📡卫视频道",湖南卫视 +https://txmov2.a.kwimgs.com/bs3/video-hls/5199687338554291078_hlsb.m3u8 +#EXTINF:-1 tvg-name="湖南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/湖南卫视.png" group-title="📡卫视频道",湖南卫视 +http://39.164.180.36:19901/tsfile/live/0128_2.m3u8?key=txiptv&playlive=0&authid=0 +#EXTINF:-1 tvg-name="湖南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/湖南卫视.png" group-title="📡卫视频道",湖南卫视 +http://antvlive.ab5c6921.cdnviet.com/antv/playlist.m3u8 +#EXTINF:-1 tvg-name="湖南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/湖南卫视.png" group-title="📡卫视频道",湖南卫视 +http://123.160.232.254:9901/tsfile/live/0128_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 tvg-name="湖南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/湖南卫视.png" group-title="📡卫视频道",湖南卫视 +http://b.zgjok.com:35455/nptv/hunan.m3u8 +#EXTINF:-1 tvg-name="湖南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/湖南卫视.png" group-title="📡卫视频道",湖南卫视 +http://114.238.59.148:4000/rtp/239.49.8.12:9418 +#EXTINF:-1 tvg-name="湖南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/湖南卫视.png" group-title="📡卫视频道",湖南卫视 +http://220.169.100.41:10087/udp/239.76.253.100:9000 +#EXTINF:-1 tvg-name="湖南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/湖南卫视.png" group-title="📡卫视频道",湖南卫视 +http://nn.7x9d.cn/xzc2.php?ua=TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgNi4xOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTA2LjAuMC4wIFNhZmFyaS81MzcuMzY=&hls=aHR0cDovL3d3dy5kc2suY2MvcGhwL3N4Z2QucGhwP2lkPWh1bndz +#EXTINF:-1 tvg-name="湖南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/湖南卫视.png" group-title="📡卫视频道",湖南卫视 +http://qjrhc.jydjd.top:2911/udp/224.1.100.98:11111 +#EXTINF:-1 tvg-name="湖南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/湖南卫视.png" group-title="📡卫视频道",湖南卫视 +http://110.72.52.200:8181/tsfile/live/0128_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 tvg-name="北京卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/北京卫视.png" group-title="📡卫视频道",北京卫视 +http://198.16.100.186:8278/beijing/playlist.m3u8?tid=MD5D2836914028369140&ct=20273&tsum=a5b068469f28162e31477052e2de91d6 +#EXTINF:-1 tvg-name="北京卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/北京卫视.png" group-title="📡卫视频道",北京卫视 +http://39.164.180.36:19901/tsfile/live/0122_1.m3u8?key=txiptv&playlive=0&authid=0 +#EXTINF:-1 tvg-name="北京卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/北京卫视.png" group-title="📡卫视频道",北京卫视 +http://123.160.232.254:9901/tsfile/live/0122_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 tvg-name="北京卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/北京卫视.png" group-title="📡卫视频道",北京卫视 +http://114.238.59.148:4000/rtp/239.49.8.11:9414 +#EXTINF:-1 tvg-name="北京卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/北京卫视.png" group-title="📡卫视频道",北京卫视 +http://49.71.190.192:8000/rtp/239.49.8.11:9414 +#EXTINF:-1 tvg-name="北京卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/北京卫视.png" group-title="📡卫视频道",北京卫视 +http://222.134.245.16:9901/tsfile/live/0122_1.m3u8 +#EXTINF:-1 tvg-name="北京卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/北京卫视.png" group-title="📡卫视频道",北京卫视 +http://106.115.24.16:9901/tsfile/live/1024_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 tvg-name="北京卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/北京卫视.png" group-title="📡卫视频道",北京卫视 +http://qjrhc.jydjd.top:2911/udp/224.1.100.100:11111 +#EXTINF:-1 tvg-name="北京卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/北京卫视.png" group-title="📡卫视频道",北京卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226900/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EcYPi33WFyhvd6SjmqUKhJg%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="北京卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/北京卫视.png" group-title="📡卫视频道",北京卫视 +http://z.b.bkpcp.top/m.php?id=bjws +#EXTINF:-1 tvg-name="湖北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/湖北卫视.png" group-title="📡卫视频道",湖北卫视 +http://php.cqshushu.ggff.net/jzb.php?id=hbws&公众号【医工学习日志】 +#EXTINF:-1 tvg-name="湖北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/湖北卫视.png" group-title="📡卫视频道",湖北卫视 +http://web9916.w.computerqwq.cf/jzb.php?id=hbws&公众号【医工学习日志】 +#EXTINF:-1 tvg-name="湖北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/湖北卫视.png" group-title="📡卫视频道",湖北卫视 +http://39.164.180.36:19901/tsfile/live/0132_1.m3u8?key=txiptv&playlive=0&authid=0 +#EXTINF:-1 tvg-name="湖北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/湖北卫视.png" group-title="📡卫视频道",湖北卫视 +http://60.26.181.220:4022/rtp/225.1.1.147:5002 +#EXTINF:-1 tvg-name="湖北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/湖北卫视.png" group-title="📡卫视频道",湖北卫视 +http://b.zgjok.com:35455/mgtv/947472496.m3u8 +#EXTINF:-1 tvg-name="湖北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/湖北卫视.png" group-title="📡卫视频道",湖北卫视 +http://114.238.59.148:4000/rtp/239.49.8.8:9632 +#EXTINF:-1 tvg-name="湖北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/湖北卫视.png" group-title="📡卫视频道",湖北卫视 +http://114.226.231.231:8787/rtp/239.49.8.8:9632 +#EXTINF:-1 tvg-name="湖北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/湖北卫视.png" group-title="📡卫视频道",湖北卫视 +http://fxgm.fxjf.work:19901/tsfile/live/0132_1.m3u8 +#EXTINF:-1 tvg-name="湖北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/湖北卫视.png" group-title="📡卫视频道",湖北卫视 +http://cz.crossec.com:35455/mgtv/947472496.m3u8 +#EXTINF:-1 tvg-name="湖北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/湖北卫视.png" group-title="📡卫视频道",湖北卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226952/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EREB40lnZnCEwjRy7LZuhIQ%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="黑龙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/黑龙江卫视.png" group-title="📡卫视频道",黑龙江卫视 +https://s1.abntelevision.com/avivamientoabr/stream/avivamientohd/avivamientohd/chunks.m3u8 +#EXTINF:-1 tvg-name="黑龙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/黑龙江卫视.png" group-title="📡卫视频道",黑龙江卫视 +http://39.164.180.36:19901/tsfile/live/0143_1.m3u8?key=txiptv&playlive=0&authid=0 +#EXTINF:-1 tvg-name="黑龙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/黑龙江卫视.png" group-title="📡卫视频道",黑龙江卫视 +http://114.238.59.2:4000/rtp/239.49.8.14:9426 +#EXTINF:-1 tvg-name="黑龙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/黑龙江卫视.png" group-title="📡卫视频道",黑龙江卫视 +http://114.238.59.148:4000/rtp/239.49.8.14:9426 +#EXTINF:-1 tvg-name="黑龙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/黑龙江卫视.png" group-title="📡卫视频道",黑龙江卫视 +http://114.226.231.231:8787/rtp/239.49.8.14:9426 +#EXTINF:-1 tvg-name="黑龙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/黑龙江卫视.png" group-title="📡卫视频道",黑龙江卫视 +http://220.169.100.41:10087/udp/239.76.253.200:9000 +#EXTINF:-1 tvg-name="黑龙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/黑龙江卫视.png" group-title="📡卫视频道",黑龙江卫视 +http://fxgm.fxjf.work:19901/tsfile/live/0143_1.m3u8 +#EXTINF:-1 tvg-name="黑龙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/黑龙江卫视.png" group-title="📡卫视频道",黑龙江卫视 +http://117.12.149.38:4022/rtp/225.1.1.115:5002 +#EXTINF:-1 tvg-name="黑龙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/黑龙江卫视.png" group-title="📡卫视频道",黑龙江卫视 +http://qjrhc.jydjd.top:2911/udp/224.1.100.139:11111 +#EXTINF:-1 tvg-name="黑龙江卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/黑龙江卫视.png" group-title="📡卫视频道",黑龙江卫视 +http://j.x.bkpcp.top/jx/HEILJHD +#EXTINF:-1 tvg-name="安徽卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/安徽卫视.png" group-title="📡卫视频道",安徽卫视 +http://39.164.180.36:19901/tsfile/live/0130_1.m3u8?key=txiptv&playlive=0&authid=0 +#EXTINF:-1 tvg-name="安徽卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/安徽卫视.png" group-title="📡卫视频道",安徽卫视 +http://203.205.191.53/live.ahsx.ahtv.cn/live/ahwssx.m3u8 +#EXTINF:-1 tvg-name="安徽卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/安徽卫视.png" group-title="📡卫视频道",安徽卫视 +http://114.238.59.148:4000/rtp/239.49.8.204:6000 +#EXTINF:-1 tvg-name="安徽卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/安徽卫视.png" group-title="📡卫视频道",安徽卫视 +http://49.71.190.192:8000/rtp/239.49.8.80:8000 +#EXTINF:-1 tvg-name="安徽卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/安徽卫视.png" group-title="📡卫视频道",安徽卫视 +http://114.226.231.231:8787/rtp/239.49.8.204:6000 +#EXTINF:-1 tvg-name="安徽卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/安徽卫视.png" group-title="📡卫视频道",安徽卫视 +http://222.134.245.16:9901/tsfile/live/0130_1.m3u8 +#EXTINF:-1 tvg-name="安徽卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/安徽卫视.png" group-title="📡卫视频道",安徽卫视 +http://qjrhc.jydjd.top:2911/udp/224.1.100.66:11111 +#EXTINF:-1 tvg-name="安徽卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/安徽卫视.png" group-title="📡卫视频道",安徽卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226943/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7E0QmKQ_slRCwvVVUUfxPVbw%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="安徽卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/安徽卫视.png" group-title="📡卫视频道",安徽卫视 +http://j.x.bkpcp.top/jx/ANHUIHD +#EXTINF:-1 tvg-name="安徽卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/安徽卫视.png" group-title="📡卫视频道",安徽卫视 +http://[2409:8087:74f0:22::7]:6410/270000001128/9900000514/index.m3u8 +#EXTINF:-1 tvg-name="重庆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/重庆卫视.png" group-title="📡卫视频道",重庆卫视 +http://39.164.180.36:19901/tsfile/live/0142_1.m3u8?key=txiptv&playlive=0&authid=0 +#EXTINF:-1 tvg-name="重庆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/重庆卫视.png" group-title="📡卫视频道",重庆卫视 +http://123.160.232.254:9901/tsfile/live/0142_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 tvg-name="重庆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/重庆卫视.png" group-title="📡卫视频道",重庆卫视 +http://60.26.181.220:4022/rtp/225.1.1.155:5002 +#EXTINF:-1 tvg-name="重庆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/重庆卫视.png" group-title="📡卫视频道",重庆卫视 +http://49.71.190.192:8000/rtp/239.49.8.57:9830 +#EXTINF:-1 tvg-name="重庆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/重庆卫视.png" group-title="📡卫视频道",重庆卫视 +http://z.b.bkpcp.top/m.php?id=cqws +#EXTINF:-1 tvg-name="重庆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/重庆卫视.png" group-title="📡卫视频道",重庆卫视 +http://j.x.bkpcp.top/jx/CHONGQHD +#EXTINF:-1 tvg-name="重庆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/重庆卫视.png" group-title="📡卫视频道",重庆卫视 +http://[2409:8087:74f0:22::7]:6410/270000001128/9900000517/index.m3u8 +#EXTINF:-1 tvg-name="重庆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/重庆卫视.png" group-title="📡卫视频道",重庆卫视 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226409/index.m3u8 +#EXTINF:-1 tvg-name="重庆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/重庆卫视.png" group-title="📡卫视频道",重庆卫视 +http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226409/index.m3u8 +#EXTINF:-1 tvg-name="重庆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/重庆卫视.png" group-title="📡卫视频道",重庆卫视 +http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010053/1.m3u8 +#EXTINF:-1 tvg-name="东方卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/东方卫视.png" group-title="📡卫视频道",东方卫视 +https://txmov2.a.kwimgs.com/bs3/video-hls/5219953535631090825_hlsb.m3u8 +#EXTINF:-1 tvg-name="东方卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/东方卫视.png" group-title="📡卫视频道",东方卫视 +http://39.164.180.36:19901/tsfile/live/0107_1.m3u8?key=txiptv&playlive=0&authid=0 +#EXTINF:-1 tvg-name="东方卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/东方卫视.png" group-title="📡卫视频道",东方卫视 +http://123.160.232.254:9901/tsfile/live/0107_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 tvg-name="东方卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/东方卫视.png" group-title="📡卫视频道",东方卫视 +http://114.238.59.2:4000/rtp/239.49.8.17:9606 +#EXTINF:-1 tvg-name="东方卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/东方卫视.png" group-title="📡卫视频道",东方卫视 +http://114.238.59.148:4000/rtp/239.49.8.17:9606 +#EXTINF:-1 tvg-name="东方卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/东方卫视.png" group-title="📡卫视频道",东方卫视 +http://117.12.149.38:4022/rtp/225.1.2.31:5002 +#EXTINF:-1 tvg-name="东方卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/东方卫视.png" group-title="📡卫视频道",东方卫视 +http://qjrhc.jydjd.top:2911/udp/224.1.100.48:11111 +#EXTINF:-1 tvg-name="东方卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/东方卫视.png" group-title="📡卫视频道",东方卫视 +http://b.zgjok.com:35455/nptv/dongfang.m3u8 +#EXTINF:-1 tvg-name="东方卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/东方卫视.png" group-title="📡卫视频道",东方卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226898/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7E0uh4lyjjBCCN7TCq21vSIQ%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="东方卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/东方卫视.png" group-title="📡卫视频道",东方卫视 +http://[2409:8087:74f0:22::5]:6410/270000001128/9900000518/index.m3u8 +#EXTINF:-1 tvg-name="东南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/东南卫视.png" group-title="📡卫视频道",东南卫视 +http://39.164.180.36:19901/tsfile/live/0137_1.m3u8?key=txiptv&playlive=0&authid=0 +#EXTINF:-1 tvg-name="东南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/东南卫视.png" group-title="📡卫视频道",东南卫视 +http://123.160.232.254:9901/tsfile/live/0137_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 tvg-name="东南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/东南卫视.png" group-title="📡卫视频道",东南卫视 +http://218.1.137.125:4022/rtp/239.45.1.121:5140 +#EXTINF:-1 tvg-name="东南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/东南卫视.png" group-title="📡卫视频道",东南卫视 +http://110.72.52.200:8181/tsfile/live/0137_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 tvg-name="东南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/东南卫视.png" group-title="📡卫视频道",东南卫视 +http://49.71.190.192:8000/rtp/239.49.8.112:8000 +#EXTINF:-1 tvg-name="东南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/东南卫视.png" group-title="📡卫视频道",东南卫视 +http://144.255.44.160:7788/udp/239.21.1.113:5002 +#EXTINF:-1 tvg-name="东南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/东南卫视.png" group-title="📡卫视频道",东南卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226991/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EQ6F5Mjgs0tJyEArWFL3vQA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="东南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/东南卫视.png" group-title="📡卫视频道",东南卫视 +http://z.b.bkpcp.top/m.php?id=dnws +#EXTINF:-1 tvg-name="东南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/东南卫视.png" group-title="📡卫视频道",东南卫视 +http://j.x.bkpcp.top/jx/DONGNHD +#EXTINF:-1 tvg-name="东南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/东南卫视.png" group-title="📡卫视频道",东南卫视 +http://[2409:8087:74f0:22::4]:6610/270000001128/9900000519/index.m3u8 +#EXTINF:-1 tvg-name="甘肃卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/甘肃卫视.png" group-title="📡卫视频道",甘肃卫视 +http://39.164.180.36:19901/tsfile/live/0141_1.m3u8?key=txiptv&playlive=0&authid=0 +#EXTINF:-1 tvg-name="甘肃卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/甘肃卫视.png" group-title="📡卫视频道",甘肃卫视 +http://114.100.195.223:4022/rtp/238.1.79.36:4400 +#EXTINF:-1 tvg-name="甘肃卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/甘肃卫视.png" group-title="📡卫视频道",甘肃卫视 +http://222.218.122.114:8188/udp/239.81.0.207:4056 +#EXTINF:-1 tvg-name="甘肃卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/甘肃卫视.png" group-title="📡卫视频道",甘肃卫视 +http://144.255.44.160:7788/udp/239.21.2.22:5002 +#EXTINF:-1 tvg-name="甘肃卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/甘肃卫视.png" group-title="📡卫视频道",甘肃卫视 +http://nn.7x9d.cn/xzc2.php?ua=TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgNi4xOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTA2LjAuMC4wIFNhZmFyaS81MzcuMzY=&hls=aHR0cDovL3d3dy5kc2suY2MvcGhwL3N4Z2QucGhwP2lkPWdzd3M= +#EXTINF:-1 tvg-name="甘肃卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/甘肃卫视.png" group-title="📡卫视频道",甘肃卫视 +http://222.212.84.190:54123/udp/239.93.0.81:5140 +#EXTINF:-1 tvg-name="甘肃卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/甘肃卫视.png" group-title="📡卫视频道",甘肃卫视 +http://live.zohi.tv/video/s10001-fztv-3/index.m3u8 +#EXTINF:-1 tvg-name="甘肃卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/甘肃卫视.png" group-title="📡卫视频道",甘肃卫视 +http://z.b.bkpcp.top/m.php?id=gsws +#EXTINF:-1 tvg-name="甘肃卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/甘肃卫视.png" group-title="📡卫视频道",甘肃卫视 +http://j.x.bkpcp.top/jx/GSWS +#EXTINF:-1 tvg-name="甘肃卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/甘肃卫视.png" group-title="📡卫视频道",甘肃卫视 +http://[2409:8087:74f0:22::5]:6410/270000001128/9900000023/index.m3u8 +#EXTINF:-1 tvg-name="广西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/广西卫视.png" group-title="📡卫视频道",广西卫视 +http://39.164.180.36:19901/tsfile/live/0113_1.m3u8?key=txiptv&playlive=0&authid=0 +#EXTINF:-1 tvg-name="广西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/广西卫视.png" group-title="📡卫视频道",广西卫视 +http://123.160.232.254:9901/tsfile/live/0113_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 tvg-name="广西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/广西卫视.png" group-title="📡卫视频道",广西卫视 +http://117.12.149.38:4022/rtp/225.1.2.81:5002 +#EXTINF:-1 tvg-name="广西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/广西卫视.png" group-title="📡卫视频道",广西卫视 +http://222.134.245.16:9901/tsfile/live/0113_1.m3u8 +#EXTINF:-1 tvg-name="广西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/广西卫视.png" group-title="📡卫视频道",广西卫视 +http://b.zgjok.com:35455/nptv/guangxi.m3u8 +#EXTINF:-1 tvg-name="广西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/广西卫视.png" group-title="📡卫视频道",广西卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227010/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EkAhb-89sxdm9fz6-heXCuw%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="广西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/广西卫视.png" group-title="📡卫视频道",广西卫视 +http://z.b.bkpcp.top/m.php?id=gxws +#EXTINF:-1 tvg-name="广西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/广西卫视.png" group-title="📡卫视频道",广西卫视 +https://mobilelive.gxtv.cn/live/gx_live1004/playlist.m3u8 +#EXTINF:-1 tvg-name="广西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/广西卫视.png" group-title="📡卫视频道",广西卫视 +http://live.cztv.cc:85/live/ggpd.m3u8 +#EXTINF:-1 tvg-name="广西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/广西卫视.png" group-title="📡卫视频道",广西卫视 +http://[2409:8087:74f0:22::7]:6410/270000001128/9900000034/index.m3u8 +#EXTINF:-1 tvg-name="贵州卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/贵州卫视.png" group-title="📡卫视频道",贵州卫视 +http://39.164.180.36:19901/tsfile/live/0120_1.m3u8?key=txiptv&playlive=0&authid=0 +#EXTINF:-1 tvg-name="贵州卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/贵州卫视.png" group-title="📡卫视频道",贵州卫视 +http://60.26.181.220:4022/rtp/225.1.2.28:5002 +#EXTINF:-1 tvg-name="贵州卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/贵州卫视.png" group-title="📡卫视频道",贵州卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227012/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EnqBF03rFwPucF8ODtWxLQQ%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="贵州卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/贵州卫视.png" group-title="📡卫视频道",贵州卫视 +http://z.b.bkpcp.top/m.php?id=gzws +#EXTINF:-1 tvg-name="贵州卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/贵州卫视.png" group-title="📡卫视频道",贵州卫视 +http://j.x.bkpcp.top/jx/GUIZHD +#EXTINF:-1 tvg-name="贵州卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/贵州卫视.png" group-title="📡卫视频道",贵州卫视 +http://[2409:8087:74f0:22::7]:6410/270000001128/9900000036/index.m3u8 +#EXTINF:-1 tvg-name="贵州卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/贵州卫视.png" group-title="📡卫视频道",贵州卫视 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226474/index.m3u8 +#EXTINF:-1 tvg-name="贵州卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/贵州卫视.png" group-title="📡卫视频道",贵州卫视 +http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010100/1.m3u8 +#EXTINF:-1 tvg-name="贵州卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/贵州卫视.png" group-title="📡卫视频道",贵州卫视 +http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225728/2/index.m3u8 +#EXTINF:-1 tvg-name="贵州卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/贵州卫视.png" group-title="📡卫视频道",贵州卫视 +http://[2409:8087:1a01:df::4030]:80/TVOD/88888888/224/3221225974/main.m3u8 +#EXTINF:-1 tvg-name="海南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/海南卫视.png" group-title="📡卫视频道",海南卫视 +http://php.cqshushu.ggff.net/jzb.php?id=hainws&公众号【医工学习日志】 +#EXTINF:-1 tvg-name="海南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/海南卫视.png" group-title="📡卫视频道",海南卫视 +http://web9916.w.computerqwq.cf/jzb.php?id=hainws&公众号【医工学习日志】 +#EXTINF:-1 tvg-name="海南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/海南卫视.png" group-title="📡卫视频道",海南卫视 +http://nn.7x9d.cn/地方台8563/海南.php?id=hnws +#EXTINF:-1 tvg-name="海南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/海南卫视.png" group-title="📡卫视频道",海南卫视 +http://z.b.bkpcp.top/m.php?id=hinws +#EXTINF:-1 tvg-name="海南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/海南卫视.png" group-title="📡卫视频道",海南卫视 +http://j.x.bkpcp.top/jx/HAINHD +#EXTINF:-1 tvg-name="海南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/海南卫视.png" group-title="📡卫视频道",海南卫视 +http://[2409:8087:74f0:22::7]:6410/270000001128/9900000037/index.m3u8 +#EXTINF:-1 tvg-name="海南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/海南卫视.png" group-title="📡卫视频道",海南卫视 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226465/index.m3u8 +#EXTINF:-1 tvg-name="海南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/海南卫视.png" group-title="📡卫视频道",海南卫视 +http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225722/2/index.m3u8 +#EXTINF:-1 tvg-name="海南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/海南卫视.png" group-title="📡卫视频道",海南卫视 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221226465/index.m3u8 +#EXTINF:-1 tvg-name="海南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/海南卫视.png" group-title="📡卫视频道",海南卫视 +http://[2409:8087:2001:20:2800:0:df6e:eb08]/wh7f454c46tw2843123663_1489055229/ott.mobaibox.com/PLTV/3/224/3221228139/index.m3u8?icpid=3&RTS=1669701444&from=40&popid=40&hms_devid=2037&prioritypopid=40&vqe=3 +#EXTINF:-1 tvg-name="河北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/河北卫视.png" group-title="📡卫视频道",河北卫视 +http://39.164.180.36:19901/tsfile/live/0117_1.m3u8?key=txiptv&playlive=0&authid=0 +#EXTINF:-1 tvg-name="河北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/河北卫视.png" group-title="📡卫视频道",河北卫视 +http://27.18.157.225:2701/rtp/239.254.96.113:9616 +#EXTINF:-1 tvg-name="河北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/河北卫视.png" group-title="📡卫视频道",河北卫视 +http://b.zgjok.com:35455/nptv/hebei.m3u8 +#EXTINF:-1 tvg-name="河北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/河北卫视.png" group-title="📡卫视频道",河北卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227014/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7ErSGjhI3DMaaAASPrbQJYTg%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="河北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/河北卫视.png" group-title="📡卫视频道",河北卫视 +http://z.b.bkpcp.top/m.php?id=hbws +#EXTINF:-1 tvg-name="河北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/河北卫视.png" group-title="📡卫视频道",河北卫视 +https://jwplay.hebyun.com.cn/live/hbwstv/1500k/tzwj_video.m3u8 +#EXTINF:-1 tvg-name="河北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/河北卫视.png" group-title="📡卫视频道",河北卫视 +http://[2409:8087:74f0:22::7]:6410/270000001128/9900000057/index.m3u8 +#EXTINF:-1 tvg-name="河北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/河北卫视.png" group-title="📡卫视频道",河北卫视 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226406/index.m3u8 +#EXTINF:-1 tvg-name="河北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/河北卫视.png" group-title="📡卫视频道",河北卫视 +http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010101/1.m3u8 +#EXTINF:-1 tvg-name="河北卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/河北卫视.png" group-title="📡卫视频道",河北卫视 +http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225732/2/index.m3u8 +#EXTINF:-1 tvg-name="河南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/河南卫视.png" group-title="📡卫视频道",河南卫视 +http://150.158.10.195:80/dxxw.php +#EXTINF:-1 tvg-name="河南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/河南卫视.png" group-title="📡卫视频道",河南卫视 +http://lxajh.top/tv/hn.php?id=hnws +#EXTINF:-1 tvg-name="河南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/河南卫视.png" group-title="📡卫视频道",河南卫视 +http://1.94.31.214/php/hntv.php +#EXTINF:-1 tvg-name="河南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/河南卫视.png" group-title="📡卫视频道",河南卫视 +http://xxwx.yoesun.com/xxw/河南网.php?id=hnws +#EXTINF:-1 tvg-name="河南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/河南卫视.png" group-title="📡卫视频道",河南卫视 +http://123.160.232.254:9901/tsfile/live/0139_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 tvg-name="河南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/河南卫视.png" group-title="📡卫视频道",河南卫视 +http://tvpull.dxhmt.cn:9081/tv/11425-1.m3u8 +#EXTINF:-1 tvg-name="河南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/河南卫视.png" group-title="📡卫视频道",河南卫视 +http://z.b.bkpcp.top/m.php?id=hnws +#EXTINF:-1 tvg-name="河南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/河南卫视.png" group-title="📡卫视频道",河南卫视 +http://j.x.bkpcp.top/jx/HENHD +#EXTINF:-1 tvg-name="河南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/河南卫视.png" group-title="📡卫视频道",河南卫视 +http://[2409:8087:74f0:22::7]:6410/270000001128/9900000027/index.m3u8 +#EXTINF:-1 tvg-name="河南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/河南卫视.png" group-title="📡卫视频道",河南卫视 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226480/index.m3u8 +#EXTINF:-1 tvg-name="吉林卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/吉林卫视.png" group-title="📡卫视频道",吉林卫视 +http://39.164.180.36:19901/tsfile/live/0116_1.m3u8?key=txiptv&playlive=0&authid=0 +#EXTINF:-1 tvg-name="吉林卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/吉林卫视.png" group-title="📡卫视频道",吉林卫视 +http://php.cqshushu.ggff.net/jzb.php?id=jlws&公众号【医工学习日志】 +#EXTINF:-1 tvg-name="吉林卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/吉林卫视.png" group-title="📡卫视频道",吉林卫视 +http://web9916.w.computerqwq.cf/jzb.php?id=jlws&公众号【医工学习日志】 +#EXTINF:-1 tvg-name="吉林卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/吉林卫视.png" group-title="📡卫视频道",吉林卫视 +http://60.26.181.220:4022/rtp/225.1.2.26:5002 +#EXTINF:-1 tvg-name="吉林卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/吉林卫视.png" group-title="📡卫视频道",吉林卫视 +http://180.165.29.204:4022/rtp/239.45.0.6:5140 +#EXTINF:-1 tvg-name="吉林卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/吉林卫视.png" group-title="📡卫视频道",吉林卫视 +http://fxgm.fxjf.work:19901/tsfile/live/0116_1.m3u8 +#EXTINF:-1 tvg-name="吉林卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/吉林卫视.png" group-title="📡卫视频道",吉林卫视 +http://b.zgjok.com:35455/nptv/jiling.m3u8 +#EXTINF:-1 tvg-name="吉林卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/吉林卫视.png" group-title="📡卫视频道",吉林卫视 +http://z.b.bkpcp.top/m.php?id=jlws +#EXTINF:-1 tvg-name="吉林卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/吉林卫视.png" group-title="📡卫视频道",吉林卫视 +http://j.x.bkpcp.top/jx/JILHD +#EXTINF:-1 tvg-name="吉林卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/吉林卫视.png" group-title="📡卫视频道",吉林卫视 +http://[2409:8087:74f0:22::5]:6410/270000001128/9900000030/index.m3u8 +#EXTINF:-1 tvg-name="江苏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/江苏卫视.png" group-title="📡卫视频道",江苏卫视 +http://39.164.180.36:19901/tsfile/live/0127_1.m3u8?key=txiptv&playlive=0&authid=0 +#EXTINF:-1 tvg-name="江苏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/江苏卫视.png" group-title="📡卫视频道",江苏卫视 +http://114.238.59.148:4000/rtp/239.49.8.16:9602 +#EXTINF:-1 tvg-name="江苏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/江苏卫视.png" group-title="📡卫视频道",江苏卫视 +http://117.12.149.38:4022/rtp/225.1.1.126:5002 +#EXTINF:-1 tvg-name="江苏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/江苏卫视.png" group-title="📡卫视频道",江苏卫视 +http://222.169.85.8:9901/tsfile/live/0127_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 tvg-name="江苏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/江苏卫视.png" group-title="📡卫视频道",江苏卫视 +http://101.74.30.190:9901/tsfile/live/0127_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 tvg-name="江苏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/江苏卫视.png" group-title="📡卫视频道",江苏卫视 +http://fxgm.fxjf.work:19901/tsfile/live/0127_1.m3u8 +#EXTINF:-1 tvg-name="江苏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/江苏卫视.png" group-title="📡卫视频道",江苏卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226897/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7E0BmO6uHF7WFoTed__Xr3NQ%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="江苏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/江苏卫视.png" group-title="📡卫视频道",江苏卫视 +http://z.b.bkpcp.top/m.php?id=jsws +#EXTINF:-1 tvg-name="江苏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/江苏卫视.png" group-title="📡卫视频道",江苏卫视 +http://[2409:8087:74f0:22::6]:6410/270000001128/9900000524/index.m3u8 +#EXTINF:-1 tvg-name="江苏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/江苏卫视.png" group-title="📡卫视频道",江苏卫视 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226310/index.m3u8 +#EXTINF:-1 tvg-name="江西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/江西卫视.png" group-title="📡卫视频道",江西卫视 +http://39.164.180.36:19901/tsfile/live/0138_1.m3u8?key=txiptv&playlive=0&authid=0 +#EXTINF:-1 tvg-name="江西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/江西卫视.png" group-title="📡卫视频道",江西卫视 +http://112.30.73.119:9902/tsfile/live/0138_1.m3u8?key=txiptv&playlive=0&authid=0 +#EXTINF:-1 tvg-name="江西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/江西卫视.png" group-title="📡卫视频道",江西卫视 +http://123.160.232.254:9901/tsfile/live/0138_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 tvg-name="江西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/江西卫视.png" group-title="📡卫视频道",江西卫视 +http://117.12.149.38:4022/rtp/225.1.2.29:5002 +#EXTINF:-1 tvg-name="江西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/江西卫视.png" group-title="📡卫视频道",江西卫视 +http://60.26.181.220:4022/rtp/225.1.2.29:5002 +#EXTINF:-1 tvg-name="江西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/江西卫视.png" group-title="📡卫视频道",江西卫视 +http://222.169.85.8:9901/tsfile/live/0138_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 tvg-name="江西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/江西卫视.png" group-title="📡卫视频道",江西卫视 +http://nas.hssvm.com:8888/udp/225.1.2.29:5002 +#EXTINF:-1 tvg-name="江西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/江西卫视.png" group-title="📡卫视频道",江西卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226956/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7Ei6ZIpVizXlewg-YfGvH8dA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="江西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/江西卫视.png" group-title="📡卫视频道",江西卫视 +http://z.b.bkpcp.top/m.php?id=jxws +#EXTINF:-1 tvg-name="江西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/江西卫视.png" group-title="📡卫视频道",江西卫视 +http://[2409:8087:74f0:22::4]:6610/270000001128/9900000525/index.m3u8 +#EXTINF:-1 tvg-name="辽宁卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/辽宁卫视.png" group-title="📡卫视频道",辽宁卫视 +http://39.164.180.36:19901/tsfile/live/0121_1.m3u8?key=txiptv&playlive=0&authid=0 +#EXTINF:-1 tvg-name="辽宁卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/辽宁卫视.png" group-title="📡卫视频道",辽宁卫视 +http://123.160.232.254:9901/tsfile/live/0121_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 tvg-name="辽宁卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/辽宁卫视.png" group-title="📡卫视频道",辽宁卫视 +http://60.26.181.220:4022/rtp/225.1.1.154:5002 +#EXTINF:-1 tvg-name="辽宁卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/辽宁卫视.png" group-title="📡卫视频道",辽宁卫视 +http://z.b.bkpcp.top/m.php?id=lnws +#EXTINF:-1 tvg-name="辽宁卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/辽宁卫视.png" group-title="📡卫视频道",辽宁卫视 +http://j.x.bkpcp.top/jx/LIAONHD +#EXTINF:-1 tvg-name="辽宁卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/辽宁卫视.png" group-title="📡卫视频道",辽宁卫视 +http://[2409:8087:74f0:22::7]:6410/270000001128/9900000526/index.m3u8 +#EXTINF:-1 tvg-name="辽宁卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/辽宁卫视.png" group-title="📡卫视频道",辽宁卫视 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226546/index.m3u8 +#EXTINF:-1 tvg-name="辽宁卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/辽宁卫视.png" group-title="📡卫视频道",辽宁卫视 +http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226546/index.m3u8 +#EXTINF:-1 tvg-name="辽宁卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/辽宁卫视.png" group-title="📡卫视频道",辽宁卫视 +http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010061/1.m3u8 +#EXTINF:-1 tvg-name="辽宁卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/辽宁卫视.png" group-title="📡卫视频道",辽宁卫视 +http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225735/2/index.m3u8 +#EXTINF:-1 tvg-name="内蒙古卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/内蒙古卫视.png" group-title="📡卫视频道",内蒙古卫视 +https://ali-m-l.cztv.com/channels/lantian/channel007/1080p.m3u8 +#EXTINF:-1 tvg-name="内蒙古卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/内蒙古卫视.png" group-title="📡卫视频道",内蒙古卫视 +http://z.b.bkpcp.top/m.php?id=nmws +#EXTINF:-1 tvg-name="内蒙古卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/内蒙古卫视.png" group-title="📡卫视频道",内蒙古卫视 +http://j.x.bkpcp.top/jx/NMGWS +#EXTINF:-1 tvg-name="内蒙古卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/内蒙古卫视.png" group-title="📡卫视频道",内蒙古卫视 +http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225634/index.m3u8 +#EXTINF:-1 tvg-name="内蒙古卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/内蒙古卫视.png" group-title="📡卫视频道",内蒙古卫视 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221226389/index.m3u8 +#EXTINF:-1 tvg-name="内蒙古卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/内蒙古卫视.png" group-title="📡卫视频道",内蒙古卫视 +http://[2409:8087:1a01:df::401a]:80/wh7f454c46tw3029083262_-802204014/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225634/index.m3u8?icpid=88888888&RTS=1713969858&from=4&hms_devid=128&prioritypopid=4&online=1713969858&vqe=3 +#EXTINF:-1 tvg-name="内蒙古卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/内蒙古卫视.png" group-title="📡卫视频道",内蒙古卫视 +http://[2409:8087:5e01:34::20]:6610/ZTE_CMS/00000001000000060000000000000319/index.m3u8?IAS +#EXTINF:-1 tvg-name="内蒙古卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/内蒙古卫视.png" group-title="📡卫视频道",内蒙古卫视 +http://[2409:8087:1e03:21::2]:6060/cms001/ch00000090990000001068/index.m3u8 +#EXTINF:-1 tvg-name="内蒙古卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/内蒙古卫视.png" group-title="📡卫视频道",内蒙古卫视 +http://[2409:8087:3428:20:500::100f]:6610/PLTV/88888888/224/3221227244/index.m3u8?servicetype=1&IASHttpSessionId=RR423820220409134714119178 +#EXTINF:-1 tvg-name="内蒙古卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/内蒙古卫视.png" group-title="📡卫视频道",内蒙古卫视 +http://[2409:8087:3428:20:500::100f]:6610/PLTV/88888888/224/3221225846/index.m3u8?servicetype=1&IASHttpSessionId=RR423820220409134714119178 +#EXTINF:-1 tvg-name="宁夏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/宁夏卫视.png" group-title="📡卫视频道",宁夏卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227003/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7ESco1zinvdUYzleEkXYhIvA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="宁夏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/宁夏卫视.png" group-title="📡卫视频道",宁夏卫视 +http://z.b.bkpcp.top/m.php?id=nxws +#EXTINF:-1 tvg-name="宁夏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/宁夏卫视.png" group-title="📡卫视频道",宁夏卫视 +http://j.x.bkpcp.top/jx/NXWS +#EXTINF:-1 tvg-name="宁夏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/宁夏卫视.png" group-title="📡卫视频道",宁夏卫视 +http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225632/index.m3u8 +#EXTINF:-1 tvg-name="宁夏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/宁夏卫视.png" group-title="📡卫视频道",宁夏卫视 +http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225726/2/index.m3u8 +#EXTINF:-1 tvg-name="宁夏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/宁夏卫视.png" group-title="📡卫视频道",宁夏卫视 +http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/TVOD/88888888/8/3221226454/index.m3u8 +#EXTINF:-1 tvg-name="宁夏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/宁夏卫视.png" group-title="📡卫视频道",宁夏卫视 +http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221226454/index.m3u8 +#EXTINF:-1 tvg-name="宁夏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/宁夏卫视.png" group-title="📡卫视频道",宁夏卫视 +http://[2409:8087:5e01:34::20]:6610/ZTE_CMS/00000001000000060000000000000309/index.m3u8?IAS +#EXTINF:-1 tvg-name="宁夏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/宁夏卫视.png" group-title="📡卫视频道",宁夏卫视 +http://[2409:8087:1e03:21::2]:6060/cms001/ch00000090990000001074/index.m3u8 +#EXTINF:-1 tvg-name="宁夏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/宁夏卫视.png" group-title="📡卫视频道",宁夏卫视 +http://[2409:8087:3428:20:500::100f]:6610/PLTV/88888888/224/3221227254/index.m3u8?servicetype=1&IASHttpSessionId=RR423820220409134714119178 +#EXTINF:-1 tvg-name="青海卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/青海卫视.png" group-title="📡卫视频道",青海卫视 +http://39.164.180.36:19901/tsfile/live/0140_1.m3u8?key=txiptv&playlive=0&authid=0 +#EXTINF:-1 tvg-name="青海卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/青海卫视.png" group-title="📡卫视频道",青海卫视 +http://123.160.232.254:9901/tsfile/live/0140_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 tvg-name="青海卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/青海卫视.png" group-title="📡卫视频道",青海卫视 +http://b.zgjok.com:35455/nptv/qinghai.m3u8 +#EXTINF:-1 tvg-name="青海卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/青海卫视.png" group-title="📡卫视频道",青海卫视 +http://qjrhc.jydjd.top:2911/udp/224.1.100.127:11111 +#EXTINF:-1 tvg-name="青海卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/青海卫视.png" group-title="📡卫视频道",青海卫视 +http://z.b.bkpcp.top/m.php?id=qhws +#EXTINF:-1 tvg-name="青海卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/青海卫视.png" group-title="📡卫视频道",青海卫视 +http://j.x.bkpcp.top/jx/QHWS +#EXTINF:-1 tvg-name="青海卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/青海卫视.png" group-title="📡卫视频道",青海卫视 +http://[2409:8087:74f0:22::5]:6410/270000001128/9900000042/index.m3u8 +#EXTINF:-1 tvg-name="青海卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/青海卫视.png" group-title="📡卫视频道",青海卫视 +http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225628/index.m3u8 +#EXTINF:-1 tvg-name="青海卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/青海卫视.png" group-title="📡卫视频道",青海卫视 +http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010111/1.m3u8 +#EXTINF:-1 tvg-name="青海卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/青海卫视.png" group-title="📡卫视频道",青海卫视 +http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225727/2/index.m3u8 +#EXTINF:-1 tvg-name="山东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/山东卫视.png" group-title="📡卫视频道",山东卫视 +http://39.164.180.36:19901/tsfile/live/0131_1.m3u8?key=txiptv&playlive=0&authid=0 +#EXTINF:-1 tvg-name="山东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/山东卫视.png" group-title="📡卫视频道",山东卫视 +http://123.160.232.254:9901/tsfile/live/0131_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 tvg-name="山东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/山东卫视.png" group-title="📡卫视频道",山东卫视 +http://l.cztvcloud.com/channels/lantian/SXshengzhou1/720p.m3u8 +#EXTINF:-1 tvg-name="山东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/山东卫视.png" group-title="📡卫视频道",山东卫视 +http://qjrhc.jydjd.top:2911/udp/224.1.100.50:11111 +#EXTINF:-1 tvg-name="山东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/山东卫视.png" group-title="📡卫视频道",山东卫视 +http://z.b.bkpcp.top/m.php?id=sdws +#EXTINF:-1 tvg-name="山东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/山东卫视.png" group-title="📡卫视频道",山东卫视 +http://j.x.bkpcp.top/jx/SHANDHD +#EXTINF:-1 tvg-name="山东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/山东卫视.png" group-title="📡卫视频道",山东卫视 +http://[2409:8087:74f0:22::5]:6410/270000001128/9900000527/index.m3u8 +#EXTINF:-1 tvg-name="山东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/山东卫视.png" group-title="📡卫视频道",山东卫视 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226456/index.m3u8 +#EXTINF:-1 tvg-name="山东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/山东卫视.png" group-title="📡卫视频道",山东卫视 +http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226456/index.m3u8 +#EXTINF:-1 tvg-name="山东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/山东卫视.png" group-title="📡卫视频道",山东卫视 +http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010066/1.m3u8 +#EXTINF:-1 tvg-name="山西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/山西卫视.png" group-title="📡卫视频道",山西卫视 +http://39.164.180.36:19901/tsfile/live/0118_1.m3u8?key=txiptv&playlive=0&authid=0 +#EXTINF:-1 tvg-name="山西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/山西卫视.png" group-title="📡卫视频道",山西卫视 +http://j.x.bkpcp.top/jx/SXWS +#EXTINF:-1 tvg-name="山西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/山西卫视.png" group-title="📡卫视频道",山西卫视 +http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225624/index.m3u8 +#EXTINF:-1 tvg-name="山西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/山西卫视.png" group-title="📡卫视频道",山西卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226531/1.m3u8 +#EXTINF:-1 tvg-name="山西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/山西卫视.png" group-title="📡卫视频道",山西卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226920/1.m3u8 +#EXTINF:-1 tvg-name="山西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/山西卫视.png" group-title="📡卫视频道",山西卫视 +http://dsj.motem.top:8880/bptv/10000100000000050000000003887413.m3u8 +#EXTINF:-1 tvg-name="山西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/山西卫视.png" group-title="📡卫视频道",山西卫视 +http://m3u8.channel.wsrtv.com.cn/cms/videos/nmip-media/channellive/channel7/playlist.m3u8 +#EXTINF:-1 tvg-name="陕西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/陕西卫视.png" group-title="📡卫视频道",陕西卫视 +http://39.164.180.36:19901/tsfile/live/0136_1.m3u8?key=txiptv&playlive=0&authid=0 +#EXTINF:-1 tvg-name="陕西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/陕西卫视.png" group-title="📡卫视频道",陕西卫视 +http://i.880824.xyz:35455/mgtv/738910838.m3u8 +#EXTINF:-1 tvg-name="陕西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/陕西卫视.png" group-title="📡卫视频道",陕西卫视 +http://z.b.bkpcp.top/m.php?id=sxws +#EXTINF:-1 tvg-name="陕西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/陕西卫视.png" group-title="📡卫视频道",陕西卫视 +http://gat.bkpcp.top/ymg.php?id=sxws +#EXTINF:-1 tvg-name="陕西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/陕西卫视.png" group-title="📡卫视频道",陕西卫视 +http://hlsbkmgsplive.miguvideo.com/migu/kailu/shan3xiws/57/20220809/index.m3u8 +#EXTINF:-1 tvg-name="陕西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/陕西卫视.png" group-title="📡卫视频道",陕西卫视 +http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225625/index.m3u8 +#EXTINF:-1 tvg-name="陕西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/陕西卫视.png" group-title="📡卫视频道",陕西卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226532/1.m3u8 +#EXTINF:-1 tvg-name="陕西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/陕西卫视.png" group-title="📡卫视频道",陕西卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226926/1.m3u8 +#EXTINF:-1 tvg-name="陕西卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/陕西卫视.png" group-title="📡卫视频道",陕西卫视 +http://dsj.motem.top:8880/bptv/10000100000000050000000003887404.m3u8 +#EXTINF:-1 tvg-name="四川卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/四川卫视.png" group-title="📡卫视频道",四川卫视 +http://39.164.180.36:19901/tsfile/live/0123_1.m3u8?key=txiptv&playlive=0&authid=0 +#EXTINF:-1 tvg-name="四川卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/四川卫视.png" group-title="📡卫视频道",四川卫视 +http://web9916.w.computerqwq.cf/jzb.php?id=scws&公众号【医工学习日志】 +#EXTINF:-1 tvg-name="四川卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/四川卫视.png" group-title="📡卫视频道",四川卫视 +http://php.cqshushu.ggff.net/jzb.php?id=scws&公众号【医工学习日志】 +#EXTINF:-1 tvg-name="四川卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/四川卫视.png" group-title="📡卫视频道",四川卫视 +http://60.26.181.220:4022/rtp/225.1.1.123:5002 +#EXTINF:-1 tvg-name="四川卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/四川卫视.png" group-title="📡卫视频道",四川卫视 +http://qjrhc.jydjd.top:2911/udp/224.1.100.72:11111 +#EXTINF:-1 tvg-name="四川卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/四川卫视.png" group-title="📡卫视频道",四川卫视 +http://b.zgjok.com:35455/nptv/sichuan.m3u8 +#EXTINF:-1 tvg-name="四川卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/四川卫视.png" group-title="📡卫视频道",四川卫视 +http://z.b.bkpcp.top/m.php?id=scws +#EXTINF:-1 tvg-name="四川卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/四川卫视.png" group-title="📡卫视频道",四川卫视 +http://j.x.bkpcp.top/jx/SICHD +#EXTINF:-1 tvg-name="四川卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/四川卫视.png" group-title="📡卫视频道",四川卫视 +http://[2409:8087:74f0:22::6]:6410/270000001128/9900000025/index.m3u8 +#EXTINF:-1 tvg-name="四川卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/四川卫视.png" group-title="📡卫视频道",四川卫视 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226338/index.m3u8 +#EXTINF:-1 tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/深圳卫视.png" group-title="📡卫视频道",深圳卫视 +http://yncbn.ks-cdn.gitv.tv/gitv_live/G_SHENZHEN-HQ/G_SHENZHEN-HQ.m3u8 +#EXTINF:-1 tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/深圳卫视.png" group-title="📡卫视频道",深圳卫视 +http://39.164.180.36:19901/tsfile/live/0125_2.m3u8?key=txiptv&playlive=0&authid=0 +#EXTINF:-1 tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/深圳卫视.png" group-title="📡卫视频道",深圳卫视 +http://123.160.232.254:9901/tsfile/live/0126_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/深圳卫视.png" group-title="📡卫视频道",深圳卫视 +http://114.238.59.148:4000/rtp/239.49.8.15:9430 +#EXTINF:-1 tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/深圳卫视.png" group-title="📡卫视频道",深圳卫视 +http://qjrhc.jydjd.top:2911/udp/224.1.100.40:11111 +#EXTINF:-1 tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/深圳卫视.png" group-title="📡卫视频道",深圳卫视 +http://b.zgjok.com:35455/nptv/shenzheng.m3u8 +#EXTINF:-1 tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/深圳卫视.png" group-title="📡卫视频道",深圳卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226959/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EGrVNEZREjuNVKiTJo2mtwg%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/深圳卫视.png" group-title="📡卫视频道",深圳卫视 +http://[2409:8087:74f0:22::5]:6410/270000001128/9900000529/index.m3u8 +#EXTINF:-1 tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/深圳卫视.png" group-title="📡卫视频道",深圳卫视 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226313/index.m3u8 +#EXTINF:-1 tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/深圳卫视.png" group-title="📡卫视频道",深圳卫视 +http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226313/index.m3u8 +#EXTINF:-1 tvg-name="三沙卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/三沙卫视.png" group-title="📡卫视频道",三沙卫视 +http://[2409:8087:5e00:24::1e]:6060/000000001000/4600001000000000117/1.m3u8 +#EXTINF:-1 tvg-name="三沙卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/三沙卫视.png" group-title="📡卫视频道",三沙卫视 +http://[2409:8087:2001:20:2800:0:df6e:eb21]:80/ott.mobaibox.com/PLTV/4/224/3221228626/index.m3u8 +#EXTINF:-1 tvg-name="三沙卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/三沙卫视.png" group-title="📡卫视频道",三沙卫视 +http://[2409:8087:1e03:21::2]:6060/cms001/ch00000090990000001185/index.m3u8 +#EXTINF:-1 tvg-name="三沙卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/三沙卫视.png" group-title="📡卫视频道",三沙卫视 +http://[2409:8087:3428:20:500::100f]:6610/PLTV/88888888/224/3221227172/index.m3u8?servicetype=1&IASHttpSessionId=RR423820220409134714119178 +#EXTINF:-1 tvg-name="三沙卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/三沙卫视.png" group-title="📡卫视频道",三沙卫视 +http://[2409:8087:3428:20:500::1009]:6610/PLTV/88888888/224/3221227172/index.m3u8?servicetype=1&IASHttpSessionId=RR423820220409134714119178 +#EXTINF:-1 tvg-name="三沙卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/三沙卫视.png" group-title="📡卫视频道",三沙卫视 +http://[2409:8087:5e01:34::20]:6610/ZTE_CMS/08984400000000060000000000000319/index.m3u8?IAS +#EXTINF:-1 tvg-name="三沙卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/三沙卫视.png" group-title="📡卫视频道",三沙卫视 +http://[2409:8087:5e01:34::21]:6610/ZTE_CMS/08984400000000060000000000000319/index.m3u8 +#EXTINF:-1 tvg-name="三沙卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/三沙卫视.png" group-title="📡卫视频道",三沙卫视 +http://[2409:8087:5e01:34::21]:6610/ZTE_CMS/08984400000000060000000000000319/index.m3u8?fmmv6 +#EXTINF:-1 tvg-name="三沙卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/三沙卫视.png" group-title="📡卫视频道",三沙卫视 +http://wouu.net:9977/udp/239.93.42.58:5140 +#EXTINF:-1 tvg-name="三沙卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/三沙卫视.png" group-title="📡卫视频道",三沙卫视 +https://live3.hnntv.cn/srs/tv/ssws.m3u8 +#EXTINF:-1 tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/天津卫视.png" group-title="📡卫视频道",天津卫视 +http://php.cqshushu.ggff.net/jzb.php?id=tjws&公众号【医工学习日志】 +#EXTINF:-1 tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/天津卫视.png" group-title="📡卫视频道",天津卫视 +http://web9916.w.computerqwq.cf/jzb.php?id=tjws&公众号【医工学习日志】 +#EXTINF:-1 tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/天津卫视.png" group-title="📡卫视频道",天津卫视 +http://39.164.180.36:19901/tsfile/live/0135_1.m3u8?key=txiptv&playlive=0&authid=0 +#EXTINF:-1 tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/天津卫视.png" group-title="📡卫视频道",天津卫视 +http://123.160.232.254:9901/tsfile/live/0135_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/天津卫视.png" group-title="📡卫视频道",天津卫视 +http://60.26.181.220:4022/rtp/225.1.1.111:5002 +#EXTINF:-1 tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/天津卫视.png" group-title="📡卫视频道",天津卫视 +http://b.zgjok.com:35455/nptv/tianjing.m3u8 +#EXTINF:-1 tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/天津卫视.png" group-title="📡卫视频道",天津卫视 +http://j.x.bkpcp.top/jx/TIANJHD +#EXTINF:-1 tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/天津卫视.png" group-title="📡卫视频道",天津卫视 +http://[2409:8087:74f0:22::6]:6410/270000001128/9900000530/index.m3u8 +#EXTINF:-1 tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/天津卫视.png" group-title="📡卫视频道",天津卫视 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226459/index.m3u8 +#EXTINF:-1 tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/天津卫视.png" group-title="📡卫视频道",天津卫视 +http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226459/index.m3u8 +#EXTINF:-1 tvg-name="西藏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/西藏卫视.png" group-title="📡卫视频道",西藏卫视 +http://xxwx.yoesun.com/xxw/西藏网.php +#EXTINF:-1 tvg-name="西藏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/西藏卫视.png" group-title="📡卫视频道",西藏卫视 +http://z.b.bkpcp.top/m.php?id=xzws +#EXTINF:-1 tvg-name="西藏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/西藏卫视.png" group-title="📡卫视频道",西藏卫视 +http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225723/2/index.m3u8 +#EXTINF:-1 tvg-name="西藏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/西藏卫视.png" group-title="📡卫视频道",西藏卫视 +http://[2409:8087:5e01:34::23]:6610/ZTE_CMS/00000001000000060000000000000317/index.m3u8?IAS +#EXTINF:-1 tvg-name="西藏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/西藏卫视.png" group-title="📡卫视频道",西藏卫视 +http://[2409:8087:1e03:21::2]:6060/cms001/ch00000090990000001072/index.m3u8 +#EXTINF:-1 tvg-name="西藏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/西藏卫视.png" group-title="📡卫视频道",西藏卫视 +http://[2409:8087:3428:20:500::100f]:6610/PLTV/88888888/224/3221226847/index.m3u8?servicetype=1&IASHttpSessionId=RR423820220409134714119178 +#EXTINF:-1 tvg-name="西藏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/西藏卫视.png" group-title="📡卫视频道",西藏卫视 +http://[2409:8087:3428:20:500::100f]:6610/PLTV/88888888/224/3221227217/index.m3u8?servicetype=1&IASHttpSessionId=RR423820220409134714119178 +#EXTINF:-1 tvg-name="西藏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/西藏卫视.png" group-title="📡卫视频道",西藏卫视 +http://[2409:8087:3428:20:500::1009]:6610/PLTV/88888888/224/3221226847/index.m3u8?servicetype=1&IASHttpSessionId=RR423820220409134714119178 +#EXTINF:-1 tvg-name="西藏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/西藏卫视.png" group-title="📡卫视频道",西藏卫视 +http://[2409:8087:3428:20:500::1009]:6610/PLTV/88888888/224/3221227217/index.m3u8?servicetype=1&IASHttpSessionId=RR423820220409134714119178 +#EXTINF:-1 tvg-name="西藏卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/西藏卫视.png" group-title="📡卫视频道",西藏卫视 +http://[2409:8087:5e00:24::1e]:6060/000000001000/6603041244077933770/1.m3u8 +#EXTINF:-1 tvg-name="新疆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/新疆卫视.png" group-title="📡卫视频道",新疆卫视 +http://z.b.bkpcp.top/m.php?id=xjws +#EXTINF:-1 tvg-name="新疆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/新疆卫视.png" group-title="📡卫视频道",新疆卫视 +http://j.x.bkpcp.top/jx/XJWS +#EXTINF:-1 tvg-name="新疆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/新疆卫视.png" group-title="📡卫视频道",新疆卫视 +http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225635/index.m3u8 +#EXTINF:-1 tvg-name="新疆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/新疆卫视.png" group-title="📡卫视频道",新疆卫视 +http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225725/2/index.m3u8 +#EXTINF:-1 tvg-name="新疆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/新疆卫视.png" group-title="📡卫视频道",新疆卫视 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221226460/index.m3u8 +#EXTINF:-1 tvg-name="新疆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/新疆卫视.png" group-title="📡卫视频道",新疆卫视 +http://[2409:8087:1a0b:df::4005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225635/index.m3u8 +#EXTINF:-1 tvg-name="新疆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/新疆卫视.png" group-title="📡卫视频道",新疆卫视 +http://[2409:8087:2001:20:2800:0:df6e:eb0b]/wh7f454c46tw993550557_162751766/ott.mobaibox.com/PLTV/3/224/3221228290/index.m3u8?icpid=3&RTS=1668604377&from=40&popid=40&hms_devid=2038&prioritypopid=40&vqe=3 +#EXTINF:-1 tvg-name="新疆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/新疆卫视.png" group-title="📡卫视频道",新疆卫视 +http://[2409:8087:1e03:21::2]:6060/cms001/ch00000090990000001065/index.m3u8 +#EXTINF:-1 tvg-name="新疆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/新疆卫视.png" group-title="📡卫视频道",新疆卫视 +http://[2409:8087:3428:20:500::100f]:6610/PLTV/88888888/224/3221227248/index.m3u8?servicetype=1&IASHttpSessionId=RR423820220409134714119178 +#EXTINF:-1 tvg-name="新疆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/新疆卫视.png" group-title="📡卫视频道",新疆卫视 +http://[2409:8087:3428:20:500::100f]:6610/PLTV/88888888/224/3221225852/index.m3u8?servicetype=1&IASHttpSessionId=RR423820220409134714119178 +#EXTINF:-1 tvg-name="云南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/云南卫视.png" group-title="📡卫视频道",云南卫视 +http://39.164.180.36:19901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=0&authid=0 +#EXTINF:-1 tvg-name="云南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/云南卫视.png" group-title="📡卫视频道",云南卫视 +http://123.160.232.254:9901/tsfile/live/0119_1.m3u8?key=txiptv&playlive=1&authid=0 +#EXTINF:-1 tvg-name="云南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/云南卫视.png" group-title="📡卫视频道",云南卫视 +http://qjrhc.jydjd.top:2911/udp/224.1.100.21:11111 +#EXTINF:-1 tvg-name="云南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/云南卫视.png" group-title="📡卫视频道",云南卫视 +http://b.zgjok.com:35455/nptv/yunnan.m3u8 +#EXTINF:-1 tvg-name="云南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/云南卫视.png" group-title="📡卫视频道",云南卫视 +http://z.b.bkpcp.top/m.php?id=ynws +#EXTINF:-1 tvg-name="云南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/云南卫视.png" group-title="📡卫视频道",云南卫视 +http://[2409:8087:74f0:22::7]:6410/270000001128/9900000035/index.m3u8 +#EXTINF:-1 tvg-name="云南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/云南卫视.png" group-title="📡卫视频道",云南卫视 +http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226444/index.m3u8 +#EXTINF:-1 tvg-name="云南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/云南卫视.png" group-title="📡卫视频道",云南卫视 +http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010119/1.m3u8 +#EXTINF:-1 tvg-name="云南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/云南卫视.png" group-title="📡卫视频道",云南卫视 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221226444/index.m3u8 +#EXTINF:-1 tvg-name="云南卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/云南卫视.png" group-title="📡卫视频道",云南卫视 +http://[2409:8087:5e01:34::22]:6610/ZTE_CMS/00000001000000060000000000000305/index.m3u8?IAS +#EXTINF:-1 tvg-name="广东珠江" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/广东珠江.png" group-title="☘️广东频道",广东珠江 +http://cdn2.163189.xyz/live/gdzj/stream.m3u8 +#EXTINF:-1 tvg-name="广东珠江" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/广东珠江.png" group-title="☘️广东频道",广东珠江 +http://cdn2.132.us.kg/live/gdzj/stream.m3u8 +#EXTINF:-1 tvg-name="广东珠江" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/广东珠江.png" group-title="☘️广东频道",广东珠江 +http://lu.wqwqwq.sbs/itv/2000000003000000033.m3u8?cdn=hnbblive +#EXTINF:-1 tvg-name="广东珠江" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/广东珠江.png" group-title="☘️广东频道",广东珠江 +https://smart.pendy.dpdns.org/Smart.php +#EXTINF:-1 tvg-name="广东珠江" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/广东珠江.png" group-title="☘️广东频道",广东珠江 +https://tv.cdn.com.mp/live/gdzj/stream.m3u8 +#EXTINF:-1 tvg-name="广东体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/广东体育.png" group-title="☘️广东频道",广东体育 +http://cdn2.163189.xyz/live/gdty/stream.m3u8 +#EXTINF:-1 tvg-name="广东体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/广东体育.png" group-title="☘️广东频道",广东体育 +http://cdn2.132.us.kg/live/gdty/stream.m3u8 +#EXTINF:-1 tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/广东卫视.png" group-title="☘️广东频道",广东卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226961/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7E2MGyx659D_aaDPP0qt3NgA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/广东卫视.png" group-title="☘️广东频道",广东卫视 +http://z.b.bkpcp.top/m.php?id=gdws +#EXTINF:-1 tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/广东卫视.png" group-title="☘️广东频道",广东卫视 +http://j.x.bkpcp.top/jx/GUANGDHD +#EXTINF:-1 tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/广东卫视.png" group-title="☘️广东频道",广东卫视 +http://[2409:8087:74f0:22::6]:6410/270000001128/9900000520/index.m3u8 +#EXTINF:-1 tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/广东卫视.png" group-title="☘️广东频道",广东卫视 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226248/index.m3u8 +#EXTINF:-1 tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/广东卫视.png" group-title="☘️广东频道",广东卫视 +http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226248/index.m3u8 +#EXTINF:-1 tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/广东卫视.png" group-title="☘️广东频道",广东卫视 +http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010055/1.m3u8 +#EXTINF:-1 tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/广东卫视.png" group-title="☘️广东频道",广东卫视 +http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225742/2/index.m3u8 +#EXTINF:-1 tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/广东卫视.png" group-title="☘️广东频道",广东卫视 +http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888910/224/3221225701/index.m3u8 +#EXTINF:-1 tvg-name="广东卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/广东卫视.png" group-title="☘️广东频道",广东卫视 +http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226248/index.m3u8 +#EXTINF:-1 tvg-name="大湾区卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/大湾区卫视.png" group-title="☘️广东频道",大湾区卫视 +http://z.b.bkpcp.top/m.php?id=dwqws +#EXTINF:-1 tvg-name="大湾区卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/大湾区卫视.png" group-title="☘️广东频道",大湾区卫视 +http://jp1.jdiptv.cc/live/nfws.m3u8?kdstime= +#EXTINF:-1 tvg-name="大湾区卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/大湾区卫视.png" group-title="☘️广东频道",大湾区卫视 +http://[2409:8087:5e00:24::1e]:6060/000000001000/1000000002000011619/index.m3u8 +#EXTINF:-1 tvg-name="大湾区卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/大湾区卫视.png" group-title="☘️广东频道",大湾区卫视 +http://ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226442/index.m3u8 +#EXTINF:-1 tvg-name="大湾区卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/大湾区卫视.png" group-title="☘️广东频道",大湾区卫视 +http://dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226218/index.m3u8 +#EXTINF:-1 tvg-name="大湾区卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/大湾区卫视.png" group-title="☘️广东频道",大湾区卫视 +http://alvin.ergotron.net:8000/udp/239.77.0.215:5146 +#EXTINF:-1 tvg-name="大湾区卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/大湾区卫视.png" group-title="☘️广东频道",大湾区卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226540/1.m3u8 +#EXTINF:-1 tvg-name="广州综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/广州综合.png" group-title="☘️广东频道",广州综合 +http://php.666230.xyz/公众号【睡眼迷离的猫】/proxy/p10.php +#EXTINF:-1 tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/深圳卫视.png" group-title="☘️广东频道",深圳卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226959/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EGrVNEZREjuNVKiTJo2mtwg%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/深圳卫视.png" group-title="☘️广东频道",深圳卫视 +http://[2409:8087:74f0:22::5]:6410/270000001128/9900000529/index.m3u8 +#EXTINF:-1 tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/深圳卫视.png" group-title="☘️广东频道",深圳卫视 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226313/index.m3u8 +#EXTINF:-1 tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/深圳卫视.png" group-title="☘️广东频道",深圳卫视 +http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226313/index.m3u8 +#EXTINF:-1 tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/深圳卫视.png" group-title="☘️广东频道",深圳卫视 +http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010068/1.m3u8 +#EXTINF:-1 tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/深圳卫视.png" group-title="☘️广东频道",深圳卫视 +http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/yinhe/88888888/224/3221226313/index.m3u8 +#EXTINF:-1 tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/深圳卫视.png" group-title="☘️广东频道",深圳卫视 +http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226313/index.m3u8 +#EXTINF:-1 tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/深圳卫视.png" group-title="☘️广东频道",深圳卫视 +http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221226313/index.m3u8 +#EXTINF:-1 tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/深圳卫视.png" group-title="☘️广东频道",深圳卫视 +http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225598/2/index.m3u8 +#EXTINF:-1 tvg-name="深圳卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/深圳卫视.png" group-title="☘️广东频道",深圳卫视 +http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225700/2/index.m3u8 +#EXTINF:-1 tvg-name="浙江钱江" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江钱江.png" group-title="☘️浙江频道",浙江钱江 +http://ali-m-l.cztv.com/channels/lantian/channel02/1080p.m3u8 +#EXTINF:-1 tvg-name="浙江钱江" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江钱江.png" group-title="☘️浙江频道",浙江钱江 +http://ali-m-l.cztv.com/channels/lantian/channel002/1080p.m3u8 +#EXTINF:-1 tvg-name="浙江钱江" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江钱江.png" group-title="☘️浙江频道",浙江钱江 +http://ali-m-l.cztv.com/channels/lantian/channel002/1080p.m3u8?zzhed +#EXTINF:-1 tvg-name="浙江钱江" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江钱江.png" group-title="☘️浙江频道",浙江钱江 +http://ali-m-l.cztv.com/channels/lantian/channel002/1080p.m3u8?fbl= +#EXTINF:-1 tvg-name="浙江钱江" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江钱江.png" group-title="☘️浙江频道",浙江钱江 +https://ali-m-l.cztv.com/channels/lantian/channel002/1080p.m3u8 +#EXTINF:-1 tvg-name="浙江钱江" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江钱江.png" group-title="☘️浙江频道",浙江钱江 +http://l.cztvcloud.com/channels/lantian/SXyuyao2/720p.m3u8 +#EXTINF:-1 tvg-name="浙江钱江" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江钱江.png" group-title="☘️浙江频道",浙江钱江 +http://ali-m-l.cztv.com/channels/lantian/channel002/720p.m3u8 +#EXTINF:-1 tvg-name="浙江钱江都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江钱江都市.png" group-title="☘️浙江频道",浙江钱江都市 +https://ali-m-l.cztv.com/channels/lantian/channel002/1080p.m3u8 +#EXTINF:-1 tvg-name="浙江钱江都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江钱江都市.png" group-title="☘️浙江频道",浙江钱江都市 +http://zwebl02.cztv.com/live/channel021080P.m3u8?auth_key=2524708799-0-0-43f14b8147c890428975655007afb4cc +#EXTINF:-1 tvg-name="浙江生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江生活.png" group-title="☘️浙江频道",浙江生活 +https://ali-m-l.cztv.com/channels/lantian/channel003/1080p.m3u8 +#EXTINF:-1 tvg-name="浙江经济生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江经济生活.png" group-title="☘️浙江频道",浙江经济生活 +https://ali-m-l.cztv.com/channels/lantian/channel003/1080p.m3u8 +#EXTINF:-1 tvg-name="浙江经济生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江经济生活.png" group-title="☘️浙江频道",浙江经济生活 +http://ali-m-l.cztv.com/channels/lantian/channel03/1080p.m3u8 +#EXTINF:-1 tvg-name="浙江经济生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江经济生活.png" group-title="☘️浙江频道",浙江经济生活 +http://l.cztvcloud.com/channels/lantian/SXxiaoshan2/720p.m3u8 +#EXTINF:-1 tvg-name="浙江经济生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江经济生活.png" group-title="☘️浙江频道",浙江经济生活 +http://zwebl02.cztv.com/live/channel031080P.m3u8?auth_key=2524708799-0-0-cc09266f8e043a6df28eb148cb488d37 +#EXTINF:-1 tvg-name="浙江教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江教育.png" group-title="☘️浙江频道",浙江教育 +https://ali-m-l.cztv.com/channels/lantian/channel004/1080p.m3u8 +#EXTINF:-1 tvg-name="浙江教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江教育.png" group-title="☘️浙江频道",浙江教育 +http://ali-m-l.cztv.com/channels/lantian/channel04/720p.m3u8 +#EXTINF:-1 tvg-name="浙江民生" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江民生.png" group-title="☘️浙江频道",浙江民生 +https://ali-m-l.cztv.com/channels/lantian/channel006/1080p.m3u8 +#EXTINF:-1 tvg-name="浙江民生" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江民生.png" group-title="☘️浙江频道",浙江民生 +http://ali-m-l.cztv.com/channels/lantian/channel06/720p.m3u8 +#EXTINF:-1 tvg-name="浙江新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江新闻.png" group-title="☘️浙江频道",浙江新闻 +http://ali-m-l.cztv.com/channels/lantian/channel007/1080p.m3u8?zzhed +#EXTINF:-1 tvg-name="浙江新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江新闻.png" group-title="☘️浙江频道",浙江新闻 +http://ali-m-l.cztv.com/channels/lantian/channel007/720p.m3u8 +#EXTINF:-1 tvg-name="浙江新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江新闻.png" group-title="☘️浙江频道",浙江新闻 +http://ali-m-l.cztv.com/channels/lantian/channel07/720p.m3u8 +#EXTINF:-1 tvg-name="浙江新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江新闻.png" group-title="☘️浙江频道",浙江新闻 +https://ali-m-l.cztv.com/channels/lantian/channel07/720p.m3u8 +#EXTINF:-1 tvg-name="浙江新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江新闻.png" group-title="☘️浙江频道",浙江新闻 +http://zwebl02.cztv.com/live/channel071080P.m3u8?auth_key=2524708799-0-0-e3b50ca59d2c0883d5386d8bc4cdefbc +#EXTINF:-1 tvg-name="浙江少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江少儿.png" group-title="☘️浙江频道",浙江少儿 +https://ali-m-l.cztv.com/channels/lantian/channel008/1080p.m3u8 +#EXTINF:-1 tvg-name="浙江少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江少儿.png" group-title="☘️浙江频道",浙江少儿 +http://ali-m-l.cztv.com/channels/lantian/channel008/1080p.m3u8 +#EXTINF:-1 tvg-name="浙江少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江少儿.png" group-title="☘️浙江频道",浙江少儿 +http://ali-m-l.cztv.com/channels/lantian/channel008/1080p.m3u8?fbl= +#EXTINF:-1 tvg-name="浙江少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江少儿.png" group-title="☘️浙江频道",浙江少儿 +https://ali-m-l.cztv.com/channels/lantian/channel008/1080p.m3u8?#https://ali-m-l.cztv.com/channels/lantian/channel008/1080p.m3u8#http://ali-m-l.cztv.com/channels/lantian/channel008/1080p.m3u8 +#EXTINF:-1 tvg-name="浙江教科" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江教科.png" group-title="☘️浙江频道",浙江教科 +http://ali-m-l.cztv.com/channels/lantian/channel004/1080p.m3u8 +#EXTINF:-1 tvg-name="浙江经济" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江经济.png" group-title="☘️浙江频道",浙江经济 +http://ali-m-l.cztv.com/channels/lantian/channel03/720p.m3u8 +#EXTINF:-1 tvg-name="浙江经济" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江经济.png" group-title="☘️浙江频道",浙江经济 +http://zwebl02.cztv.com/live/channel031080P.m3u8?auth_key=2524708799-0-0-cc09266f8e043a6df28eb148cb488d37 +#EXTINF:-1 tvg-name="之江纪录" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/之江纪录.png" group-title="☘️浙江频道",之江纪录 +http://ali-m-l.cztv.com/channels/lantian/channel12/1080p.m3u8 +#EXTINF:-1 tvg-name="之江纪录" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/之江纪录.png" group-title="☘️浙江频道",之江纪录 +https://ali-m-l.cztv.com/channels/lantian/channel12/720p.m3u8 +#EXTINF:-1 tvg-name="之江纪录" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/之江纪录.png" group-title="☘️浙江频道",之江纪录 +http://ali-m-l.cztv.com/channels/lantian/channel012/1080p.m3u8 +#EXTINF:-1 tvg-name="之江纪录" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/之江纪录.png" group-title="☘️浙江频道",之江纪录 +https://ali-m-l.cztv.com/channels/lantian/channel012/1080p.m3u8 +#EXTINF:-1 tvg-name="之江纪录" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/之江纪录.png" group-title="☘️浙江频道",之江纪录 +http://zwebl02.cztv.com/live/channel121080P.m3u8?auth_key=2524708799-0-0-c33efdd495bcdd2ddc42e7c408405037 +#EXTINF:-1 tvg-name="浙江国际" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江国际.png" group-title="☘️浙江频道",浙江国际 +https://ali-m-l.cztv.com/channels/lantian/channel010/1080p.m3u8 +#EXTINF:-1 tvg-name="浙江国际" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江国际.png" group-title="☘️浙江频道",浙江国际 +http://ali-m-l.cztv.com/channels/lantian/channel010/1080p.m3u8?zzhed +#EXTINF:-1 tvg-name="浙江国际" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江国际.png" group-title="☘️浙江频道",浙江国际 +http://ali-m-l.cztv.com/channels/lantian/channel010/720p.m3u8 +#EXTINF:-1 tvg-name="浙江国际" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江国际.png" group-title="☘️浙江频道",浙江国际 +http://zwebl02.cztv.com/live/channel101080P.m3u8?auth_key=2524708799-0-0-c9473fea1da3eff0f29f4c9cf2b36519 +#EXTINF:-1 tvg-name="嘉兴新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/嘉兴新闻综合.png" group-title="☘️浙江频道",嘉兴新闻综合 +http://tvfile.jyrmt.cn:80/nmip-media/channellive/channel104452/playlist.m3u8 +#EXTINF:-1 tvg-name="嘉兴新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/嘉兴新闻综合.png" group-title="☘️浙江频道",嘉兴新闻综合 +http://live.zohi.tv/video/s10001-fztv-1/index.m3u8 +#EXTINF:-1 tvg-name="嘉兴公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/嘉兴公共.png" group-title="☘️浙江频道",嘉兴公共 +http://play-sh13.quklive.com/live/1675149601192103.m3u8?auth_key=2028730429-9ab7f7f0267946e880ec46ce3d57ec9e-0-eb04d7f7e549054293604b04150cefa1 +#EXTINF:-1 tvg-name="舟山新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/舟山新闻综合.png" group-title="☘️浙江频道",舟山新闻综合 +http://play-sh13.quklive.com/live/1699001836208185.m3u8?auth_key=2027429324-c77bb6a7063c4cdea57f09ca22f9ef12-0-39c19a21f73b823db2150ea45b147eb2 +#EXTINF:-1 tvg-name="舟山公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/舟山公共.png" group-title="☘️浙江频道",舟山公共 +http://play-sh13.quklive.com/live/1699002430299200.m3u8?auth_key=2027429366-f4515e585a0347f780a01c73ae293945-0-b3699e931cf04290680745e989c63d86 +#EXTINF:-1 tvg-name="浙江民生休闲" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江民生休闲.png" group-title="☘️浙江频道",浙江民生休闲 +https://ali-m-l.cztv.com/channels/lantian/channel006/1080p.m3u8 +#EXTINF:-1 tvg-name="浙江民生休闲" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江民生休闲.png" group-title="☘️浙江频道",浙江民生休闲 +http://ali-m-l.cztv.com/channels/lantian/channel06/1080p.m3u8 +#EXTINF:-1 tvg-name="浙江数码时代" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江数码时代.png" group-title="☘️浙江频道",浙江数码时代 +http://ali-m-l.cztv.com/channels/lantian/channel12/720p.m3u8?zzhed +#EXTINF:-1 tvg-name="浙江数码时代" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江数码时代.png" group-title="☘️浙江频道",浙江数码时代 +https://ali-m-l.cztv.com/channels/lantian/channel012/1080p.m3u8\r\n +#EXTINF:-1 tvg-name="浙江教科影院" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江教科影院.png" group-title="☘️浙江频道",浙江教科影院 +http://ali-m-l.cztv.com/channels/lantian/channel004/1080p.m3u8?zzhed +#EXTINF:-1 tvg-name="浙江教科影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江教科影视.png" group-title="☘️浙江频道",浙江教科影视 +https://ali-m-l.cztv.com/channels/lantian/channel004/1080p.m3u8 +#EXTINF:-1 tvg-name="浙江教科影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江教科影视.png" group-title="☘️浙江频道",浙江教科影视 +http://ali-m-l.cztv.com/channels/lantian/channel04/1080p.m3u8 +#EXTINF:-1 tvg-name="浙江教科影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江教科影视.png" group-title="☘️浙江频道",浙江教科影视 +http://zwebl02.cztv.com/live/channel041080P.m3u8?auth_key=2524708799-0-0-f195b808217db133bfd648edc01e91fa +#EXTINF:-1 tvg-name="浙江公共新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江公共新闻.png" group-title="☘️浙江频道",浙江公共新闻 +http://ali-m-l.cztv.com/channels/lantian/channel07/1080p.m3u8 +#EXTINF:-1 tvg-name="浙江休闲台" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江休闲台.png" group-title="☘️浙江频道",浙江休闲台 +http://ali-m-l.cztv.com/channels/lantian/channel006/720p.m3u8 +#EXTINF:-1 tvg-name="诸暨新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/诸暨新闻综合.png" group-title="☘️浙江频道",诸暨新闻综合 +http://l.cztvcloud.com/channels/lantian/SXzhuji3/720p.m3u8 +#EXTINF:-1 tvg-name="诸暨新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/诸暨新闻综合.png" group-title="☘️浙江频道",诸暨新闻综合 +http://l.cztvcloud.com/channels/lantian/SXzhuji3/720p.m3u8?zzhed +#EXTINF:-1 tvg-name="诸暨新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/诸暨新闻综合.png" group-title="☘️浙江频道",诸暨新闻综合 +http://l.cztvcloud.com/channels/lantian/SXzhuji3/720p.m3u8?zzhed#EXTINF:-1%20group-title=%22%E2%80%A2%E9%9F%B3%E4%B9%90%22,%E9%9F%B3%E4%B9%90%E7%9F%B3%E6%A6%B4 +#EXTINF:-1 tvg-name="诸暨新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/诸暨新闻综合.png" group-title="☘️浙江频道",诸暨新闻综合 +https://l.cztvcloud.com/channels/lantian/SXzhuji3/720p.m3u8 +#EXTINF:-1 tvg-name="龙游生活娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/龙游生活娱乐.png" group-title="☘️浙江频道",龙游生活娱乐 +http://l.cztvcloud.com/channels/lantian/SXlongyou2/720p.m3u8 +#EXTINF:-1 tvg-name="龙游生活娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/龙游生活娱乐.png" group-title="☘️浙江频道",龙游生活娱乐 +https://l.cztvcloud.com/channels/lantian/SXlongyou2/720p.m3u8 +#EXTINF:-1 tvg-name="龙游新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/龙游新闻综合.png" group-title="☘️浙江频道",龙游新闻综合 +https://l.cztvcloud.com/channels/lantian/SXlongyou1/720p.m3u8 +#EXTINF:-1 tvg-name="龙游新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/龙游新闻综合.png" group-title="☘️浙江频道",龙游新闻综合 +http://l.cztvcloud.com/channels/lantian/SXlongyou1/720p.m3u8 +#EXTINF:-1 tvg-name="龙游新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/龙游新闻综合.png" group-title="☘️浙江频道",龙游新闻综合 +http://play-sh13.quklive.com/live/1703570877483349.m3u8?auth_key=2028414694-515206b2ec504fa3bc90bb1ec3b0c48e-0-eeeeb3d5a8f8e5415142bf430b916d79 +#EXTINF:-1 tvg-name="龙泉新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/龙泉新闻综合.png" group-title="☘️浙江频道",龙泉新闻综合 +http://l.cztvcloud.com/channels/lantian/SXlongquan1/720p.m3u8?zzhed" +#EXTINF:-1 tvg-name="龙泉新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/龙泉新闻综合.png" group-title="☘️浙江频道",龙泉新闻综合 +http://l.cztvcloud.com/channels/lantian/SXlongquan1/720p.m3u8 +#EXTINF:-1 tvg-name="象山综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/象山综合.png" group-title="☘️浙江频道",象山综合 +http://l.cztvcloud.com/channels/lantian/SXxiangshan1/720p.m3u8?zzhed +#EXTINF:-1 tvg-name="象山电视台新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/象山电视台新闻综合.png" group-title="☘️浙江频道",象山电视台新闻综合 +http://play-sh13.quklive.com/live/1702360350551252.m3u8?auth_key=2037107484-800189c57a5a44d3b823b60cf84f6756-0-a6f6828a62d5c167cff5e68735fa0d39 +#EXTINF:-1 tvg-name="象山新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/象山新闻综合.png" group-title="☘️浙江频道",象山新闻综合 +http://l.cztvcloud.com/channels/lantian/SXxiangshan1/720p.m3u8 +#EXTINF:-1 tvg-name="衢江新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/衢江新闻综合.png" group-title="☘️浙江频道",衢江新闻综合 +http://l.cztvcloud.com/channels/lantian/SXqujiang1/720p.m3u8?zzhed +#EXTINF:-1 tvg-name="衢江新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/衢江新闻综合.png" group-title="☘️浙江频道",衢江新闻综合 +http://l.cztvcloud.com/channels/lantian/SXqujiang1/720p.m3u8?zzhed;http://l.cztvcloud.com/channels/lantian/SXqujiang1/720p.m3u8zzhed;http://l.cztvcloud.com/channels/lantian/SXqujiang1/720p.m3u8 +#EXTINF:-1 tvg-name="萧山生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/萧山生活.png" group-title="☘️浙江频道",萧山生活 +http://l.cztvcloud.com/channels/lantian/SXxiaoshan2/720p.m3u8?zzhed +#EXTINF:-1 tvg-name="萧山生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/萧山生活.png" group-title="☘️浙江频道",萧山生活 +https://l.cztvcloud.com/channels/lantian/SXxiaoshan2/720p.m3u8 +#EXTINF:-1 tvg-name="萧山新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/萧山新闻综合.png" group-title="☘️浙江频道",萧山新闻综合 +http://l.cztvcloud.com/channels/lantian/SXxiaoshan1/720p.m3u8?zzhed +#EXTINF:-1 tvg-name="萧山新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/萧山新闻综合.png" group-title="☘️浙江频道",萧山新闻综合 +http://l.cztvcloud.com/channels/lantian/SXxiaoshan1/720p.m3u8 +#EXTINF:-1 tvg-name="萧山新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/萧山新闻综合.png" group-title="☘️浙江频道",萧山新闻综合 +https://l.cztvcloud.com/channels/lantian/SXxiaoshan1/720p.m3u8 +#EXTINF:-1 tvg-name="苍南新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/苍南新闻综合.png" group-title="☘️浙江频道",苍南新闻综合 +https://l.cztvcloud.com/channels/lantian/SXcangnan1/720p.m3u8 +#EXTINF:-1 tvg-name="苍南新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/苍南新闻综合.png" group-title="☘️浙江频道",苍南新闻综合 +http://l.cztvcloud.com/channels/lantian/SXcangnan1/720p.m3u8?zzhed;http://l.cztvcloud.com/channels/lantian/SXcangnan1/720p.m3u8;http://l.cztvcloud.com/channels/lantian/SXcangnan1/720p.m3u8zzhed +#EXTINF:-1 tvg-name="苍南新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/苍南新闻综合.png" group-title="☘️浙江频道",苍南新闻综合 +http://l.cztvcloud.com/channels/lantian/SXcangnan1/720p.m3u8 +#EXTINF:-1 tvg-name="缙云综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/缙云综合.png" group-title="☘️浙江频道",缙云综合 +http://l.cztvcloud.com/channels/lantian/SXjinyun1/720p.m3u8?zzhed +#EXTINF:-1 tvg-name="缙云综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/缙云综合.png" group-title="☘️浙江频道",缙云综合 +http://l.cztvcloud.com/channels/lantian/SXjinyun1/720p.m3u8?zzhed" +#EXTINF:-1 tvg-name="缙云新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/缙云新闻综合.png" group-title="☘️浙江频道",缙云新闻综合 +http://l.cztvcloud.com/channels/lantian/SXjinyun1/720p.m3u8 +#EXTINF:-1 tvg-name="海宁新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/海宁新闻综合.png" group-title="☘️浙江频道",海宁新闻综合 +https://p2hs.vzan.com/slowlive/317913155078575177/live.m3u8?zbid=293304&tpid=1708007815 +#EXTINF:-1 tvg-name="永嘉新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/永嘉新闻综合.png" group-title="☘️浙江频道",永嘉新闻综合 +http://l.cztvcloud.com/channels/lantian/SXyongjia1/720p.m3u8?zzhed" +#EXTINF:-1 tvg-name="永嘉新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/永嘉新闻综合.png" group-title="☘️浙江频道",永嘉新闻综合 +http://l.cztvcloud.com/channels/lantian/SXyongjia1/720p.m3u8 +#EXTINF:-1 tvg-name="永嘉新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/永嘉新闻综合.png" group-title="☘️浙江频道",永嘉新闻综合 +http://l.cztvcloud.com/channels/lantian/SXyongjia1/720p.m3u8?zzhed +#EXTINF:-1 tvg-name="松阳综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/松阳综合.png" group-title="☘️浙江频道",松阳综合 +http://l.cztvcloud.com/channels/lantian/SXsongyang1/720p.m3u8 +#EXTINF:-1 tvg-name="松阳综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/松阳综合.png" group-title="☘️浙江频道",松阳综合 +http://l.cztvcloud.com/channels/lantian/SXsongyang1/720p.m3u8?zzhed;http://l.cztvcloud.com/channels/lantian/SXsongyang1/720p.m3u8zzhed +#EXTINF:-1 tvg-name="松阳综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/松阳综合.png" group-title="☘️浙江频道",松阳综合 +http://l.cztvcloud.com/channels/lantian/SXsongyang1/720p.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 tvg-name="松阳新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/松阳新闻综合.png" group-title="☘️浙江频道",松阳新闻综合 +http://l.cztvcloud.com/channels/lantian/SXsongyang1/720p.m3u8?fbl= +#EXTINF:-1 tvg-name="普陀电视台" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/普陀电视台.png" group-title="☘️浙江频道",普陀电视台 +http://l.cztvcloud.com/channels/lantian/SXputuo1/720p.m3u8?zzhed#http://l.cztvcloud.com/channels/lantian/SXputuo1/720p.m3u8 +#EXTINF:-1 tvg-name="普陀电视台" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/普陀电视台.png" group-title="☘️浙江频道",普陀电视台 +https://l.cztvcloud.com/channels/lantian/SXputuo1/720p.m3u8 +#EXTINF:-1 tvg-name="普陀新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/普陀新闻综合.png" group-title="☘️浙江频道",普陀新闻综合 +http://l.cztvcloud.com/channels/lantian/SXputuo1/720p.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 tvg-name="普陀新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/普陀新闻综合.png" group-title="☘️浙江频道",普陀新闻综合 +http://l.cztvcloud.com/channels/lantian/SXputuo1/720p.m3u8 +#EXTINF:-1 tvg-name="新昌新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/新昌新闻综合.png" group-title="☘️浙江频道",新昌新闻综合 +http://l.cztvcloud.com/channels/lantian/SXxinchang1/720p.m3u8 +#EXTINF:-1 tvg-name="新昌新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/新昌新闻综合.png" group-title="☘️浙江频道",新昌新闻综合 +https://l.cztvcloud.com/channels/lantian/SXxinchang1/720p.m3u8 +#EXTINF:-1 tvg-name="文成综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/文成综合.png" group-title="☘️浙江频道",文成综合 +http://l.cztvcloud.com/channels/lantian/SXwencheng1/720p.m3u8?zzhed +#EXTINF:-1 tvg-name="文成新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/文成新闻综合.png" group-title="☘️浙江频道",文成新闻综合 +http://l.cztvcloud.com/channels/lantian/SXwencheng1/720p.m3u8 +#EXTINF:-1 tvg-name="开化新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/开化新闻综合.png" group-title="☘️浙江频道",开化新闻综合 +http://l.cztvcloud.com/channels/lantian/SXkaihua1/720p.m3u8 +#EXTINF:-1 tvg-name="开化新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/开化新闻综合.png" group-title="☘️浙江频道",开化新闻综合 +http://l.cztvcloud.com/channels/lantian/SXkaihua1/720p.m3u8?zzhed +#EXTINF:-1 tvg-name="开化国家公园" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/开化国家公园.png" group-title="☘️浙江频道",开化国家公园 +http://l.cztvcloud.com/channels/lantian/SXkaihua2/720p.m3u8zzhed +#EXTINF:-1 tvg-name="开化国家公园" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/开化国家公园.png" group-title="☘️浙江频道",开化国家公园 +http://l.cztvcloud.com/channels/lantian/SXkaihua2/720p.m3u8 +#EXTINF:-1 tvg-name="庆元综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/庆元综合.png" group-title="☘️浙江频道",庆元综合 +http://l.cztvcloud.com/channels/lantian/SXqingyuan1/720p.m3u8?fbl= +#EXTINF:-1 tvg-name="庆元综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/庆元综合.png" group-title="☘️浙江频道",庆元综合 +http://l.cztvcloud.com/channels/lantian/SXqingyuan1/720p.m3u8 +#EXTINF:-1 tvg-name="庆元综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/庆元综合.png" group-title="☘️浙江频道",庆元综合 +http://l.cztvcloud.com/channels/lantian/SXqingyuan1/720p.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 tvg-name="庆元综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/庆元综合.png" group-title="☘️浙江频道",庆元综合 +http://l.cztvcloud.com/channels/lantian/SXqingyuan1/720p.m3u8?zzhed[浙江]洞头综合频道 +#EXTINF:-1 tvg-name="平湖新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/平湖新闻综合.png" group-title="☘️浙江频道",平湖新闻综合 +http://play-sh13.quklive.com/live/1690167908295069.m3u8?auth_key=2027466211-f190eec410c24473825cbe1d8541e545-0-f21db57ae1b534802c1cf7be86cc3aef +#EXTINF:-1 tvg-name="平湖新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/平湖新闻综合.png" group-title="☘️浙江频道",平湖新闻综合 +http://l.cztvcloud.com/channels/lantian/SXpinghu1/720p.m3u8 +#EXTINF:-1 tvg-name="平湖新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/平湖新闻综合.png" group-title="☘️浙江频道",平湖新闻综合 +http://l.cztvcloud.com/channels/lantian/SXpinghu1/720p.m3u8?cWlkPSZzPTg3OWMwYmMyZDMzYTFhZGY3NDQxMjgyYTg1MmUzNTY0JmVzPTE3MDY2Nzc4NzMmdXVpZD0yMjdiY2MzNGNiNGY0MThlYjRiY2IxYzcwNmZjODNkMS02NzQ3NDY2NyZ2PTImYXM9MCZjZG5leF9pZD10eF9waG9uZV9saXZl +#EXTINF:-1 tvg-name="平湖新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/平湖新闻综合.png" group-title="☘️浙江频道",平湖新闻综合 +http://l.cztvcloud.com/channels/lantian/SXpinghu1/720p.m3u8?zzhed +#EXTINF:-1 tvg-name="嵊泗综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/嵊泗综合.png" group-title="☘️浙江频道",嵊泗综合 +http://l.cztvcloud.com/channels/lantian/SXshengzhou1/720p.m3u8?zzhed +#EXTINF:-1 tvg-name="嵊州新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/嵊州新闻综合.png" group-title="☘️浙江频道",嵊州新闻综合 +http://l.cztvcloud.com/channels/lantian/SXshengzhou1/720p.m3u8?zzhed#http://l.cztvcloud.com/channels/lantian/SXshengzhou1/720p.m3u8 +#EXTINF:-1 tvg-name="兰溪新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/兰溪新闻综合.png" group-title="☘️浙江频道",兰溪新闻综合 +http://l.cztvcloud.com/channels/lantian/SXlanxi1/720p.m3u8 +#EXTINF:-1 tvg-name="兰溪新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/兰溪新闻综合.png" group-title="☘️浙江频道",兰溪新闻综合 +http://l.cztvcloud.com/channels/lantian/SXlanxi1/720p.m3u8?zzhed +#EXTINF:-1 tvg-name="余杭综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/余杭综合.png" group-title="☘️浙江频道",余杭综合 +http://l.cztvcloud.com/channels/lantian/SXyuhang1/720p.m3u8 +#EXTINF:-1 tvg-name="余杭未来E" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/余杭未来E.png" group-title="☘️浙江频道",余杭未来E +http://l.cztvcloud.com/channels/lantian/SXyuhang3/720p.m3u8 +#EXTINF:-1 tvg-name="余杭未来E" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/余杭未来E.png" group-title="☘️浙江频道",余杭未来E +http://l.cztvcloud.com/channels/lantian/SXyuhang3/720p.m3u8?zzhed +#EXTINF:-1 tvg-name="余姚综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/余姚综合.png" group-title="☘️浙江频道",余姚综合 +http://l.cztvcloud.com/channels/lantian/SXyuyao1/720p.m3u8 +#EXTINF:-1 tvg-name="余姚综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/余姚综合.png" group-title="☘️浙江频道",余姚综合 +http://l.cztvcloud.com/channels/lantian/SXyuyao1/720p.m3u8?zzhed +#EXTINF:-1 tvg-name="余姚综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/余姚综合.png" group-title="☘️浙江频道",余姚综合 +http://l.cztvcloud.com/channels/lantian/SXyuyao1/720p.m3u8?cWlkPSZzPTg3OWMwYmMyZDMzYTFhZGY3NDQxMjgyYTg1MmUzNTY0JmVzPTE3MDY2Nzc4NzMmdXVpZD0yMjdiY2MzNGNiNGY0MThlYjRiY2IxYzcwNmZjODNkMS02NzQ3NDY2NyZ2PTImYXM9MCZjZG5leF9pZD10eF9waG9uZV9saXZl +#EXTINF:-1 tvg-name="余姚综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/余姚综合.png" group-title="☘️浙江频道",余姚综合 +https://l.cztvcloud.com/channels/lantian/SXyuyao1/720p.m3u8 +#EXTINF:-1 tvg-name="余姚姚江文化" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/余姚姚江文化.png" group-title="☘️浙江频道",余姚姚江文化 +https://l.cztvcloud.com/channels/lantian/SXyuyao2/720p.m3u8 +#EXTINF:-1 tvg-name="云和新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/云和新闻综合.png" group-title="☘️浙江频道",云和新闻综合 +http://l.cztvcloud.com/channels/lantian/SXyunhe1/720p.m3u8 +#EXTINF:-1 tvg-name="云和新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/云和新闻综合.png" group-title="☘️浙江频道",云和新闻综合 +http://l.cztvcloud.com/channels/lantian/SXyunhe1/720p.m3u8?zzhed +#EXTINF:-1 tvg-name="东阳影视生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/东阳影视生活.png" group-title="☘️浙江频道",东阳影视生活 +http://l.cztvcloud.com/channels/lantian/SXdongyang1/720p.m3u8 +#EXTINF:-1 tvg-name="上虞新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/上虞新闻综合.png" group-title="☘️浙江频道",上虞新闻综合 +http://l.cztvcloud.com/channels/lantian/SXshangyu1/720p.m3u8?zzhed +#EXTINF:-1 tvg-name="上虞新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/上虞新闻综合.png" group-title="☘️浙江频道",上虞新闻综合 +http://l.cztvcloud.com/channels/lantian/SXshangyu1/720p.m3u8 +#EXTINF:-1 tvg-name="上虞新商都" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/上虞新商都.png" group-title="☘️浙江频道",上虞新商都 +http://l.cztvcloud.com/channels/lantian/SXshangyu3/720p.m3u8 +#EXTINF:-1 tvg-name="上虞新商都" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/上虞新商都.png" group-title="☘️浙江频道",上虞新商都 +http://l.cztvcloud.com/channels/lantian/SXshangyu3/720p.m3u8?zzhed\r\n +#EXTINF:-1 tvg-name="上虞文化影院" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/上虞文化影院.png" group-title="☘️浙江频道",上虞文化影院 +http://l.cztvcloud.com/channels/lantian/SXshangyu2/720p.m3u8 +#EXTINF:-1 tvg-name="上虞文化影院" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/上虞文化影院.png" group-title="☘️浙江频道",上虞文化影院 +http://l.cztvcloud.com/channels/lantian/SXshangyu2/720p.m3u8?zzhed +#EXTINF:-1 tvg-name="北京新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/北京新闻.png" group-title="☘️北京频道",北京新闻 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226437/1.m3u8 +#EXTINF:-1 tvg-name="北京新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/北京新闻.png" group-title="☘️北京频道",北京新闻 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226512/1.m3u8 +#EXTINF:-1 tvg-name="北京新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/北京新闻.png" group-title="☘️北京频道",北京新闻 +http://dsj.motem.top:8880/bptv/10000100000000050000000003870780.m3u8 +#EXTINF:-1 tvg-name="北京新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/北京新闻.png" group-title="☘️北京频道",北京新闻 +http://iptv.huuc.edu.cn/hls/btv9hd.m3u8 +#EXTINF:-1 tvg-name="北京新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/北京新闻.png" group-title="☘️北京频道",北京新闻 +http://yc.myds.me:35455/bptv/10000100000000050000000003870780.m3u8 +#EXTINF:-1 tvg-name="北京新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/北京新闻.png" group-title="☘️北京频道",北京新闻 +http://[2409:8087:1:20:20::2a]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226437/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EncK5uEAdYwWMsf8WJWI1mQ%7E_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNO_LSIQh_h2P54Cz-MqgJqC%2CEND +#EXTINF:-1 tvg-name="北京生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/北京生活.png" group-title="☘️北京频道",北京生活 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226514/1.m3u8 +#EXTINF:-1 tvg-name="北京生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/北京生活.png" group-title="☘️北京频道",北京生活 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226561/1.m3u8 +#EXTINF:-1 tvg-name="北京生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/北京生活.png" group-title="☘️北京频道",北京生活 +http://[2409:8087:1:20:20::2a]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226514/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7Es-PVNcPJsjr_oBdcXGT40g%7E_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNMWvZ0r6eMXcXJOGrCpJiq1%2CEND +#EXTINF:-1 tvg-name="北京财经" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/北京财经.png" group-title="☘️北京频道",北京财经 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226516/1.m3u8 +#EXTINF:-1 tvg-name="北京财经" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/北京财经.png" group-title="☘️北京频道",北京财经 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226560/1.m3u8 +#EXTINF:-1 tvg-name="北京财经" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/北京财经.png" group-title="☘️北京频道",北京财经 +http://[2409:8087:1:20:20::2a]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226516/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7Eh9_SEkmWeMdS1TMnIILZgg%7E_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNPIiicEW7OIvk1s-X-PXHqO%2CEND +#EXTINF:-1 tvg-name="七彩戏剧" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/七彩戏剧.png" group-title="☘️上海频道",七彩戏剧 +http://z.b.bkpcp.top/m.php?id=qcxj +#EXTINF:-1 tvg-name="七彩戏剧" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/七彩戏剧.png" group-title="☘️上海频道",七彩戏剧 +http://[2409:8087:5e08:24::11]:6610/000000001000/2000000002000000010/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000010&IASHttpSessionId=OTT19019320240419154124000281 +#EXTINF:-1 tvg-name="上海外语" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/上海外语.png" group-title="☘️上海频道",上海外语 +http://z.b.bkpcp.top/m.php?id=shics +#EXTINF:-1 tvg-name="上海外语" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/上海外语.png" group-title="☘️上海频道",上海外语 +http://[2409:8087:5e08:24::11]:6610/000000001000/2000000002000000001/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000001&IASHttpSessionId=OTT19019320240419154124000281 +#EXTINF:-1 tvg-name="上海外语" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/上海外语.png" group-title="☘️上海频道",上海外语 +http://[2409:8087:5e00:24::029]:6610/000000001000/2000000002000000001/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000001&IASHttpSessionId=OTT19019320240419154124000281 +#EXTINF:-1 tvg-name="上海教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/上海教育.png" group-title="☘️上海频道",上海教育 +http://sh.tonytuya.xyz:4022/udp/239.45.0.13:5140 +#EXTINF:-1 tvg-name="上海新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/上海新闻综合.png" group-title="☘️上海频道",上海新闻综合 +http://z.b.bkpcp.top/m.php?id=shxwzh +#EXTINF:-1 tvg-name="上海都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/上海都市.png" group-title="☘️上海频道",上海都市 +http://yc.myds.me:35455/itv/5000000010000018926.m3u8?cdn=bestzb +#EXTINF:-1 tvg-name="上海都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/上海都市.png" group-title="☘️上海频道",上海都市 +http://[2409:8087:5e08:24::11]:6610/000000001000/2000000002000000012/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000012&IASHttpSessionId=OTT19019320240419154124000281 +#EXTINF:-1 tvg-name="东方影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/东方影视.png" group-title="☘️上海频道",东方影视 +http://z.b.bkpcp.top/m.php?id=shys +#EXTINF:-1 tvg-name="东方影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/东方影视.png" group-title="☘️上海频道",东方影视 +http://gat.bkpcp.top/ymg.php?id=shys +#EXTINF:-1 tvg-name="东方影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/东方影视.png" group-title="☘️上海频道",东方影视 +http://[2409:8087:5e08:24::11]:6610/000000001000/2000000002000000013/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000013&IASHttpSessionId=OTT19019320240419154124000281 +#EXTINF:-1 tvg-name="东方财经" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/东方财经.png" group-title="☘️上海频道",东方财经 +http://yc.myds.me:35455/itv/5000000007000010003.m3u8?cdn=bestzb +#EXTINF:-1 tvg-name="东方财经" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/东方财经.png" group-title="☘️上海频道",东方财经 +http://[2409:8087:5e08:24::11]:6610/000000001000/2000000002000000090/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000090&IASHttpSessionId=OTT19019320240419154124000281 +#EXTINF:-1 tvg-name="东方财经" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/东方财经.png" group-title="☘️上海频道",东方财经 +http://[2409:8087:5e00:24::2d]:6610/000000001000/1/5000000007000010003/index.m3u8?channel-id=bestzb&Contentid=5000000007000010003&livemode=1&stbId=3 +#EXTINF:-1 tvg-name="动漫秀场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/动漫秀场.png" group-title="☘️上海频道",动漫秀场 +http://180.165.29.204:4022/rtp/239.45.3.134:5140 +#EXTINF:-1 tvg-name="动漫秀场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/动漫秀场.png" group-title="☘️上海频道",动漫秀场 +http://[2409:8087:1e03:21::42]:6610/cms001/ch00000090990000001196/index.m3u8 +#EXTINF:-1 tvg-name="动漫秀场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/动漫秀场.png" group-title="☘️上海频道",动漫秀场 +http://[2409:8087:5e00:24::1e]:6060/000000001000/5000000011000031113/1.m3u8 +#EXTINF:-1 tvg-name="动漫秀场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/动漫秀场.png" group-title="☘️上海频道",动漫秀场 +http://[2409:8087:74d9:21::6]/000000001000PLTV/88888888/224/3221226197/index.m3u8 +#EXTINF:-1 tvg-name="哈哈炫动" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/哈哈炫动.png" group-title="☘️上海频道",哈哈炫动 +http://180.165.29.204:4022/rtp/239.45.1.55:5140 +#EXTINF:-1 tvg-name="哈哈炫动" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/哈哈炫动.png" group-title="☘️上海频道",哈哈炫动 +http://[2409:8087:1a0b:df::4001]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225657/index.m3u8 +#EXTINF:-1 tvg-name="哈哈炫动" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/哈哈炫动.png" group-title="☘️上海频道",哈哈炫动 +http://[2409:8087:1e03:21::42]:6610/cms001/ch00000090990000001232/index.m3u8 +#EXTINF:-1 tvg-name="哈哈炫动" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/哈哈炫动.png" group-title="☘️上海频道",哈哈炫动 +http://[2409:8087:1a0b:df::4001]:80/ottrrs.hl.chinamobile.com/TVOD/88888888/224/3221225657/index.m3u8 +#EXTINF:-1 tvg-name="哈哈炫动" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/哈哈炫动.png" group-title="☘️上海频道",哈哈炫动 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/2/224/3221225657/2.m3u8 +#EXTINF:-1 tvg-name="哈哈炫动" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/哈哈炫动.png" group-title="☘️上海频道",哈哈炫动 +http://[2409:8087:74d9:21::6]/000000001000PLTV/88888888/224/3221226618/index.m3u8 +#EXTINF:-1 tvg-name="哈哈炫动" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/哈哈炫动.png" group-title="☘️上海频道",哈哈炫动 +http://otttv.bj.chinamobile.com/PLTV/88888888/224/3221227025/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7E7RoPnbSvRPd3KyTpQ76WpA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="哈哈炫动" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/哈哈炫动.png" group-title="☘️上海频道",哈哈炫动 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226931/1.m3u8 +#EXTINF:-1 tvg-name="欢笑剧场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/欢笑剧场.png" group-title="☘️上海频道",欢笑剧场 +http://z.b.bkpcp.top/m.php?id=hxjc +#EXTINF:-1 tvg-name="欢笑剧场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/欢笑剧场.png" group-title="☘️上海频道",欢笑剧场 +http://gat.bkpcp.top/ymg.php?id=hxjc +#EXTINF:-1 tvg-name="法治天地" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/法治天地.png" group-title="☘️上海频道",法治天地 +http://z.b.bkpcp.top/m.php?id=fztd +#EXTINF:-1 tvg-name="法治天地" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/法治天地.png" group-title="☘️上海频道",法治天地 +http://[2409:8087:5e08:24::11]:6610/000000001000/2000000002000000014/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000014&IASHttpSessionId=OTT19019320240419154124000281 +#EXTINF:-1 tvg-name="第一财经" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/第一财经.png" group-title="☘️上海频道",第一财经 +http://yc.myds.me:35455/itv/5000000010000027146.m3u8?cdn=bestzb +#EXTINF:-1 tvg-name="第一财经" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/第一财经.png" group-title="☘️上海频道",第一财经 +http://[2409:8087:5e08:24::11]:6610/000000001000/2000000002000000004/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000004&IASHttpSessionId=OTT19019320240419154124000281 +#EXTINF:-1 tvg-name="第一财经" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/第一财经.png" group-title="☘️上海频道",第一财经 +http://[2409:8087:5e00:24::2d]:6610/000000001000/1/5000000010000027146/index.m3u8?channel-id=bestzb&Contentid=5000000010000027146&livemode=1&stbId=3 +#EXTINF:-1 tvg-name="纪实人文" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/纪实人文.png" group-title="☘️上海频道",纪实人文 +http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225738/index.m3u8 +#EXTINF:-1 tvg-name="纪实人文" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/纪实人文.png" group-title="☘️上海频道",纪实人文 +http://[2409:8087:5e08:24::2]:6610/000000001000/5000000004000010282/index.m3u8?channel-id=bestzb&Contentid=5000000004000010282&livemode=1&stbId=3 +#EXTINF:-1 tvg-name="优漫卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/优漫卡通.png" group-title="☘️江苏频道",优漫卡通 +http://z.b.bkpcp.top/m.php?id=ymkt +#EXTINF:-1 tvg-name="优漫卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/优漫卡通.png" group-title="☘️江苏频道",优漫卡通 +http://[2409:8087:1a0b:df::4005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225656/index.m3u8 +#EXTINF:-1 tvg-name="优漫卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/优漫卡通.png" group-title="☘️江苏频道",优漫卡通 +http://[2409:8087:1a0b:df::4005]:80/ottrrs.hl.chinamobile.com/TVOD/88888888/224/3221225656/index.m3u8 +#EXTINF:-1 tvg-name="优漫卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/优漫卡通.png" group-title="☘️江苏频道",优漫卡通 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/2/224/3221225656/2.m3u8 +#EXTINF:-1 tvg-name="优漫卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/优漫卡通.png" group-title="☘️江苏频道",优漫卡通 +http://otttv.bj.chinamobile.com/PLTV/88888888/224/3221227007/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EhHDWGhkwx_zJcJUYE9TAaA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="优漫卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/优漫卡通.png" group-title="☘️江苏频道",优漫卡通 +http://wouu.net:9977/udp/239.93.0.251:5140 +#EXTINF:-1 tvg-name="优漫卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/优漫卡通.png" group-title="☘️江苏频道",优漫卡通 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226932/1.m3u8 +#EXTINF:-1 tvg-name="六合新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/六合新闻综合.png" group-title="☘️江苏频道",六合新闻综合 +http://p2hs.vzan.com/720020/432453820030502236/live.m3u8 +#EXTINF:-1 tvg-name="南京十八" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/南京十八.png" group-title="☘️江苏频道",南京十八 +http://z.b.bkpcp.top/m.php?id=njsb +#EXTINF:-1 tvg-name="南京新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/南京新闻综合.png" group-title="☘️江苏频道",南京新闻综合 +http://z.b.bkpcp.top/m.php?id=njxwzh +#EXTINF:-1 tvg-name="南通新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/南通新闻综合.png" group-title="☘️江苏频道",南通新闻综合 +http://cm-live.ntjoy.com/live/4f1.m3u8 +#EXTINF:-1 tvg-name="南通新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/南通新闻综合.png" group-title="☘️江苏频道",南通新闻综合 +https://cm-live.ntjoy.com/live/4f1.m3u8 +#EXTINF:-1 tvg-name="南通都市生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/南通都市生活.png" group-title="☘️江苏频道",南通都市生活 +https://cm-live.ntjoy.com/live/4f3.m3u8 +#EXTINF:-1 tvg-name="句容生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/句容生活.png" group-title="☘️江苏频道",句容生活 +http://jrlive.jrntv.com/live/_definst_/shenghuos/playlist.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 tvg-name="宜兴新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/宜兴新闻.png" group-title="☘️江苏频道",宜兴新闻 +https://yixing-tv-ori-hls.jstv.com/yixing-tv-ori/yixing_xw.m3u8 +#EXTINF:-1 tvg-name="宜兴新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/宜兴新闻.png" group-title="☘️江苏频道",宜兴新闻 +http://yixing-tv-ori-hls.jstv.com/yixing-tv-ori/yixing_xw.m3u8?zjiangsd +#EXTINF:-1 tvg-name="常熟民生" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/常熟民生.png" group-title="☘️江苏频道",常熟民生 +rtmp://cstvplay.21cs.cn/cstv2/cstv2 +#EXTINF:-1 tvg-name="徐州新聞綜合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/徐州新聞綜合.png" group-title="☘️江苏频道",徐州新聞綜合 +http://z.b.bkpcp.top/m.php?id=xzxwzh +#EXTINF:-1 tvg-name="新沂新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/新沂新闻.png" group-title="☘️江苏频道",新沂新闻 +http://live.xysrmt.cn/xwzh/sd/live.m3u8?zjiangsd" +#EXTINF:-1 tvg-name="新沂生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/新沂生活.png" group-title="☘️江苏频道",新沂生活 +http://live.xysrmt.cn/shpd/sd/live.m3u8?zjiangsd +#EXTINF:-1 tvg-name="无锡娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/无锡娱乐.png" group-title="☘️江苏频道",无锡娱乐 +https://stream.thmz.com/wxtv2/playlist.m3u8 +#EXTINF:-1 tvg-name="无锡娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/无锡娱乐.png" group-title="☘️江苏频道",无锡娱乐 +http://stream.thmz.com/wxtv2/sd/live.m3u8 +#EXTINF:-1 tvg-name="无锡娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/无锡娱乐.png" group-title="☘️江苏频道",无锡娱乐 +http://stream.thmz.com/wxtv2/sd/live.m3u8?_upt=978cd8731706199708 +#EXTINF:-1 tvg-name="无锡娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/无锡娱乐.png" group-title="☘️江苏频道",无锡娱乐 +http://stream.thmz.com/wxtv2/sd/live.m3u8?_upt=acffe97a1704940314 +#EXTINF:-1 tvg-name="无锡娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/无锡娱乐.png" group-title="☘️江苏频道",无锡娱乐 +http://stream.thmz.com/wxtv2/playlist.m3u8 +#EXTINF:-1 tvg-name="无锡新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/无锡新闻综合.png" group-title="☘️江苏频道",无锡新闻综合 +http://stream.thmz.com/wxtv1/sd/live.m3u8 +#EXTINF:-1 tvg-name="无锡新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/无锡新闻综合.png" group-title="☘️江苏频道",无锡新闻综合 +http://stream.thmz.com/wxtv1/sd/live.m3u8?_upt=4ba3ab191698644028 +#EXTINF:-1 tvg-name="无锡新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/无锡新闻综合.png" group-title="☘️江苏频道",无锡新闻综合 +http://stream.thmz.com/wxtv1/playlist.m3u8 +#EXTINF:-1 tvg-name="无锡生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/无锡生活.png" group-title="☘️江苏频道",无锡生活 +https://stream.thmz.com/wxtv4/playlist.m3u8 +#EXTINF:-1 tvg-name="无锡生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/无锡生活.png" group-title="☘️江苏频道",无锡生活 +http://stream.thmz.com/wxtv4/sd/live.m3u8 +#EXTINF:-1 tvg-name="无锡生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/无锡生活.png" group-title="☘️江苏频道",无锡生活 +http://stream.thmz.com/wxtv4/sd/live.m3u8?_upt=978cd8731706199708 +#EXTINF:-1 tvg-name="无锡生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/无锡生活.png" group-title="☘️江苏频道",无锡生活 +http://stream.thmz.com/wxtv4/playlist.m3u8 +#EXTINF:-1 tvg-name="无锡经济" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/无锡经济.png" group-title="☘️江苏频道",无锡经济 +https://stream.thmz.com/wxtv5/playlist.m3u8 +#EXTINF:-1 tvg-name="无锡经济" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/无锡经济.png" group-title="☘️江苏频道",无锡经济 +http://stream.thmz.com/wxtv5/sd/live.m3u8 +#EXTINF:-1 tvg-name="无锡经济" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/无锡经济.png" group-title="☘️江苏频道",无锡经济 +http://stream.thmz.com/wxtv5/playlist.m3u8 +#EXTINF:-1 tvg-name="无锡都市资讯" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/无锡都市资讯.png" group-title="☘️江苏频道",无锡都市资讯 +http://stream.thmz.com/wxtv3/sd/live.m3u8 +#EXTINF:-1 tvg-name="无锡都市资讯" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/无锡都市资讯.png" group-title="☘️江苏频道",无锡都市资讯 +http://stream.thmz.com/wxtv3/sd/live.m3u8?_upt=978cd8731706199708 +#EXTINF:-1 tvg-name="无锡都市资讯" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/无锡都市资讯.png" group-title="☘️江苏频道",无锡都市资讯 +http://stream.thmz.com/wxtv3/playlist.m3u8 +#EXTINF:-1 tvg-name="江苏城市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/江苏城市.png" group-title="☘️江苏频道",江苏城市 +http://z.b.bkpcp.top/m.php?id=jscs +#EXTINF:-1 tvg-name="江苏影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/江苏影视.png" group-title="☘️江苏频道",江苏影视 +http://z.b.bkpcp.top/m.php?id=jsys +#EXTINF:-1 tvg-name="江苏教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/江苏教育.png" group-title="☘️江苏频道",江苏教育 +http://z.b.bkpcp.top/m.php?id=jsjy +#EXTINF:-1 tvg-name="泗洪新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/泗洪新闻综合.png" group-title="☘️江苏频道",泗洪新闻综合 +http://live1.habctv.com/ggpdsl/sd/live.m3u8?zjiangsd#http://live1.habctv.com/ggpdsl/sd/live.m3u8 +#EXTINF:-1 tvg-name="淮安公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/淮安公共.png" group-title="☘️江苏频道",淮安公共 +http://live1.habctv.com/ggpdsl/sd/live.m3u8?zjiangsd#http://live1.habctv.com/ggpdsl/sd/live.m3u8 +#EXTINF:-1 tvg-name="淮安影院娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/淮安影院娱乐.png" group-title="☘️江苏频道",淮安影院娱乐 +http://live1.habctv.com/ysylsl/sd/live.m3u8 +#EXTINF:-1 tvg-name="淮安新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/淮安新闻综合.png" group-title="☘️江苏频道",淮安新闻综合 +http://z.b.bkpcp.top/m.php?id=haxwzh +#EXTINF:-1 tvg-name="淮安新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/淮安新闻综合.png" group-title="☘️江苏频道",淮安新闻综合 +http://live1.habctv.com/zhpdsl/sd/live.m3u8 +#EXTINF:-1 tvg-name="淮阴综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/淮阴综合.png" group-title="☘️江苏频道",淮阴综合 +https://huaiyin-tv-replay.cm.jstv.com/huaiyin-tv/huaiyinf.m3u8 +#EXTINF:-1 tvg-name="溧水新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/溧水新闻综合.png" group-title="☘️江苏频道",溧水新闻综合 +https://lishui-tv-hls.cm.jstv.com/lishui-tv/lsxwzh.m3u8 +#EXTINF:-1 tvg-name="溧水新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/溧水新闻综合.png" group-title="☘️江苏频道",溧水新闻综合 +http://lishui-tv-hls.cm.jstv.com/lishui-tv/lsxwzh.m3u8 +#EXTINF:-1 tvg-name="滨海新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/滨海新闻综合.png" group-title="☘️江苏频道",滨海新闻综合 +http://traffic.jbh.tjbh.com/live/bhtv10/playlist.m3u8 +#EXTINF:-1 tvg-name="苏州新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/苏州新闻综合.png" group-title="☘️江苏频道",苏州新闻综合 +https://live-auth.51kandianshi.com/szgd/csztv1.m3u8 +#EXTINF:-1 tvg-name="苏州新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/苏州新闻综合.png" group-title="☘️江苏频道",苏州新闻综合 +http://z.b.bkpcp.top/m.php?id=szxwzh +#EXTINF:-1 tvg-name="苏州社会经济" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/苏州社会经济.png" group-title="☘️江苏频道",苏州社会经济 +https://live-auth.51kandianshi.com/szgd/csztv2.m3u8 +#EXTINF:-1 tvg-name="连云港公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/连云港公共.png" group-title="☘️江苏频道",连云港公共 +http://live.lyg1.com/ggpd/sd/live.m3u8 +#EXTINF:-1 tvg-name="连云港新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/连云港新闻综合.png" group-title="☘️江苏频道",连云港新闻综合 +http://z.b.bkpcp.top/m.php?id=lygxwzh +#EXTINF:-1 tvg-name="连云港新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/连云港新闻综合.png" group-title="☘️江苏频道",连云港新闻综合 +http://live.lyg1.com/zhpd/sd/live.m3u8 +#EXTINF:-1 tvg-name="镇江新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/镇江新闻综合.png" group-title="☘️江苏频道",镇江新闻综合 +http://zjtv-wshls.homecdn.com/live/2aa50.m3u8 +#EXTINF:-1 tvg-name="镇江新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/镇江新闻综合.png" group-title="☘️江苏频道",镇江新闻综合 +http://zjtv-wshls.homecdn.com/live/2aa50.m3u8?wsSession=a263bdc5a26cd01b57a80359-170493712215358&wsIPSercert=f56bd6194d219a5172dbed60eca6e9b0 +#EXTINF:-1 tvg-name="湖南爱晚" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/湖南爱晚.png" group-title="☘️湖南频道",湖南爱晚 +http://p2.vzan.com/527645544/149039617847513156/live.m3u8 +#EXTINF:-1 tvg-name="湖南爱晚" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/湖南爱晚.png" group-title="☘️湖南频道",湖南爱晚 +http://pili-live-snapshot.tv.hntvcloud.com/mg-tv/channel-9.m3u8 +#EXTINF:-1 tvg-name="湖南国际" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/湖南国际.png" group-title="☘️湖南频道",湖南国际 +http://pili-live-snapshot.tv.hntvcloud.com/mg-tv/channel-4.m3u8 +#EXTINF:-1 tvg-name="金鹰纪实" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/金鹰纪实.png" group-title="☘️湖南频道",金鹰纪实 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226572/1.m3u8 +#EXTINF:-1 tvg-name="金鹰纪实" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/金鹰纪实.png" group-title="☘️湖南频道",金鹰纪实 +http://rrs01.hw.gmcc.net:8088/PLTV/81/224/3221226667/1.m3u8 +#EXTINF:-1 tvg-name="金鹰纪实" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/金鹰纪实.png" group-title="☘️湖南频道",金鹰纪实 +http://[2409:8087:5e00:24::1e]:6060/000000001000/5000000011000031203/1.m3u8 +#EXTINF:-1 tvg-name="湖南金鹰纪实" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/湖南金鹰纪实.png" group-title="☘️湖南频道",湖南金鹰纪实 +http://yc.myds.me:35455/itv/5000000011000031203.m3u8?cdn=bestzb +#EXTINF:-1 tvg-name="茶陵新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/茶陵新闻综合.png" group-title="☘️湖南频道",茶陵新闻综合 +http://liveplay-nanyue.rednet.cn/live/chaling-telev.m3u8 +#EXTINF:-1 tvg-name="湖北综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/湖北综合.png" group-title="☘️湖北频道",湖北综合 +http://[2409:8087:4c0a:22:1::11]:6410/170000001115/UmaiCHAN638072216f7da/index.m3u8?AuthInfo=9kOOdBn7MFF%2F2bWjKgahUUAdKgLqNB5aOAUhcp5CeNLx3R3LdIBdA5q61lut1LwZcw4SC2tJubc%2Bq5t%2F61jvWCtjrJL0x%2BHncPgdmcbBW9I +#EXTINF:-1 tvg-name="湖北生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/湖北生活.png" group-title="☘️湖北频道",湖北生活 +http://[2409:8087:4c0a:22:1::11]:6410/170000001115/UmaiCHAN638072c62e405/index.m3u8?AuthInfo=9kOOdBn7MFF%2F2bWjKgahUUAdKgLqNB5aOAUhcp5CeNKJPodw5BcDirSOw7egztI5bUvJjqPzSNAhrA37GrbRBIAjGQpzP0QmgsmuHnQyd2c +#EXTINF:-1 tvg-name="湖北教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/湖北教育.png" group-title="☘️湖北频道",湖北教育 +http://[2409:8087:4c0a:22:1::11]:6410/170000001115/UmaiCHAN638072a6cbbf6/index.m3u8?AuthInfo=9kOOdBn7MFF%2F2bWjKgahUUAdKgLqNB5aOAUhcp5CeNKTFQuOKNd5i0HMa3ydMWIQ6kJ2fBJGJ77BLTXK72CqUYQsX3ZguYt0954s9hfZTfc +#EXTINF:-1 tvg-name="湖北垄上" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/湖北垄上.png" group-title="☘️湖北频道",湖北垄上 +http://[2409:8087:4c0a:22:1::11]:6410/170000001115/UmaiCHAN638072463c333/index.m3u8?AuthInfo=9kOOdBn7MFF%2F2bWjKgahUUAdKgLqNB5aOAUhcp5CeNL%2Be1h4FfA5QqwJ7IPOz3p2qIS7djSxm17Htd%2FckZkm%2FVqsKHEJFJt26ju9iibzMEo +#EXTINF:-1 tvg-name="十堰新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/十堰新闻.png" group-title="☘️湖北频道",十堰新闻 +https://p8.vzan.com/slowlive/034028687228317362/live.m3u8?zbid=351104&tpid=868100086 +#EXTINF:-1 tvg-name="荆门新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/荆门新闻综合.png" group-title="☘️湖北频道",荆门新闻综合 +https://stream.jmtv.com.cn/xwzh/playlist.m3u8?_upt=3e28e7271664278691 +#EXTINF:-1 tvg-name="荆门新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/荆门新闻综合.png" group-title="☘️湖北频道",荆门新闻综合 +http://stream.jmtv.com.cn/xwzh/sd/live.m3u8 +#EXTINF:-1 tvg-name="南宁公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/南宁公共.png" group-title="☘️广西频道",南宁公共 +http://688b7cbf9b7a8d911a085372b6c70ab5.livehwc3.cn/hls.nntv.cn/nnlive/XWZH_24.m3u8?sub_m3u8=true&edge_slice=true&user_session_id=d1391be1fc200f8e4700c5d82b44edae +#EXTINF:-1 tvg-name="南宁新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/南宁新闻综合.png" group-title="☘️广西频道",南宁新闻综合 +rtmp://tv.qntv.net/channellive/ch1?zguizd +#EXTINF:-1 tvg-name="南宁新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/南宁新闻综合.png" group-title="☘️广西频道",南宁新闻综合 +rtmp://hls.nntv.cn/nnlive/XWZH_24 +#EXTINF:-1 tvg-name="南宁新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/南宁新闻综合.png" group-title="☘️广西频道",南宁新闻综合 +http://688b7cbf9b7a8d911a085372b6c70ab5.livehwc3.cn/hls.nntv.cn/nnlive/XWZH_24.m3u8?sub_m3u8=true&edge_slice=true&user_session_id=d1391be1fc200f8e4700c5d82b44edae +#EXTINF:-1 tvg-name="南宁都市生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/南宁都市生活.png" group-title="☘️广西频道",南宁都市生活 +http://hls.nntv.cn/nnlive/WLSH_24.m3u8 +#EXTINF:-1 tvg-name="南宁都市生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/南宁都市生活.png" group-title="☘️广西频道",南宁都市生活 +http://615bbf179ba53515dccad7b1da5d1ad9.livehwc3.cn/hls.nntv.cn/nnlive/WLSH_24.m3u8?sub_m3u8=true&edge_slice=true&user_session_id=2598844eaee8a4265e706fc14b3fc11d +#EXTINF:-1 tvg-name="宾阳综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/宾阳综合.png" group-title="☘️广西频道",宾阳综合 +http://pulls.myun.tv/live/0dkp33j5.m3u8 +#EXTINF:-1 tvg-name="贺州综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/贺州综合.png" group-title="☘️广西频道",贺州综合 +http://zhz.gxhzxw.com:2935/live/HZXW-HD/playlist.m3u8 +#EXTINF:-1 tvg-name="广西新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/广西新闻.png" group-title="☘️广西频道",广西新闻 +https://mobilelive.gxtv.cn/live/gx_live1007/playlist.m3u8 +#EXTINF:-1 tvg-name="广西国际" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/广西国际.png" group-title="☘️广西频道",广西国际 +https://hlscdn.liangtv.cn/live/0234c48e0bc24fe1b41b9999a253e581/1075ee38e04f490690f6a36a16e09c79.m3u8 +#EXTINF:-1 tvg-name="广西国际" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/广西国际.png" group-title="☘️广西频道",广西国际 +http://hlscdn.liangtv.cn/live/0234c48e0bc24fe1b41b9999a253e581/1075ee38e04f490690f6a36a16e09c79.m3u8 +#EXTINF:-1 tvg-name="南宁影视娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/南宁影视娱乐.png" group-title="☘️广西频道",南宁影视娱乐 +rtmp://hls.nntv.cn/nnlive/YSYL_244 +#EXTINF:-1 tvg-name="南宁影视娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/南宁影视娱乐.png" group-title="☘️广西频道",南宁影视娱乐 +http://688b7cbf9b7a8d911a085372b6c70ab5.livehwc3.cn/hls.nntv.cn/nnlive/YSYL_244.m3u8?sub_m3u8=true&edge_slice=true&user_session_id=e7eb508555e76e08cc1b198d04f41fb5 +#EXTINF:-1 tvg-name="津南一套" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/津南一套.png" group-title="☘️天津频道",津南一套 +http://play.jinnantv.top/live/JNTV1.m3u8?ztianjd +#EXTINF:-1 tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/天津卫视.png" group-title="☘️天津频道",天津卫视 +http://j.x.bkpcp.top/jx/TIANJHD +#EXTINF:-1 tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/天津卫视.png" group-title="☘️天津频道",天津卫视 +http://[2409:8087:74f0:22::6]:6410/270000001128/9900000530/index.m3u8 +#EXTINF:-1 tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/天津卫视.png" group-title="☘️天津频道",天津卫视 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226459/index.m3u8 +#EXTINF:-1 tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/天津卫视.png" group-title="☘️天津频道",天津卫视 +http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226459/index.m3u8 +#EXTINF:-1 tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/天津卫视.png" group-title="☘️天津频道",天津卫视 +http://[2409:8087:5e00:24::1e]:6060/200000001898/460000089800010069/1.m3u8 +#EXTINF:-1 tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/天津卫视.png" group-title="☘️天津频道",天津卫视 +http://[2409:8087:1a01:df::4030]:80/TVOD/88888888/224/3221225972/main.m3u8 +#EXTINF:-1 tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/天津卫视.png" group-title="☘️天津频道",天津卫视 +http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226459/index.m3u8 +#EXTINF:-1 tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/天津卫视.png" group-title="☘️天津频道",天津卫视 +http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221226459/index.m3u8 +#EXTINF:-1 tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/天津卫视.png" group-title="☘️天津频道",天津卫视 +http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225485/2/index.m3u8 +#EXTINF:-1 tvg-name="天津卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/天津卫视.png" group-title="☘️天津频道",天津卫视 +http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225739/2/index.m3u8 +#EXTINF:-1 tvg-name="井研综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/井研综合.png" group-title="☘️四川频道",井研综合 +http://tvfile.jyrmt.cn/nmip-media/channellive/channel104452/playlist.m3u8 +#EXTINF:-1 tvg-name="凉山新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/凉山新闻综合.png" group-title="☘️四川频道",凉山新闻综合 +http://tvfile.lzgbdst.com/nmip-media/channellive/channel106876/playlist.m3u8?zsicdhttp://tv.drs.lzgbdst.com:8100/channellive/lztv2.flv?zsicd +#EXTINF:-1 tvg-name="利州综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/利州综合.png" group-title="☘️四川频道",利州综合 +http://tvfile.lzgbdst.com/nmip-media/channellive/channel106876/playlist.m3u8?zsicd +#EXTINF:-1 tvg-name="剑阁综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/剑阁综合.png" group-title="☘️四川频道",剑阁综合 +https://m3u8.channel.dzsm.com/nmip-media/channellive/channel105549/playlist.m3u8 +#EXTINF:-1 tvg-name="双流综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/双流综合.png" group-title="☘️四川频道",双流综合 +http://171.221.250.130:18888/27e684978eb642eeb90ab815f6cc51bf/c41893de5e8645b3b43aef1640859b0d.m3u8?zsicd, +#EXTINF:-1 tvg-name="叙永综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/叙永综合.png" group-title="☘️四川频道",叙永综合 +rtmp://luzhi.xuyongrongmei.com:1935/live/xyxw?zsicd +#EXTINF:-1 tvg-name="叙永综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/叙永综合.png" group-title="☘️四川频道",叙永综合 +http://luzhi.xuyongrongmei.com:1935/live/_definst_/xyxw/playlist.m3u8?zsicd#rtmp://luzhi.xuyongrongmei.com:1935/live/xyxw?zsicd +#EXTINF:-1 tvg-name="名山综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/名山综合.png" group-title="☘️四川频道",名山综合 +rtmp://tv.yunxya.com:1937/channellive/mingshan +#EXTINF:-1 tvg-name="名山综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/名山综合.png" group-title="☘️四川频道",名山综合 +https://m3u8channel-bx.yunxya.com/nmip-media/channellive/channel104666/playlist.m3u8 +#EXTINF:-1 tvg-name="四川科教" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/四川科教.png" group-title="☘️四川频道",四川科教 +http://182.150.115.21:8030/pcgacg/pcgacg_0.m3u8 +#EXTINF:-1 tvg-name="四川科教" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/四川科教.png" group-title="☘️四川频道",四川科教 +http://wouu.net:9977/udp/239.93.42.44:5140 +#EXTINF:-1 tvg-name="夹江新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/夹江新闻综合.png" group-title="☘️四川频道",夹江新闻综合 +http://tvfile.jjrm.org.cn/nmip-media/channellive/channel106282/playlist.m3u8 +#EXTINF:-1 tvg-name="宝兴综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/宝兴综合.png" group-title="☘️四川频道",宝兴综合 +rtmp://tv.yunxya.com:1937/channellive/baoxing +#EXTINF:-1 tvg-name="小金综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/小金综合.png" group-title="☘️四川频道",小金综合 +rtmp://xjlive.xjxrmt.cn/live/xwpd +#EXTINF:-1 tvg-name="广元公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/广元公共.png" group-title="☘️四川频道",广元公共 +https://m3u8.channel.dzsm.com/nmip-media/channellive/channel101257/playlist.m3u8 +#EXTINF:-1 tvg-name="广元综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/广元综合.png" group-title="☘️四川频道",广元综合 +https://m3u8.channel.dzsm.com/nmip-media/channellive/channel100999/playlist.m3u8 +#EXTINF:-1 tvg-name="康巴卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/康巴卫视.png" group-title="☘️四川频道",康巴卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227027/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EkHMvBpWz4rccMxNvSRekpQ%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="康巴卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/康巴卫视.png" group-title="☘️四川频道",康巴卫视 +http://[2409:8087:1a0b:df::4005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225660/index.m3u8 +#EXTINF:-1 tvg-name="康巴卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/康巴卫视.png" group-title="☘️四川频道",康巴卫视 +http://[2409:8087:3428:20:500::100f]:6610/PLTV/88888888/224/3221225856/index.m3u8?servicetype=1&IASHttpSessionId=RR423820220409134714119178 +#EXTINF:-1 tvg-name="康巴卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/康巴卫视.png" group-title="☘️四川频道",康巴卫视 +http://[2409:8087:3428:20:500::1009]:6610/PLTV/88888888/224/3221225856/index.m3u8?servicetype=1&IASHttpSessionId=RR423820220409134714119178 +#EXTINF:-1 tvg-name="康巴卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/康巴卫视.png" group-title="☘️四川频道",康巴卫视 +http://[2409:8087:2001:20:2800:0:df6e:eb10]:80/wh7f454c46tw3423902933_-437655574/ott.mobaibox.com/PLTV/3/224/3221227645/index.m3u8 +#EXTINF:-1 tvg-name="康巴卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/康巴卫视.png" group-title="☘️四川频道",康巴卫视 +http://[2409:8087:1a0b:df::4005]:80/ottrrs.hl.chinamobile.com/TVOD/88888888/224/3221225660/index.m3u8 +#EXTINF:-1 tvg-name="康巴卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/康巴卫视.png" group-title="☘️四川频道",康巴卫视 +http://otttv.bj.chinamobile.com/PLTV/88888888/224/3221227027/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EkHMvBpWz4rccMxNvSRekpQ%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="康巴卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/康巴卫视.png" group-title="☘️四川频道",康巴卫视 +http://wouu.net:9977/udp/239.93.0.41:5140 +#EXTINF:-1 tvg-name="康巴卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/康巴卫视.png" group-title="☘️四川频道",康巴卫视 +http://ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225660/index.m3u8 +#EXTINF:-1 tvg-name="康巴卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/康巴卫视.png" group-title="☘️四川频道",康巴卫视 +http://hwrr.jx.chinamobile.com:8080/PLTV/88888888/224/3221226263/index.m3u8 +#EXTINF:-1 tvg-name="旺苍新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/旺苍新闻综合.png" group-title="☘️四川频道",旺苍新闻综合 +rtmp://tv.wcrmt.cn/channellive/ch1 +#EXTINF:-1 tvg-name="旺苍新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/旺苍新闻综合.png" group-title="☘️四川频道",旺苍新闻综合 +http://channel.wcrmt.cn:80/nmip-media/channellive/channel105268/playlist.m3u8 +#EXTINF:-1 tvg-name="旺苍新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/旺苍新闻综合.png" group-title="☘️四川频道",旺苍新闻综合 +http://live.spccmc.com:90/live/spxwzh.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 tvg-name="松潘新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/松潘新闻综合.png" group-title="☘️四川频道",松潘新闻综合 +http://live.spccmc.com:90/live/spxwzh.m3u8 +#EXTINF:-1 tvg-name="松潘新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/松潘新闻综合.png" group-title="☘️四川频道",松潘新闻综合 +http://live.spccmc.com:90/live/spxwzh.m3u8?zsicd +#EXTINF:-1 tvg-name="汉源综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/汉源综合.png" group-title="☘️四川频道",汉源综合 +http://live.hyxrmt.com:85/live/xwpd.m3u8 +#EXTINF:-1 tvg-name="汶川新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/汶川新闻综合.png" group-title="☘️四川频道",汶川新闻综合 +rtmp://live.iwcmt.cn:1936/live/zhxw +#EXTINF:-1 tvg-name="汶川新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/汶川新闻综合.png" group-title="☘️四川频道",汶川新闻综合 +http://live.iwcmt.cn:90/live/zhxw.m3u8 +#EXTINF:-1 tvg-name="汶川新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/汶川新闻综合.png" group-title="☘️四川频道",汶川新闻综合 +http://live.iwcmt.cn:90/live/zhxw.m3u8?zsicd +#EXTINF:-1 tvg-name="沐川综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/沐川综合.png" group-title="☘️四川频道",沐川综合 +rtmp://tv.mcrm.org.cn:1935/channellive/tv01 +#EXTINF:-1 tvg-name="沐川综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/沐川综合.png" group-title="☘️四川频道",沐川综合 +http://file.ysxtv.cn/cms/videos/nmip-media/channellive/channel4/playlist.m3u8?zsicd +#EXTINF:-1 tvg-name="泸县新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/泸县新闻综合.png" group-title="☘️四川频道",泸县新闻综合 +http://lxfile.lxxcb.cn/nmip-media/channellive/channel103799/playlist.m3u8 +#EXTINF:-1 tvg-name="泸县新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/泸县新闻综合.png" group-title="☘️四川频道",泸县新闻综合 +http://lxfile.lxxcb.cn:80/nmip-media/channellive/channel103799/playlist.m3u8 +#EXTINF:-1 tvg-name="泸县新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/泸县新闻综合.png" group-title="☘️四川频道",泸县新闻综合 +https://m3u8channel.ganzitv.com/nmip-media/channellive/channel1/playlist.m3u8 +#EXTINF:-1 tvg-name="泸县新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/泸县新闻综合.png" group-title="☘️四川频道",泸县新闻综合 +http://lxfile.lxxcb.cn/nmip-media/channellive/channel103799/playlist.m3u8?zsicd +#EXTINF:-1 tvg-name="甘孜综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/甘孜综合.png" group-title="☘️四川频道",甘孜综合 +https://m3u8channel.ganzitv.com/nmip-media/channellive/channel1/playlist.m3u8 +#EXTINF:-1 tvg-name="石棉综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/石棉综合.png" group-title="☘️四川频道",石棉综合 +rtmp://tv.yunxya.com:1937/channellive/shimian +#EXTINF:-1 tvg-name="石棉综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/石棉综合.png" group-title="☘️四川频道",石棉综合 +https://m3u8channel-sm.yunxya.com/nmip-media/channellive/channel100420/playlist.m3u8 +#EXTINF:-1 tvg-name="绵阳科技" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/绵阳科技.png" group-title="☘️四川频道",绵阳科技 +http://livepull.myntv.cn:80/rtmp/mykj.m3u8 +#EXTINF:-1 tvg-name="荥经综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/荥经综合.png" group-title="☘️四川频道",荥经综合 +rtmp://tv.yunxya.com:1937/channellive/yingjing +#EXTINF:-1 tvg-name="荥经综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/荥经综合.png" group-title="☘️四川频道",荥经综合 +https://m3u8channel-yj.yunxya.com/nmip-media/channellive/channel101140/playlist.m3u8 +#EXTINF:-1 tvg-name="荥经综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/荥经综合.png" group-title="☘️四川频道",荥经综合 +http://file.ysxtv.cn/cms/videos/nmip-media/channellive/channel4/playlist.m3u8 +#EXTINF:-1 tvg-name="荥经综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/荥经综合.png" group-title="☘️四川频道",荥经综合 +https://file.ysxtv.cn/nmip-media/channellive/channel101492/playlist.m3u8 +#EXTINF:-1 tvg-name="营山电视台" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/营山电视台.png" group-title="☘️四川频道",营山电视台 +https://file.ysxtv.cn/nmip-media/channellive/channel101492/playlist.m3u8 +#EXTINF:-1 tvg-name="营山电视台" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/营山电视台.png" group-title="☘️四川频道",营山电视台 +http://file.ysxtv.cn/cms/videos/nmip-media/channellive/channel4/playlist.m3u8?zsicd#http://file.ysxtv.cn/cms/videos/nmip-media/channellive/channel4/playlist.m3u8 +#EXTINF:-1 tvg-name="金川新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/金川新闻综合.png" group-title="☘️四川频道",金川新闻综合 +rtmp://live.jinchuanrmt.com/live/zhxw +#EXTINF:-1 tvg-name="金川新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/金川新闻综合.png" group-title="☘️四川频道",金川新闻综合 +rtmp://139.203.180.9/live/zhxw +#EXTINF:-1 tvg-name="长宁综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/长宁综合.png" group-title="☘️四川频道",长宁综合 +rtmp://cnpull.sccnfb.com/live/123456 +#EXTINF:-1 tvg-name="青川综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/青川综合.png" group-title="☘️四川频道",青川综合 +http://qcfile.qcrmt.com/nmip-media/channellive/channel100933/playlist.m3u8 +#EXTINF:-1 tvg-name="云霄综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/云霄综合.png" group-title="☘️福建频道",云霄综合 +https://live.zzyxxw.com:2443/live/xwzh.m3u8 +#EXTINF:-1 tvg-name="云霄综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/云霄综合.png" group-title="☘️福建频道",云霄综合 +http://live.zzyxxw.com:85/live/xwzh.m3u8 +#EXTINF:-1 tvg-name="云霄综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/云霄综合.png" group-title="☘️福建频道",云霄综合 +http://live.zzyxxw.com:85/live/xwzh.m3u8?fujian +#EXTINF:-1 tvg-name="厦门卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/厦门卫视.png" group-title="☘️福建频道",厦门卫视 +http://[2409:8087:5e00:24::1e]:6060/000000001000/1000000005000266006/1.m3u8 +#EXTINF:-1 tvg-name="厦门卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/厦门卫视.png" group-title="☘️福建频道",厦门卫视 +http://[2409:8087:74F1:0021::0008]/270000001128/9900000058/index.m3u8 +#EXTINF:-1 tvg-name="厦门卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/厦门卫视.png" group-title="☘️福建频道",厦门卫视 +http://[2409:8087:5e01:34::22]:6610/ZTE_CMS/00000001000000060000000000000193/index.m3u8?IAS +#EXTINF:-1 tvg-name="厦门卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/厦门卫视.png" group-title="☘️福建频道",厦门卫视 +http://[2409:8087:3428:20:500::100f]:6610/PLTV/88888888/224/3221226964/index.m3u8?servicetype=1&IASHttpSessionId=RR423820220409134714119178 +#EXTINF:-1 tvg-name="厦门卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/厦门卫视.png" group-title="☘️福建频道",厦门卫视 +http://[2409:8087:3428:20:500::100f]:6610/PLTV/88888888/224/3221226781/index.m3u8?servicetype=1&IASHttpSessionId=RR423820220409134714119178 +#EXTINF:-1 tvg-name="厦门卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/厦门卫视.png" group-title="☘️福建频道",厦门卫视 +http://[2409:8087:3428:20:500::1009]:6610/PLTV/88888888/224/3221226964/index.m3u8?servicetype=1&IASHttpSessionId=RR423820220409134714119178 +#EXTINF:-1 tvg-name="厦门卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/厦门卫视.png" group-title="☘️福建频道",厦门卫视 +http://[2409:8087:3428:20:500::1009]:6610/PLTV/88888888/224/3221226781/index.m3u8?servicetype=1&IASHttpSessionId=RR423820220409134714119178 +#EXTINF:-1 tvg-name="厦门卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/厦门卫视.png" group-title="☘️福建频道",厦门卫视 +http://[2409:8087:5e01:34::23]:6610/ZTE_CMS/00000001000000060000000000000193/index.m3u8 +#EXTINF:-1 tvg-name="厦门卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/厦门卫视.png" group-title="☘️福建频道",厦门卫视 +http://wouu.net:9977/udp/239.93.42.57:5140 +#EXTINF:-1 tvg-name="厦门卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/厦门卫视.png" group-title="☘️福建频道",厦门卫视 +http://dbiptv.sn.chinamobile.com/PLTV/88888890/224/3221226219/index.m3u8 +#EXTINF:-1 tvg-name="福州少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/福州少儿.png" group-title="☘️福建频道",福州少儿 +http://live.zohi.tv/video/s10001-fztv-4/index.m3u8 +#EXTINF:-1 tvg-name="福州生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/福州生活.png" group-title="☘️福建频道",福州生活 +http://live.zohi.tv:80/video/s10001-fztv-3/index.m3u8 +#EXTINF:-1 tvg-name="福州综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/福州综合.png" group-title="☘️福建频道",福州综合 +http://live.zohi.tv/video/s10001-fztv-1/index.m3u8 +#EXTINF:-1 tvg-name="海南新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/海南新闻.png" group-title="☘️海南频道",海南新闻 +http://nn.7x9d.cn/地方台8563/海南.php?id=xwpd +#EXTINF:-1 tvg-name="海南新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/海南新闻.png" group-title="☘️海南频道",海南新闻 +http://[2409:8087:5e00:24::1e]:6060/000000001000/4600001000000000111/1.m3u8 +#EXTINF:-1 tvg-name="海南自贸" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/海南自贸.png" group-title="☘️海南频道",海南自贸 +http://nn.7x9d.cn/地方台8563/海南.php +#EXTINF:-1 tvg-name="海南自贸" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/海南自贸.png" group-title="☘️海南频道",海南自贸 +http://[2409:8087:5e00:24::1e]:6060/000000001000/4600001000000000116/1.m3u8 +#EXTINF:-1 tvg-name="海南文旅" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/海南文旅.png" group-title="☘️海南频道",海南文旅 +http://[2409:8087:5e00:24::1e]:6060/000000001000/4600001000000000113/1.m3u8 +#EXTINF:-1 tvg-name="海南少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/海南少儿.png" group-title="☘️海南频道",海南少儿 +http://[2409:8087:5e00:24::1e]:6060/000000001000/4600001000000000112/1.m3u8 +#EXTINF:-1 tvg-name="海南公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/海南公共.png" group-title="☘️海南频道",海南公共 +http://[2409:8087:5e00:24::1e]:6060/000000001000/460000100000000057/1.m3u8 +#EXTINF:-1 tvg-name="临颍综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/临颍综合.png" group-title="☘️河南频道",临颍综合 +http://tvpull.dxhmt.cn:9081/tv/11122-1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 tvg-name="义马新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/义马新闻综合.png" group-title="☘️河南频道",义马新闻综合 +http://tvpull.dxhmt.cn:9081/tv/11281-1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 tvg-name="光山综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/光山综合.png" group-title="☘️河南频道",光山综合 +http://tvpull.dxhmt.cn:9081/tv/11522-1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 tvg-name="兰考新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/兰考新闻.png" group-title="☘️河南频道",兰考新闻 +http://tvpull.dxhmt.cn:9081/tv/10225-1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 tvg-name="卫辉综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/卫辉综合.png" group-title="☘️河南频道",卫辉综合 +http://tvpull.dxhmt.cn:9081/tv/10781-1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 tvg-name="叶县" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/叶县.png" group-title="☘️河南频道",叶县 +http://tvpull.dxhmt.cn:9081/tv/10422-1.m3u8# +#EXTINF:-1 tvg-name="唐河一套" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/唐河一套.png" group-title="☘️河南频道",唐河一套 +http://tvpull.dxhmt.cn:9081/tv/11328-1.m3u8 +#EXTINF:-1 tvg-name="固始综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/固始综合.png" group-title="☘️河南频道",固始综合 +http://tvpull.dxhmt.cn:9081/tv/11525-1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 tvg-name="宝丰综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/宝丰综合.png" group-title="☘️河南频道",宝丰综合 +http://tvpull.dxhmt.cn:9081/tv/10421-1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 tvg-name="巩义新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/巩义新闻综合.png" group-title="☘️河南频道",巩义新闻综合 +http://tvpull.dxhmt.cn:9081/tv/10181-1.m3u8?zhend +#EXTINF:-1 tvg-name="扶沟综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/扶沟综合.png" group-title="☘️河南频道",扶沟综合 +http://tvpull.dxhmt.cn:9081/tv/11621-1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 tvg-name="新乡县电视台" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/新乡县电视台.png" group-title="☘️河南频道",新乡县电视台 +http://tvpull.dxhmt.cn:9081/tv/10721-1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 tvg-name="新县综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/新县综合.png" group-title="☘️河南频道",新县综合 +http://tvpull.dxhmt.cn:9081/tv/11523-1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 tvg-name="新蔡综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/新蔡综合.png" group-title="☘️河南频道",新蔡综合 +http://tvpull.dxhmt.cn:9081/tv/11729-1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 tvg-name="泌阳新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/泌阳新闻综合.png" group-title="☘️河南频道",泌阳新闻综合 +http://tvpull.dxhmt.cn:9081/tv/11726-1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 tvg-name="渑池新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/渑池新闻综合.png" group-title="☘️河南频道",渑池新闻综合 +http://tvpull.dxhmt.cn:9081/tv/11221-1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 tvg-name="温县综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/温县综合.png" group-title="☘️河南频道",温县综合 +http://tvpull.dxhmt.cn:9081/tv/10825-1.m3u8?zhend +#EXTINF:-1 tvg-name="潢川综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/潢川综合.png" group-title="☘️河南频道",潢川综合 +http://tvpull.dxhmt.cn:9081/tv/11526-1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 tvg-name="登封综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/登封综合.png" group-title="☘️河南频道",登封综合 +http://tvpull.dxhmt.cn:9081/tv/10185-1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 tvg-name="禹州综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/禹州综合.png" group-title="☘️河南频道",禹州综合 +http://tvpull.dxhmt.cn:9081/tv/11081-1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 tvg-name="西华综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/西华综合.png" group-title="☘️河南频道",西华综合 +http://tvpull.dxhmt.cn:9081/tv/11622-1.m3u8 +#EXTINF:-1 tvg-name="郏县综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/郏县综合.png" group-title="☘️河南频道",郏县综合 +http://tvpull.dxhmt.cn:9081/tv/10425-1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 tvg-name="郸城新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/郸城新闻综合.png" group-title="☘️河南频道",郸城新闻综合 +http://tvpull.dxhmt.cn:9081/tv/11625-1.m3u8?wsSecret=df15530a0abec41b14bca00fc96270d1&wsTime=1654956569 +#EXTINF:-1 tvg-name="鄢陵综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/鄢陵综合.png" group-title="☘️河南频道",鄢陵综合 +http://tvpull.dxhmt.cn:9081/tv/11024-1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 tvg-name="项城新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/项城新闻.png" group-title="☘️河南频道",项城新闻 +http://tvpull.dxhmt.cn:9081/tv/11681-1.m3u8#@http://live.dxhmt.cn:9081/tv/11681-1.m3u8#@http://p2.weizan.cn/978354/131995006225520039/live.m3u8 +#EXTINF:-1 tvg-name="邓州新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/邓州新闻.png" group-title="☘️河南频道",邓州新闻 +http://tvpull.dxhmt.cn:9081/tv/11381-1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 tvg-name="荥阳综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/荥阳综合.png" group-title="☘️河南频道",荥阳综合 +http://tvpull.dxhmt.cn:9081/tv/10182-1.m3u8 +#EXTINF:-1 tvg-name="荥阳综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/荥阳综合.png" group-title="☘️河南频道",荥阳综合 +http://tvpull.dxhmt.cn:9081/tv/10182-1.m3u8?zhend +#EXTINF:-1 tvg-name="灵宝新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/灵宝新闻综合.png" group-title="☘️河南频道",灵宝新闻综合 +http://tvpull.dxhmt.cn:9081/tv/11282-1.m3u8?zhend +#EXTINF:-1 tvg-name="滑县新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/滑县新闻.png" group-title="☘️河南频道",滑县新闻 +http://tvpull.dxhmt.cn:9081/tv/10526-1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 tvg-name="济源电视一套" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/济源电视一套.png" group-title="☘️河南频道",济源电视一套 +http://tvpull.dxhmt.cn:9081/tv/19001-1.m3u8 +#EXTINF:-1 tvg-name="洛阳综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/洛阳综合.png" group-title="☘️河南频道",洛阳综合 +https://wshlslive.migucloud.com/live/6AL7GTQX_C0/playlist.m3u8 +#EXTINF:-1 tvg-name="洛阳科教" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/洛阳科教.png" group-title="☘️河南频道",洛阳科教 +https://wshlslive.migucloud.com/live/RJ0EYBCZ_C0/playlist.m3u8 +#EXTINF:-1 tvg-name="洛阳文旅" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/洛阳文旅.png" group-title="☘️河南频道",洛阳文旅 +https://wshlslive.migucloud.com/live/CVN934JS_C0/playlist.m3u8 +#EXTINF:-1 tvg-name="河南都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/河南都市.png" group-title="☘️河南频道",河南都市 +http://1.94.31.214/php/hntv.php?id=hnds +#EXTINF:-1 tvg-name="河南都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/河南都市.png" group-title="☘️河南频道",河南都市 +http://www.lwfz.fun:8800/rtp/239.16.20.164:11640 +#EXTINF:-1 tvg-name="河南民生" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/河南民生.png" group-title="☘️河南频道",河南民生 +http://www.lwfz.fun:8800/rtp/239.16.20.165:11650 +#EXTINF:-1 tvg-name="沁阳新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/沁阳新闻综合.png" group-title="☘️河南频道",沁阳新闻综合 +http://tvpull.dxhmt.cn:9081/tv/10882-1.m3u8 +#EXTINF:-1 tvg-name="永城综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/永城综合.png" group-title="☘️河南频道",永城综合 +http://tvpull.dxhmt.cn:9081/tv/11481-1.m3u8 +#EXTINF:-1 tvg-name="方城一套" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/方城一套.png" group-title="☘️河南频道",方城一套 +http://tvpull.dxhmt.cn:9081/tv/11322-1.m3u8 +#EXTINF:-1 tvg-name="新野综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/新野综合.png" group-title="☘️河南频道",新野综合 +http://tvpull.dxhmt.cn:9081/tv/11329-1.m3u8?zhend +#EXTINF:-1 tvg-name="新安新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/新安新闻综合.png" group-title="☘️河南频道",新安新闻综合 +http://tvpull.dxhmt.cn:9081/tv/10323-1.m3u8 +#EXTINF:-1 tvg-name="新安新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/新安新闻综合.png" group-title="☘️河南频道",新安新闻综合 +http://tvpull.dxhmt.cn:9081/tv/10323-1.m3u8?zhend +#EXTINF:-1 tvg-name="开封新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/开封新闻综合.png" group-title="☘️河南频道",开封新闻综合 +http://tvpull.dxhmt.cn:9081/tv/10200-2.m3u8?zhend +#EXTINF:-1 tvg-name="开封文化旅游" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/开封文化旅游.png" group-title="☘️河南频道",开封文化旅游 +http://tvpull.dxhmt.cn:9081/tv/10200-3.m3u8 +#EXTINF:-1 tvg-name="开封文化旅游" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/开封文化旅游.png" group-title="☘️河南频道",开封文化旅游 +http://tvpull.dxhmt.cn:9081/tv/10200-3.m3u8?zhend +#EXTINF:-1 tvg-name="嵩县综合新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/嵩县综合新闻.png" group-title="☘️河南频道",嵩县综合新闻 +http://tvpull.dxhmt.cn:9081/tv/10325-1.m3u8?zhendhttp://wshls.live.migucloud.com/live/MZCYG799_C0/playlist.m3u8?zhend +#EXTINF:-1 tvg-name="宜阳综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/宜阳综合.png" group-title="☘️河南频道",宜阳综合 +http://tvpull.dxhmt.cn:9081/tv/10327-1.m3u8 +#EXTINF:-1 tvg-name="内黄综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/内黄综合.png" group-title="☘️河南频道",内黄综合 +http://tvpull.dxhmt.cn:9081/tv/10527-1.m3u8?wsSecret=df15530a0abec41b14bca00fc96270d1&wsTime=1654956569 +#EXTINF:-1 tvg-name="内乡综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/内乡综合.png" group-title="☘️河南频道",内乡综合 +http://tvpull.dxhmt.cn:9081/tv/11325-1.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 tvg-name="偃师新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/偃师新闻.png" group-title="☘️河南频道",偃师新闻 +http://tvpull.dxhmt.cn:9081/tv/10381-1.m3u8?wsSecret=df15530a0abec41b14bca00fc96270d1&wsTime=1654956569 +#EXTINF:-1 tvg-name="鹿泉一套" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/鹿泉一套.png" group-title="☘️河北频道",鹿泉一套 +https://jwcdnqx.hebyun.com.cn/live/luquanyi/1500k/tzwj_video.m3u8 +#EXTINF:-1 tvg-name="邯郸科技教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/邯郸科技教育.png" group-title="☘️河北频道",邯郸科技教育 +https://jwcdnqx.hebyun.com.cn/live/hdkj/1500k/tzwj_video.m3u8 +#EXTINF:-1 tvg-name="邢台综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/邢台综合.png" group-title="☘️河北频道",邢台综合 +http://jwplay.hebyun.com.cn/live/xtsrmtzs/1500k/tzwj_video.m3u8 +#EXTINF:-1 tvg-name="邢台综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/邢台综合.png" group-title="☘️河北频道",邢台综合 +https://jwplay.hebyun.com.cn/live/xttv/1500k/tzwj_video.m3u8 +#EXTINF:-1 tvg-name="邢台综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/邢台综合.png" group-title="☘️河北频道",邢台综合 +https://jwplay.hebyun.com.cn:443/live/xtsrmtzs/1500k/tzwj_video.m3u8 +#EXTINF:-1 tvg-name="邢台综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/邢台综合.png" group-title="☘️河北频道",邢台综合 +https://jwplay.hebyun.com.cn/live/xttv/1500k/tzwj_video.m3u8?zhebd +#EXTINF:-1 tvg-name="石家庄新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/石家庄新闻综合.png" group-title="☘️河北频道",石家庄新闻综合 +http://nn.7x9d.cn/石家庄.php?id=4 +#EXTINF:-1 tvg-name="滦平新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/滦平新闻.png" group-title="☘️河北频道",滦平新闻 +http://jwplay.hebyun.com.cn/live/LPTV001/1500k/tzwj_video.m3u8 +#EXTINF:-1 tvg-name="河北都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/河北都市.png" group-title="☘️河北频道",河北都市 +https://jwplay.hebyun.com.cn/live/hbdstv/1500k/tzwj_video.m3u8#http://tv.pull.hebtv.com/jishi/dushipindao.m3u8?t=2510710360&k=4380da13735a230c080ce8ff404033af +#EXTINF:-1 tvg-name="河北都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/河北都市.png" group-title="☘️河北频道",河北都市 +http://jwplay.hebyun.com.cn/live/hbnmtv/1500k/tzwj_video.m3u8 +#EXTINF:-1 tvg-name="河北都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/河北都市.png" group-title="☘️河北频道",河北都市 +http://tv.pull.hebtv.com/jishi/dushipindao.m3u8?t=2510710360&k=4380da13735a230c080ce8ff404033af +#EXTINF:-1 tvg-name="河北农民" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/河北农民.png" group-title="☘️河北频道",河北农民 +https://jwplay.hebyun.com.cn/live/hbnmtv/1500k/tzwj_video.m3u8?zhebd#http://hbfc.chinashadt.com:2036/live/1003.stream/playlist.m3u8#http://tv.pull.hebtv.com/jishi/nongminpindao.m3u8?t=2510710360&k=75118c17760542fe4385e93cc4f03d38 +#EXTINF:-1 tvg-name="河北农民" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/河北农民.png" group-title="☘️河北频道",河北农民 +https://jwcdnqx.hebyun.com.cn/live/clzhpd/1500k/tzwj_video.m3u8 +#EXTINF:-1 tvg-name="河北农民" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/河北农民.png" group-title="☘️河北频道",河北农民 +https://tv.pull.hebtv.com/jishi/nongminpindao.m3u8?t=1963555153&k=322fe32502d1e3695b0bdef5e698635e +#EXTINF:-1 tvg-name="昌黎综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/昌黎综合.png" group-title="☘️河北频道",昌黎综合 +https://jwcdnqx.hebyun.com.cn/live/clzhpd/1500k/tzwj_video.m3u8 +#EXTINF:-1 tvg-name="任丘综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/任丘综合.png" group-title="☘️河北频道",任丘综合 +https://jwcdnqx.hebyun.com.cn/live/rqtv1/1500k/tzwj_video.m3u8 +#EXTINF:-1 tvg-name="兴隆综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/兴隆综合.png" group-title="☘️河北频道",兴隆综合 +https://jwcdnqx.hebyun.com.cn/live/xlzh/1500k/tzwj_video.m3u8 +#EXTINF:-1 tvg-name="平泉综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/平泉综合.png" group-title="☘️河北频道",平泉综合 +https://jwcdnqx.hebyun.com.cn/live/pqzh/1500k/tzwj_video.m3u8 +#EXTINF:-1 tvg-name="清河新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/清河新闻综合.png" group-title="☘️河北频道",清河新闻综合 +https://jwcdnqx.hebyun.com.cn/live/qinghe/1500k/tzwj_video.m3u8 +#EXTINF:-1 tvg-name="清河经济综艺" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/清河经济综艺.png" group-title="☘️河北频道",清河经济综艺 +https://jwcdnqx.hebyun.com.cn/live/qinghe1/1500k/tzwj_video.m3u8 +#EXTINF:-1 tvg-name="七星关电视台" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/七星关电视台.png" group-title="☘️贵州频道",七星关电视台 +https://p8.vzan.com:443/slowlive/147077707554082780/live.m3u8 +#EXTINF:-1 tvg-name="安顺新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/安顺新闻.png" group-title="☘️贵州频道",安顺新闻 +http://hplayer1.juyun.tv/camera/154379194.m3u8 +#EXTINF:-1 tvg-name="甘肃经济" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/甘肃经济.png" group-title="☘️甘肃频道",甘肃经济 +https://hls.gstv.com.cn/49048r/10iv1j.m3u8 +#EXTINF:-1 tvg-name="甘肃都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/甘肃都市.png" group-title="☘️甘肃频道",甘肃都市 +https://hls.gstv.com.cn/49048r/l54391.m3u8 +#EXTINF:-1 tvg-name="嘉峪关综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/嘉峪关综合.png" group-title="☘️甘肃频道",嘉峪关综合 +http://play.kankanlive.com/live/1720583434627241.m3u8 +#EXTINF:-1 tvg-name="天祝综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/天祝综合.png" group-title="☘️甘肃频道",天祝综合 +https://play.kankanlive.com/live/1656487214793905.m3u8 +#EXTINF:-1 tvg-name="成县综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/成县综合.png" group-title="☘️甘肃频道",成县综合 +https://play.kankanlive.com/live/1702454377323961.m3u8 +#EXTINF:-1 tvg-name="永昌综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/永昌综合.png" group-title="☘️甘肃频道",永昌综合 +rtmp://play.kankanlive.com/live/1652755738635915 +#EXTINF:-1 tvg-name="甘肃少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/甘肃少儿.png" group-title="☘️甘肃频道",甘肃少儿 +https://hls.gstv.com.cn/49048r/922k96.m3u8 +#EXTINF:-1 tvg-name="白银综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/白银综合.png" group-title="☘️甘肃频道",白银综合 +http://play.kankanlive.com/live/1720408089419110.m3u8 +#EXTINF:-1 tvg-name="秦安综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/秦安综合.png" group-title="☘️甘肃频道",秦安综合 +rtmp://play.kankanlive.com/live/1680577080200944 +#EXTINF:-1 tvg-name="西和综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/西和综合.png" group-title="☘️甘肃频道",西和综合 +https://play.kankanlive.com/live/1659926941626981.m3u8 +#EXTINF:-1 tvg-name="西峰综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/西峰综合.png" group-title="☘️甘肃频道",西峰综合 +https://play.kankanlive.com/live/1683944827526991.m3u8 +#EXTINF:-1 tvg-name="酒泉综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/酒泉综合.png" group-title="☘️甘肃频道",酒泉综合 +https://3ee63cd9178a070a2db29f77915c49d4.livehwc3.cn/play.kankanlive.com/live/1702033926169975.m3u8 +#EXTINF:-1 tvg-name="靖远综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/靖远综合.png" group-title="☘️甘肃频道",靖远综合 +http://play.kankanlive.com/live/1692005762394912.m3u8 +#EXTINF:-1 tvg-name="哈密二套" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/哈密二套.png" group-title="☘️新疆频道",哈密二套 +https://tvpull.hmgbtv.com/hmtv/channel108259412c6a6711/playlist.m3u8 +#EXTINF:-1 tvg-name="哈密三套" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/哈密三套.png" group-title="☘️新疆频道",哈密三套 +https://tvpull.hmgbtv.com/hmtv/channelfb0e5c505477aa44/playlist.m3u8 +#EXTINF:-1 tvg-name="伊犁汉语综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/伊犁汉语综合.png" group-title="☘️新疆频道",伊犁汉语综合 +http://110.153.180.106:55555/out_1/index.m3u8 +#EXTINF:-1 tvg-name="伊犁汉语综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/伊犁汉语综合.png" group-title="☘️新疆频道",伊犁汉语综合 +http://110.153.180.106:55555/out_1/index.m3u8?zxinjd +#EXTINF:-1 tvg-name="伊犁维吾尔" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/伊犁维吾尔.png" group-title="☘️新疆频道",伊犁维吾尔 +http://110.153.180.106:55555/out_2/index.m3u8 +#EXTINF:-1 tvg-name="伊犁哈萨克" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/伊犁哈萨克.png" group-title="☘️新疆频道",伊犁哈萨克 +http://110.153.180.106:55555/out_3/index.m3u8?zxinjd +#EXTINF:-1 tvg-name="伊犁经济法制" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/伊犁经济法制.png" group-title="☘️新疆频道",伊犁经济法制 +http://110.153.180.106:55555/out_4/index.m3u8 +#EXTINF:-1 tvg-name="伊犁经济法制" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/伊犁经济法制.png" group-title="☘️新疆频道",伊犁经济法制 +http://110.153.180.106:55555/out_4/index.m3u8?zxinjd +#EXTINF:-1 tvg-name="兵团八师石河子新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/兵团八师石河子新闻综合.png" group-title="☘️新疆频道",兵团八师石河子新闻综合 +http://124.88.144.73:1935/live/xwzh/playlist.m3u8?zxinjd +#EXTINF:-1 tvg-name="新疆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/新疆卫视.png" group-title="☘️新疆频道",新疆卫视 +http://z.b.bkpcp.top/m.php?id=xjws +#EXTINF:-1 tvg-name="新疆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/新疆卫视.png" group-title="☘️新疆频道",新疆卫视 +http://j.x.bkpcp.top/jx/XJWS +#EXTINF:-1 tvg-name="新疆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/新疆卫视.png" group-title="☘️新疆频道",新疆卫视 +http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225635/index.m3u8 +#EXTINF:-1 tvg-name="新疆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/新疆卫视.png" group-title="☘️新疆频道",新疆卫视 +http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225725/2/index.m3u8 +#EXTINF:-1 tvg-name="新疆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/新疆卫视.png" group-title="☘️新疆频道",新疆卫视 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221226460/index.m3u8 +#EXTINF:-1 tvg-name="新疆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/新疆卫视.png" group-title="☘️新疆频道",新疆卫视 +http://[2409:8087:1a0b:df::4005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225635/index.m3u8 +#EXTINF:-1 tvg-name="新疆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/新疆卫视.png" group-title="☘️新疆频道",新疆卫视 +http://[2409:8087:2001:20:2800:0:df6e:eb0b]/wh7f454c46tw993550557_162751766/ott.mobaibox.com/PLTV/3/224/3221228290/index.m3u8?icpid=3&RTS=1668604377&from=40&popid=40&hms_devid=2038&prioritypopid=40&vqe=3 +#EXTINF:-1 tvg-name="新疆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/新疆卫视.png" group-title="☘️新疆频道",新疆卫视 +http://[2409:8087:1e03:21::2]:6060/cms001/ch00000090990000001065/index.m3u8 +#EXTINF:-1 tvg-name="新疆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/新疆卫视.png" group-title="☘️新疆频道",新疆卫视 +http://[2409:8087:3428:20:500::100f]:6610/PLTV/88888888/224/3221227248/index.m3u8?servicetype=1&IASHttpSessionId=RR423820220409134714119178 +#EXTINF:-1 tvg-name="新疆卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/新疆卫视.png" group-title="☘️新疆频道",新疆卫视 +http://[2409:8087:3428:20:500::100f]:6610/PLTV/88888888/224/3221225852/index.m3u8?servicetype=1&IASHttpSessionId=RR423820220409134714119178 +#EXTINF:-1 tvg-name="石河子教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/石河子教育.png" group-title="☘️新疆频道",石河子教育 +rtmp://124.88.144.73:1935/live/jiaoyu +#EXTINF:-1 tvg-name="石河子新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/石河子新闻综合.png" group-title="☘️新疆频道",石河子新闻综合 +rtmp://124.88.144.73:1935/live/xwzh +#EXTINF:-1 tvg-name="石河子新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/石河子新闻综合.png" group-title="☘️新疆频道",石河子新闻综合 +http://124.88.144.73:1935/live/xwzh/playlist.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 tvg-name="山东教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/山东教育.png" group-title="☘️山东频道",山东教育 +https://test1.live.sdetv.com.cn/live/dianshizhibo/playlist.m3u8 +#EXTINF:-1 tvg-name="山东教育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/山东教育.png" group-title="☘️山东频道",山东教育 +http://z.b.bkpcp.top/m.php?id=sdjy +#EXTINF:-1 tvg-name="青州综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/青州综合.png" group-title="☘️山东频道",青州综合 +http://m3u8-channel.lytv.tv/nmip-media/channellive/channel113571/playlist.m3u8 +#EXTINF:-1 tvg-name="临沂公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/临沂公共.png" group-title="☘️山东频道",临沂公共 +https://m3u8-channel.lytv.tv/nmip-media/channellive/channel113571/playlist.m3u8 +#EXTINF:-1 tvg-name="临沂农科" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/临沂农科.png" group-title="☘️山东频道",临沂农科 +https://m3u8-channel.lytv.tv/nmip-media/channellive/channel115062/playlist.m3u8 +#EXTINF:-1 tvg-name="临沂新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/临沂新闻综合.png" group-title="☘️山东频道",临沂新闻综合 +https://m3u8-channel.lytv.tv/nmip-media/channellive/channel111841/playlist.m3u8 +#EXTINF:-1 tvg-name="五台综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/五台综合.png" group-title="☘️山西频道",五台综合 +https://568slnjf.live.sxmty.com/live/hls/90c8b2efeb164cc0a6c2409eed668d6b/f77cbb89ec57435b9ba4c47589c16e4f-1.m3u8 +#EXTINF:-1 tvg-name="五台综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/五台综合.png" group-title="☘️山西频道",五台综合 +https://568slnjf.live.sxmty.com/live/hls/90c8b2efeb164cc0a6c2409eed668d6b/f77cbb89ec57435b9ba4c47589c16e4f-1.m3u8?zshanxd +#EXTINF:-1 tvg-name="五台综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/五台综合.png" group-title="☘️山西频道",五台综合 +https://568slnjf.live.sxmty.com/live/hls/90c8b2efeb164cc0a6c2409eed668d6b/f77cbb89ec57435b9ba4c47589c16e4f-1.m3u8?zshanxd&quot; +#EXTINF:-1 tvg-name="古县综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/古县综合.png" group-title="☘️山西频道",古县综合 +https://l2fpdktp.live.sxmty.com/live/hls/e4c3b363cc4549788e2d983f403e07db/d99ce1eb686e41b9afc888110bd95aa7.m3u8?zshanxd +#EXTINF:-1 tvg-name="太谷新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/太谷新闻综合.png" group-title="☘️山西频道",太谷新闻综合 +https://p2.vzan.com/slowlive/596867413819827251/live.m3u8?zbid=1725814272&tpid=1516989100&type=0 +#EXTINF:-1 tvg-name="定襄综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/定襄综合.png" group-title="☘️山西频道",定襄综合 +http://lbyzztfe.live.sxmty.com/live/hls/645ff4c60e0a49f0a203abbd73dd8be9/0720e665f10f48e98c9639f4f492fb4a-1.m3u8?zshanxd +#EXTINF:-1 tvg-name="平遥新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/平遥新闻综合.png" group-title="☘️山西频道",平遥新闻综合 +https://tntgjhjb.live.sxmty.com/live/hls/3a4585ac11ec4e1bb07b419101b370c3/baf63e2b313440c2a25d7859f9b73b05-1.m3u8?zshanxd +#EXTINF:-1 tvg-name="怀仁综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/怀仁综合.png" group-title="☘️山西频道",怀仁综合 +https://1yp7hc5p.live.sxmty.com/live/hls/bff8529922344209985b6e49baa9555a/efa2543628fc4a7ea93d3d6c975f77dc-1.m3u8 +#EXTINF:-1 tvg-name="怀仁综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/怀仁综合.png" group-title="☘️山西频道",怀仁综合 +http://1yp7hc5p.live.sxmty.com/live/hls/bff8529922344209985b6e49baa9555a/efa2543628fc4a7ea93d3d6c975f77dc.m3u8?zshanxd +#EXTINF:-1 tvg-name="武乡新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/武乡新闻综合.png" group-title="☘️山西频道",武乡新闻综合 +http://uzoiczhh.live.sxmty.com/live/hls/0d41f1480c4042d49927858f01fde707/53130407737b417b9a6259b57246bae3.m3u8?zshanxd +#EXTINF:-1 tvg-name="汾西综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/汾西综合.png" group-title="☘️山西频道",汾西综合 +https://qmmqvzoz.live.sxmty.com/live/hls/f24f8a390c084386a564074c9260100c/be3fdf07606145739ab2c4b80fe0136a.m3u8?zshanxd +#EXTINF:-1 tvg-name="祁县新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/祁县新闻综合.png" group-title="☘️山西频道",祁县新闻综合 +http://ggpagerl.live.sxmty.com/live/hls/b350dc1ac5da45c2b2233f6eb122ddf4/49d3766c7f204685a2a8f027b234c33d.m3u8?zshanxd +#EXTINF:-1 tvg-name="阳曲综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/阳曲综合.png" group-title="☘️山西频道",阳曲综合 +https://83awgyp5.live.sxmty.com/live/hls/6f6f4b36f9bd42628b718b595ba507ed/724b7e8907a8414d873eb2a2f69bfa18.m3u8?zshanxd +#EXTINF:-1 tvg-name="黄山新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/黄山新闻综合.png" group-title="☘️安徽频道",黄山新闻综合 +http://hslive.hsnewsnet.com/lsdream/hve9Wjs/1000/live.m3u8 +#EXTINF:-1 tvg-name="黄山公共生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/黄山公共生活.png" group-title="☘️安徽频道",黄山公共生活 +http://hslive.hsnewsnet.com/lsdream/iY92ady/1000/live.m3u8?zanhd +#EXTINF:-1 tvg-name="祁门综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/祁门综合.png" group-title="☘️安徽频道",祁门综合 +rtmp://tv.qmxrmt.com/chan/ch1?zanhd#rtmp://tv.qmxrmt.com/chan/ch1 +#EXTINF:-1 tvg-name="滁州科教" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/滁州科教.png" group-title="☘️安徽频道",滁州科教 +http://live.cztv.cc:85/live/sjpd.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] +#EXTINF:-1 tvg-name="滁州新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/滁州新闻综合.png" group-title="☘️安徽频道",滁州新闻综合 +http://live.cztv.cc:85/live/xwpd.m3u8 +#EXTINF:-1 tvg-name="滁州市广播电视台 新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/滁州市广播电视台 新闻综合.png" group-title="☘️安徽频道",滁州市广播电视台 新闻综合 +http://live.cztv.cc:85/live/xwpd.m3u8 +#EXTINF:-1 tvg-name="滁州公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/滁州公共.png" group-title="☘️安徽频道",滁州公共 +http://live.cztv.cc:85/live/ggpd.m3u8?zanhd#http://live.cztv.cc:85/live/ggpd.m3u8 +#EXTINF:-1 tvg-name="广德生活" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/广德生活.png" group-title="☘️安徽频道",广德生活 +https://live.gdtv.ah.cn/live/newsTV.m3u8 +#EXTINF:-1 tvg-name="宿州新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/宿州新闻综合.png" group-title="☘️安徽频道",宿州新闻综合 +rtmp://live.ahsz.tv/video?token=5ee5b1c3db702657f412ed18d270cdb7/s10001-szzh +#EXTINF:-1 tvg-name="亳州新闻" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/亳州新闻.png" group-title="☘️安徽频道",亳州新闻 +http://zbbf2.ahbztv.com/live/416.m3u8?zanhd +#EXTINF:-1 tvg-name="亳州农村" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/亳州农村.png" group-title="☘️安徽频道",亳州农村 +http://zbbf2.ahbztv.com/live/418.m3u8 +#EXTINF:-1 tvg-name="延边卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/延边卫视.png" group-title="☘️吉林频道",延边卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227045/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7Eq0D3NdTUN7FuRzr8eJsbQA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="延边卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/延边卫视.png" group-title="☘️吉林频道",延边卫视 +http://[2409:8087:1a0b:df::4020]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226516/index.m3u8 +#EXTINF:-1 tvg-name="延边卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/延边卫视.png" group-title="☘️吉林频道",延边卫视 +http://[2409:8087:1e03:21::2]:6060/cms001/ch00000090990000001470/index.m3u8 +#EXTINF:-1 tvg-name="延边卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/延边卫视.png" group-title="☘️吉林频道",延边卫视 +http://[2409:8087:1a0b:df::4020]:80/ottrrs.hl.chinamobile.com/TVOD/88888888/224/3221226516/index.m3u8 +#EXTINF:-1 tvg-name="延边卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/延边卫视.png" group-title="☘️吉林频道",延边卫视 +http://otttv.bj.chinamobile.com/PLTV/88888888/224/3221227045/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7Eq0D3NdTUN7FuRzr8eJsbQA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="延边卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/延边卫视.png" group-title="☘️吉林频道",延边卫视 +http://tvbox6.com/tv/bfgd.php?id=117 +#EXTINF:-1 tvg-name="延边卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/延边卫视.png" group-title="☘️吉林频道",延边卫视 +http://ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226516/index.m3u8 +#EXTINF:-1 tvg-name="长白朝语" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/长白朝语.png" group-title="☘️吉林频道",长白朝语 +http://hplayer1.juyun.tv:80/camera/11344136.m3u8 +#EXTINF:-1 tvg-name="文山州公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/文山州公共.png" group-title="☘️云南频道",文山州公共 +http://m3u8.channel.wsrtv.com.cn/cms/videos/nmip-media/channellive/channel8/playlist.m3u8 +#EXTINF:-1 tvg-name="文山州公共" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/文山州公共.png" group-title="☘️云南频道",文山州公共 +http://m3u8.channel.wsrtv.com.cn/cms/videos/nmip-media/channellive/channel8/playlist.m3u8?zyund +#EXTINF:-1 tvg-name="文山州新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/文山州新闻综合.png" group-title="☘️云南频道",文山州新闻综合 +http://m3u8.channel.wsrtv.com.cn/cms/videos/nmip-media/channellive/channel7/playlist.m3u8?zyund +#EXTINF:-1 tvg-name="易门综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/易门综合.png" group-title="☘️云南频道",易门综合 +https://zb-live.ynurl.com/yimen/3b75a2f9-7941-46b7-992d-a9796fbca5fe.m3u8 +#EXTINF:-1 tvg-name="陇川综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/陇川综合.png" group-title="☘️云南频道",陇川综合 +https://zb-live.ynurl.com/longchuan/58f88df3-605e-4c57-865c-8e8f85241ca1.m3u8 +#EXTINF:-1 tvg-name="安多卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/安多卫视.png" group-title="☘️青海频道",安多卫视 +http://[2409:8087:1a0b:df::4007]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225659/index.m3u8 +#EXTINF:-1 tvg-name="安多卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/安多卫视.png" group-title="☘️青海频道",安多卫视 +http://[2409:8087:1a0b:df::4007]:80/ottrrs.hl.chinamobile.com/TVOD/88888888/224/3221225659/index.m3u8 +#EXTINF:-1 tvg-name="安多卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/安多卫视.png" group-title="☘️青海频道",安多卫视 +http://ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225659/index.m3u8 +#EXTINF:-1 tvg-name="安多卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/安多卫视.png" group-title="☘️青海频道",安多卫视 +https://liveout.xntv.tv/a65jur/96iln2.m3u8 +#EXTINF:-1 tvg-name="安多卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/安多卫视.png" group-title="☘️青海频道",安多卫视 +https://liveout.xntv.tv/a65jur/90p2i1.m3u8?zqinghd +#EXTINF:-1 tvg-name="安多卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/安多卫视.png" group-title="☘️青海频道",安多卫视 +rtmp://liveout.xntv.tv/a65jur/96iln2 +#EXTINF:-1 tvg-name="西宁新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/西宁新闻综合.png" group-title="☘️青海频道",西宁新闻综合 +https://liveout.xntv.tv/a65jur/90p2i1.m3u8?zqinghd#https://liveout.xntv.tv/a65jur/90p2i1.m3u8#http://dtrmlive.qhdtrm.cn/xnds/sd/live.m3u8 +#EXTINF:-1 tvg-name="西宁新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/西宁新闻综合.png" group-title="☘️青海频道",西宁新闻综合 +https://liveout.xntv.tv/a65jur/96iln2.m3u8?zqinghd +#EXTINF:-1 tvg-name="西宁生活服务" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/西宁生活服务.png" group-title="☘️青海频道",西宁生活服务 +https://liveout.xntv.tv/a65jur/90p2i1.m3u8 +#EXTINF:-1 tvg-name="黑龙江文体" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/黑龙江文体.png" group-title="☘️黑龙江频道",黑龙江文体 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226239/index.m3u8 +#EXTINF:-1 tvg-name="黑龙江文体" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/黑龙江文体.png" group-title="☘️黑龙江频道",黑龙江文体 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221226239/index.m3u8 +#EXTINF:-1 tvg-name="黑龙江新闻法治" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/黑龙江新闻法治.png" group-title="☘️黑龙江频道",黑龙江新闻法治 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226330/index.m3u8 +#EXTINF:-1 tvg-name="黑龙江影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/黑龙江影视.png" group-title="☘️黑龙江频道",黑龙江影视 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226298/index.m3u8 +#EXTINF:-1 tvg-name="黑龙江影视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/黑龙江影视.png" group-title="☘️黑龙江频道",黑龙江影视 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221226298/index.m3u8 +#EXTINF:-1 tvg-name="黑龙江都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/黑龙江都市.png" group-title="☘️黑龙江频道",黑龙江都市 +http://[2409:8087:1a01:df::4055]:80/TVOD/88888888/224/3221225969/main.m3u8 +#EXTINF:-1 tvg-name="黑龙江都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/黑龙江都市.png" group-title="☘️黑龙江频道",黑龙江都市 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226301/index.m3u8 +#EXTINF:-1 tvg-name="黑龙江都市" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/黑龙江都市.png" group-title="☘️黑龙江频道",黑龙江都市 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221226301/index.m3u8 +#EXTINF:-1 tvg-name="黑龙江少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/黑龙江少儿.png" group-title="☘️黑龙江频道",黑龙江少儿 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226304/index.m3u8 +#EXTINF:-1 tvg-name="黑龙江少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/黑龙江少儿.png" group-title="☘️黑龙江频道",黑龙江少儿 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221226304/index.m3u8 +#EXTINF:-1 tvg-name="黑龙江科教" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/黑龙江科教.png" group-title="☘️黑龙江频道",黑龙江科教 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221226242/index.m3u8 +#EXTINF:-1 tvg-name="鹤岗新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/鹤岗新闻综合.png" group-title="☘️黑龙江频道",鹤岗新闻综合 +http://[2409:8087:1a01:df::4059]:80/TVOD/88888888/224/3221226073/main.m3u8 +#EXTINF:-1 tvg-name="鹤岗新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/鹤岗新闻综合.png" group-title="☘️黑龙江频道",鹤岗新闻综合 +http://[2409:8087:1a01:df::4060]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226534/index.m3u8 +#EXTINF:-1 tvg-name="佳木斯新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/佳木斯新闻综合.png" group-title="☘️黑龙江频道",佳木斯新闻综合 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226451/index.m3u8 +#EXTINF:-1 tvg-name="齐齐哈尔新闻综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/齐齐哈尔新闻综合.png" group-title="☘️黑龙江频道",齐齐哈尔新闻综合 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226437/index.m3u8 +#EXTINF:-1 tvg-name="齐齐哈尔经济法制" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/齐齐哈尔经济法制.png" group-title="☘️黑龙江频道",齐齐哈尔经济法制 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226555/index.m3u8 +#EXTINF:-1 tvg-name="双鸭山综合" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/双鸭山综合.png" group-title="☘️黑龙江频道",双鸭山综合 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226529/index.m3u8 +#EXTINF:-1 tvg-name="CHC家庭影院" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC家庭影院.png" group-title="🎬电影频道",CHC家庭影院 +http://42.238.243.56:8012/rtp/225.1.4.209:1262 +#EXTINF:-1 tvg-name="CHC家庭影院" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC家庭影院.png" group-title="🎬电影频道",CHC家庭影院 +http://ndnas.top:3300/udp/225.1.4.209:1262 +#EXTINF:-1 tvg-name="CHC家庭影院" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC家庭影院.png" group-title="🎬电影频道",CHC家庭影院 +http://122.189.103.90:8010/rtp/228.0.0.211:6108 +#EXTINF:-1 tvg-name="CHC家庭影院" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC家庭影院.png" group-title="🎬电影频道",CHC家庭影院 +http://qjrhc.jydjd.top:2911/udp/224.1.100.149:11111 +#EXTINF:-1 tvg-name="CHC家庭影院" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC家庭影院.png" group-title="🎬电影频道",CHC家庭影院 +http://gat.bkpcp.top/ymg.php?id=jtyy +#EXTINF:-1 tvg-name="CHC家庭影院" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC家庭影院.png" group-title="🎬电影频道",CHC家庭影院 +http://eastscreen.tv/ooooo.php +#EXTINF:-1 tvg-name="CHC家庭影院" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC家庭影院.png" group-title="🎬电影频道",CHC家庭影院 +http://[2409:8087:4c0a:22:1::11]:6410/170000001115/UmaiCHAN63807601b19dd/index.m3u8?m3u8_level=2 +#EXTINF:-1 tvg-name="CHC家庭影院" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC家庭影院.png" group-title="🎬电影频道",CHC家庭影院 +http://eastscreen.tv/ooooo.php?id=chcjt +#EXTINF:-1 tvg-name="CHC家庭影院" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC家庭影院.png" group-title="🎬电影频道",CHC家庭影院 +http://sport.pendy.dpdns.org/migu/644368373?token=BCDxUPC2aE0y0iz8JYzYhWA21b8DBPXm4Tw9nHe0T-ftD1MRmsBCXZPPiHXeDz7cNybVmmXGazeeaHKpxyYgEA +#EXTINF:-1 tvg-name="CHC家庭影院" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC家庭影院.png" group-title="🎬电影频道",CHC家庭影院 +http://z.b.bkpcp.top/m.php?id=jtyy +#EXTINF:-1 tvg-name="CHC动作电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC动作电影.png" group-title="🎬电影频道",CHC动作电影 +http://ndnas.top:3300/udp/225.1.4.208:1261 +#EXTINF:-1 tvg-name="CHC动作电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC动作电影.png" group-title="🎬电影频道",CHC动作电影 +http://42.238.243.56:8012/rtp/225.1.4.208:1261 +#EXTINF:-1 tvg-name="CHC动作电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC动作电影.png" group-title="🎬电影频道",CHC动作电影 +http://ds920.dsmynas.net:5555/rtp/226.0.2.94:8012%24%E5%B1%B1%E8%A5%BFuni2+ +#EXTINF:-1 tvg-name="CHC动作电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC动作电影.png" group-title="🎬电影频道",CHC动作电影 +http://122.189.103.90:8010/rtp/228.0.0.212:6108 +#EXTINF:-1 tvg-name="CHC动作电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC动作电影.png" group-title="🎬电影频道",CHC动作电影 +http://z.b.bkpcp.top/m.php +#EXTINF:-1 tvg-name="CHC动作电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC动作电影.png" group-title="🎬电影频道",CHC动作电影 +http://eastscreen.tv/ooooo.php +#EXTINF:-1 tvg-name="CHC动作电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC动作电影.png" group-title="🎬电影频道",CHC动作电影 +http://[2409:8087:1a01:df::4021]:80/TVOD/88888888/224/3221225555/main.m3u8 +#EXTINF:-1 tvg-name="CHC动作电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC动作电影.png" group-title="🎬电影频道",CHC动作电影 +http://[2409:8087:4c0a:22:1::11]:6410/170000001115/UmaiCHAN6380763222d00/index.m3u8?m3u8_level=2 +#EXTINF:-1 tvg-name="CHC动作电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC动作电影.png" group-title="🎬电影频道",CHC动作电影 +http://eastscreen.tv/ooooo.php?id=chcdz +#EXTINF:-1 tvg-name="CHC动作电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CHC动作电影.png" group-title="🎬电影频道",CHC动作电影 +https://stream.freetv.fun/2f2e29b8759a2458730dc1f3686024472691952a50e787fe075944d0cb17f36e.ctv +#EXTINF:-1 tvg-name="淘剧场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/淘剧场.png" group-title="🎬电影频道",淘剧场 +http://dsj.motem.top:8880/bptv/10000100000000050000000003887497.m3u8 +#EXTINF:-1 tvg-name="淘剧场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/淘剧场.png" group-title="🎬电影频道",淘剧场 +http://[2409:8087:1:20:20::26]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226553/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EQaJ92NID2SpQlY6_VJVogg%7E_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNOuQYJeiYEeFWTkFfE86Vq-%2CEND +#EXTINF:-1 tvg-name="淘娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/淘娱乐.png" group-title="🎬电影频道",淘娱乐 +http://dsj.motem.top:8880/bptv/10000100000000050000000003887499.m3u8 +#EXTINF:-1 tvg-name="淘娱乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/淘娱乐.png" group-title="🎬电影频道",淘娱乐 +http://[2409:8087:1:20:20::2c]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226551/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7Ex0efg9fpenP8E8lWJUb5Lg%7E_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNNg3bzRax0E9tLmO9xgXVx8%2CEND +#EXTINF:-1 tvg-name="淘电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/淘电影.png" group-title="🎬电影频道",淘电影 +http://dsj.motem.top:8880/bptv/10000100000000050000000003887498.m3u8 +#EXTINF:-1 tvg-name="淘电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/淘电影.png" group-title="🎬电影频道",淘电影 +http://yc.myds.me:35455/bptv/10000100000000050000000003887498.m3u8 +#EXTINF:-1 tvg-name="淘电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/淘电影.png" group-title="🎬电影频道",淘电影 +http://[2409:8087:1:20:20::26]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226552/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EXOsrWMA-UCdUl1hQSR9EKw%7E_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNNg3bzRax0E9tLmO9xgXVx8%2CEND +#EXTINF:-1 tvg-name="NewTV惊悚悬疑" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/NewTV惊悚悬疑.png" group-title="🎬电影频道",NewTV惊悚悬疑 +http://ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225665/index.m3u8 +#EXTINF:-1 tvg-name="黑莓电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/黑莓电影.png" group-title="🎬电影频道",黑莓电影 +http://[2409:8087:1:20:20::27]/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226939/1.m3u8 +#EXTINF:-1 tvg-name="黑莓电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/黑莓电影.png" group-title="🎬电影频道",黑莓电影 +http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225764/2/index.m3u8 +#EXTINF:-1 tvg-name="黑莓电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/黑莓电影.png" group-title="🎬电影频道",黑莓电影 +http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888888/224/3221225769/2/index.m3u8 +#EXTINF:-1 tvg-name="黑莓电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/黑莓电影.png" group-title="🎬电影频道",黑莓电影 +http://[2409:8087:1a01:df::4001]:80/TVOD/88888888/224/3221225681/main.m3u8 +#EXTINF:-1 tvg-name="黑莓电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/黑莓电影.png" group-title="🎬电影频道",黑莓电影 +http://[2409:8087:1a0b:df::4014]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225743/index.m3u8 +#EXTINF:-1 tvg-name="黑莓电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/黑莓电影.png" group-title="🎬电影频道",黑莓电影 +http://[2409:8087:1a0b:df::4014]:80/ottrrs.hl.chinamobile.com/TVOD/88888888/224/3221225743/index.m3u8 +#EXTINF:-1 tvg-name="黑莓电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/黑莓电影.png" group-title="🎬电影频道",黑莓电影 +http://[2409:8087:2001:20:2800:0:df6e:eb08]/ott.mobaibox.com/PLTV/3/224/3221227520/index.m3u8 +#EXTINF:-1 tvg-name="黑莓电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/黑莓电影.png" group-title="🎬电影频道",黑莓电影 +http://otttv.bj.chinamobile.com/PLTV/88888888/224/3221226939/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EkBVQL3MtyiM0GGQzuPjqAQ%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="黑莓电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/黑莓电影.png" group-title="🎬电影频道",黑莓电影 +http://ottrrs.hl.chinamobile.com/TVOD/88888888/224/3221225743/1.m3u8 +#EXTINF:-1 tvg-name="黑莓电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/黑莓电影.png" group-title="🎬电影频道",黑莓电影 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226939/1.m3u8 +#EXTINF:-1 tvg-name="靖天映画" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/靖天映画.png" group-title="🎬电影频道",靖天映画 +https://tv.iill.top/litv/4gtv-4gtv055 +#EXTINF:-1 tvg-name="靖天戏剧" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/靖天戏剧.png" group-title="🎬电影频道",靖天戏剧 +http://serv00.bkpcp.top/litv3.php?id=4gtv-4gtv058 +#EXTINF:-1 tvg-name="靖天戏剧" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/靖天戏剧.png" group-title="🎬电影频道",靖天戏剧 +https://tv.iill.top/litv/4gtv-4gtv058 +#EXTINF:-1 tvg-name="IPTV经典电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/IPTV经典电影.png" group-title="🎬电影频道",IPTV经典电影 +http://43.138.0.72:35455/yy/1382754187 +#EXTINF:-1 tvg-name="天映经典" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/天映经典.png" group-title="🎬电影频道",天映经典 +https://cdn9.163189.xyz/smt1.1.php +#EXTINF:-1 tvg-name="星空卫视" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/星空卫视.png" group-title="🎬电影频道",星空卫视 +http://wouu.net:9977/udp/239.93.0.156:2193 +#EXTINF:-1 tvg-name="东森电影" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/东森电影.png" group-title="🎬电影频道",东森电影 +http://mytv.cdn.com.mp/live/dsdy/stream.m3u8 +#EXTINF:-1 tvg-name="咪咕直播2" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/咪咕直播2.png" group-title="🎥咪咕直播",咪咕直播2 +http://[2409:8087:5e00:24::2d]:6610/000000001000/1/3000000001000005969/index.m3u8?channel-id=FifastbLive&Contentid=3000000001000005969&livemode=1&stbId=YanG-1989 +#EXTINF:-1 tvg-name="咪咕直播3" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/咪咕直播3.png" group-title="🎥咪咕直播",咪咕直播3 +http://[2409:8087:5e00:24::2d]:6610/000000001000/1/3000000001000007218/index.m3u8?channel-id=FifastbLive&Contentid=3000000001000007218&livemode=1&stbId=YanG-1989 +#EXTINF:-1 tvg-name="咪咕直播4" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/咪咕直播4.png" group-title="🎥咪咕直播",咪咕直播4 +http://[2409:8087:5e00:24::2d]:6610/000000001000/1/3000000001000008001/index.m3u8?channel-id=FifastbLive&Contentid=3000000001000008001&livemode=1&stbId=YanG-1989 +#EXTINF:-1 tvg-name="咪咕直播5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/咪咕直播5.png" group-title="🎥咪咕直播",咪咕直播5 +http://[2409:8087:5e00:24::2d]:6610/000000001000/1/3000000001000008176/index.m3u8?channel-id=FifastbLive&Contentid=3000000001000008176&livemode=1&stbId=YanG-1989 +#EXTINF:-1 tvg-name="咪咕直播6" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/咪咕直播6.png" group-title="🎥咪咕直播",咪咕直播6 +http://[2409:8087:5e00:24::2d]:6610/000000001000/1/3000000001000008379/index.m3u8?channel-id=FifastbLive&Contentid=3000000001000008379&livemode=1&stbId=YanG-1989 +#EXTINF:-1 tvg-name="咪咕直播7" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/咪咕直播7.png" group-title="🎥咪咕直播",咪咕直播7 +http://[2409:8087:5e00:24::2d]:6610/000000001000/1/3000000001000010129/index.m3u8?channel-id=FifastbLive&Contentid=3000000001000010129&livemode=1&stbId=YanG-1989 +#EXTINF:-1 tvg-name="咪咕直播8" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/咪咕直播8.png" group-title="🎥咪咕直播",咪咕直播8 +http://[2409:8087:5e00:24::2d]:6610/000000001000/1/3000000001000010948/index.m3u8?channel-id=FifastbLive&Contentid=3000000001000010948&livemode=1&stbId=YanG-1989 +#EXTINF:-1 tvg-name="咪咕直播9" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/咪咕直播9.png" group-title="🎥咪咕直播",咪咕直播9 +http://[2409:8087:5e00:24::2d]:6610/000000001000/1/3000000001000028638/index.m3u8?channel-id=FifastbLive&Contentid=3000000001000028638&livemode=1&stbId=YanG-1989 +#EXTINF:-1 tvg-name="咪咕直播10" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/咪咕直播10.png" group-title="🎥咪咕直播",咪咕直播10 +http://[2409:8087:5e00:24::2d]:6610/000000001000/1/3000000001000031494/index.m3u8?channel-id=FifastbLive&Contentid=3000000001000031494&livemode=1&stbId=YanG-1989 +#EXTINF:-1 tvg-name="咪咕直播11" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/咪咕直播11.png" group-title="🎥咪咕直播",咪咕直播11 +http://[2409:8087:5e00:24::2d]:6610/000000001000/1/3000000010000000097/index.m3u8?channel-id=FifastbLive&Contentid=3000000010000000097&livemode=1&stbId=YanG-1989 +#EXTINF:-1 tvg-name="咪咕直播12" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/咪咕直播12.png" group-title="🎥咪咕直播",咪咕直播12 +http://[2409:8087:5e00:24::2d]:6610/000000001000/1/3000000010000002019/index.m3u8?channel-id=FifastbLive&Contentid=3000000010000002019&livemode=1&stbId=YanG-1989 +#EXTINF:-1 tvg-name="咪咕直播13" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/咪咕直播13.png" group-title="🎥咪咕直播",咪咕直播13 +http://[2409:8087:5e00:24::2d]:6610/000000001000/1/3000000010000002809/index.m3u8?channel-id=FifastbLive&Contentid=3000000010000002809&livemode=1&stbId=YanG-1989 +#EXTINF:-1 tvg-name="咪咕直播14" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/咪咕直播14.png" group-title="🎥咪咕直播",咪咕直播14 +http://[2409:8087:5e00:24::2d]:6610/000000001000/1/3000000010000003915/index.m3u8?channel-id=FifastbLive&Contentid=3000000010000003915&livemode=1&stbId=YanG-1989 +#EXTINF:-1 tvg-name="咪咕直播15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/咪咕直播15.png" group-title="🎥咪咕直播",咪咕直播15 +http://[2409:8087:5e00:24::2d]:6610/000000001000/1/3000000010000004193/index.m3u8?channel-id=FifastbLive&Contentid=3000000010000004193&livemode=1&stbId=YanG-1989 +#EXTINF:-1 tvg-name="咪咕直播16" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/咪咕直播16.png" group-title="🎥咪咕直播",咪咕直播16 +http://[2409:8087:5e00:24::2d]:6610/000000001000/1/3000000010000005837/index.m3u8?channel-id=FifastbLive&Contentid=3000000010000005837&livemode=1&stbId=YanG-1989 +#EXTINF:-1 tvg-name="咪咕直播17" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/咪咕直播17.png" group-title="🎥咪咕直播",咪咕直播17 +http://[2409:8087:5e00:24::2d]:6610/000000001000/1/3000000010000006077/index.m3u8?channel-id=FifastbLive&Contentid=3000000010000006077&livemode=1&stbId=YanG-1989 +#EXTINF:-1 tvg-name="咪咕直播18" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/咪咕直播18.png" group-title="🎥咪咕直播",咪咕直播18 +http://[2409:8087:5e00:24::2d]:6610/000000001000/1/3000000010000006658/index.m3u8?channel-id=FifastbLive&Contentid=3000000010000006658&livemode=1&stbId=YanG-1989 +#EXTINF:-1 tvg-name="咪咕直播19" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/咪咕直播19.png" group-title="🎥咪咕直播",咪咕直播19 +http://[2409:8087:5e00:24::2d]:6610/000000001000/1/3000000010000009788/index.m3u8?channel-id=FifastbLive&Contentid=3000000010000009788&livemode=1&stbId=YanG-1989 +#EXTINF:-1 tvg-name="咪咕直播20" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/咪咕直播20.png" group-title="🎥咪咕直播",咪咕直播20 +http://[2409:8087:5e00:24::2d]:6610/000000001000/1/3000000010000010833/index.m3u8?channel-id=FifastbLive&Contentid=3000000010000010833&livemode=1&stbId=YanG-1989 +#EXTINF:-1 tvg-name="咪咕直播21" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/咪咕直播21.png" group-title="🎥咪咕直播",咪咕直播21 +http://[2409:8087:5e00:24::2d]:6610/000000001000/1/3000000010000011297/index.m3u8?channel-id=FifastbLive&Contentid=3000000010000011297&livemode=1&stbId=YanG-1989 +#EXTINF:-1 tvg-name="咪咕直播22" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/咪咕直播22.png" group-title="🎥咪咕直播",咪咕直播22 +http://[2409:8087:5e00:24::2d]:6610/000000001000/1/3000000010000011518/index.m3u8?channel-id=FifastbLive&Contentid=3000000010000011518&livemode=1&stbId=YanG-1989 +#EXTINF:-1 tvg-name="咪咕直播23" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/咪咕直播23.png" group-title="🎥咪咕直播",咪咕直播23 +http://[2409:8087:5e00:24::2d]:6610/000000001000/1/3000000010000012558/index.m3u8?channel-id=FifastbLive&Contentid=3000000010000012558&livemode=1&stbId=YanG-1989 +#EXTINF:-1 tvg-name="咪咕直播24" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/咪咕直播24.png" group-title="🎥咪咕直播",咪咕直播24 +http://[2409:8087:5e00:24::2d]:6610/000000001000/1/3000000010000012616/index.m3u8?channel-id=FifastbLive&Contentid=3000000010000012616&livemode=1&stbId=YanG-1989 +#EXTINF:-1 tvg-name="咪咕直播25" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/咪咕直播25.png" group-title="🎥咪咕直播",咪咕直播25 +http://[2409:8087:5e00:24::2d]:6610/000000001000/1/3000000010000015470/index.m3u8?channel-id=FifastbLive&Contentid=3000000010000015470&livemode=1&stbId=YanG-1989 +#EXTINF:-1 tvg-name="咪咕直播26" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/咪咕直播26.png" group-title="🎥咪咕直播",咪咕直播26 +http://[2409:8087:5e00:24::2d]:6610/000000001000/1/3000000010000015560/index.m3u8?channel-id=FifastbLive&Contentid=3000000010000015560&livemode=1&stbId=YanG-1989 +#EXTINF:-1 tvg-name="咪咕直播27" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/咪咕直播27.png" group-title="🎥咪咕直播",咪咕直播27 +http://[2409:8087:5e00:24::2d]:6610/000000001000/1/3000000010000017678/index.m3u8?channel-id=FifastbLive&Contentid=3000000010000017678&livemode=1&stbId=YanG-1989 +#EXTINF:-1 tvg-name="咪咕直播28" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/咪咕直播28.png" group-title="🎥咪咕直播",咪咕直播28 +http://[2409:8087:5e00:24::2d]:6610/000000001000/1/3000000010000019839/index.m3u8?channel-id=FifastbLive&Contentid=3000000010000019839&livemode=1&stbId=YanG-1989 +#EXTINF:-1 tvg-name="咪咕直播29" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/咪咕直播29.png" group-title="🎥咪咕直播",咪咕直播29 +http://[2409:8087:5e00:24::2d]:6610/000000001000/1/3000000010000021904/index.m3u8?channel-id=FifastbLive&Contentid=3000000010000021904&livemode=1&stbId=YanG-1989 +#EXTINF:-1 tvg-name="咪咕直播30" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/咪咕直播30.png" group-title="🎥咪咕直播",咪咕直播30 +http://[2409:8087:5e00:24::2d]:6610/000000001000/1/3000000010000023434/index.m3u8?channel-id=FifastbLive&Contentid=3000000010000023434&livemode=1&stbId=YanG-1989 +#EXTINF:-1 tvg-name="咪咕直播31" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/咪咕直播31.png" group-title="🎥咪咕直播",咪咕直播31 +http://[2409:8087:5e00:24::2d]:6610/000000001000/1/3000000010000025380/index.m3u8?channel-id=FifastbLive&Contentid=3000000010000025380&livemode=1&stbId=YanG-1989 +#EXTINF:-1 tvg-name="咪咕直播32" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/咪咕直播32.png" group-title="🎥咪咕直播",咪咕直播32 +http://[2409:8087:5e00:24::2d]:6610/000000001000/1/3000000010000027691/index.m3u8?channel-id=FifastbLive&Contentid=3000000010000027691&livemode=1&stbId=YanG-1989 +#EXTINF:-1 tvg-name="咪咕直播33" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/咪咕直播33.png" group-title="🎥咪咕直播",咪咕直播33 +http://[2409:8087:5e00:24::2d]:6610/000000001000/1/3000000010000031669/index.m3u8?channel-id=FifastbLive&Contentid=3000000010000031669&livemode=1&stbId=YanG-1989 +#EXTINF:-1 tvg-name="咪咕直播34" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/咪咕直播34.png" group-title="🎥咪咕直播",咪咕直播34 +http://[2409:8087:5e00:24::2d]:6610/000000001000/1/3000000020000011518/index.m3u8?channel-id=FifastbLive&Contentid=3000000020000011518&livemode=1&stbId=YanG-1989 +#EXTINF:-1 tvg-name="咪咕直播35" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/咪咕直播35.png" group-title="🎥咪咕直播",咪咕直播35 +http://[2409:8087:5e00:24::2d]:6610/000000001000/1/3000000020000011519/index.m3u8?channel-id=FifastbLive&Contentid=3000000020000011519&livemode=1&stbId=YanG-1989 +#EXTINF:-1 tvg-name="咪咕直播36" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/咪咕直播36.png" group-title="🎥咪咕直播",咪咕直播36 +http://[2409:8087:5e00:24::2d]:6610/000000001000/1/3000000020000011520/index.m3u8?channel-id=FifastbLive&Contentid=3000000020000011520&livemode=1&stbId=YanG-1989 +#EXTINF:-1 tvg-name="咪咕直播37" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/咪咕直播37.png" group-title="🎥咪咕直播",咪咕直播37 +http://[2409:8087:5e00:24::2d]:6610/000000001000/1/3000000020000011521/index.m3u8?channel-id=FifastbLive&Contentid=3000000020000011521&livemode=1&stbId=YanG-1989 +#EXTINF:-1 tvg-name="咪咕直播38" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/咪咕直播38.png" group-title="🎥咪咕直播",咪咕直播38 +http://[2409:8087:5e00:24::2d]:6610/000000001000/1/3000000020000011522/index.m3u8?channel-id=FifastbLive&Contentid=3000000020000011522&livemode=1&stbId=YanG-1989 +#EXTINF:-1 tvg-name="CCTV5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5.png" group-title="🏀体育频道",CCTV-5 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226469/1.m3u8 +#EXTINF:-1 tvg-name="CCTV5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5.png" group-title="🏀体育频道",CCTV-5 +http://[2409:8087:74f0:22::4]:6410/270000001111/1110000305/index.m3u8 +#EXTINF:-1 tvg-name="CCTV5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5.png" group-title="🏀体育频道",CCTV-5 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221226019/index.m3u8 +#EXTINF:-1 tvg-name="CCTV5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5.png" group-title="🏀体育频道",CCTV-5 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226019/index.m3u8 +#EXTINF:-1 tvg-name="CCTV5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5.png" group-title="🏀体育频道",CCTV-5 +http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226019/index.m3u8 +#EXTINF:-1 tvg-name="CCTV5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5.png" group-title="🏀体育频道",CCTV-5 +http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226019/index.m3u8 +#EXTINF:-1 tvg-name="CCTV5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5.png" group-title="🏀体育频道",CCTV-5 +http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/yinhe/88888888/224/3221226019/index.m3u8 +#EXTINF:-1 tvg-name="CCTV5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5.png" group-title="🏀体育频道",CCTV-5 +http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888910/224/3221225633/index.m3u8 +#EXTINF:-1 tvg-name="CCTV5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5.png" group-title="🏀体育频道",CCTV-5 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226019/index.m3u8 +#EXTINF:-1 tvg-name="CCTV5" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5.png" group-title="🏀体育频道",CCTV-5 +http://[2409:8087:2001:20:2800:0:df6e:eb22]/ott.mobaibox.com/PLTV/4/224/3221228502/index.m3u8 +#EXTINF:-1 tvg-name="CCTV5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5+.png" group-title="🏀体育频道",CCTV-5+ +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226894/1.m3u8 +#EXTINF:-1 tvg-name="CCTV5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5+.png" group-title="🏀体育频道",CCTV-5+ +http://[2409:8087:74f0:22::4]:6410/270000001111/1110000306/index.m3u8 +#EXTINF:-1 tvg-name="CCTV5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5+.png" group-title="🏀体育频道",CCTV-5+ +http://[2409:8087:74f0:22::4]:6410/270000001128/9900000506/index.m3u8 +#EXTINF:-1 tvg-name="CCTV5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5+.png" group-title="🏀体育频道",CCTV-5+ +http://[2409:8087:74f0:22::4]:6410/270000001128/9900000507/index.m3u8 +#EXTINF:-1 tvg-name="CCTV5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5+.png" group-title="🏀体育频道",CCTV-5+ +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221225603/index.m3u8 +#EXTINF:-1 tvg-name="CCTV5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5+.png" group-title="🏀体育频道",CCTV-5+ +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225603/index.m3u8 +#EXTINF:-1 tvg-name="CCTV5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5+.png" group-title="🏀体育频道",CCTV-5+ +http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225603/index.m3u8 +#EXTINF:-1 tvg-name="CCTV5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5+.png" group-title="🏀体育频道",CCTV-5+ +http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888910/224/3221225706/index.m3u8 +#EXTINF:-1 tvg-name="CCTV5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5+.png" group-title="🏀体育频道",CCTV-5+ +http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221225603/index.m3u8 +#EXTINF:-1 tvg-name="CCTV5+" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV5+.png" group-title="🏀体育频道",CCTV-5+ +http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/yinhe/88888888/224/3221225603/index.m3u8 +#EXTINF:-1 tvg-name="广东体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/广东体育.png" group-title="🏀体育频道",广东体育 +http://cdn2.163189.xyz/live/gdty/stream.m3u8 +#EXTINF:-1 tvg-name="广东体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/广东体育.png" group-title="🏀体育频道",广东体育 +http://cdn2.132.us.kg/live/gdty/stream.m3u8 +#EXTINF:-1 tvg-name="纬来体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/纬来体育.png" group-title="🏀体育频道",纬来体育 +https://smart.pendy.dpdns.org/Smart.php +#EXTINF:-1 tvg-name="五星体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/五星体育.png" group-title="🏀体育频道",五星体育 +http://[2409:8087:5e08:24::15]:6610/000000001000/2000000002000000007/index.m3u8?IAS +#EXTINF:-1 tvg-name="五星体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/五星体育.png" group-title="🏀体育频道",五星体育 +http://[2409:8087:5e08:24::11]:6610/000000001000/2000000002000000007/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000007&IASHttpSessionId=OTT19019320240419154124000281 +#EXTINF:-1 tvg-name="劲爆体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/劲爆体育.png" group-title="🏀体育频道",劲爆体育 +http://z.b.bkpcp.top/m.php?id=jbty +#EXTINF:-1 tvg-name="劲爆体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/劲爆体育.png" group-title="🏀体育频道",劲爆体育 +http://[2409:8087:5e01:24::8]:6610/000000001000/2000000002000000008/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000008&IASHttpSessionId=OTT19019320240419154124000281 +#EXTINF:-1 tvg-name="劲爆体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/劲爆体育.png" group-title="🏀体育频道",劲爆体育 +http://[2409:8087:5e08:24::11]:6610/000000001000/2000000002000000008/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000002000000008&IASHttpSessionId=OTT19019320240419154124000281 +#EXTINF:-1 tvg-name="爱体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/爱体育.png" group-title="🏀体育频道",爱体育 +http://[2409:8087:5e08:24::11]:6610/000000001000/2000000004000000060/index.m3u8 +#EXTINF:-1 tvg-name="爱体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/爱体育.png" group-title="🏀体育频道",爱体育 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000004000000060/index.m3u8 +#EXTINF:-1 tvg-name="爱体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/爱体育.png" group-title="🏀体育频道",爱体育 +http://[2409:8087:5e08:24::12]:6610/000000001000/2000000004000000000/index.m3u8 +#EXTINF:-1 tvg-name="爱体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/爱体育.png" group-title="🏀体育频道",爱体育 +http://[2409:8087:5e08:24::11]:6610/000000001000/2000000004000000060/index.m3u8?stbId=3&livemode=1&HlsProfileId=&channel-id=hnbblive&Contentid=2000000004000000060&IASHttpSessionId=OTT19019320240419154124000281 +#EXTINF:-1 tvg-name="超级体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/超级体育.png" group-title="🏀体育频道",超级体育 +http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225715/index.m3u8 +#EXTINF:-1 tvg-name="超级体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/超级体育.png" group-title="🏀体育频道",超级体育 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226232/1.m3u8 +#EXTINF:-1 tvg-name="超级体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/超级体育.png" group-title="🏀体育频道",超级体育 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226348/1.m3u8 +#EXTINF:-1 tvg-name="超级体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/超级体育.png" group-title="🏀体育频道",超级体育 +http://yc.myds.me:35455/itv/1000000001000009601.m3u8?cdn=ystenlive +#EXTINF:-1 tvg-name="超级体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/超级体育.png" group-title="🏀体育频道",超级体育 +http://ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225715/index.m3u8 +#EXTINF:-1 tvg-name="超级体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/超级体育.png" group-title="🏀体育频道",超级体育 +http://ottrrs.hl.chinamobile.com/TVOD/88888888/224/3221225715/index.m3u8 +#EXTINF:-1 tvg-name="超级体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/超级体育.png" group-title="🏀体育频道",超级体育 +http://[2409:8087:74d9:21::6]:80/270000001128/9900000020/index.m3u8 +#EXTINF:-1 tvg-name="精品体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/精品体育.png" group-title="🏀体育频道",精品体育 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226328/1.m3u8 +#EXTINF:-1 tvg-name="精品体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/精品体育.png" group-title="🏀体育频道",精品体育 +http://ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225674/index.m3u8 +#EXTINF:-1 tvg-name="精品体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/精品体育.png" group-title="🏀体育频道",精品体育 +http://ottrrs.hl.chinamobile.com/TVOD/88888888/224/3221225674/index.m3u8 +#EXTINF:-1 tvg-name="精品体育" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/精品体育.png" group-title="🏀体育频道",精品体育 +http://[2409:8087:74d9:21::6]:80/270000001128/9900000102/index.m3u8 +#EXTINF:-1 tvg-name="睛彩篮球" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/睛彩篮球.png" group-title="🏀体育频道",睛彩篮球 +http://[2409:8087:1a01:df::4055]:80/TVOD/88888888/224/3221225901/main.m3u8 +#EXTINF:-1 tvg-name="睛彩篮球" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/睛彩篮球.png" group-title="🏀体育频道",睛彩篮球 +http://ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226147/index.m3u8 +#EXTINF:-1 tvg-name="睛彩广场舞" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/睛彩广场舞.png" group-title="🏀体育频道",睛彩广场舞 +http://ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226472/index.m3u8 +#EXTINF:-1 tvg-name="风云足球" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/风云足球.png" group-title="🏀体育频道",风云足球 +http://[2409:8087:7001:20:2::3]/dbiptv.sn.chinamobile.com/PLTV/88888893/224/3221226984/index.m3u8 +#EXTINF:-1 tvg-name="魅力足球" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/魅力足球.png" group-title="🏀体育频道",魅力足球 +http://z.b.bkpcp.top/m.php?id=mlzq +#EXTINF:-1 tvg-name="魅力足球" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/魅力足球.png" group-title="🏀体育频道",魅力足球 +http://gat.bkpcp.top/ymg.php?id=mlzq +#EXTINF:-1 tvg-name="天元围棋" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/天元围棋.png" group-title="🏀体育频道",天元围棋 +http://wouu.net:9977/udp/239.93.42.55:5140 +#EXTINF:-1 tvg-name="快乐垂钓" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/快乐垂钓.png" group-title="🏀体育频道",快乐垂钓 +http://[2409:8087:5e08:24::2]:6610/000000001000/5000000011000031206/index.m3u8?channel-id=bestzb&Contentid=5000000011000031206&livemode=1&stbId=3 +#EXTINF:-1 tvg-name="JJ斗地主" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/JJ斗地主.png" group-title="🏀体育频道",JJ斗地主 +http://tc-tct.douyucdn2.cn/dyliveflv1a/488743rAHScWyyII_2000.m3u8?wsAuth=fd695c444eeee99cc6122ed396c805ba&token=cpn-androidmpro-0-488743-df8b1830ef2e6ce156759645768df95bf77749da61fcc901&logo=0&expire=0&did=d010b07dcb997ada9934081c873542f0&origin=tct&vhost=play2 +#EXTINF:-1 tvg-name="JJ斗地主" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/JJ斗地主.png" group-title="🏀体育频道",JJ斗地主 +https://lunbo.freetv.top/douyu/488743 +#EXTINF:-1 tvg-name="动漫秀场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/动漫秀场.png" group-title="🪁动画频道",动漫秀场 +http://[2409:8087:1e03:21::42]:6610/cms001/ch00000090990000001196/index.m3u8 +#EXTINF:-1 tvg-name="动漫秀场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/动漫秀场.png" group-title="🪁动画频道",动漫秀场 +http://[2409:8087:5e00:24::1e]:6060/000000001000/5000000011000031113/1.m3u8 +#EXTINF:-1 tvg-name="动漫秀场" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/动漫秀场.png" group-title="🪁动画频道",动漫秀场 +http://[2409:8087:74d9:21::6]/000000001000PLTV/88888888/224/3221226197/index.m3u8 +#EXTINF:-1 tvg-name="青春动漫" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/青春动漫.png" group-title="🪁动画频道",青春动漫 +http://wouu.net:9977/udp/239.93.0.146:5140 +#EXTINF:-1 tvg-name="青春动漫" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/青春动漫.png" group-title="🪁动画频道",青春动漫 +http://[2409:8087:5e00:24::2d]:6610/000000001000/1/5000000011000288008/index.m3u8?channel-id=bestzb&Contentid=5000000011000288008&livemode=1&stbId=YanG-1989 +#EXTINF:-1 tvg-name="爱动漫" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/爱动漫.png" group-title="🪁动画频道",爱动漫 +http://[2409:8087:5e08:24::17]:6610/000000001000/2000000004000000059/index.m3u8 +#EXTINF:-1 tvg-name="爱动漫" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/爱动漫.png" group-title="🪁动画频道",爱动漫 +http://[2409:8087:5e08:24::11]:6610/000000001000/2000000004000000059/index.m3u8 +#EXTINF:-1 tvg-name="爱动漫" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/爱动漫.png" group-title="🪁动画频道",爱动漫 +http://[2409:8087:5e08:24::12]:6610/000000001000/2000000004000000000/index.m3u8 +#EXTINF:-1 tvg-name="宝宝动画" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/宝宝动画.png" group-title="🪁动画频道",宝宝动画 +http://[2409:8087:5e00:24::2d]:6610/000000001000/1/5000000011000288002/index.m3u8?channel-id=bestzb&Contentid=5000000011000288002&livemode=1&stbId=YanG-1989 +#EXTINF:-1 tvg-name="优漫卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/优漫卡通.png" group-title="🪁动画频道",优漫卡通 +http://z.b.bkpcp.top/m.php?id=ymkt +#EXTINF:-1 tvg-name="优漫卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/优漫卡通.png" group-title="🪁动画频道",优漫卡通 +http://[2409:8087:1a0b:df::4005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225656/index.m3u8 +#EXTINF:-1 tvg-name="优漫卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/优漫卡通.png" group-title="🪁动画频道",优漫卡通 +http://[2409:8087:1a0b:df::4005]:80/ottrrs.hl.chinamobile.com/TVOD/88888888/224/3221225656/index.m3u8 +#EXTINF:-1 tvg-name="优漫卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/优漫卡通.png" group-title="🪁动画频道",优漫卡通 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/2/224/3221225656/2.m3u8 +#EXTINF:-1 tvg-name="优漫卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/优漫卡通.png" group-title="🪁动画频道",优漫卡通 +http://otttv.bj.chinamobile.com/PLTV/88888888/224/3221227007/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EhHDWGhkwx_zJcJUYE9TAaA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="优漫卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/优漫卡通.png" group-title="🪁动画频道",优漫卡通 +http://wouu.net:9977/udp/239.93.0.251:5140 +#EXTINF:-1 tvg-name="优漫卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/优漫卡通.png" group-title="🪁动画频道",优漫卡通 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226932/1.m3u8 +#EXTINF:-1 tvg-name="金鹰卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/金鹰卡通.png" group-title="🪁动画频道",金鹰卡通 +http://218.1.137.125:4022/rtp/239.45.0.38:5140 +#EXTINF:-1 tvg-name="金鹰卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/金鹰卡通.png" group-title="🪁动画频道",金鹰卡通 +http://[2409:8087:1a0b:df::4008]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225653/index.m3u8 +#EXTINF:-1 tvg-name="金鹰卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/金鹰卡通.png" group-title="🪁动画频道",金鹰卡通 +http://[2409:8087:1a0b:df::4008]:80/ottrrs.hl.chinamobile.com/TVOD/88888888/224/3221225653/index.m3u8 +#EXTINF:-1 tvg-name="金鹰卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/金鹰卡通.png" group-title="🪁动画频道",金鹰卡通 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/2/224/3221225653/2.m3u8 +#EXTINF:-1 tvg-name="金鹰卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/金鹰卡通.png" group-title="🪁动画频道",金鹰卡通 +http://wouu.net:9977/udp/239.93.0.108:5140 +#EXTINF:-1 tvg-name="金鹰卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/金鹰卡通.png" group-title="🪁动画频道",金鹰卡通 +http://nas.suntao.online:35455/bptv/10000100000000050000000004796942.m3u8 +#EXTINF:-1 tvg-name="金鹰卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/金鹰卡通.png" group-title="🪁动画频道",金鹰卡通 +http://dsj.motem.top:8880/bptv/10000100000000050000000004796942.m3u8 +#EXTINF:-1 tvg-name="金鹰卡通" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/金鹰卡通.png" group-title="🪁动画频道",金鹰卡通 +http://[2409:8087:5e08:24::2]:6610/000000001000/5000000006000040024/index.m3u8?channel-id=bestzb&Contentid=5000000006000040024&livemode=1&stbId=3 +#EXTINF:-1 tvg-name="黑莓动画" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/黑莓动画.png" group-title="🪁动画频道",黑莓动画 +http://[2409:8087:1a0b:df::4006]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225662/index.m3u8 +#EXTINF:-1 tvg-name="黑莓动画" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/黑莓动画.png" group-title="🪁动画频道",黑莓动画 +http://[2409:8087:1a0b:df::4006]:80/ottrrs.hl.chinamobile.com/TVOD/88888888/224/3221225662/index.m3u8 +#EXTINF:-1 tvg-name="黑莓动画" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/黑莓动画.png" group-title="🪁动画频道",黑莓动画 +http://[2409:8087:1a01:df::4007]:80/TVOD/88888888/224/3221225529/main.m3u8 +#EXTINF:-1 tvg-name="黑莓动画" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/黑莓动画.png" group-title="🪁动画频道",黑莓动画 +http://otttv.bj.chinamobile.com/PLTV/88888888/224/3221226935/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EUc618y1E09GbQwwuOzEKaQ%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="黑莓动画" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/黑莓动画.png" group-title="🪁动画频道",黑莓动画 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226935/1.m3u8 +#EXTINF:-1 tvg-name="黑莓动画" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/黑莓动画.png" group-title="🪁动画频道",黑莓动画 +http://ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225662/index.m3u8 +#EXTINF:-1 tvg-name="黑莓动画" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/黑莓动画.png" group-title="🪁动画频道",黑莓动画 +http://ottrrs.hl.chinamobile.com/TVOD/88888888/224/3221225662/index.m3u8 +#EXTINF:-1 tvg-name="24H国漫热播" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/24H国漫热播.png" group-title="🪁动画频道",24H国漫热播 +https://www.goodiptv.club/yy/1353937086 +#EXTINF:-1 tvg-name="浙江少儿" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/浙江少儿.png" group-title="🪁动画频道",浙江少儿 +https://ali-m-l.cztv.com/channels/lantian/channel008/1080p.m3u8 +#EXTINF:-1 tvg-name="七龙珠" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/七龙珠.png" group-title="🪁动画频道",七龙珠 +http://tv.666150.xyz/huya.php?id=11601966 +#EXTINF:-1 tvg-name="火影忍者" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/火影忍者.png" group-title="🪁动画频道",火影忍者 +https://hd.ijycnd.com/play/Yer3NWLa/index.m3u8 +#EXTINF:-1 tvg-name="海绵宝宝" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/海绵宝宝.png" group-title="🪁动画频道",海绵宝宝 +https://live.metshop.top/douyu/3949681 +#EXTINF:-1 tvg-name="中华小当家" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/中华小当家.png" group-title="🪁动画频道",中华小当家 +https://live.metshop.top/huya/11342413 +#EXTINF:-1 tvg-name="中华小当家" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/中华小当家.png" group-title="🪁动画频道",中华小当家 +http://tv.666150.xyz/huya.php?id=11342413 +#EXTINF:-1 tvg-name="猫和老鼠" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/猫和老鼠.png" group-title="🪁动画频道",猫和老鼠 +http://tv.666150.xyz/huya.php?id=11352879 +#EXTINF:-1 tvg-name="经典动漫" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/经典动漫.png" group-title="🪁动画频道",经典动漫 +http://luobo.bkpcp.top/yy/24180320 +#EXTINF:-1 tvg-name="经典动漫" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/经典动漫.png" group-title="🪁动画频道",经典动漫 +https://www.goodiptv.club/yy/22777075 +#EXTINF:-1 tvg-name="经典动漫" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/经典动漫.png" group-title="🪁动画频道",经典动漫 +https://www.goodiptv.club/yy/24180320 +#EXTINF:-1 tvg-name="蜡笔小新" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/蜡笔小新.png" group-title="🪁动画频道",蜡笔小新 +http://home.kuaidi521.com:35455/bilibili/30837590 +#EXTINF:-1 tvg-name="蜡笔小新" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/蜡笔小新.png" group-title="🪁动画频道",蜡笔小新 +http://www.douzhicloud.site:35455/bilibili/30837590 +#EXTINF:-1 tvg-name="漫画解说" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/漫画解说.png" group-title="🪁动画频道",漫画解说 +http://luobo.bkpcp.top/yy/1382735568 +#EXTINF:-1 tvg-name="漫画解说" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/漫画解说.png" group-title="🪁动画频道",漫画解说 +https://www.goodiptv.club/douyu/5907076 +#EXTINF:-1 tvg-name="游戏风云" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/游戏风云.png" group-title="🎮游戏频道",游戏风云 +http://z.b.bkpcp.top/m.php?id=yxfy +#EXTINF:-1 tvg-name="游戏风云" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/游戏风云.png" group-title="🎮游戏频道",游戏风云 +http://gat.bkpcp.top/ymg.php?id=yxfy +#EXTINF:-1 tvg-name="电竞天堂" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/电竞天堂.png" group-title="🎮游戏频道",电竞天堂 +http://[2409:8087:5e00:24::2d]:6610/000000001000/1/5000000011000288003/index.m3u8?channel-id=bestzb&Contentid=5000000011000288003&livemode=1&stbId=YanG-1989 +#EXTINF:-1 tvg-name="CCTV15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV15.png" group-title="🎵音乐频道",CCTV-15 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226333/1.m3u8 +#EXTINF:-1 tvg-name="CCTV15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV15.png" group-title="🎵音乐频道",CCTV-15 +http://[2409:8087:74f0:22::4]:6410/270000001128/9900000512/index.m3u8 +#EXTINF:-1 tvg-name="CCTV15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV15.png" group-title="🎵音乐频道",CCTV-15 +http://[2409:8087:1a01:df::4077]/ottrrs.hl.chinamobile.com/PLTV/88888888/8/3221225601/index.m3u8 +#EXTINF:-1 tvg-name="CCTV15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV15.png" group-title="🎵音乐频道",CCTV-15 +http://[2409:8087:1a01:df::7005]/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226476/index.m3u8 +#EXTINF:-1 tvg-name="CCTV15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV15.png" group-title="🎵音乐频道",CCTV-15 +http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226476/index.m3u8 +#EXTINF:-1 tvg-name="CCTV15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV15.png" group-title="🎵音乐频道",CCTV-15 +http://[2409:8087:3869:8021:1001::e5]:6610/PLTV/88888910/224/3221225641/index.m3u8 +#EXTINF:-1 tvg-name="CCTV15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV15.png" group-title="🎵音乐频道",CCTV-15 +http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/yinhe/88888888/224/3221225601/index.m3u8 +#EXTINF:-1 tvg-name="CCTV15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV15.png" group-title="🎵音乐频道",CCTV-15 +http://[2409:8087:1a01:df::4033]:80/TVOD/88888888/224/3221226127/main.m3u8 +#EXTINF:-1 tvg-name="CCTV15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV15.png" group-title="🎵音乐频道",CCTV-15 +http://[2409:8087:4c0a:22:1::11]:6410/170000001115/UmaiCHAN6000055BESTVSMGSMG/index.m3u8?AuthInfo=9kOOdBn7MFF%2F2bWjKgahUTWDyIgRkFJBAHMhA2ayG0Tdo%2FUL80msfbhDYvoWpNl31Dy7jHvMl%2FzVUrNxhL1ek1YEGVDZ7lCg0LtKJY4Ku%2B8 +#EXTINF:-1 tvg-name="CCTV15" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV15.png" group-title="🎵音乐频道",CCTV-15 +http://[2409:8087:5e01:34::38]:6610/ZTE_CMS/00000001000000060000000000000501/index.m3u8 +#EXTINF:-1 tvg-name="风云音乐" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/风云音乐.png" group-title="🎵音乐频道",风云音乐 +http://[2409:8087:7001:20:2::3]/dbiptv.sn.chinamobile.com/PLTV/88888893/224/3221226953/index.m3u8 +#EXTINF:-1 tvg-name="音乐之声" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/音乐之声.png" group-title="🎵音乐频道",音乐之声 +https://radio.0472.org/?id=641 +#EXTINF:-1 tvg-name="笑傲江湖" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/笑傲江湖.png" group-title="🏛经典剧场",笑傲江湖 +https://lunbo.freetv.top/yy/1352833750 +#EXTINF:-1 tvg-name="笑傲江湖" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/笑傲江湖.png" group-title="🏛经典剧场",笑傲江湖 +http://live.nctv.top/huya.php?id=23865142 +#EXTINF:-1 tvg-name="笑傲江湖" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/笑傲江湖.png" group-title="🏛经典剧场",笑傲江湖 +http://lu.wqwqwq.sbs/yy/1354930909 +#EXTINF:-1 tvg-name="笑傲江湖" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/笑傲江湖.png" group-title="🏛经典剧场",笑傲江湖 +http://tv.666150.xyz/huya.php?id=26355790 +#EXTINF:-1 tvg-name="笑傲江湖" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/笑傲江湖.png" group-title="🏛经典剧场",笑傲江湖 +http://tv.666150.xyz/huya.php?id=23865142 +#EXTINF:-1 tvg-name="笑傲江湖" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/笑傲江湖.png" group-title="🏛经典剧场",笑傲江湖 +https://www.goodiptv.club/yy/1354930909 +#EXTINF:-1 tvg-name="笑傲江湖" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/笑傲江湖.png" group-title="🏛经典剧场",笑傲江湖 +https://www.goodiptv.club/yy/1352833750 +#EXTINF:-1 tvg-name="笑傲江湖" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/笑傲江湖.png" group-title="🏛经典剧场",笑傲江湖 +https://live.metshop.top/yy/1354936128 +#EXTINF:-1 tvg-name="天龙八部" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/天龙八部.png" group-title="🏛经典剧场",天龙八部 +http://luobo.bkpcp.top/yy/1382736855 +#EXTINF:-1 tvg-name="天龙八部" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/天龙八部.png" group-title="🏛经典剧场",天龙八部 +http://www.clmy.cc:35455/yy/1355067965 +#EXTINF:-1 tvg-name="天龙八部" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/天龙八部.png" group-title="🏛经典剧场",天龙八部 +https://live.metshop.top/huya/23903123 +#EXTINF:-1 tvg-name="天龙八部" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/天龙八部.png" group-title="🏛经典剧场",天龙八部 +http://tv.666150.xyz/huya.php?id=20985816 +#EXTINF:-1 tvg-name="天龙八部" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/天龙八部.png" group-title="🏛经典剧场",天龙八部 +https://www.goodiptv.club/yy/1351814644 +#EXTINF:-1 tvg-name="天龙八部" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/天龙八部.png" group-title="🏛经典剧场",天龙八部 +https://www.goodiptv.club/yy/1382749944 +#EXTINF:-1 tvg-name="天龙八部" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/天龙八部.png" group-title="🏛经典剧场",天龙八部 +https://live.metshop.top/yy/1351814644 +#EXTINF:-1 tvg-name="鹿鼎记" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/鹿鼎记.png" group-title="🏛经典剧场",鹿鼎记 +http://live.nctv.top/douyu.php?id=12128227 +#EXTINF:-1 tvg-name="鹿鼎记" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/鹿鼎记.png" group-title="🏛经典剧场",鹿鼎记 +https://live.metshop.top/yy/28265277 +#EXTINF:-1 tvg-name="仙剑奇侠传" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/仙剑奇侠传.png" group-title="🏛经典剧场",仙剑奇侠传 +https://live.metshop.top/yy/1382749903 +#EXTINF:-1 tvg-name="西游记" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/西游记.png" group-title="🏛经典剧场",西游记 +http://live.nctv.top/douyu.php?id=3700024 +#EXTINF:-1 tvg-name="西游记" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/西游记.png" group-title="🏛经典剧场",西游记 +http://tv.666150.xyz/huya.php?id=26355861 +#EXTINF:-1 tvg-name="三国演义" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/三国演义.png" group-title="🏛经典剧场",三国演义 +http://tv.666150.xyz/huya.php?id=11602081 +#EXTINF:-1 tvg-name="三国演义" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/三国演义.png" group-title="🏛经典剧场",三国演义 +https://www.goodiptv.club/yy/32788000 +#EXTINF:-1 tvg-name="三国演义" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/三国演义.png" group-title="🏛经典剧场",三国演义 +https://live.metshop.top/yy/32788000 +#EXTINF:-1 tvg-name="三国演义" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/三国演义.png" group-title="🏛经典剧场",三国演义 +https://live.metshop.top/yy/1354936241 +#EXTINF:-1 tvg-name="水浒传" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/水浒传.png" group-title="🏛经典剧场",水浒传 +http://www.clmy.cc:35455/yy/1353873252 +#EXTINF:-1 tvg-name="新白娘子传奇" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/新白娘子传奇.png" group-title="🏛经典剧场",新白娘子传奇 +http://lu.wqwqwq.sbs/yy/1354490667 +#EXTINF:-1 tvg-name="新白娘子传奇" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/新白娘子传奇.png" group-title="🏛经典剧场",新白娘子传奇 +http://luobo.bkpcp.top/yy/1354490667 +#EXTINF:-1 tvg-name="新白娘子传奇" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/新白娘子传奇.png" group-title="🏛经典剧场",新白娘子传奇 +http://www.clmy.cc:35455/yy/1354490667 +#EXTINF:-1 tvg-name="新白娘子传奇" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/新白娘子传奇.png" group-title="🏛经典剧场",新白娘子传奇 +https://www.goodiptv.club/yy/1354490667 +#EXTINF:-1 tvg-name="新白娘子传奇" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/新白娘子传奇.png" group-title="🏛经典剧场",新白娘子传奇 +https://live.metshop.top/yy/1354490667 +#EXTINF:-1 tvg-name="济公游记" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/济公游记.png" group-title="🏛经典剧场",济公游记 +https://www.goodiptv.club/yy/1355265814 +#EXTINF:-1 tvg-name="封神榜" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/封神榜.png" group-title="🏛经典剧场",封神榜 +https://lunbo.freetv.top/yy/1382797534 +#EXTINF:-1 tvg-name="封神榜" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/封神榜.png" group-title="🏛经典剧场",封神榜 +http://luobo.bkpcp.top/yy/1353426319 +#EXTINF:-1 tvg-name="封神榜" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/封神榜.png" group-title="🏛经典剧场",封神榜 +http://www.clmy.cc:35455/yy/1353426319 +#EXTINF:-1 tvg-name="封神榜" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/封神榜.png" group-title="🏛经典剧场",封神榜 +http://tv.666150.xyz/huya.php?id=29465849 +#EXTINF:-1 tvg-name="封神榜" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/封神榜.png" group-title="🏛经典剧场",封神榜 +https://www.goodiptv.club/yy/1382797534 +#EXTINF:-1 tvg-name="封神榜" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/封神榜.png" group-title="🏛经典剧场",封神榜 +https://live.metshop.top/yy/1353426319 +#EXTINF:-1 tvg-name="上海滩" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/上海滩.png" group-title="🏛经典剧场",上海滩 +http://luobo.bkpcp.top/yy/1382745184 +#EXTINF:-1 tvg-name="上海滩" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/上海滩.png" group-title="🏛经典剧场",上海滩 +https://www.goodiptv.club/yy/1382745184 +#EXTINF:-1 tvg-name="上海滩" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/上海滩.png" group-title="🏛经典剧场",上海滩 +https://live.metshop.top/yy/1382745184 +#EXTINF:-1 tvg-name="射雕英雄传" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/射雕英雄传.png" group-title="🏛经典剧场",射雕英雄传 +http://tv.666150.xyz/huya.php?id=23824164 +#EXTINF:-1 tvg-name="射雕英雄传" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/射雕英雄传.png" group-title="🏛经典剧场",射雕英雄传 +https://live.metshop.top/yy/40959929 +#EXTINF:-1 tvg-name="CCTV1" tvg-logo="https://gitee.com/mytv-android/myTVlogo/raw/main/img/CCTV1.png" group-title="🕘️更新时间",2025-07-12 08:38:32 +http://39.164.180.36:19901/tsfile/live/0001_2.m3u8?key=txiptv&playlive=0&authid=0 diff --git a/潇洒/lives/范明明.txt b/潇洒/lives/范明明.txt new file mode 100644 index 0000000..f13ea57 --- /dev/null +++ b/潇洒/lives/范明明.txt @@ -0,0 +1,167 @@ +#EXTM3U x-tvg-url="https://live.fanmingming.cn/e.xml" catchup="append" catchup-source="?playseek=${(b)yyyyMMddHHmmss}-${(e)yyyyMMddHHmmss}" +#EXTINF:-1 tvg-name="CCTV1" tvg-logo="https://live.fanmingming.cn/tv/CCTV1.png" group-title="央视频道",CCTV-1综合 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226895/1.m3u8? +#EXTINF:-1 tvg-name="CCTV2" tvg-logo="https://live.fanmingming.cn/tv/CCTV2.png" group-title="央视频道",CCTV-2财经 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226893/1.m3u8? +#EXTINF:-1 tvg-name="CCTV3" tvg-logo="https://live.fanmingming.cn/tv/CCTV3.png" group-title="央视频道",CCTV-3综艺 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226471/1.m3u8? +#EXTINF:-1 tvg-name="CCTV4" tvg-logo="https://live.fanmingming.cn/tv/CCTV4.png" group-title="央视频道",CCTV-4中文国际 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226335/1.m3u8? +#EXTINF:-1 tvg-name="CCTV5" tvg-logo="https://live.fanmingming.cn/tv/CCTV5.png" group-title="央视频道",CCTV-5体育 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226469/1.m3u8? +#EXTINF:-1 tvg-name="CCTV5" tvg-logo="https://live.fanmingming.cn/tv/CCTV5.png" group-title="央视频道",CCTV-5+体育赛事 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226894/1.m3u8? +#EXTINF:-1 tvg-name="CCTV6" tvg-logo="https://live.fanmingming.cn/tv/CCTV6.png" group-title="央视频道",CCTV-6电影 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226468/1.m3u8? +#EXTINF:-1 tvg-name="CCTV7" tvg-logo="https://live.fanmingming.cn/tv/CCTV7.png" group-title="央视频道",CCTV-7国防军事 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226946/1.m3u8? +#EXTINF:-1 tvg-name="CCTV8" tvg-logo="https://live.fanmingming.cn/tv/CCTV8.png" group-title="央视频道",CCTV-8电视剧 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226485/1.m3u8? +#EXTINF:-1 tvg-name="CCTV9" tvg-logo="https://live.fanmingming.cn/tv/CCTV9.png" group-title="央视频道",CCTV-9纪录 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226944/1.m3u8? +#EXTINF:-1 tvg-name="CCTV10" tvg-logo="https://live.fanmingming.cn/tv/CCTV10.png" group-title="央视频道",CCTV-10科教 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226937/1.m3u8? +#EXTINF:-1 tvg-name="CCTV11" tvg-logo="https://live.fanmingming.cn/tv/CCTV11.png" group-title="央视频道",CCTV-11戏曲 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226334/1.m3u8? +#EXTINF:-1 tvg-name="CCTV12" tvg-logo="https://live.fanmingming.cn/tv/CCTV12.png" group-title="央视频道",CCTV-12社会与法 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226942/1.m3u8? +#EXTINF:-1 tvg-name="CCTV13" tvg-logo="https://live.fanmingming.cn/tv/CCTV13.png" group-title="央视频道",CCTV-13新闻 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226316/1.m3u8? +#EXTINF:-1 tvg-name="CCTV14" tvg-logo="https://live.fanmingming.cn/tv/CCTV14.png" group-title="央视频道",CCTV-14少儿 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226947/1.m3u8? +#EXTINF:-1 tvg-name="CCTV15" tvg-logo="https://live.fanmingming.cn/tv/CCTV15.png" group-title="央视频道",CCTV-15音乐 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226333/1.m3u8? +#EXTINF:-1 tvg-name="CCTV16" tvg-logo="https://live.fanmingming.cn/tv/CCTV16.png" group-title="央视频道",CCTV-16奥林匹克 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227002/1.m3u8? +#EXTINF:-1 tvg-name="CCTV17" tvg-logo="https://live.fanmingming.cn/tv/CCTV17.png" group-title="央视频道",CCTV-17农业农村 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226318/1.m3u8? +#EXTINF:-1 tvg-name="北京卫视" tvg-logo="https://live.fanmingming.cn/tv/北京卫视.png" group-title="卫视频道",北京卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226900/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EcYPi33WFyhvd6SjmqUKhJg%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="东方卫视" tvg-logo="https://live.fanmingming.cn/tv/东方卫视.png" group-title="卫视频道",东方卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226898/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7E0uh4lyjjBCCN7TCq21vSIQ%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="浙江卫视" tvg-logo="https://live.fanmingming.cn/tv/浙江卫视.png" group-title="卫视频道",浙江卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226899/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7ETYfTgTra_pUx2cPrgZ_BDw%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="江苏卫视" tvg-logo="https://live.fanmingming.cn/tv/江苏卫视.png" group-title="卫视频道",江苏卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226897/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7E0BmO6uHF7WFoTed__Xr3NQ%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="广东卫视" tvg-logo="https://live.fanmingming.cn/tv/广东卫视.png" group-title="卫视频道",广东卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226961/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7E2MGyx659D_aaDPP0qt3NgA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="湖南卫视" tvg-logo="https://live.fanmingming.cn/tv/湖南卫视.png" group-title="卫视频道",湖南卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226509/1.m3u8?zoneoffset=480&servicetype=1&icpid=&limitflux=-1&limitdur=-1&tenantId=8601&accountinfo=%7E%7EV2.0%7EIGb_ib7rnBX9_sANRKq9sg%7EpK8OKM5JoJWWbLRyLfPcUMkwWZ90MzSI9S9PDltJsYzd0ZGcS3Tkh7syciNKJa-w60mDOdwtDyoNwCx9aRgzHNH9AUREV_qvNJtXHRPzYw0%7EExtInfo9bj61dxzlMXrsixrqcFYPg%3D%3D%3A20221022013542%2C915973%2C119.123.71.209%2C20221022013542%2C10000100000000050000000003873458%2C915973%2C-1%2C0%2C1%2C%2C%2C2%2C%2C%2C%2C2%2C%2C10000100000000060000000007253514_0%2CEND&GuardEncType=2 +#EXTINF:-1 tvg-name="深圳卫视" tvg-logo="https://live.fanmingming.cn/tv/深圳卫视.png" group-title="卫视频道",深圳卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226959/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EGrVNEZREjuNVKiTJo2mtwg%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="四川卫视" tvg-logo="https://live.fanmingming.cn/tv/四川卫视.png" group-title="卫视频道",四川卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226995/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EBQiz3wrGrpG0CUSRIJ-7Jg%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="天津卫视" tvg-logo="https://live.fanmingming.cn/tv/天津卫视.png" group-title="卫视频道",天津卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226954/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7Eaf3wyULP1h575eM_4ByMDg%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="辽宁卫视" tvg-logo="https://live.fanmingming.cn/tv/辽宁卫视.png" group-title="卫视频道",辽宁卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226966/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7E6qJH8Fd-zgCGx3P-Ce86cA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="黑龙江卫视" tvg-logo="https://live.fanmingming.cn/tv/黑龙江卫视.png" group-title="卫视频道",黑龙江卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226965/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7E7UiKL56-L86ihmTWaZ6csw%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="吉林卫视" tvg-logo="https://live.fanmingming.cn/tv/吉林卫视.png" group-title="卫视频道",吉林卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227015/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EW5-3AVdwD5KlUpuA4mz7Cg%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="海南卫视" tvg-logo="https://live.fanmingming.cn/tv/海南卫视.png" group-title="卫视频道",海南卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227029/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EEuBMjt2kLMD8fAO7QYER7Q%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="广西卫视" tvg-logo="https://live.fanmingming.cn/tv/广西卫视.png" group-title="卫视频道",广西卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227010/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EkAhb-89sxdm9fz6-heXCuw%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="河北卫视" tvg-logo="https://live.fanmingming.cn/tv/河北卫视.png" group-title="卫视频道",河北卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227014/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7ErSGjhI3DMaaAASPrbQJYTg%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="山东卫视" tvg-logo="https://live.fanmingming.cn/tv/山东卫视.png" group-title="卫视频道",山东卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226957/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EjW26v5VaHGy1jQuIA-4EbA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="山西卫视" tvg-logo="https://live.fanmingming.cn/tv/山西卫视.png" group-title="卫视频道",山西卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227016/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7ESb5Qr3NTpE2ZugIroKoyTw%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="湖北卫视" tvg-logo="https://live.fanmingming.cn/tv/湖北卫视.png" group-title="卫视频道",湖北卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226952/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EREB40lnZnCEwjRy7LZuhIQ%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="江西卫视" tvg-logo="https://live.fanmingming.cn/tv/江西卫视.png" group-title="卫视频道",江西卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226956/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7Ei6ZIpVizXlewg-YfGvH8dA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="重庆卫视" tvg-logo="https://live.fanmingming.cn/tv/重庆卫视.png" group-title="卫视频道",重庆卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226963/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EjTXsJprEx2nE38tdvu5lhA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="东南卫视" tvg-logo="https://live.fanmingming.cn/tv/东南卫视.png" group-title="卫视频道",东南卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226991/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EQ6F5Mjgs0tJyEArWFL3vQA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="陕西卫视" tvg-logo="https://live.fanmingming.cn/tv/陕西卫视.png" group-title="卫视频道",陕西卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226999/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EsGLKaSqf0wDZMbAjeQtfyw%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="青海卫视" tvg-logo="https://live.fanmingming.cn/tv/青海卫视.png" group-title="卫视频道",青海卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227017/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EacviHy_ucMT27Ymf2iLtZA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="安徽卫视" tvg-logo="https://live.fanmingming.cn/tv/安徽卫视.png" group-title="卫视频道",安徽卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226943/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7E0QmKQ_slRCwvVVUUfxPVbw%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="云南卫视" tvg-logo="https://live.fanmingming.cn/tv/云南卫视.png" group-title="卫视频道",云南卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227028/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EGfQPqRNVeBjTMsZ48qu0SA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="贵州卫视" tvg-logo="https://live.fanmingming.cn/tv/贵州卫视.png" group-title="卫视频道",贵州卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227012/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EnqBF03rFwPucF8ODtWxLQQ%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="宁夏卫视" tvg-logo="https://live.fanmingming.cn/tv/宁夏卫视.png" group-title="卫视频道",宁夏卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227003/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7ESco1zinvdUYzleEkXYhIvA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="甘肃卫视" tvg-logo="https://live.fanmingming.cn/tv/甘肃卫视.png" group-title="卫视频道",甘肃卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227020/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7Err-CLugPnTcUinEM8JeySg%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="内蒙古卫视" tvg-logo="https://live.fanmingming.cn/tv/内蒙古卫视.png" group-title="卫视频道",内蒙古卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227018/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7ErN_hoRDwApMKnJqiNHvn9w%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="新疆卫视" tvg-logo="https://live.fanmingming.cn/tv/新疆卫视.png" group-title="卫视频道",新疆卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227011/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7ExAUu61iVvo_xYbANWJhgXw%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="西藏卫视" tvg-logo="https://live.fanmingming.cn/tv/西藏卫视.png" group-title="卫视频道",西藏卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227033/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EdeTB7OZ9G_VNJk5C3t96fQ%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="延边卫视" tvg-logo="https://live.fanmingming.cn/tv/延边卫视.png" group-title="卫视频道",延边卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227045/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7Eq0D3NdTUN7FuRzr8eJsbQA%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="康巴卫视" tvg-logo="https://live.fanmingming.cn/tv/康巴卫视.png" group-title="卫视频道",康巴卫视 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227027/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EkHMvBpWz4rccMxNvSRekpQ%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND +#EXTINF:-1 tvg-name="中国教育1台" tvg-logo="https://live.fanmingming.cn/tv/中国教育1台.png" group-title="卫视频道",中国教育1台 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226494/1.m3u8? +#EXTINF:-1 tvg-name="中国教育2台" tvg-logo="https://live.fanmingming.cn/tv/中国教育2台.png" group-title="卫视频道",中国教育2台 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226537/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7E7AxXs4eTU2oiWrhopr9sHw%7E_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNNxsM0Bor098BJglrhfEQTl%2CEND +#EXTINF:-1 tvg-name="中国教育3台" tvg-logo="https://live.fanmingming.cn/tv/中国教育3台.png" group-title="卫视频道",中国教育3台 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226577/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EhE2Z89HKgsQOlN9opVn1iw%7E_eNUbgU9sJGUcVVduOMKhafLvQUgE_zlz_7pvDimJNN03yUnk4zBVk1bynPPL3hZ%2CEND +#EXTINF:-1 tvg-name="中国教育4台" tvg-logo="https://live.fanmingming.cn/tv/中国教育4台.png" group-title="卫视频道",中国教育4台 +http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226997/1.m3u8?GuardEncType=2&accountinfo=%7E%7EV2.0%7EAw_OvjRgJVjtlaOa0dcgzg%7EtP4-l0lmSfjwLWEfK_el1vH_mv-s1zo4AQJwdedaVwG9xkuFTDg8J26cwOrNJzn20BErrHdLhuZ9EzLUCD3PMW-OMx4MGteHV2vLeW6BqoY%2CEND + + +#EXTINF:-1 tvg-name="浙江公共新闻" tvg-logo="https://live.fanmingming.cn/tv/浙江新闻.png" group-title="浙江频道",浙江新闻 +https://ali-m-l.cztv.com/channels/lantian/channel007/1080p.m3u8 +#EXTINF:-1 tvg-name="浙江国际" tvg-logo="https://live.fanmingming.cn/tv/浙江国际.png" group-title="浙江频道",浙江国际 +https://ali-m-l.cztv.com/channels/lantian/channel010/1080p.m3u8 +#EXTINF:-1 tvg-name="浙江少儿" tvg-logo="https://live.fanmingming.cn/tv/浙江少儿.png" group-title="浙江频道",浙江少儿 +https://ali-m-l.cztv.com/channels/lantian/channel008/1080p.m3u8 +#EXTINF:-1 tvg-name="浙江教科影视" tvg-logo="https://live.fanmingming.cn/tv/浙江教科影视.png" group-title="浙江频道",浙江教科 +https://ali-m-l.cztv.com/channels/lantian/channel004/1080p.m3u8 +#EXTINF:-1 tvg-name="之江纪录" tvg-logo="https://live.fanmingming.cn/tv/之江纪录.png" group-title="浙江频道",之江纪录 +https://ali-m-l.cztv.com/channels/lantian/channel012/1080p.m3u8 +#EXTINF:-1 tvg-name="浙江民生休闲" tvg-logo="https://live.fanmingming.cn/tv/浙江民生休闲.png" group-title="浙江频道",浙江民生 +https://ali-m-l.cztv.com/channels/lantian/channel006/1080p.m3u8 +#EXTINF:-1 tvg-name="浙江经视" tvg-logo="https://live.fanmingming.cn/tv/浙江经济生活.png" group-title="浙江频道",浙江经济 +https://ali-m-l.cztv.com/channels/lantian/channel003/1080p.m3u8 +#EXTINF:-1 tvg-name="浙江钱江都市" tvg-logo="https://live.fanmingming.cn/tv/钱江都市.png" group-title="浙江频道",浙江钱江 +https://ali-m-l.cztv.com/channels/lantian/channel002/1080p.m3u8 +#EXTINF:-1 tvg-name="内蒙古综合" tvg-logo="https://live.fanmingming.cn/tv/内蒙古新闻综合.png" group-title="内蒙频道",内蒙新闻 +https://livestream-bt.nmtv.cn/nmtv/2316general.m3u8?txSecret=b4373417a82ed64e52b0982a66da8df2&txTime=771E8800 +#EXTINF:-1 tvg-name="内蒙古经济生活" tvg-logo="https://live.fanmingming.cn/tv/内蒙古经济生活.png" group-title="内蒙频道",内蒙经济 +https://livestream-bt.nmtv.cn/nmtv/2317general.m3u8?txSecret=112b2c4c872de52b0f37aff6ead63ef0&txTime=771E8800 +#EXTINF:-1 tvg-name="内蒙古少儿" tvg-logo="https://live.fanmingming.cn/tv/内蒙古少儿.png" group-title="内蒙频道",内蒙少儿 +https://livestream-bt.nmtv.cn/nmtv/2318general.m3u8?txSecret=a2c948908728a0733cecbe1fadea23dc&txTime=771E8800 +#EXTINF:-1 tvg-name="内蒙古文体娱乐" tvg-logo="https://live.fanmingming.cn/tv/内蒙古文体娱乐.png" group-title="内蒙频道",内蒙文体 +https://livestream-bt.nmtv.cn/nmtv/2319general.m3u8?txSecret=c7b5c515d2bb6df442492d54955329a3&txTime=771E8800 +#EXTINF:-1 tvg-name="内蒙古农牧" tvg-logo="https://live.fanmingming.cn/tv/内蒙古农牧.png" group-title="内蒙频道",内蒙农牧 +https://livestream-bt.nmtv.cn/nmtv/2320general.m3u8?txSecret=4d368a175afa19737a9f5be10af24fe2&txTime=771E8800 +#EXTINF:-1 tvg-name="内蒙古蒙语卫视" tvg-logo="https://live.fanmingming.cn/tv/内蒙古蒙语卫视.png" group-title="内蒙频道",蒙语卫视 +https://livestream-bt.nmtv.cn/nmtv/2315general.m3u8?txSecret=4971666599ef9411629213c9a300bf66&txTime=771EF880 +#EXTINF:-1 tvg-name="内蒙古蒙语文化" tvg-logo="https://live.fanmingming.cn/tv/内蒙古蒙语文化.png" group-title="内蒙频道",蒙语文化 +https://livestream-bt.nmtv.cn/nmtv/2321general.m3u8?txSecret=d9d0fd7a252ef56b515c46a2e21830f4&txTime=771E8800 +#EXTINF:-1 tvg-name="呼和浩特新闻综合" tvg-logo="https://live.fanmingming.cn/tv/呼和浩特新闻综合.png" group-title="内蒙频道",呼市新闻综合 +https://livestream-bt.nmtv.cn/nmtv/2331general.m3u8?txSecret=4d7342ca5cd74480526ab6d292247aff&txTime=771E8800 +#EXTINF:-1 tvg-name="包头新闻综合" tvg-logo="https://live.fanmingming.cn/tv/包头新闻综合.png" group-title="内蒙频道",包头新闻综合 +https://livestream-bt.nmtv.cn/nmtv/2358general.m3u8?txSecret=98390a77c143a68f0fd64bfe6e181dcb&txTime=771E8800 +#EXTINF:-1 tvg-name="鄂尔多斯新闻综合" tvg-logo="https://live.fanmingming.cn/tv/鄂尔多斯新闻综合.png" group-title="内蒙频道",鄂尔多斯新闻 +https://livestream-bt.nmtv.cn/nmtv/2349general.m3u8?txSecret=e44477052aba305cadeea45aaf1c674a&txTime=771E8800 +#EXTINF:-1 tvg-name="巴彦淖尔新闻综合" tvg-logo="https://live.fanmingming.cn/tv/巴彦淖尔新闻综合.png" group-title="内蒙频道",巴彦淖尔新闻 +https://livestream-bt.nmtv.cn/nmtv/2348general.m3u8?txSecret=6a4ddce077e41b976fe33619fbef2b30&txTime=771E8800 +#EXTINF:-1 tvg-name="赤峰新闻综合" tvg-logo="https://live.fanmingming.cn/tv/赤峰新闻综合.png" group-title="内蒙频道",赤峰新闻综合 +https://livestream-bt.nmtv.cn/nmtv/2351general.m3u8?txSecret=8857087aeec2cec44d178a18550fdb8a&txTime=771E8800 +#EXTINF:-1 tvg-name="乌兰察布新闻综合" tvg-logo="https://live.fanmingming.cn/tv/乌兰察布.png" group-title="内蒙频道",乌兰察布新闻 +https://livestream-bt.nmtv.cn/nmtv/2354general.m3u8?txSecret=cf5f71d0000862b18f5813607b3dfd5b&txTime=771E8800 +#EXTINF:-1 tvg-name="CGTN" tvg-logo="https://live.fanmingming.cn/tv/CGTN.png" group-title="央视频道",CGTN英语 +https://0472.org/hls/cgtn.m3u8 +#EXTINF:-1 tvg-name="CGTN纪录" tvg-logo="https://live.fanmingming.cn/tv/CGTN纪录.png" group-title="央视频道",CGTN记录 +https://0472.org/hls/cgtnd.m3u8 +#EXTINF:-1 tvg-name="CGTN俄语" tvg-logo="https://live.fanmingming.cn/tv/CGTN俄语.png" group-title="央视频道",CGTN俄语 +https://0472.org/hls/cgtne.m3u8 +#EXTINF:-1 tvg-name="CGTN法语" tvg-logo="https://live.fanmingming.cn/tv/CGTN法语.png" group-title="央视频道",CGTN法语 +https://0472.org/hls/cgtnf.m3u8 +#EXTINF:-1 tvg-name="CGTN西语" tvg-logo="https://live.fanmingming.cn/tv/CGTN西语.png" group-title="央视频道",CGTN西语 +https://0472.org/hls/cgtnx.m3u8 +#EXTINF:-1 tvg-name="CGTN阿语" tvg-logo="https://live.fanmingming.cn/tv/CGTN阿语.png" group-title="央视频道",CGTN阿语 +https://0472.org/hls/cgtna.m3u8 diff --git a/潇洒/py/APPV2.py b/潇洒/py/APPV2.py deleted file mode 100644 index c3fe418..0000000 --- a/潇洒/py/APPV2.py +++ /dev/null @@ -1,97 +0,0 @@ -# -*- coding: utf-8 -*- -# by @嗷呜 -import sys -sys.path.append('..') -from base.spider import Spider - -class Spider(Spider): - - def init(self, extend=""): - ''' - example: - { - "key": "py_appV2", - "name": "xxx", - "type": 3, - "searchable": 1, - "quickSearch": 1, - "filterable": 1, - "api": "./py/APPV2.py", - "ext": "http://cmsyt.lyyytv.cn" - } - - ''' - self.host=extend - pass - - def getName(self): - pass - - def isVideoFormat(self, url): - pass - - def manualVideoCheck(self): - pass - - def destroy(self): - pass - - headers = { - 'User-Agent': 'okhttp/4.12.0', - } - - def homeContent(self, filter): - data = self.fetch(f"{self.host}//api.php/app/nav?token=",headers=self.headers).json() - keys = ["class", "area", "lang", "year", "letter", "by", "sort"] - filters = {} - classes = [] - for item in data['list']: - has_non_empty_field = False - jsontype_extend = item["type_extend"] - classes.append({"type_name": item["type_name"], "type_id": item["type_id"]}) - for key in keys: - if key in jsontype_extend and jsontype_extend[key].strip() != "": - has_non_empty_field = True - break - if has_non_empty_field: - filters[str(item["type_id"])] = [] - for dkey in jsontype_extend: - if dkey in keys and jsontype_extend[dkey].strip() != "": - values = jsontype_extend[dkey].split(",") - value_array = [{"n": value.strip(), "v": value.strip()} for value in values if - value.strip() != ""] - filters[str(item["type_id"])].append({"key": dkey, "name": dkey, "value": value_array}) - result = {} - result["class"] = classes - result["filters"] = filters - return result - - def homeVideoContent(self): - data=self.fetch(f"{self.host}/api.php/app/index_video?token=",headers=self.headers).json() - videos=[] - for item in data['list']:videos.extend(item['vlist']) - return {'list':videos} - - def categoryContent(self, tid, pg, filter, extend): - params = {'tid':tid,'class':extend.get('class',''),'area':extend.get('area',''),'lang':extend.get('lang',''),'year':extend.get('year',''),'limit':'18','pg':pg} - data=self.fetch(f"{self.host}/api.php/app/video",params=params,headers=self.headers).json() - return data - - def detailContent(self, ids): - data=self.fetch(f"{self.host}/api.php/app/video_detail?id={ids[0]}",headers=self.headers).json() - return {'list':[data['data']]} - - def searchContent(self, key, quick, pg="1"): - data=self.fetch(f"{self.host}/api.php/app/search?text={key}&pg={pg}",headers=self.headers).json() - videos=data['list'] - for item in data['list']: - item.pop('type', None) - return {'list':videos,'page':pg} - - def playerContent(self, flag, id, vipFlags): - return {'jx':1,'playUrl':'','parse': 1, 'url': id, 'header': self.headers} - - def localProxy(self, param): - pass - - diff --git a/潇洒/py/优酷视频.py b/潇洒/py/优酷视频.py deleted file mode 100644 index 399d0db..0000000 --- a/潇洒/py/优酷视频.py +++ /dev/null @@ -1,301 +0,0 @@ -# -*- coding: utf-8 -*- -# by @嗷呜 -import json -import sys -import time -from concurrent.futures import ThreadPoolExecutor, as_completed -from urllib.parse import quote -from Crypto.Hash import MD5 -import requests -sys.path.append('..') -from base.spider import Spider - - -class Spider(Spider): - - def init(self, extend=""): - self.session = requests.Session() - self.session.headers.update(self.headers) - self.session.cookies.update(self.cookie) - self.get_ctoken() - pass - - def getName(self): - pass - - def isVideoFormat(self, url): - pass - - def manualVideoCheck(self): - pass - - def destroy(self): - pass - - host='https://www.youku.com' - - shost='https://search.youku.com' - - h5host='https://acs.youku.com' - - ihost='https://v.youku.com' - - headers = { - 'User-Agent': 'Mozilla/5.0 (; Windows 10.0.26100.3194_64 ) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Electron/14.2.0 Safari/537.36 Node/14.17.0 YoukuDesktop/9.2.60 UOSYouku (2.0.1)-Electron(UTDID ZYmGMAAAACkDAMU8hbiMmYdd;CHANNEL official;ZREAL 0;BTYPE TM2013;BRAND TIMI;BUILDVER 9.2.60.1001)', - 'Referer': f'{host}/' - } - - cookie={ - "__ysuid": "17416134165380iB", - "__aysid": "1741613416541WbD", - "xlly_s": "1", - "isI18n": "false", - "cna": "bNdVIKmmsHgCAXW9W6yrQ1/s", - "__ayft": "1741672162330", - "__arpvid": "1741672162331FBKgrn-1741672162342", - "__ayscnt": "1", - "__aypstp": "1", - "__ayspstp": "3", - "tfstk": "gZbiib4JpG-6DqW-B98_2rwPuFrd1fTXQt3vHEp4YpJIBA3OgrWcwOi90RTOo9XVQ5tAM5NcK_CP6Ep97K2ce1XDc59v3KXAgGFLyzC11ET2n8U8yoyib67M3xL25e8gS8pbyzC1_ET4e8URWTsSnHv2uh8VTeJBgEuN3d-ELQAWuKWV36PHGpJ2uEWVTxvicLX1ewyUXYSekxMf-CxMEqpnoqVvshvP_pABOwvXjL5wKqeulm52np_zpkfCDGW9Ot4uKFIRwZtP7vP9_gfAr3KEpDWXSIfWRay-DHIc_Z-hAzkD1i5Ooi5LZ0O5YO_1mUc476YMI3R6xzucUnRlNe_zemKdm172xMwr2L7CTgIkbvndhFAVh3_YFV9Ng__52U4SQKIdZZjc4diE4EUxlFrfKmiXbBOHeP72v7sAahuTtWm78hRB1yV3tmg9bBOEhWVnq5KwOBL5." - } - - def homeContent(self, filter): - result = {} - categories = ["电视剧", "电影", "综艺", "动漫", "少儿", "纪录片", "文化", "亲子", "教育", "搞笑", "生活", - "体育", "音乐", "游戏"] - classes = [{'type_name': category, 'type_id': category} for category in categories] - filters = {} - self.typeid = {} - with ThreadPoolExecutor(max_workers=len(categories)) as executor: - tasks = { - executor.submit(self.cf, {'type': category}, True): category - for category in categories - } - - for future in as_completed(tasks): - try: - category = tasks[future] - session, ft = future.result() - filters[category] = ft - self.typeid[category] = session - except Exception as e: - print(f"处理分类 {tasks[future]} 时出错: {str(e)}") - - result['class'] = classes - result['filters'] = filters - return result - - def homeVideoContent(self): - try: - vlist = [] - params={"ms_codes":"2019061000","params":"{\"debug\":0,\"gray\":0,\"pageNo\":1,\"utdid\":\"ZYmGMAAAACkDAMU8hbiMmYdd\",\"userId\":\"\",\"bizKey\":\"YOUKU_WEB\",\"appPackageKey\":\"com.youku.YouKu\",\"showNodeList\":0,\"reqSubNode\":0,\"nodeKey\":\"WEBHOME\",\"bizContext\":\"{\\\"spmA\\\":\\\"a2hja\\\"}\"}","system_info":"{\"device\":\"pcweb\",\"os\":\"pcweb\",\"ver\":\"1.0.0.0\",\"userAgent\":\"Mozilla/5.0 (; Windows 10.0.26100.3194_64 ) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Electron/14.2.0 Safari/537.36 Node/14.17.0 YoukuDesktop/9.2.60 UOSYouku (2.0.1)-Electron(UTDID ZYmGMAAAACkDAMU8hbiMmYdd;CHANNEL official;ZREAL 0;BTYPE TM2013;BRAND TIMI;BUILDVER 9.2.60.1001)\",\"guid\":\"1590141704165YXe\",\"appPackageKey\":\"com.youku.pcweb\",\"young\":0,\"brand\":\"\",\"network\":\"\",\"ouid\":\"\",\"idfa\":\"\",\"scale\":\"\",\"operator\":\"\",\"resolution\":\"\",\"pid\":\"\",\"childGender\":0,\"zx\":0}"} - data=self.getdata(f'{self.h5host}/h5/mtop.youku.columbus.home.query/1.0/',params) - okey=list(data['data'].keys())[0] - for i in data['data'][okey]['data']['nodes'][0]['nodes'][-1]['nodes'][0]['nodes']: - if i.get('nodes') and i['nodes'][0].get('data'): - i=i['nodes'][0]['data'] - if i.get('assignId'): - vlist.append({ - 'vod_id': i['assignId'], - 'vod_name': i.get('title'), - 'vod_pic': i.get('vImg') or i.get('img'), - 'vod_year': i.get('mark',{}).get('data',{}).get('text'), - 'vod_remarks': i.get('summary') - }) - return {'list': vlist} - except Exception as e: - print(f"处理主页视频数据时出错: {str(e)}") - return {'list': []} - - def categoryContent(self, tid, pg, filter, extend): - result = {} - vlist = [] - result['page'] = pg - result['limit'] = 90 - result['total'] = 999999 - pagecount = 9999 - params = {'type': tid} - id = self.typeid[tid] - params.update(extend) - if pg == '1': - id=self.cf(params) - data=self.session.get(f'{self.host}/category/data?session={id}¶ms={quote(json.dumps(params))}&pageNo={pg}').json() - try: - data=data['data']['filterData'] - for i in data['listData']: - if i.get('videoLink') and 's=' in i['videoLink']: - vlist.append({ - 'vod_id': i.get('videoLink').split('s=')[-1], - 'vod_name': i.get('title'), - 'vod_pic': i.get('img'), - 'vod_year': i.get('rightTagText'), - 'vod_remarks': i.get('summary') - }) - self.typeid[tid]=quote(json.dumps(data['session'])) - except: - pagecount=pg - result['list'] = vlist - result['pagecount'] = pagecount - return result - - def detailContent(self, ids): - try: - data=self.session.get(f'{self.ihost}/v_getvideo_info/?showId={ids[0]}').json() - v=data['data'] - vod = { - 'type_name': v.get('showVideotype'), - 'vod_year': v.get('lastUpdate'), - 'vod_remarks': v.get('rc_title'), - 'vod_actor': v.get('_personNameStr'), - 'vod_content': v.get('showdesc'), - 'vod_play_from': '优酷', - 'vod_play_url': '' - } - params={"biz":"new_detail_web2","videoId":v.get('vid'),"scene":"web_page","componentVersion":"3","ip":data.get('ip'),"debug":0,"utdid":"ZYmGMAAAACkDAMU8hbiMmYdd","userId":0,"platform":"pc","nextSession":"","gray":0,"source":"pcNoPrev","showId":ids[0]} - sdata,index=self.getinfo(params) - pdata=sdata['nodes'] - if index > len(pdata): - batch_size = len(pdata) - total_batches = ((index + batch_size - 1) // batch_size) - 1 - ssj = json.loads(sdata['data']['session']) - with ThreadPoolExecutor(max_workers=total_batches) as executor: - futures = [] - for batch in range(total_batches): - start = batch_size + 1 + (batch * batch_size) - end = start + batch_size - 1 - next_session = ssj.copy() - next_session.update({ - "itemStartStage": start, - "itemEndStage": min(end, index) - }) - current_params = params.copy() - current_params['nextSession'] = json.dumps(next_session) - futures.append((start, executor.submit(self.getvinfo, current_params))) - futures.sort(key=lambda x: x[0]) - - for _, future in futures: - try: - result = future.result() - pdata.extend(result['nodes']) - except Exception as e: - print(f"Error fetching data: {str(e)}") - vod['vod_play_url'] = '#'.join([f"{i['data'].get('title')}${i['data']['action'].get('value')}" for i in pdata]) - return {'list': [vod]} - except Exception as e: - print(e) - return {'list': [{'vod_play_from': '哎呀翻车啦', 'vod_play_url': f'呜呜呜${self.host}'}]} - - def searchContent(self, key, quick, pg="1"): - data=self.session.get(f'{self.shost}/api/search?pg={pg}&keyword={key}').json() - vlist = [] - for i in data['pageComponentList']: - if i.get('commonData') and (i['commonData'].get('showId') or i['commonData'].get('realShowId')): - i=i['commonData'] - vlist.append({ - 'vod_id': i.get('showId') or i.get('realShowId'), - 'vod_name': i['titleDTO'].get('displayName'), - 'vod_pic': i['posterDTO'].get('vThumbUrl'), - 'vod_year': i.get('feature'), - 'vod_remarks': i.get('updateNotice') - }) - return {'list': vlist, 'page': pg} - - def playerContent(self, flag, id, vipFlags): - return {'jx':1,'parse': 1, 'url': f"{self.ihost}/video?vid={id}", 'header': ''} - - def localProxy(self, param): - pass - - def cf(self,params,b=False): - response = self.session.get(f'{self.host}/category/data?params={quote(json.dumps(params))}&optionRefresh=1&pageNo=1').json() - data=response['data']['filterData'] - session=quote(json.dumps(data['session'])) - if b: - return session,self.get_filter_data(data['filter']['filterData'][1:]) - return session - - def process_key(self, key): - if '_' not in key: - return key - parts = key.split('_') - result = parts[0] - for part in parts[1:]: - if part: - result += part[0].upper() + part[1:] - return result - - def get_filter_data(self, data): - result = [] - try: - for item in data: - if not item.get('subFilter'): - continue - first_sub = item['subFilter'][0] - if not first_sub.get('filterType'): - continue - filter_item = { - 'key': self.process_key(first_sub['filterType']), - 'name': first_sub['title'], - 'value': [] - } - for sub in item['subFilter']: - if 'value' in sub: - filter_item['value'].append({ - 'n': sub['title'], - 'v': sub['value'] - }) - if filter_item['value']: - result.append(filter_item) - - except Exception as e: - print(f"处理筛选数据时出错: {str(e)}") - - return result - - def get_ctoken(self): - data=self.session.get(f'{self.h5host}/h5/mtop.ykrec.recommendservice.recommend/1.0/?jsv=2.6.1&appKey=24679788') - - def md5(self,t,text): - h = MD5.new() - token=self.session.cookies.get('_m_h5_tk').split('_')[0] - data=f"{token}&{t}&24679788&{text}" - h.update(data.encode('utf-8')) - return h.hexdigest() - - def getdata(self, url, params, recursion_count=0, max_recursion=3): - data = json.dumps(params) - t = int(time.time() * 1000) - jsdata = { - 'appKey': '24679788', - 't': t, - 'sign': self.md5(t, data), - 'data': data - } - response = self.session.get(url, params=jsdata) - if '令牌过期' in response.text: - if recursion_count >= max_recursion: - raise Exception("达到最大递归次数,无法继续请求") - self.get_ctoken() - return self.getdata(url, params, recursion_count + 1, max_recursion) - else: - return response.json() - - def getvinfo(self,params): - body = { - "ms_codes": "2019030100", - "params": json.dumps(params), - "system_info": "{\"os\":\"iku\",\"device\":\"iku\",\"ver\":\"9.2.9\",\"appPackageKey\":\"com.youku.iku\",\"appPackageId\":\"pcweb\"}" - } - data = self.getdata(f'{self.h5host}/h5/mtop.youku.columbus.gateway.new.execute/1.0/', body) - okey = list(data['data'].keys())[0] - i = data['data'][okey]['data'] - return i - - def getinfo(self,params): - i = self.getvinfo(params) - jdata=i['nodes'][0]['nodes'][3] - info=i['data']['extra']['episodeTotal'] - if i['data']['extra']['showCategory'] in ['电影','游戏']: - jdata = i['nodes'][0]['nodes'][4] - return jdata,info - diff --git a/潇洒/py/光速影视.py b/潇洒/py/光速影视.py deleted file mode 100644 index 33b1204..0000000 --- a/潇洒/py/光速影视.py +++ /dev/null @@ -1,222 +0,0 @@ -# -*- coding: utf-8 -*- -# by @嗷呜 -import re -import sys -from Crypto.Hash import MD5 -sys.path.append('..') -from Crypto.Cipher import AES -from Crypto.Util.Padding import pad, unpad -from urllib.parse import quote, urlparse -from base64 import b64encode, b64decode -import json -import time -from base.spider import Spider - -class Spider(Spider): - - def init(self, extend=""): - self.host = self.gethost() - pass - - def getName(self): - pass - - - def isVideoFormat(self, url): - pass - - def manualVideoCheck(self): - pass - - def action(self, action): - pass - - def destroy(self): - pass - - def homeContent(self, filter): - data = self.getdata("/api.php/getappapi.index/initV119") - dy = {"class": "类型", "area": "地区", "lang": "语言", "year": "年份", "letter": "字母", "by": "排序", - "sort": "排序"} - filters = {} - classes = [] - json_data = data["type_list"] - homedata = data["banner_list"][8:] - for item in json_data: - if item["type_name"] == "全部": - continue - has_non_empty_field = False - jsontype_extend = json.loads(item["type_extend"]) - homedata.extend(item["recommend_list"]) - jsontype_extend["sort"] = "最新,最热,最赞" - classes.append({"type_name": item["type_name"], "type_id": item["type_id"]}) - for key in dy: - if key in jsontype_extend and jsontype_extend[key].strip() != "": - has_non_empty_field = True - break - if has_non_empty_field: - filters[str(item["type_id"])] = [] - for dkey in jsontype_extend: - if dkey in dy and jsontype_extend[dkey].strip() != "": - values = jsontype_extend[dkey].split(",") - value_array = [{"n": value.strip(), "v": value.strip()} for value in values if - value.strip() != ""] - filters[str(item["type_id"])].append({"key": dkey, "name": dy[dkey], "value": value_array}) - result = {} - result["class"] = classes - result["filters"] = filters - result["list"] = homedata[1:] - return result - - def homeVideoContent(self): - pass - - def categoryContent(self, tid, pg, filter, extend): - body = {"area": extend.get('area', '全部'), "year": extend.get('year', '全部'), "type_id": tid, "page": pg, - "sort": extend.get('sort', '最新'), "lang": extend.get('lang', '全部'), - "class": extend.get('class', '全部')} - result = {} - data = self.getdata("/api.php/getappapi.index/typeFilterVodList", body) - result["list"] = data["recommend_list"] - result["page"] = pg - result["pagecount"] = 9999 - result["limit"] = 90 - result["total"] = 999999 - return result - - def detailContent(self, ids): - body = f"vod_id={ids[0]}" - data = self.getdata("/api.php/getappapi.index/vodDetail", body) - vod = data["vod"] - play = [] - names = [] - for itt in data["vod_play_list"]: - a = [] - names.append(itt["player_info"]["show"]) - for it in itt['urls']: - it['user_agent']=itt["player_info"].get("user_agent") - it["parse"]=itt["player_info"].get("parse") - a.append(f"{it['name']}${self.e64(json.dumps(it))}") - play.append("#".join(a)) - vod["vod_play_from"] = "$$$".join(names) - vod["vod_play_url"] = "$$$".join(play) - result = {"list": [vod]} - return result - - def searchContent(self, key, quick, pg="1"): - body = f"keywords={key}&type_id=0&page={pg}" - data = self.getdata("/api.php/getappapi.index/searchList", body) - result = {"list": data["search_list"], "page": pg} - return result - - def playerContent(self, flag, id, vipFlags): - ids = json.loads(self.d64(id)) - h = {"User-Agent": (ids['user_agent'] or "okhttp/3.14.9")} - try: - if re.search(r'url=', ids['parse_api_url']): - data = self.fetch(ids['parse_api_url'], headers=h, timeout=10).json() - url = data.get('url') or data['data'].get('url') - else: - body = f"parse_api={ids.get('parse') or ids['parse_api_url'].replace(ids['url'], '')}&url={quote(self.aes(ids['url'], True))}&token={ids.get('token')}" - b = self.getdata("/api.php/getappapi.index/vodParse", body)['json'] - url = json.loads(b)['url'] - if 'error' in url: raise ValueError(f"解析失败: {url}") - p = 0 - except Exception as e: - print('错误信息:', e) - url, p = ids['url'], 1 - - if re.search(r'\.jpg|\.png|\.jpeg', url): - url = self.Mproxy(url) - result = {} - result["parse"] = p - result["url"] = url - result["header"] = h - return result - - def localProxy(self, param): - return self.Mlocal(param) - - def gethost(self): - headers = { - 'User-Agent': 'okhttp/3.14.9' - } - host = self.fetch('https://jingyu-1312635929.cos.ap-nanjing.myqcloud.com/1.json', - headers=headers).text.strip() - return host - - phend = { - 'User-Agent': 'Dalvik/2.1.0 (Linux; U; Android 11; M2012K10C Build/RP1A.200720.011)', - 'allowCrossProtocolRedirects': 'true' - } - - def aes(self, operation, text): - key = "4d83b87c4c5ea111".encode("utf-8") - iv = key - if operation == "encrypt": - cipher = AES.new(key, AES.MODE_CBC, iv) - ct_bytes = cipher.encrypt(pad(text.encode("utf-8"), AES.block_size)) - ct = b64encode(ct_bytes).decode("utf-8") - return ct - elif operation == "decrypt": - cipher = AES.new(key, AES.MODE_CBC, iv) - pt = unpad(cipher.decrypt(b64decode(text)), AES.block_size) - return pt.decode("utf-8") - - def header(self): - t = str(int(time.time())) - header = {"Referer":self.host, - "User-Agent": "okhttp/3.14.9", "app-version-code": "300", "app-ui-mode": "light", - "app-api-verify-time": t, "app-user-device-id": self.md5(t), - "app-api-verify-sign": self.aes("encrypt", t), - "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"} - return header - - def getdata(self, path, data=None): - vdata = self.post(f"{self.host}{path}", headers=self.header(), data=data, timeout=10).json()['data'] - data1 = self.aes("decrypt", vdata) - return json.loads(data1) - - def Mproxy(self, url): - return self.getProxyUrl() + "&url=" + b64encode(url.encode('utf-8')).decode('utf-8') + "&type=m3u8" - - def Mlocal(self, param,header=None): - url = self.d64(param["url"]) - ydata = self.fetch(url, headers=header, allow_redirects=False) - data = ydata.content.decode('utf-8') - if ydata.headers.get('Location'): - url = ydata.headers['Location'] - data = self.fetch(url, headers=header).content.decode('utf-8') - parsed_url = urlparse(url) - durl = parsed_url.scheme + "://" + parsed_url.netloc - lines = data.strip().split('\n') - for index, string in enumerate(lines): - if '#EXT' not in string and 'http' not in string: - last_slash_index = string.rfind('/') - lpath = string[:last_slash_index + 1] - lines[index] = durl + ('' if lpath.startswith('/') else '/') + lpath - data = '\n'.join(lines) - return [200, "application/vnd.apple.mpegur", data] - - def e64(self, text): - try: - text_bytes = text.encode('utf-8') - encoded_bytes = b64encode(text_bytes) - return encoded_bytes.decode('utf-8') - except Exception as e: - print(f"Base64编码错误: {str(e)}") - return "" - - def d64(self,encoded_text): - try: - encoded_bytes = encoded_text.encode('utf-8') - decoded_bytes = b64decode(encoded_bytes) - return decoded_bytes.decode('utf-8') - except Exception as e: - print(f"Base64解码错误: {str(e)}") - return "" - - def md5(self, text): - h = MD5.new() - h.update(text.encode('utf-8')) - return h.hexdigest() diff --git a/潇洒/py/爱奇艺.py b/潇洒/py/爱奇艺.py deleted file mode 100644 index 2b0af3d..0000000 --- a/潇洒/py/爱奇艺.py +++ /dev/null @@ -1,248 +0,0 @@ -# -*- coding: utf-8 -*- -# by @嗷呜 -import random -import sys -from base64 import b64encode, b64decode -from concurrent.futures import ThreadPoolExecutor, as_completed -from urllib.parse import urlencode -sys.path.append('..') -from base.spider import Spider - - -class Spider(Spider): - - def init(self, extend=""): - self.did = self.random_str(32) - pass - - def getName(self): - pass - - def isVideoFormat(self, url): - pass - - def manualVideoCheck(self): - pass - - def destroy(self): - pass - - rhost = 'https://www.iqiyi.com' - - hhost='https://mesh.if.iqiyi.com' - - dhost='https://miniapp.iqiyi.com' - - headers = { - 'Origin': rhost, - 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36', - 'Referer': f'{rhost}/', - } - - def homeContent(self, filter): - result = {} - cateManual = { - "全部": "1009", - "电影": "1", - "剧集": "2", - "综艺": "6", - "动漫": "4", - "儿童": "15", - "微剧": "35", - "纪录片": "3" - } - classes = [] - filters = {} - for k in cateManual: - classes.append({ - 'type_name': k, - 'type_id': cateManual[k] - }) - with ThreadPoolExecutor(max_workers=len(classes)) as executor: - results = executor.map(self.getf, classes) - for id, ft in results: - if len(ft):filters[id] = ft - result['class'] = classes - result['filters'] = filters - return result - - def homeVideoContent(self): - data=self.fetch(f'{self.hhost}/portal/lw/v5/channel/recommend?v=13.014.21150', headers=self.headers).json() - vlist = [] - for i in data['items'][1:]: - for j in i['video'][0]['data']: - id = j.get('firstId') - pic=j.get('prevue',{}).get('image_url') or j.get('album_image_url_hover') - if id and pic: - pu=j.get('prevue',{}).get('page_url') or j.get('page_url').split('?')[0] - id = f'{id}@{self.e64(pu)}' - vlist.append({ - 'vod_id': id, - 'vod_name': j.get('display_name'), - 'vod_pic': pic, - 'vod_year': j.get('sns_score'), - 'vod_remarks': j.get('dq_updatestatus') or j.get('rank_prefix') - }) - return {'list':vlist} - - def categoryContent(self, tid, pg, filter, extend): - if pg == "1": - self.sid = '' - new_data = {'mode':'24'} - for key, value in extend.items(): - if value: - key_value_pairs = self.d64(value).split(',') - for pair in key_value_pairs: - k, v = pair.split('=') - if k in new_data: - new_data[k] += "," + v - else: - new_data[k] = v - path=f'/portal/lw/videolib/data?uid=&passport_id=&ret_num=60&version=13.014.21150&device_id={self.did}&channel_id={tid}&page_id={pg}&session={self.sid}&os=&conduit_id=&vip=0&auth&recent_selected_tag=&ad=%5B%7B%22lm%22:%225%22,%22ai%22:%225%22,%22fp%22:%226%22,%22sei%22:%22Sa867aa9d326e2bd8654d8c2a8636055e%22,%22position%22:%22library%22%7D%5D&adExt=%7B%22r%22:%221.2.1-ares6-pure%22%7D&dfp=a12f96215b2f7842a98c082799ca0c3d9236be00946701b106829754d8ece3aaf8&filter={urlencode(new_data)}' - data=self.fetch(f'{self.hhost}{path}', headers=self.headers).json() - self.sid = data['session'] - videos = [] - for i in data['data']: - id = i.get('firstId') or i.get('tv_id') - if not id: - id=i.get('play_url').split(';')[0].split('=')[-1] - if id and not i.get('h'): - id=f'{id}@{self.e64(i.get("page_url"))}' - videos.append({ - 'vod_id': id, - 'vod_name': i.get('display_name'), - 'vod_pic': i.get('album_image_url_hover'), - 'vod_year': i.get('sns_score'), - 'vod_remarks': i.get('dq_updatestatus') or i.get('pay_mark') - }) - result = {} - result['list'] = videos - result['page'] = pg - result['pagecount'] = 9999 - result['limit'] = 90 - result['total'] = 999999 - return result - - def detailContent(self, ids): - ids = ids[0].split('@') - ids[-1] = self.d64(ids[-1]) - data = self.fetch(f'{self.dhost}/h5/mina/baidu/play/body/v1/{ids[0]}/', headers=self.headers).json() - v=data['data']['playInfo'] - vod = { - 'vod_name': v.get('albumName'), - 'type_name': v.get('tags'), - 'vod_year': v.get('albumYear'), - 'vod_remarks': v.get('updateStrategy'), - 'vod_actor': v.get('mainActors'), - 'vod_director': v.get('directors'), - 'vod_content': v.get('albumDesc'), - 'vod_play_from': '爱奇艺', - 'vod_play_url': '' - } - if data.get('data') and data['data'].get('videoList') and data['data']['videoList'].get('videos'): - purl=[f'{i["shortTitle"]}${i["pageUrl"]}' for i in data['data']['videoList']['videos']] - pg=data['data']['videoList'].get('totalPages') - if pg and pg > 1: - id = v['albumId'] - pages = list(range(2, pg + 1)) - page_results = {} - with ThreadPoolExecutor(max_workers=10) as executor: - future_to_page = { - executor.submit(self.fetch_page_data, page, id): page - for page in pages - } - for future in as_completed(future_to_page): - page = future_to_page[future] - try: - result = future.result() - page_results[page] = result - except Exception as e: - print(f"Error fetching page {page}: {e}") - for page in sorted(page_results.keys()): - purl.extend(page_results[page]) - vod['vod_play_url'] = '#'.join(purl) - else: - vdata=self.fetch(f'{self.dhost}/h5/mina/baidu/play/head/v1/{ids[0]}/', headers=self.headers).json() - v=vdata['data']['playInfo'] - vod = { - 'vod_name': v.get('shortTitle'), - 'type_name': v.get('channelName'), - 'vod_year': v.get('year'), - 'vod_remarks': v.get('focus'), - 'vod_actor': v.get('mainActors'), - 'vod_director': v.get('directors'), - 'vod_content': v.get('desc'), - 'vod_play_from': '爱奇艺', - 'vod_play_url': f'{v.get("shortTitle")}${ids[-1]}' - } - return {'list':[vod]} - - def searchContent(self, key, quick, pg="1"): - data=self.fetch(f'{self.hhost}/portal/lw/search/homePageV3?key={key}¤t_page={pg}&mode=1&source=input&suggest=&version=13.014.21150&pageNum={pg}&pageSize=25&pu=&u={self.did}&scale=150&token=&userVip=0&conduit=&vipType=-1&os=&osShortName=win10&dataType=&appMode=', headers=self.headers).json() - videos = [] - vdata=data['data']['templates'] - for i in data['data']['templates']: - if i.get('intentAlbumInfos'): - vdata=[{'albumInfo': c} for c in i['intentAlbumInfos']]+vdata - - for i in vdata: - if i.get('albumInfo') and (i['albumInfo'].get('playQipuId','') or i['albumInfo'].get('qipuId')) and i['albumInfo'].get('pageUrl'): - b=i['albumInfo'] - id=f"{(b.get('playQipuId','') or b.get('qipuId'))}@{self.e64(b.get('pageUrl'))}" - videos.append({ - 'vod_id': id, - 'vod_name': b.get('title'), - 'vod_pic': b.get('img'), - 'vod_year': (b.get('year',{}) or {}).get('value'), - 'vod_remarks': b.get('subscriptContent') or b.get('channel') or b.get('vipTips') - }) - return {'list':videos,'page':pg} - - def playerContent(self, flag, id, vipFlags): - return {'jx':1,'parse': 1, 'url': id, 'header': ''} - - def localProxy(self, param): - pass - - def fetch_page_data(self, page, id): - try: - url = f'{self.dhost}/h5/mina/avlist/{page}/{id}/' - data = self.fetch(url, headers=self.headers).json() - return [f'{i["shortTitle"]}${i["pageUrl"]}' for i in data['data']['videoList']['videos']] - except: - return [] - - def getf(self,body): - data=self.fetch(f'{self.hhost}/portal/lw/videolib/tag?channel_id={body["type_id"]}&tagAdd=&selected_tag_name=&version=13.014.21150&device={self.did}&uid=', headers=self.headers).json() - ft = [] - # for i in data[:-1]: - for i in data: - try: - value_array = [{"n": value['text'], "v": self.e64(value['tag_param'])} for value in i['tags'] if - value.get('tag_param')] - ft.append({"key": i['group'], "name": i['group'], "value": value_array}) - except: - print(i) - return (body['type_id'], ft) - - def e64(self, text): - try: - text_bytes = text.encode('utf-8') - encoded_bytes = b64encode(text_bytes) - return encoded_bytes.decode('utf-8') - except Exception as e: - print(f"Base64编码错误: {str(e)}") - return "" - - def d64(self,encoded_text: str): - try: - encoded_bytes = encoded_text.encode('utf-8') - decoded_bytes = b64decode(encoded_bytes) - return decoded_bytes.decode('utf-8') - except Exception as e: - print(f"Base64解码错误: {str(e)}") - return "" - - def random_str(self,length=16): - hex_chars = '0123456789abcdef' - return ''.join(random.choice(hex_chars) for _ in range(length)) diff --git a/潇洒/py/腾讯视频.py b/潇洒/py/腾讯视频.py deleted file mode 100644 index 7a5218f..0000000 --- a/潇洒/py/腾讯视频.py +++ /dev/null @@ -1,323 +0,0 @@ -# -*- coding: utf-8 -*- -# by @嗷呜 -import json -import sys -import uuid -import copy -sys.path.append('..') -from base.spider import Spider -from concurrent.futures import ThreadPoolExecutor, as_completed - - -class Spider(Spider): - - def init(self, extend=""): - self.dbody = { - "page_params": { - "channel_id": "", - "filter_params": "sort=75", - "page_type": "channel_operation", - "page_id": "channel_list_second_page" - } - } - self.body = self.dbody - pass - - def getName(self): - pass - - def isVideoFormat(self, url): - pass - - def manualVideoCheck(self): - pass - - def destroy(self): - pass - - host = 'https://v.qq.com' - - apihost = 'https://pbaccess.video.qq.com' - - headers = { - 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.5410.0 Safari/537.36', - 'origin': host, - 'referer': f'{host}/' - } - - def homeContent(self, filter): - cdata = { - "电视剧": "100113", - "电影": "100173", - "综艺": "100109", - "纪录片": "100105", - "动漫": "100119", - "少儿": "100150", - "短剧": "110755" - } - result = {} - classes = [] - filters = {} - for k in cdata: - classes.append({ - 'type_name': k, - 'type_id': cdata[k] - }) - with ThreadPoolExecutor(max_workers=len(classes)) as executor: - futures = [executor.submit(self.get_filter_data, item['type_id']) for item in classes] - for future in futures: - cid, data = future.result() - if not data.get('data', {}).get('module_list_datas'): - continue - filter_dict = {} - try: - items = data['data']['module_list_datas'][-1]['module_datas'][-1]['item_data_lists']['item_datas'] - for item in items: - if not item.get('item_params', {}).get('index_item_key'): - continue - params = item['item_params'] - filter_key = params['index_item_key'] - if filter_key not in filter_dict: - filter_dict[filter_key] = { - 'key': filter_key, - 'name': params['index_name'], - 'value': [] - } - filter_dict[filter_key]['value'].append({ - 'n': params['option_name'], - 'v': params['option_value'] - }) - except (IndexError, KeyError): - continue - filters[cid] = list(filter_dict.values()) - result['class'] = classes - result['filters'] = filters - return result - - def homeVideoContent(self): - json_data = {'page_context':None,'page_params':{'page_id':'100101','page_type':'channel','skip_privacy_types':'0','support_click_scan':'1','new_mark_label_enabled':'1','ams_cookies':'',},'page_bypass_params':{'params':{'caller_id':'','data_mode':'default','page_id':'','page_type':'channel','platform_id':'2','user_mode':'default',},'scene':'channel','abtest_bypass_id':'',}} - data = self.post(f'{self.apihost}/trpc.vector_layout.page_view.PageService/getPage',headers=self.headers, json=json_data).json() - vlist = [] - for it in data['data']['CardList'][0]['children_list']['list']['cards']: - if it.get('params'): - p = it['params'] - tag = json.loads(p.get('uni_imgtag', '{}') or p.get('imgtag', '{}') or '{}') - id = it.get('id') or p.get('cid') - name = p.get('mz_title') or p.get('title') - if name and 'http' not in id: - vlist.append({ - 'vod_id': id, - 'vod_name': name, - 'vod_pic': p.get('image_url'), - 'vod_year': tag.get('tag_2', {}).get('text'), - 'vod_remarks': tag.get('tag_4', {}).get('text') - }) - return {'list': vlist} - - def categoryContent(self, tid, pg, filter, extend): - result = {} - params = { - "sort": extend.get('sort', '75'), - "attr": extend.get('attr', '-1'), - "itype": extend.get('itype', '-1'), - "ipay": extend.get('ipay', '-1'), - "iarea": extend.get('iarea', '-1'), - "iyear": extend.get('iyear', '-1'), - "theater": extend.get('theater', '-1'), - "award": extend.get('award', '-1'), - "recommend": extend.get('recommend', '-1') - } - if pg == '1': - self.body = self.dbody.copy() - self.body['page_params']['channel_id'] = tid - self.body['page_params']['filter_params'] = self.josn_to_params(params) - data = self.post( - f'{self.apihost}/trpc.universal_backend_service.page_server_rpc.PageServer/GetPageData?video_appid=1000005&vplatform=2&vversion_name=8.9.10&new_mark_label_enabled=1', - json=self.body, headers=self.headers).json() - ndata = data['data'] - if ndata['has_next_page']: - result['pagecount'] = 9999 - self.body['page_context'] = ndata['next_page_context'] - else: - result['pagecount'] = int(pg) - vlist = [] - for its in ndata['module_list_datas'][-1]['module_datas'][-1]['item_data_lists']['item_datas']: - id = its.get('item_params', {}).get('cid') - if id: - p = its['item_params'] - tag = json.loads(p.get('uni_imgtag', '{}') or p.get('imgtag', '{}') or '{}') - name = p.get('mz_title') or p.get('title') - pic = p.get('new_pic_hz') or p.get('new_pic_vt') - vlist.append({ - 'vod_id': id, - 'vod_name': name, - 'vod_pic': pic, - 'vod_year': tag.get('tag_2', {}).get('text'), - 'vod_remarks': tag.get('tag_4', {}).get('text') - }) - result['list'] = vlist - result['page'] = pg - result['limit'] = 90 - result['total'] = 999999 - return result - - def detailContent(self, ids): - vbody = {"page_params":{"req_from":"web","cid":ids[0],"vid":"","lid":"","page_type":"detail_operation","page_id":"detail_page_introduction"},"has_cache":1} - body = {"page_params":{"req_from":"web_vsite","page_id":"vsite_episode_list","page_type":"detail_operation","id_type":"1","page_size":"","cid":ids[0],"vid":"","lid":"","page_num":"","page_context":"","detail_page_type":"1"},"has_cache":1} - with ThreadPoolExecutor(max_workers=2) as executor: - future_detail = executor.submit(self.get_vdata, vbody) - future_episodes = executor.submit(self.get_vdata, body) - vdata = future_detail.result() - data = future_episodes.result() - - pdata = self.process_tabs(data, body, ids) - if not pdata: - return self.handle_exception(None, "No pdata available") - - try: - star_list = vdata['data']['module_list_datas'][0]['module_datas'][0]['item_data_lists']['item_datas'][ - 0].get('sub_items', {}).get('star_list', {}).get('item_datas', []) - actors = [star['item_params']['name'] for star in star_list] - names = ['腾讯视频', '预告片'] - plist, ylist = self.process_pdata(pdata, ids) - if not plist: - del names[0] - if not ylist: - del names[1] - vod = self.build_vod(vdata, actors, plist, ylist, names) - return {'list': [vod]} - except Exception as e: - return self.handle_exception(e, "Error processing detail") - - def searchContent(self, key, quick, pg="1"): - headers = self.headers.copy() - headers.update({'Content-Type': 'application/json'}) - body = {'version':'25021101','clientType':1,'filterValue':'','uuid':str(uuid.uuid4()),'retry':0,'query':key,'pagenum':int(pg)-1,'pagesize':30,'queryFrom':0,'searchDatakey':'','transInfo':'','isneedQc':True,'preQid':'','adClientInfo':'','extraInfo':{'isNewMarkLabel':'1','multi_terminal_pc':'1','themeType':'1',},} - data = self.post(f'{self.apihost}/trpc.videosearch.mobile_search.MultiTerminalSearch/MbSearch?vplatform=2', - json=body, headers=headers).json() - vlist = [] - vname=["电视剧", "电影", "综艺", "纪录片", "动漫", "少儿", "短剧"] - v=data['data']['normalList']['itemList'] - d=data['data']['areaBoxList'][0]['itemList'] - q=v+d - if v[0].get('doc') and v[0]['doc'].get('id') =='MainNeed':q=d+v - for k in q: - if k.get('doc') and k.get('videoInfo') and k['doc'].get('id') and '外站' not in k['videoInfo'].get('subTitle') and k['videoInfo'].get('title') and k['videoInfo'].get('typeName') in vname: - img_tag = k.get('videoInfo', {}).get('imgTag') - if img_tag is not None and isinstance(img_tag, str): - try: - tag = json.loads(img_tag) - except json.JSONDecodeError as e: - tag = {} - else: - tag = {} - pic = k.get('videoInfo', {}).get('imgUrl') - vlist.append({ - 'vod_id': k['doc']['id'], - 'vod_name': self.removeHtmlTags(k['videoInfo']['title']), - 'vod_pic': pic, - 'vod_year': k['videoInfo'].get('typeName') +' '+ tag.get('tag_2', {}).get('text', ''), - 'vod_remarks': tag.get('tag_4', {}).get('text', '') - }) - return {'list': vlist, 'page': pg} - - def playerContent(self, flag, id, vipFlags): - ids = id.split('@') - url = f"{self.host}/x/cover/{ids[0]}/{ids[1]}.html" - return {'jx':1,'parse': 1, 'url': url, 'header': ''} - - def localProxy(self, param): - pass - - def get_filter_data(self, cid): - hbody = self.dbody.copy() - hbody['page_params']['channel_id'] = cid - data = self.post( - f'{self.apihost}/trpc.universal_backend_service.page_server_rpc.PageServer/GetPageData?video_appid=1000005&vplatform=2&vversion_name=8.9.10&new_mark_label_enabled=1', - json=hbody, headers=self.headers).json() - return cid, data - - def get_vdata(self, body): - try: - vdata = self.post( - f'{self.apihost}/trpc.universal_backend_service.page_server_rpc.PageServer/GetPageData?video_appid=3000010&vplatform=2&vversion_name=8.2.96', - json=body, headers=self.headers - ).json() - return vdata - except Exception as e: - print(f"Error in get_vdata: {str(e)}") - return {'data': {'module_list_datas': []}} - - def process_pdata(self, pdata, ids): - plist = [] - ylist = [] - for k in pdata: - if k.get('item_id'): - pid = f"{k['item_params']['union_title']}${ids[0]}@{k['item_id']}" - if '预告' in k['item_params']['union_title']: - ylist.append(pid) - else: - plist.append(pid) - return plist, ylist - - def build_vod(self, vdata, actors, plist, ylist, names): - d = vdata['data']['module_list_datas'][0]['module_datas'][0]['item_data_lists']['item_datas'][0]['item_params'] - urls = [] - if plist: - urls.append('#'.join(plist)) - if ylist: - urls.append('#'.join(ylist)) - vod = { - 'type_name': d.get('sub_genre', ''), - 'vod_name': d.get('title', ''), - 'vod_year': d.get('year', ''), - 'vod_area': d.get('area_name', ''), - 'vod_remarks': d.get('holly_online_time', '') or d.get('hotval', ''), - 'vod_actor': ','.join(actors), - 'vod_content': d.get('cover_description', ''), - 'vod_play_from': '$$$'.join(names), - 'vod_play_url': '$$$'.join(urls) - } - return vod - - def handle_exception(self, e, message): - print(f"{message}: {str(e)}") - return {'list': [{'vod_play_from': '哎呀翻车啦', 'vod_play_url': '翻车啦#555'}]} - - def process_tabs(self, data, body, ids): - try: - pdata = data['data']['module_list_datas'][-1]['module_datas'][-1]['item_data_lists']['item_datas'] - tabs = data['data']['module_list_datas'][-1]['module_datas'][-1]['module_params'].get('tabs') - if tabs and len(json.loads(tabs)): - tabs = json.loads(tabs) - remaining_tabs = tabs[1:] - task_queue = [] - for tab in remaining_tabs: - nbody = copy.deepcopy(body) - nbody['page_params']['page_context'] = tab['page_context'] - task_queue.append(nbody) - with ThreadPoolExecutor(max_workers=10) as executor: - future_map = {executor.submit(self.get_vdata, task): idx for idx, task in enumerate(task_queue)} - results = [None] * len(task_queue) - for future in as_completed(future_map.keys()): - idx = future_map[future] - results[idx] = future.result() - for result in results: - if result: - page_data = result['data']['module_list_datas'][-1]['module_datas'][-1]['item_data_lists'][ - 'item_datas'] - pdata.extend(page_data) - return pdata - except Exception as e: - print(f"Error processing episodes: {str(e)}") - return [] - - def josn_to_params(self, params, skip_empty=False): - query = [] - for k, v in params.items(): - if skip_empty and not v: - continue - query.append(f"{k}={v}") - return "&".join(query) - - diff --git a/潇洒/py/芒果视频.py b/潇洒/py/芒果视频.py deleted file mode 100644 index 6ba8e34..0000000 --- a/潇洒/py/芒果视频.py +++ /dev/null @@ -1,205 +0,0 @@ -# -*- coding: utf-8 -*- -# by @嗷呜 -import sys -import time -from concurrent.futures import ThreadPoolExecutor, as_completed -sys.path.append('..') -from base.spider import Spider - -class Spider(Spider): - - def init(self, extend=""): - pass - - def getName(self): - pass - - def isVideoFormat(self, url): - pass - - def manualVideoCheck(self): - pass - - def destroy(self): - pass - - rhost='https://www.mgtv.com' - - host='https://pianku.api.mgtv.com' - - vhost='https://pcweb.api.mgtv.com' - - mhost='https://dc.bz.mgtv.com' - - shost='https://mobileso.bz.mgtv.com' - - headers = { - 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; ) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.6478.61 Chrome/126.0.6478.61 Not/A)Brand/8 Safari/537.36', - 'origin': rhost, - 'referer': f'{rhost}/' - } - - def homeContent(self, filter): - result = {} - cateManual = { - "电影": "3", - "电视剧": "2", - "综艺": "1", - "动画": "50", - "少儿": "10", - "纪录片": "51", - "教育": "115" - } - classes = [] - filters = {} - for k in cateManual: - classes.append({ - 'type_name': k, - 'type_id': cateManual[k] - }) - with ThreadPoolExecutor(max_workers=len(classes)) as executor: - results = executor.map(self.getf, classes) - for id, ft in results: - if len(ft):filters[id] = ft - result['class'] = classes - result['filters'] = filters - return result - - def homeVideoContent(self): - data=self.fetch(f'{self.mhost}/dynamic/v1/channel/index/0/0/0/1000000/0/0/17/1354?type=17&version=5.0&t={str(int(time.time()*1000))}&_support=10000000', headers=self.headers).json() - videoList = [] - for i in data['data']: - if i.get('DSLList') and len(i['DSLList']): - for j in i['DSLList']: - if j.get('data') and j['data'].get('items') and len(j['data']['items']): - for k in j['data']['items']: - videoList.append({ - 'vod_id': k["videoId"], - 'vod_name': k['videoName'], - 'vod_pic': k['img'], - 'vod_year': k.get('cornerTitle'), - 'vod_remarks': k.get('time') or k.get('desc'), - }) - return {'list':videoList} - - def categoryContent(self, tid, pg, filter, extend): - body={ - 'allowedRC': '1', - 'platform': 'pcweb', - 'channelId': tid, - 'pn': pg, - 'pc': '80', - 'hudong': '1', - '_support': '10000000' - } - body.update(extend) - data=self.fetch(f'{self.host}/rider/list/pcweb/v3', params=body, headers=self.headers).json() - videoList = [] - for i in data['data']['hitDocs']: - videoList.append({ - 'vod_id': i["playPartId"], - 'vod_name': i['title'], - 'vod_pic': i['img'], - 'vod_year': (i.get('rightCorner',{}) or {}).get('text') or i.get('year'), - 'vod_remarks': i['updateInfo'] - }) - result = {} - result['list'] = videoList - result['page'] = pg - result['pagecount'] = 9999 - result['limit'] = 90 - result['total'] = 999999 - return result - - def detailContent(self, ids): - vbody={'allowedRC': '1', 'vid': ids[0], 'type': 'b', '_support': '10000000'} - vdata=self.fetch(f'{self.vhost}/video/info', params=vbody, headers=self.headers).json() - d=vdata['data']['info']['detail'] - vod = { - 'vod_name': vdata['data']['info']['title'], - 'type_name': d.get('kind'), - 'vod_year': d.get('releaseTime'), - 'vod_area': d.get('area'), - 'vod_lang': d.get('language'), - 'vod_remarks': d.get('updateInfo'), - 'vod_actor': d.get('leader'), - 'vod_director': d.get('director'), - 'vod_content': d.get('story'), - 'vod_play_from': '芒果TV', - 'vod_play_url': '' - } - data,pdata=self.fetch_page_data('1', ids[0],True) - pagecount=data['data'].get('total_page') or 1 - if int(pagecount)>1: - pages = list(range(2, pagecount+1)) - page_results = {} - with ThreadPoolExecutor(max_workers=10) as executor: - future_to_page = { - executor.submit(self.fetch_page_data, page, ids[0]): page - for page in pages - } - for future in as_completed(future_to_page): - page = future_to_page[future] - try: - result = future.result() - page_results[page] = result - except Exception as e: - print(f"Error fetching page {page}: {e}") - for page in sorted(page_results.keys()): - pdata.extend(page_results[page]) - vod['vod_play_url'] = '#'.join(pdata) - return {'list':[vod]} - - def searchContent(self, key, quick, pg="1"): - data=self.fetch(f'{self.shost}/applet/search/v1?channelCode=mobile-wxap&q={key}&pn={pg}&pc=10&_support=10000000', headers=self.headers).json() - videoList = [] - for i in data['data']['contents']: - if i.get('data') and len(i['data']): - k = i['data'][0] - if k.get('vid') and k.get('img'): - try: - videoList.append({ - 'vod_id': k['vid'], - 'vod_name': k['title'], - 'vod_pic': k['img'], - 'vod_year': (i.get('rightTopCorner',{}) or {}).get('text') or i.get('year'), - 'vod_remarks': '/'.join(i.get('desc',[])), - }) - except: - print(k) - return {'list':videoList,'page':pg} - - def playerContent(self, flag, id, vipFlags): - id=f'{self.rhost}{id}' - return {'jx':1,'parse': 1, 'url': id, 'header': ''} - - def localProxy(self, param): - pass - - def getf(self, body): - params = { - 'allowedRC': '1', - 'channelId': body['type_id'], - 'platform': 'pcweb', - '_support': '10000000', - } - data = self.fetch(f'{self.host}/rider/config/channel/v1', params=params, headers=self.headers).json() - ft = [] - for i in data['data']['listItems']: - try: - value_array = [{"n": value['tagName'], "v": value['tagId']} for value in i['items'] if - value.get('tagName')] - ft.append({"key": i['eName'], "name": i['typeName'], "value": value_array}) - except: - print(i) - return body['type_id'], ft - - def fetch_page_data(self, page, id, b=False): - body = {'version': '5.5.35', 'video_id': id, 'page': page, 'size': '30', - 'platform': '4', 'src': 'mgtv', 'allowedRC': '1', '_support': '10000000'} - data = self.fetch(f'{self.vhost}/episode/list', params=body, headers=self.headers).json() - ldata = [f'{i["t3"]}${i["url"]}' for i in data['data']['list']] - if b: - return data, ldata - else: - return ldata diff --git a/潇洒/spider.jar b/潇洒/spider.jar index 23f969b..fc9e591 100644 Binary files a/潇洒/spider.jar and b/潇洒/spider.jar differ diff --git a/潇洒/txt/2.txt b/潇洒/txt/2.txt new file mode 100644 index 0000000..338c4e7 --- /dev/null +++ b/潇洒/txt/2.txt @@ -0,0 +1 @@ +http://160.202.244.9:2489 \ No newline at end of file diff --git a/潇洒/txt/89.txt b/潇洒/txt/89.txt new file mode 100644 index 0000000..fd0a371 --- /dev/null +++ b/潇洒/txt/89.txt @@ -0,0 +1 @@ +http://app.555618.xyz:1766 \ No newline at end of file diff --git a/潇洒/txt/lanyingxmy.txt b/潇洒/txt/lanyingxmy.txt new file mode 100644 index 0000000..c15318f --- /dev/null +++ b/潇洒/txt/lanyingxmy.txt @@ -0,0 +1 @@ +http://122.228.193.2:9988 \ No newline at end of file diff --git a/潇洒/txt/xfdd.txt b/潇洒/txt/xfdd.txt new file mode 100644 index 0000000..695b3d5 --- /dev/null +++ b/潇洒/txt/xfdd.txt @@ -0,0 +1 @@ +http://110.42.7.59:9066 \ No newline at end of file diff --git a/王二小/spider.jar b/王二小/spider.jar index d172d2b..53187a1 100644 Binary files a/王二小/spider.jar and b/王二小/spider.jar differ diff --git a/肥猫/spider.jar b/肥猫/spider.jar index 8f469b8..848ce4c 100644 Binary files a/肥猫/spider.jar and b/肥猫/spider.jar differ diff --git a/饭太硬/api.json b/饭太硬/api.json index 7afde7c..37b0ac2 100644 --- a/饭太硬/api.json +++ b/饭太硬/api.json @@ -137,17 +137,6 @@ "quickSearch": 1, "changeable": 1 }, - { - "key": "溢彩", - "name": "💡溢彩┃秒播", - "type": 3, - "api": "csp_AppSxGuard", - "timeout": 15, - "searchable": 1, - "quickSearch": 1, - "changeable": 1, - "ext": "rfOb1uAWbkRHp7hdxprG9un3+TfN183v1zIyaYDoDAIaLw5L8Dp8+v88LrEL3dBzrmWbdMBX0WNm7HtkQuw0AIzUurGBVyPqCKzDmbriATuukhctJlsLo8KxCw==" - }, { "key": "Lib", "name": "🌟立播┃秒播", @@ -218,28 +207,6 @@ "changeable": 1, "ext": "uqGL1bNENExT7/hGxpSE5qU=" }, - { - "key": "兄弟", - "name": "🍊水星┃多线", - "type": 3, - "api": "csp_AppSxGuard", - "timeout": 15, - "searchable": 1, - "quickSearch": 1, - "filterable": 1, - "ext": "rfOb1uAWbkRHp7hdxprG9un3+SLP183q3ik3cJDiAwlFdF8L6SIvrvc9LrpTyIg76T7QJZdEkWNj43wiSaA0TJyQpu2IF2jsSLWFx7WkAmG40hFxJ1tI+Jf+EVG8DtoDRcNi+TtVGULnWrSz3EWnVcxR3EJhXnrwYWe1kJtNW5txuHAO" - }, - { - "key": "即看", - "name": "🐻即看┃多线", - "type": 3, - "api": "csp_AppSxGuard", - "timeout": 15, - "searchable": 1, - "quickSearch": 0, - "changeable": 0, - "ext": "rfOX1voDIQhH8epBwtCFsub1+2maloq8lmJuL821WUsZJAZft2UtrrwhKK5Zxt1toWyFctBUmThhuDAjVuU=" - }, { "key": "欢视", "name": "👓欢视┃多线", diff --git a/饭太硬/spider.jar b/饭太硬/spider.jar index e6ae663..a9bf5eb 100644 Binary files a/饭太硬/spider.jar and b/饭太硬/spider.jar differ diff --git a/香雅情/lives/Tianmu.txt b/香雅情/lives/Tianmu.txt index 934691b..c1f37d0 100644 --- a/香雅情/lives/Tianmu.txt +++ b/香雅情/lives/Tianmu.txt @@ -4,102 +4,97 @@ CCTV1,http://58.57.40.22:9901/tsfile/live/0001_1.m3u8 CCTV1,http://112.123.206.32:808/hls/1/index.m3u8 CCTV1,http://8.138.7.223/【公众号:榴芒电视】/cctv1.m3u8 CCTV1,http://60.29.124.66:6080/hls/12/index.m3u8 -CCTV10,http://36.105.100.208:35455/gaoma/cctv10.m3u8 -CCTV10,http://60.29.124.66:6080/hls/21/index.m3u8 -CCTV10,http://120.76.248.139/live/bfgd/4200000129.m3u8 -CCTV10,http://182.150.23.74:808/hls/10/index.m3u8 -CCTV10,http://123.130.84.106:8154/tsfile/live/0010_1.m3u8 +CCTV10,http://39.164.160.249:9901/tsfile/live/0010_1.m3u8 +CCTV10,http://58.57.40.22:9901/tsfile/live/1010_1.m3u8 +CCTV10,http://58.17.48.228:808/hls/10/index.m3u8 CCTV11,http://39.164.160.249:9901/tsfile/live/0011_1.m3u8 CCTV11,http://58.57.40.22:9901/tsfile/live/1011_1.m3u8 -CCTV11,http://36.105.100.208:35455/gaoma/cctv11.m3u8 CCTV11,http://60.29.124.66:6080/hls/22/index.m3u8 +CCTV11,http://120.76.248.139/live/bfgd/4200000130.m3u8 CCTV12,http://39.164.160.249:9901/tsfile/live/0012_1.m3u8 CCTV12,http://36.105.100.208:35455/gaoma/cctv12.m3u8 CCTV12,http://183.11.239.36:808/hls/30/index.m3u8 CCTV12,http://120.76.248.139/live/bfgd/4200000131.m3u8 CCTV13,http://8.138.7.223/【公众号:榴芒电视】/cctv13.m3u8 CCTV14,http://36.105.100.208:35455/gaoma/cctv14.m3u8 -CCTV14,http://58.17.48.228:808/hls/14/index.m3u8 -CCTV14,http://60.29.124.66:6080/hls/25/index.m3u8 -CCTV14,http://58.19.43.46:9901/tsfile/live/1033_1.m3u8 +CCTV14,http://1.24.190.98:10080/hls/14/index.m3u8 +CCTV14,http://182.150.23.74:808/hls/14/index.m3u8 +CCTV15,http://39.164.160.249:9901/tsfile/live/0015_1.m3u8 CCTV15,http://58.57.40.22:9901/tsfile/live/1015_1.m3u8 +CCTV15,http://36.105.100.208:35455/gaoma/cctv15.m3u8 CCTV15,http://60.29.124.66:6080/hls/26/index.m3u8 -CCTV15,http://58.19.43.46:9901/tsfile/live/1034_1.m3u8 -CCTV15,http://116.9.204.242:9901/tsfile/live/0015_1.m3u8 -CCTV15,http://218.89.240.144:59901/tsfile/live/0015_1.m3u8 +CCTV16,http://36.105.100.208:35455/gaoma/cctv16.m3u8 CCTV16,http://58.17.48.228:808/hls/25/index.m3u8 +CCTV16,http://183.11.239.36:808/hls/169/index.m3u8 CCTV164K25PHLG源,http://113.62.253.22/live.aishang.ctlcdn.com/00000110240389_1/playlist.m3u8?CONTENTID=00000110240389_1&AUTHINFO=FABqh274XDn8fkurD5614t%2B1RvYajgx%2Ba3PxUJe1SMO4OjrtFitM6ZQbSJEFffaD35hOAhZdTXOrK0W8QvBRom%2BXaXZYzB%2FQfYjeYzGgKhP%2Fdo%2BXpr4quVxlkA%2BubKvbU1XwJFRgrbX%2BnTs60JauQUrav8kLj%2FPH8LxkDFpzvkq75UfeY%2FVNDZygRZLw4j%2BXtwhj%2FIuXf1hJAU0X%2BheT7g%3D%3D&USERTOKEN=eHKuwve%2F35NVIR5qsO5XsuB0O2BhR0KR CCTV17,http://58.57.40.22:9901/tsfile/live/0019_1.m3u8 CCTV17,http://36.105.100.208:35455/gaoma/cctv17.m3u8 -CCTV17,http://183.11.239.36:808/hls/35/index.m3u8 +CCTV17,http://120.238.94.10:9901/tsfile/live/1048_1.m3u8 CCTV17,http://120.76.248.139/live/bfgd/4200000204.m3u8 -CCTV17,http://58.221.214.82:9901/tsfile/live/0003_2.m3u8 CCTV2,http://39.164.160.249:9901/tsfile/live/0002_1.m3u8 CCTV2,http://58.57.40.22:9901/tsfile/live/1001_1.m3u8 CCTV2,http://36.105.100.208:35455/gaoma/cctv2.m3u8 CCTV2,http://112.123.206.32:808/hls/2/index.m3u8 -CCTV2,http://60.29.124.66:6080/hls/13/index.m3u8 CCTV3,http://36.105.100.208:35455/gaoma/cctv3.m3u8 CCTV3,http://58.17.48.228:808/hls/3/index.m3u8 CCTV3,http://60.29.124.66:6080/hls/14/index.m3u8 CCTV3,http://183.11.239.36:808/hls/91/index.m3u8 -CCTV4,http://58.57.40.22:9901/tsfile/live/1003_1.m3u8 -CCTV4,http://120.76.248.139/live/bfgd/4200000063.m3u8 -CCTV4,http://112.46.85.60:8009/hls/4/index.m3u8 -CCTV4,http://182.150.23.74:808/hls/4/index.m3u8 -CCTV5,http://58.17.48.228:808/hls/5/index.m3u8 +CCTV4,http://58.19.43.46:9901/tsfile/live/1023_1.m3u8 +CCTV4,http://111.9.163.109:9901/tsfile/live/0004_1.m3u8 +CCTV4,http://223.241.247.214:9901/tsfile/live/0004_1.m3u8 +CCTV4,http://120.238.94.10:9901/tsfile/live/1021_1.m3u8 +CCTV4,http://124.128.73.58:9901/tsfile/live/0004_1.m3u8 +CCTV5,http://58.57.40.22:9901/tsfile/live/1004_1.m3u8 CCTV5,http://60.29.124.66:6080/hls/16/index.m3u8 -CCTV5,http://183.11.239.36:808/hls/93/index.m3u8 +CCTV5,http://112.46.85.60:8009/hls/503/index.m3u8 +CCTV5+,http://58.57.40.22:9901/tsfile/live/1005_1.m3u8 CCTV5+,http://36.105.100.208:35455/gaoma/cctv5p.m3u8 CCTV5+,http://120.76.248.139/live/bfgd/4200000246.m3u8 -CCTV5+,http://182.150.23.74:808/hls/16/index.m3u8 CCTV5+,http://218.89.240.144:59901/tsfile/live/0016_1.m3u8 -CCTV6,http://58.57.40.22:9901/tsfile/live/1006_1.m3u8 CCTV6,http://36.105.100.208:35455/gaoma/cctv6.m3u8 CCTV6,http://58.17.48.228:808/hls/6/index.m3u8 CCTV6,http://60.29.124.66:6080/hls/17/index.m3u8 +CCTV6,http://183.11.239.36:808/hls/94/index.m3u8 +CCTV6,http://120.76.248.139/live/bfgd/4200000065.m3u8 +CCTV7,http://58.57.40.22:9901/tsfile/live/1007_1.m3u8 CCTV7,http://8.138.7.223/tv/cctv7.m3u8 CCTV7,http://8.138.7.223/【公众号:榴芒电视】/cctv7.m3u8 CCTV7,http://60.29.124.66:6080/hls/18/index.m3u8 CCTV7,http://183.11.239.36:808/hls/25/index.m3u8 -CCTV7,http://120.76.248.139/live/bfgd/4200000127.m3u8 -CCTV8,http://58.17.48.228:808/hls/8/index.m3u8 -CCTV8,http://113.57.111.4:1111/tsfile/live/1007_1.m3u8 -CCTV8,http://123.130.84.106:8154/tsfile/live/0008_1.m3u8 -CCTV8,http://123.129.70.178:9901/tsfile/live/0008_1.m3u8 -CCTV8,http://113.57.93.165:9900/tsfile/live/0008_1.m3u8 -CCTV9,http://39.164.160.249:9901/tsfile/live/0009_1.m3u8 -CCTV9,http://58.57.40.22:9901/tsfile/live/1009_1.m3u8 -CCTV9,http://60.29.124.66:6080/hls/20/index.m3u8 +CCTV8,http://218.3.138.25:1111/tsfile/live/1007_1.m3u8 +CCTV8,http://111.9.163.109:9901/tsfile/live/0008_1.m3u8 +CCTV8,http://36.105.100.208:35455/gaoma/cctv8k_36m.m3u8 +CCTV8,http://183.215.134.239:19901/tsfile/live/0008_1.m3u8?key=txiptv&playlive=1&authid=0 +CCTV8,http://223.241.247.214:9901/tsfile/live/0008_1.m3u8?key=txiptv&playlive=1&authid=0 CCTV9,http://183.11.239.36:808/hls/27/index.m3u8 -CCTV9,http://182.150.23.74:808/hls/9/index.m3u8 +CCTV9,http://120.238.94.10:9901/tsfile/live/1027_1.m3u8 +CCTV9,http://222.169.85.8:9901/tsfile/live/0009_1.m3u8 +CCTV9,http://113.25.252.226:9901/tsfile/live/0009_1.m3u8 +CCTV9,http://112.123.243.37:50085/tsfile/live/0010_1.m3u8?key=txiptv&playlive=0&authid=0 CHC动作电影,http://113.195.172.192:808/hls/114/index.m3u8 CHC华诚影视,http://120.76.248.139/live/bfgd/4200000289.m3u8 CHC家庭影院,http://113.195.172.192:808/hls/113/index.m3u8 CHC家庭影院,http://61.162.52.6:8088/newlive/live/hls/60/live.m3u8 CHC影迷电影,http://113.195.172.192:808/hls/112/index.m3u8 万荣综合,http://60.222.246.220:19433/hls1.m3u8 -三沙卫视,http://61.138.128.226:19901/tsfile/live/1020_1.m3u8 -三沙卫视,http://36.105.100.208:35455/itv/5000000011000288016.m3u8?cdn=bestzb -三沙卫视,http://61.138.128.226:19901/tsfile/live/1020_1.m3u8?key=txiptv&playlive=1&authid=0 东北热剧,http://39.134.65.175/PLTV/88888888/224/3221225679/1.m3u8 东南卫视,http://36.32.174.67:60080/newlive/live/hls/33/live.m3u8 -东南卫视,http://58.19.43.46:9901/tsfile/live/1046_1.m3u8 -东南卫视,http://61.138.128.226:19901/tsfile/live/1014_1.m3u8 -东南卫视,http://123.129.70.178:9901/tsfile/live/0137_1.m3u8 -东方卫视,http://36.32.174.67:60080/newlive/live/hls/24/live.m3u8 -东方卫视,http://112.46.85.60:8009/hls/31/index.m3u8 +东南卫视,http://61.136.172.236:9901/tsfile/live/0137_1.m3u8 +东南卫视,http://58.57.40.22:9901/tsfile/live/1037_1.m3u8 +东方卫视,http://124.116.183.146:9901/tsfile/live/0107_1.m3u8 +东方卫视,http://183.11.239.36:808/hls/114/index.m3u8 东方卫视,http://58.19.43.46:9901/tsfile/live/1035_1.m3u8 -东方卫视,http://61.138.128.226:19901/tsfile/live/0107_1.m3u8 +东方卫视,http://58.221.214.82:9901/tsfile/live/0107_1.m3u8 中华特产,http://120.76.248.139/live/bfgd/4200000158.m3u8 乐家购物,http://112.46.105.20:8009/hls/23/index.m3u8 乐游,http://112.46.105.20:8009/hls/75/index.m3u8 乐至综合,http://175.155.106.72:89/live1/live1.m3u8?zsicd -云南卫视,http://39.164.160.249:9901/tsfile/live/0119_1.m3u8 -云南卫视,http://36.32.174.67:60080/newlive/live/hls/45/live.m3u8 +云南卫视,http://111.61.236.247:9081/hls/32/index.m3u8 +云南卫视,http://120.76.248.139/live/bfgd/4200000482.m3u8 云南卫视,http://222.169.85.8:9901/tsfile/live/0119_1.m3u8 -云南卫视,http://58.57.40.22:9901/tsfile/live/1047_1.m3u8 +云南卫视,http://182.150.23.74:808/hls/29/index.m3u8 伊犁哈萨克,http://110.153.180.106:55555/out_3/index.m3u8 +伊犁哈萨克,http://110.153.180.106:55555/out_3/index.m3u8?zxinjd 伊犁汉语综合,http://110.153.180.106:55555/out_1/index.m3u8 伊犁经济法制,http://110.153.180.106:55555/out_4/index.m3u8 伊犁经济法制,http://110.153.180.106:55555/out_4/index.m3u8?zxinjd @@ -109,15 +104,15 @@ CHC影迷电影,http://113.195.172.192:808/hls/112/index.m3u8 优漫卡通,http://58.221.214.82:9901/tsfile/live/0008_2.m3u8 优漫卡通,http://36.105.100.208:35455/itv/1000000002000010063.m3u8?cdn=ystenlive 兵团八师石河子教育,http://124.88.144.73:1935/live/jiaoyu/playlist.m3u8 -兵团八师石河子教育,http://124.88.144.73:1935/live/jiaoyu/playlist.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] 兵团八师石河子新闻综合,http://124.88.144.73:1935/live/xwzh/playlist.m3u8?zxinjd 兵团八师石河子经济生活,http://124.88.144.73:1935/live/dywt/playlist.m3u8?zxinjd +兵团卫视,http://183.11.239.36:808/hls/7/index.m3u8 兵团卫视,http://120.76.248.139/live/bfgd/4200000124.m3u8 兵团卫视,http://218.89.240.144:59901/tsfile/live/0115_1.m3u8 -兵团卫视,http://61.138.128.226:19901/tsfile/live/0115_1.m3u8 +兵团卫视,http://218.13.170.98:9901/tsfile/live/0115_1.m3u8 内蒙古卫视,http://111.61.236.247:9081/hls/48/index.m3u8 +内蒙古卫视,http://124.128.73.58:9901/tsfile/live/0109_1.m3u8 内蒙古卫视,http://61.156.228.12:8154/tsfile/live/0109_1.m3u8 -内蒙古卫视,http://182.150.23.74:808/hls/37/index.m3u8 农林卫视,http://112.46.105.20:8009/hls/27/index.m3u8 农林卫视,http://8.138.7.223/【公众号:榴芒电视】/农林卫视.m3u8 农林卫视,http://120.76.248.139/live/bfgd/4200000122.m3u8 @@ -125,15 +120,15 @@ CHC影迷电影,http://113.195.172.192:808/hls/112/index.m3u8 农林卫视,http://124.116.183.146:9901/tsfile/live/1004_1.m3u8 动漫秀场,http://36.105.100.208:35455/itv/5000000011000031113.m3u8?cdn=bestzb 北京卫视,http://39.164.160.249:9901/tsfile/live/0122_1.m3u8 +北京卫视,http://183.11.239.36:808/hls/41/index.m3u8 北京卫视,http://61.156.228.12:8154/tsfile/live/0122_1.m3u8 -北京卫视,http://116.9.204.242:9901/tsfile/live/0122_1.m3u8 卡酷少儿,http://58.57.40.22:9901/tsfile/live/1060_1.m3u8 卡酷少儿,http://61.138.128.226:19901/tsfile/live/1017_1.m3u8 +卡酷少儿,http://218.13.170.98:9901/tsfile/live/1021_1.m3u8 卡酷少儿,http://60.29.124.66:6080/hls/58/index.m3u8 -双流综合,http://171.221.250.130:18888/27e684978eb642eeb90ab815f6cc51bf/c41893de5e8645b3b43aef1640859b0d.m3u8?zsicd, -吉林卫视,http://58.57.40.22:9901/tsfile/live/1050_1.m3u8 -吉林卫视,http://58.19.43.46:9901/tsfile/live/1007_1.m3u8 +双流综合,http://171.221.250.130:18888/27e684978eb642eeb90ab815f6cc51bf/c41893de5e8645b3b43aef1640859b0d.m3u8?zsicd 吉林卫视,http://111.61.236.247:9081/hls/45/index.m3u8 +吉林卫视,http://61.156.228.12:8154/tsfile/live/0116_1.m3u8 哈哈炫动,http://58.57.40.22:9901/tsfile/live/1061_1.m3u8 哈哈炫动,http://120.238.94.10:9901/tsfile/live/1037_1.m3u8 哈哈炫动,http://61.138.128.226:19901/tsfile/live/1016_1.m3u8 @@ -141,30 +136,27 @@ CHC影迷电影,http://113.195.172.192:808/hls/112/index.m3u8 哈哈炫动,http://36.105.100.208:35455/itv/5000000011000031123.m3u8?cdn=bestzb 哈尔滨影视,http://111.43.126.240:9003/hls/5/index.m3u8 哈尔滨生活,http://111.43.126.240:9003/hls/3/index.m3u8 -四川卫视,http://183.11.239.36:808/hls/50/index.m3u8 -四川卫视,http://113.57.111.4:1111/tsfile/live/1032_1.m3u8 -四川卫视,http://113.25.252.226:9901/tsfile/live/0123_1.m3u8 -四川卫视,http://1.24.190.98:10080/hls/86/index.m3u8 +四川卫视,http://58.57.40.22:9901/tsfile/live/1046_1.m3u8 +四川卫视,http://58.19.43.46:9901/tsfile/live/1043_1.m3u8 +四川卫视,http://120.76.248.139/live/bfgd/4200000103.m3u8 +四川卫视,http://61.156.228.12:8154/tsfile/live/0123_1.m3u8 四川科教,http://182.150.115.21:8030/pcgacg/pcgacg_0.m3u8 四海钓鱼,http://120.76.248.139/live/bfgd/4200000229.m3u8 大湾区卫视,http://222.128.55.152:9080/live/dwq.m3u8 -大湾区卫视,http://183.11.239.36:808/hls/132/index.m3u8 -天津卫视,http://1.24.190.98:10080/hls/69/index.m3u8 -天津卫视,http://112.123.243.37:50085/tsfile/live/0128_1.m3u8?key=txiptv&playlive=0&authid=0 -天津卫视,http://110.7.131.79:9901/tsfile/live/0135_1.m3u8?key=txiptv&playlive=1&authid=0 -天津卫视,http://110.7.131.40:9901/tsfile/live/0135_1.m3u8?key=txiptv&playlive=1&authid=0 -宁夏卫视,http://58.57.40.22:9901/tsfile/live/1054_1.m3u8 -宁夏卫视,http://120.238.94.10:9901/tsfile/live/1076_1.m3u8 +大湾区卫视,http://36.105.100.208:35455/itv/1000000002000011619.m3u8?cdn=ystenlive +天津卫视,http://112.46.85.60:8009/hls/44/index.m3u8 +天津卫视,http://182.150.23.74:808/hls/27/index.m3u8 +天津卫视,http://111.61.236.247:9081/hls/29/index.m3u8 +奎屯哈萨克语,http://218.84.12.186:8002/hls/main/playlist.m3u8 +奎屯哈萨克语,http://218.84.12.186:8002/hls/main/playlist.m3u8?zxinjd 宁夏卫视,http://36.32.174.67:60080/newlive/live/hls/49/live.m3u8 宁夏卫视,http://58.19.43.46:9901/tsfile/live/1003_1.m3u8 安多卫视,http://39.134.65.166/PLTV/88888888/224/3221225531/1.m3u8 安多卫视,http://39.134.66.66/PLTV/88888888/224/3221225531/1.m3u8 -安多卫视,http://36.105.100.208:35455/itv/1000000005000266001.m3u8?cdn=ystenlive 安徽卫视,http://58.57.40.22:9901/tsfile/live/1033_1.m3u8 -安徽卫视,http://58.19.43.46:9901/tsfile/live/1040_1.m3u8 -安徽卫视,http://123.130.84.106:8154/tsfile/live/0130_1.m3u8 -安徽卫视,http://111.61.236.247:9081/hls/27/index.m3u8 -少儿动画,http://218.15.183.23:9901/tsfile/live/23045_1.m3u8 +安徽卫视,http://113.57.111.4:1111/tsfile/live/1021_1.m3u8 +安徽卫视,http://223.241.247.214:9901/tsfile/live/0019_1.m3u8 +安徽卫视,http://113.57.93.165:9900/tsfile/live/0130_1.m3u8 少儿动画,http://61.138.128.226:19901/tsfile/live/1017_1.m3u8?key=txiptv&playlive=1&authid=0 山东卫视,http://39.164.160.249:9901/tsfile/live/0131_1.m3u8 山东卫视,http://183.11.239.36:808/hls/43/index.m3u8 @@ -175,22 +167,23 @@ CHC影迷电影,http://113.195.172.192:808/hls/112/index.m3u8 广东卫视,http://39.164.160.249:9901/tsfile/live/0125_1.m3u8 广东卫视,http://58.57.40.22:9901/tsfile/live/1039_1.m3u8 广东卫视,http://120.238.94.10:9901/tsfile/live/1008_1.m3u8 -广东卫视,http://124.116.183.146:9901/tsfile/live/0125_1.m3u8 -广东民生,http://183.11.239.36:808/hls/18/index.m3u8 +广东卫视,http://183.11.239.36:808/hls/80/index.m3u8 广东珠江,http://120.238.94.10:9901/tsfile/live/1009_1.m3u8 广州竞赛,http://8.138.7.223/tv/gzjs.m3u8 +广西卫视,http://36.32.174.67:60080/newlive/live/hls/38/live.m3u8 +广西卫视,http://58.19.43.46:9901/tsfile/live/1004_1.m3u8 康巴卫视,http://218.89.240.144:59901/tsfile/live/1010_1.m3u8 康巴卫视,http://111.202.12.159:8080/kYGHWzA/1000/live.m3u8 康巴卫视,http://111.202.12.159:8080/3zvkK28/1000/live.m3u8 康巴卫视,http://39.134.66.66/PLTV/88888888/224/3221225527/1.m3u8 康巴卫视,http://39.134.65.166/PLTV/88888888/224/3221225527/1.m3u8 延边卫视,http://120.76.248.139/live/bfgd/4200000117.m3u8 -延边卫视,http://61.138.128.226:19901/tsfile/live/1008_1.m3u8 +延边卫视,http://36.105.100.208:35455/itv/1000000005000266008.m3u8?cdn=ystenlive 延边卫视,http://61.138.128.226:19901/tsfile/live/1008_1.m3u8?key=txiptv&playlive=1&authid=0 新疆卫视,http://111.61.236.247:9081/hls/53/index.m3u8 -新疆卫视,http://120.76.248.139/live/bfgd/4200000150.m3u8 -新疆卫视,http://61.156.228.12:8154/tsfile/live/0110_1.m3u8 新疆卫视,http://113.25.252.226:9901/tsfile/live/0110_1.m3u8 +新疆卫视,http://218.84.12.186:8001/hls/main/playlist.m3u8 +新疆卫视,http://112.123.243.37:50085/tsfile/live/0143_1.m3u8?key=txiptv&playlive=0&authid=0 新视觉,http://120.76.248.139/live/bfgd/4200000249.m3u8 朝阳新闻综合,http://120.76.248.139/live/bfgd/4200000282.m3u8 末日电影合集,http://43.138.0.72:35455/yy/1354889019 @@ -198,59 +191,68 @@ CHC影迷电影,http://113.195.172.192:808/hls/112/index.m3u8 江夏新闻综合,http://59.175.226.142:280/gb28181/xwzh.m3u8?zhubd 江苏卫视,http://39.164.160.249:9901/tsfile/live/0127_1.m3u8 江苏卫视,http://58.57.40.22:9901/tsfile/live/1031_1.m3u8 +江苏卫视,http://183.11.239.36:808/hls/38/index.m3u8 江苏卫视,http://120.76.248.139/live/bfgd/4200000085.m3u8 -江苏卫视,http://112.46.85.60:8009/hls/33/index.m3u8 +江西卫视,http://39.164.160.249:9901/tsfile/live/0138_1.m3u8 江西卫视,http://58.57.40.22:9901/tsfile/live/1043_1.m3u8 江西卫视,http://36.32.174.67:60080/newlive/live/hls/22/live.m3u8 江西卫视,http://58.17.48.228:808/hls/17/index.m3u8 -江西卫视,http://36.32.174.67:60080/newlive/live/hls/31/live.m3u8 +河北卫视,http://39.164.160.249:9901/tsfile/live/0117_1.m3u8 河北卫视,http://36.32.174.67:60080/newlive/live/hls/36/live.m3u8 -河北卫视,http://111.14.181.15:9901/tsfile/live/0117_1.m3u8 +河北卫视,http://120.76.248.139/live/bfgd/4200000108.m3u8 河南卫视,http://39.164.160.249:9901/tsfile/live/0139_1.m3u8 河南卫视,http://120.238.94.10:9901/tsfile/live/1068_1.m3u8 +河南卫视,http://58.19.43.46:9901/tsfile/live/1006_1.m3u8 津南一套,http://61.147.106.103/play.jinnantv.top/live/JNTV1.m3u8?ztianjd&wsSession=4e59297ef5846f4a7cf02eb3-172672213891355&wsIPSercert=6d426cba8b106cdec9147b1e2a9ace7c&wsiphost=local&wsBindIP=1 -津南一套,http://61.147.106.103/play.jinnantv.top/live/JNTV1.m3u8?ztianjd&amp;wsSession=4e59297ef5846f4a7cf02eb3-172672213891355&amp;wsIPSercert=6d426cba8b106cdec9147b1e2a9ace7c&amp;wsiphost=local&amp;wsBindIP=1 津南一套,http://61.147.106.103/play.jinnantv.top/live/JNTV1.m3u8?ztianjd&wsSession=4e59297ef5846f4a7cf02eb3-172672213891355&wsIPSercert=6d426cba8b106cdec9147b1e2a9ace7c&wsiphost=local&wsBindIP=1 -浙江卫视,http://112.46.85.60:8009/hls/34/index.m3u8 -浙江卫视,http://113.57.111.4:1111/tsfile/live/1020_1.m3u8 -海南卫视,http://113.57.111.4:1111/tsfile/live/1031_1.m3u8 -海南卫视,http://58.57.40.22:9901/tsfile/live/1000_1.m3u8 +津南一套,http://61.147.106.103/play.jinnantv.top/live/JNTV1.m3u8?ztianjd&amp;wsSession=4e59297ef5846f4a7cf02eb3-172672213891355&amp;wsIPSercert=6d426cba8b106cdec9147b1e2a9ace7c&amp;wsiphost=local&amp;wsBindIP=1 +浙江卫视,http://183.11.239.36:808/hls/37/index.m3u8 +海南卫视,http://58.221.214.82:9901/tsfile/live/0016_2.m3u8?key=txiptv&playlive=1&authid=0 +海南卫视,http://36.105.100.208:35455/itv/5000000004000006211.m3u8?cdn=bestzb 海峡卫视,http://38.64.72.148:80/hls/modn/list/4009/playlist.m3u8 涡阳新闻综合,http://220.180.124.18:888/live/ch0.m3u8 -深圳卫视,http://58.57.40.22:9901/tsfile/live/1036_1.m3u8 深圳卫视,http://38.64.72.148:80/hls/modn/list/4007/playlist.m3u8 -深圳卫视,http://124.116.183.146:9901/tsfile/live/0126_1.m3u8 -深圳卫视,http://182.150.23.74:808/hls/20/index.m3u8 +深圳卫视,http://183.11.239.36:808/hls/45/index.m3u8 +深圳卫视,http://222.169.85.8:9901/tsfile/live/0126_1.m3u8 深圳卫视,http://113.57.111.4:1111/tsfile/live/1023_1.m3u8 -湖北卫视,http://183.11.239.36:808/hls/46/index.m3u8 -湖北卫视,http://113.57.111.4:1111/tsfile/live/1015_1.m3u8 -湖北卫视,http://223.241.247.214:9901/tsfile/live/0132_1.m3u8 -湖北卫视,http://218.89.240.144:59901/tsfile/live/0132_1.m3u8 +深圳卫视,http://223.241.247.214:9901/tsfile/live/1012_1.m3u8 +湖北卫视,http://58.57.40.22:9901/tsfile/live/1038_1.m3u8 +湖北卫视,http://120.238.94.10:9901/tsfile/live/1055_1.m3u8 +湖北卫视,http://124.116.183.146:9901/tsfile/live/0132_1.m3u8 +湖北卫视,http://120.76.248.139/live/bfgd/4200000102.m3u8 湖南卫视,http://39.164.160.249:9901/tsfile/live/0128_1.m3u8 湖南卫视,http://58.17.48.228:808/hls/31/index.m3u8 湖南卫视,http://124.116.183.146:9901/tsfile/live/0128_1.m3u8 玛纳斯综合,http://218.84.127.245:1026/hls/main1/playlist.m3u8 环球旅游,http://120.76.248.139/live/bfgd/4200000147.m3u8 +甘肃卫视,http://58.57.40.22:9901/tsfile/live/1056_1.m3u8 甘肃卫视,http://120.238.94.10:9901/tsfile/live/1079_1.m3u8 +甘肃卫视,http://223.241.247.214:9901/tsfile/live/0141_1.m3u8 生态环境,http://120.76.248.139/live/bfgd/4200000149.m3u8 石河子影视文体,http://124.88.144.73:1935/live/jjsh/playlist.m3u8 纪实科教,http://120.76.248.139/live/bfgd/4200000113.m3u8 纪实科教8K,http://111.31.106.140/downflv.brtvcloud.com/8klive/8kliveok.m3u8 西安新闻,http://112.46.105.20:8009/hls/28/index.m3u8 西安都市,http://112.46.105.20:8009/hls/29/index.m3u8 +西藏卫视,http://120.238.94.10:9901/tsfile/live/1077_1.m3u8 西藏卫视,http://36.32.174.67:60080/newlive/live/hls/48/live.m3u8 -西藏卫视,http://111.61.236.247:9081/hls/52/index.m3u8 西藏卫视,http://183.11.239.36:808/hls/64/index.m3u8 +西藏卫视,http://124.128.73.58:9901/tsfile/live/0111_1.m3u8 +西藏卫视,http://218.89.240.144:59901/tsfile/live/0111_1.m3u8 谈判专家,http://43.138.0.72:35455/yy/1382735560 -贵州卫视,http://110.7.131.40:9901/tsfile/live/0120_1.m3u8?key=txiptv&playlive=1&authid=0 +贵州卫视,http://39.164.160.249:9901/tsfile/live/0120_1.m3u8 +贵州卫视,http://183.11.239.36:808/hls/49/index.m3u8 +贵州卫视,http://222.169.85.8:9901/tsfile/live/0120_1.m3u8 +贵州卫视,http://113.57.111.4:1111/tsfile/live/1029_1.m3u8 车迷频道,http://120.76.248.139/live/bfgd/4200000146.m3u8 辽宁公共,http://120.76.248.139/live/bfgd/4200000077.m3u8 辽宁公共,http://120.76.248.139/live/bfgd/4200000481.m3u8 辽宁北方,http://120.76.248.139/live/bfgd/4200000071.m3u8 辽宁卫视,http://39.164.160.249:9901/tsfile/live/0121_1.m3u8 -辽宁卫视,http://58.57.40.22:9901/tsfile/live/1035_1.m3u8 辽宁卫视,http://58.19.43.46:9901/tsfile/live/1041_1.m3u8 -辽宁卫视,http://183.11.239.36:808/hls/47/index.m3u8 +辽宁卫视,http://120.76.248.139/live/bfgd/4200000141.m3u8 +辽宁卫视,http://120.76.248.139/live/bfgd/4200000185.m3u8 +辽宁卫视,http://120.76.248.139/live/bfgd/4200000058.m3u8 辽宁影视剧,http://120.76.248.139/live/bfgd/4200000070.m3u8 辽宁教育青少,http://120.76.248.139/live/bfgd/4200000075.m3u8 辽宁生活,http://120.76.248.139/live/bfgd/4200000073.m3u8 @@ -261,14 +263,13 @@ CHC影迷电影,http://113.195.172.192:808/hls/112/index.m3u8 都市剧场,http://112.46.105.20:8009/hls/72/index.m3u8 鄂托克旗电视台,http://110.19.181.138:10080/hls/F509Rh7GR/F509Rh7GR_live.m3u8?zneimd 重庆卫视,http://36.32.174.67:60080/newlive/live/hls/34/live.m3u8 -重庆卫视,http://120.76.248.139/live/bfgd/4200000107.m3u8 -重庆卫视,http://123.130.84.106:8154/tsfile/live/0142_1.m3u8 +重庆卫视,http://124.116.183.146:9901/tsfile/live/0142_1.m3u8 重庆卫视,http://111.61.236.247:9081/hls/41/index.m3u8 -金鹰卡通,http://58.57.40.22:9901/tsfile/live/1059_1.m3u8 +重庆卫视,http://101.66.198.77:9901/tsfile/live/0142_1.m3u8?key=txiptv&playlive=0&authid=0 金鹰卡通,http://58.19.43.46:9901/tsfile/live/1000_1.m3u8 金鹰卡通,http://116.128.242.83:9901/tsfile/live/1002_1.m3u8 +金鹰卡通,http://58.57.40.22:9901/tsfile/live/1059_1.m3u8 金鹰卡通,http://218.89.240.144:59901/tsfile/live/1002_1.m3u8 -金鹰卡通,http://61.138.128.226:19901/tsfile/live/1018_1.m3u8 陕西体育休闲,http://112.46.105.20:8009/hls/24/index.m3u8 陕西卫视,http://61.138.128.226:19901/tsfile/live/0136_1.m3u8?key=txiptv&playlive=1&authid=0 陕西新闻咨询,http://112.46.105.20:8009/hls/18/index.m3u8 @@ -280,18 +281,18 @@ CHC影迷电影,http://113.195.172.192:808/hls/112/index.m3u8 青海卫视,http://120.238.94.10:9901/tsfile/live/1073_1.m3u8 青海卫视,http://58.19.43.46:9901/tsfile/live/1014_1.m3u8 青海卫视,http://120.76.248.139/live/bfgd/4200000111.m3u8 +青海卫视,http://123.130.84.106:8154/tsfile/live/0140_1.m3u8 黎城综合,http://111.53.96.67:8081/live/1/index.m3u8 黎城综合,http://111.53.96.67:8081/live/1/index.m3u8?%E5%85%B3%E6%B3%A8%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7[%E6%99%B4%E5%9B%AD] 黑莓动画,http://39.134.65.106/PLTV/88888888/224/3221225529/1.m3u8 -黑莓动画,http://36.105.100.208:35455/itv/1000000004000021734.m3u8?cdn=ystenlive 黑莓电影,http://36.105.100.208:35455/itv/1000000004000019624.m3u8?cdn=ystenlive 黑龙江卫视,http://39.164.160.249:9901/tsfile/live/0143_1.m3u8 黑龙江卫视,http://58.57.40.22:9901/tsfile/live/1040_1.m3u8 -黑龙江卫视,http://58.19.43.46:9901/tsfile/live/1008_1.m3u8 -黑龙江卫视,http://120.76.248.139/live/bfgd/4200000095.m3u8 +黑龙江卫视,http://124.116.183.146:9901/tsfile/live/0143_1.m3u8 # IPv6 Streams CCTV-1 综合,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226559/index.m3u8 +CCTV-10 科教,http://[2409:8087:1a01:df::4077]:80/PLTV/88888888/224/3221225677/index.m3u8 CCTV-11 戏曲,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226565/index.m3u8 CCTV-12 社会与法,http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225731/index.m3u8 CCTV-13 新闻,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226537/index.m3u8 @@ -308,31 +309,35 @@ CCTV-7 国防军事,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.co CCTV-8 电视剧,http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226008/index.m3u8 CCTV-9 纪录,http://[2409:8087:1a01:df::4077]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221225734/index.m3u8 CCTV1,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226895/1.m3u8? -CCTV10,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226937/1.m3u8? -CCTV11,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226334/1.m3u8? -CCTV12,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226942/1.m3u8? -CCTV13,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226316/1.m3u8? +CCTV10,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226449/1.m3u8 +CCTV11,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226334/1.m3u8 +CCTV11,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226448/1.m3u8 +CCTV12,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226228/1.m3u8 CCTV14,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226229/1.m3u8 +CCTV14,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226445/1.m3u8 CCTV14,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226947/1.m3u8? CCTV15,http://[2409:8087:1a01:df::4033]:80/TVOD/88888888/224/3221226127/main.m3u8 CCTV15,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226333/1.m3u8 CCTV15,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226444/1.m3u8 -CCTV15,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226333/1.m3u8? CCTV16,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226887/1.m3u8 CCTV16,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226888/1.m3u8 +CCTV16,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221227002/1.m3u8? CCTV17,http://[2409:8087:1a01:df::4025]:80/TVOD/88888888/224/3221225708/main.m3u8 CCTV17,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226318/1.m3u8 CCTV17,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226442/1.m3u8 -CCTV17,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226318/1.m3u8? -CCTV2,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226893/1.m3u8? +CCTV2,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226230/1.m3u8 +CCTV2,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226371/1.m3u8 CCTV3,http://[2409:8087:1a01:df::4041]:80/TVOD/88888888/224/3221225799/main.m3u8 -CCTV3,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226471/1.m3u8? -CCTV4,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226335/1.m3u8? +CCTV3,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226456/1.m3u8 +CCTV3,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226471/1.m3u8 +CCTV5,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226469/1.m3u8? CCTV5,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226894/1.m3u8? -CCTV6,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226468/1.m3u8? -CCTV7,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226946/1.m3u8? +CCTV7,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226234/1.m3u8 CCTV8,http://[2409:8087:1a01:df::4051]:80/TVOD/88888888/224/3221225795/main.m3u8 -CCTV9,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226944/1.m3u8? +CCTV8,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226451/1.m3u8 +CCTV8,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226485/1.m3u8? +CCTV9,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226236/1.m3u8 +CCTV9,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226450/1.m3u8 CETV1,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226494/1.m3u8 CHC动作电影,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226329/1.m3u8 三沙卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226544/1.m3u8 @@ -380,9 +385,9 @@ CHC动作电影,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/8 江西卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226344/index.m3u8 江西卫视,http://[2409:8087:1a01:df::4027]:80/TVOD/88888888/224/3221225935/main.m3u8 河北卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226406/index.m3u8 +河北卫视,http://[2409:8087:1a01:df::4035]:80/TVOD/88888888/224/3221225961/main.m3u8 河南卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226480/index.m3u8 浙江卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226339/index.m3u8 -浙江卫视,http://[2409:8087:1a01:df::4043]:80/TVOD/88888888/224/3221225959/main.m3u8 海南卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226465/index.m3u8 海南卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226574/1.m3u8 海南卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226922/1.m3u8 @@ -392,6 +397,7 @@ CHC动作电影,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/8 湖南卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226493/1.m3u8 湖南卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226509/1.m3u8 甘肃卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226545/1.m3u8 +甘肃卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226913/1.m3u8 睛彩篮球,http://[2409:8087:1a01:df::4055]:80/TVOD/88888888/224/3221225901/main.m3u8 精品体育,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226328/1.m3u8 精品萌宠,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226505/index.m3u8 @@ -418,8 +424,10 @@ CHC动作电影,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/8 陕西卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226926/1.m3u8 青海卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226529/1.m3u8 青海卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226916/1.m3u8 +鹤岗新闻综合,http://[2409:8087:1a01:df::4059]:80/TVOD/88888888/224/3221226073/main.m3u8 黑莓动画,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226935/1.m3u8 黑莓电影,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226939/1.m3u8 黑龙江卫视,http://[2409:8087:1a01:df::7005]:80/ottrrs.hl.chinamobile.com/PLTV/88888888/224/3221226327/index.m3u8 黑龙江卫视,http://[2409:8087:8:21::18]:6610/otttv.bj.chinamobile.com/PLTV/88888888/224/3221226239/1.m3u8 -黑龙江文体,http://[2409:8087:1a01:df::4025]:80/TVOD/88888888/224/3221225965/main.m3u8 \ No newline at end of file +黑龙江文体,http://[2409:8087:1a01:df::4025]:80/TVOD/88888888/224/3221225965/main.m3u8 +黑龙江都市,http://[2409:8087:1a01:df::4055]:80/TVOD/88888888/224/3221225969/main.m3u8 \ No newline at end of file